Compare commits

..

No commits in common. "164404037006b7bc0b1633d33ac6c47d33561cd0" and "e876894bcaaed3d2b15bfc143c2944c28c618d3f" have entirely different histories.

3 changed files with 27 additions and 69 deletions

View File

@ -1,6 +1,5 @@
package emu.grasscutter.command.commands; package emu.grasscutter.command.commands;
import emu.grasscutter.GameConstants;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.command.Command; import emu.grasscutter.command.Command;
import emu.grasscutter.command.CommandHandler; import emu.grasscutter.command.CommandHandler;
@ -53,26 +52,9 @@ public final class GiveAllCommand implements CommandHandler {
Avatar avatar = new Avatar(avatarData); Avatar avatar = new Avatar(avatarData);
avatar.setLevel(90); avatar.setLevel(90);
avatar.setPromoteLevel(6); avatar.setPromoteLevel(6);
// Add constellations.
int talentBase = switch (avatar.getAvatarId()) {
case 10000005 -> 70;
case 10000006 -> 40;
default -> (avatar.getAvatarId()-10000000)*10;
};
for(int i = 1;i <= 6;++i){ for(int i = 1;i <= 6;++i){
avatar.getTalentIdList().add(talentBase + i); avatar.getTalentIdList().add((avatar.getAvatarId()-10000000)*10+i);
} }
// Handle skill depot for traveller.
if (avatar.getAvatarId() == GameConstants.MAIN_CHARACTER_MALE) {
avatar.setSkillDepotData(GameData.getAvatarSkillDepotDataMap().get(504));
}
else if(avatar.getAvatarId() == GameConstants.MAIN_CHARACTER_FEMALE) {
avatar.setSkillDepotData(GameData.getAvatarSkillDepotDataMap().get(704));
}
// This will handle stats and talents // This will handle stats and talents
avatar.recalcStats(); avatar.recalcStats();
// Don't try to add each avatar to the current team // Don't try to add each avatar to the current team

View File

@ -1,6 +1,5 @@
package emu.grasscutter.command.commands; package emu.grasscutter.command.commands;
import emu.grasscutter.GameConstants;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.command.Command; import emu.grasscutter.command.Command;
import emu.grasscutter.command.CommandHandler; import emu.grasscutter.command.CommandHandler;
@ -69,14 +68,6 @@ public final class GiveCharCommand implements CommandHandler {
avatar.setLevel(level); avatar.setLevel(level);
avatar.setPromoteLevel(ascension); avatar.setPromoteLevel(ascension);
// Handle skill depot for traveller.
if (avatar.getAvatarId() == GameConstants.MAIN_CHARACTER_MALE) {
avatar.setSkillDepotData(GameData.getAvatarSkillDepotDataMap().get(504));
}
else if(avatar.getAvatarId() == GameConstants.MAIN_CHARACTER_FEMALE) {
avatar.setSkillDepotData(GameData.getAvatarSkillDepotDataMap().get(704));
}
// This will handle stats and talents // This will handle stats and talents
avatar.recalcStats(); avatar.recalcStats();

View File

@ -61,14 +61,13 @@ public class HealAbilityManager {
} }
private class HealDataAvatar { private class HealDataAvatar {
public int avatarId = 0; public static int MAX_NUM_HEAL_ABILITY = 4;
public String avatarName = ""; public String avatar = "";
public int fightPropertyType= 0; //0: maxHP, 1: curAttack, 2: curDefense public int fightPropertyType= 0; //0: maxHP, 1: curAttack, 2: curDefense
public ArrayList<HealData> healDataList; public ArrayList<HealData> healDataList;
public HealDataAvatar(int _avatarId, String _avatarName, int _fightPropertyType) { public HealDataAvatar(String _avatar, int _fightPropertyType) {
avatarId = _avatarId; avatar = _avatar;
avatarName = _avatarName;
fightPropertyType = _fightPropertyType; fightPropertyType = _fightPropertyType;
healDataList = new ArrayList(); healDataList = new ArrayList();
} }
@ -92,15 +91,15 @@ public class HealAbilityManager {
public HealAbilityManager (Player player) { public HealAbilityManager (Player player) {
this.player = player; this.player = player;
healDataAvatarList = new ArrayList(); healDataAvatarList = new ArrayList();
healDataAvatarList.add(new HealDataAvatar(10000054, "Kokomi", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Base_Percentage", "ElementalArt_Heal_Base_Amount", false)); healDataAvatarList.add(new HealDataAvatar("Kokomi", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Base_Percentage", "ElementalArt_Heal_Base_Amount", false));
healDataAvatarList.add(new HealDataAvatar(10000003, "Qin", 1).addHealData("Q", "Heal", "BurstHealConst", true)); healDataAvatarList.add(new HealDataAvatar("Qin", 1).addHealData("Q", "Heal", "BurstHealConst", true));
healDataAvatarList.add(new HealDataAvatar(10000034, "Noel", 2).addHealData("E", "OnAttack_HealthRate", 0.452f, 282f, true)); healDataAvatarList.add(new HealDataAvatar("Noel", 2).addHealData("E", "OnAttack_HealthRate", 0.452f, 282f, true));
healDataAvatarList.add(new HealDataAvatar(10000032, "Bennett", 0).addHealData("Q", "HealMaxHpRatio", "HealConst", false)); healDataAvatarList.add(new HealDataAvatar("Bennett", 0).addHealData("Q", "HealMaxHpRatio", "HealConst", false));
healDataAvatarList.add(new HealDataAvatar(10000039, "Diona", 0).addHealData("Q", "HealHPRatio", "HealHP_Const", false)); healDataAvatarList.add(new HealDataAvatar("Diona", 0).addHealData("Q", "HealHPRatio", "HealHP_Const", false));
healDataAvatarList.add(new HealDataAvatar(10000053, "Sayu", 1).addHealData("Q", "Constellation_6_Damage", "Heal_BaseAmount", true).addHealData("Q", "Heal_AttackRatio", "Constellation_6_Heal", true)); healDataAvatarList.add(new HealDataAvatar("Sayu", 1).addHealData("Q", "Constellation_6_Damage", "Heal_BaseAmount", true).addHealData("Q", "Heal_AttackRatio", "Constellation_6_Heal", true));
healDataAvatarList.add(new HealDataAvatar(10000014, "Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true)); healDataAvatarList.add(new HealDataAvatar("Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true));
healDataAvatarList.add(new HealDataAvatar(10000065, "Shinobu", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Percentage", 0.064f, 795f, false)); healDataAvatarList.add(new HealDataAvatar("Shinobu", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Percentage", 0.064f, 795f, false));
healDataAvatarList.add(new HealDataAvatar(10000035, "Qiqi", 1).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("E", "ElementalArt_HealHp_Ratio", "ElementalArt_HealHp_Const", true)); healDataAvatarList.add(new HealDataAvatar("Qiqi", 1).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("E", "ElementalArt_HealHp_Ratio", "ElementalArt_HealHp_Const", true));
} }
public Player getPlayer() { public Player getPlayer() {
@ -130,10 +129,9 @@ public class HealAbilityManager {
float ratio = 0, base = 0; float ratio = 0, base = 0;
float maxHP, curAttack, curDefense; float maxHP, curAttack, curDefense;
Map<String, Float> map = sourceEntity.getMetaOverrideMap(); Map<String, Float> map = sourceEntity.getMetaOverrideMap();
for(int i = 0 ; i < healDataAvatarList.size() ; i ++) { for(int i = 0 ; i < healDataAvatarList.size() ; i ++) {
HealDataAvatar healDataAvatar = healDataAvatarList.get(i); HealDataAvatar healDataAvatar = healDataAvatarList.get(i);
if(modifierString.contains(healDataAvatar.avatarName)) { if(modifierString.contains(healDataAvatar.avatar)) {
fightPropertyType = healDataAvatar.fightPropertyType; fightPropertyType = healDataAvatar.fightPropertyType;
ArrayList<HealData> healDataList = healDataAvatar.healDataList; ArrayList<HealData> healDataList = healDataAvatar.healDataList;
@ -161,33 +159,20 @@ public class HealAbilityManager {
needHealAvatars.add(currentAvatar); needHealAvatars.add(currentAvatar);
} }
EntityAvatar healActionAvatar = null; maxHP = currentAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
for(int k = 0 ; k < activeTeam.size() ; k ++) { curAttack = currentAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK);
EntityAvatar avatar = activeTeam.get(k); curDefense = currentAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE);
int avatarId = avatar.getAvatar().getAvatarId(); switch(fightPropertyType) {
if(avatarId == healDataAvatar.avatarId) { case 0:
healActionAvatar = avatar; healAmount = ratio * maxHP + base;
break;
case 1:
healAmount = ratio * curAttack + base;
break;
case 2:
healAmount = ratio * curDefense + base;
break; break;
}
} }
if(healActionAvatar != null) {
maxHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
curAttack = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK);
curDefense = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE);
switch(fightPropertyType) {
case 0:
healAmount = ratio * maxHP + base;
break;
case 1:
healAmount = ratio * curAttack + base;
break;
case 2:
healAmount = ratio * curDefense + base;
break;
}
}
for(int k = 0 ; k < needHealAvatars.size() ; k ++) { for(int k = 0 ; k < needHealAvatars.size() ; k ++) {
EntityAvatar avatar = needHealAvatars.get(k); EntityAvatar avatar = needHealAvatars.get(k);
avatar.heal(healAmount); avatar.heal(healAmount);