diff --git a/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java b/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java index 3c70025c4..5aa274ce3 100644 --- a/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java +++ b/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java @@ -98,9 +98,10 @@ public class HealAbilityManager { healDataAvatarList.add(new HealDataAvatar(10000032, "Bennett", 0).addHealData("Q", "HealMaxHpRatio", "HealConst", false)); healDataAvatarList.add(new HealDataAvatar(10000039, "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(10000014, "Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("Q", "Avatar_Barbara_IdolHeal", 0.374f, 4660, true)); + healDataAvatarList.add(new HealDataAvatar(10000014, "Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("Q", "Avatar_Barbara_IdolHeal", 0.374f, 4660f, true)); healDataAvatarList.add(new HealDataAvatar(10000065, "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).addHealData("Q", "Avatar_Qiqi_ElementalBurst_ApplyModifier", 0.0191f, 1588f, false)); + healDataAvatarList.add(new HealDataAvatar(10000046, "Hutao", 0).addHealData("Q", "Avatar_Hutao_VermilionBite_BakeMesh", 0.1166f, 0f, false)); } public Player getPlayer() { @@ -128,7 +129,7 @@ public class HealAbilityManager { int fightPropertyType = 0; float healAmount = 0; float ratio = 0, base = 0; - float maxHP, curAttack, curDefense; + float maxHP, curHP, curAttack, curDefense; Map map = sourceEntity.getMetaOverrideMap(); for(int i = 0 ; i < healDataAvatarList.size() ; i ++) { @@ -173,8 +174,15 @@ public class HealAbilityManager { if(healActionAvatar != null) { maxHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); + curHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP); curAttack = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK); curDefense = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE); + + //Special case for Hu Tao: + if(healDataAvatar.avatarName.equals("Hutao") && curHP <= maxHP * 0.5 && ratio != 0) { + ratio = 0.1555f; + } + switch(fightPropertyType) { case 0: healAmount = ratio * maxHP + base;