From df27b7f6f901aa24e3a4c61f2d74d6a026033d6a Mon Sep 17 00:00:00 2001 From: Adry85 <adrya85@hotmail.it> Date: Fri, 9 Feb 2018 21:08:55 +0100 Subject: [PATCH] Added BabyPets and ImprovedBabyPets AI. Patch by: St3eT --- dist/game/data/scripts.cfg | 2 + .../scripts/ai/npc/Summons/Pets/BabyPets.java | 135 +++++++++++ .../ai/npc/Summons/Pets/ImprovedBabyPets.java | 224 ++++++++++++++++++ dist/game/data/stats/npcs/12700-12799.xml | 6 +- dist/game/data/stats/npcs/16000-16099.xml | 16 +- dist/game/data/stats/pets/0009.xml | 4 - dist/game/data/stats/pets/0010.xml | 4 - dist/game/data/stats/pets/0011.xml | 4 - dist/game/data/stats/skills/05100-05199.xml | 23 +- dist/game/data/stats/skills/05500-05599.xml | 13 +- 10 files changed, 392 insertions(+), 39 deletions(-) create mode 100644 dist/game/data/scripts/ai/npc/Summons/Pets/BabyPets.java create mode 100644 dist/game/data/scripts/ai/npc/Summons/Pets/ImprovedBabyPets.java diff --git a/dist/game/data/scripts.cfg b/dist/game/data/scripts.cfg index 809efd399c..9b0613539d 100644 --- a/dist/game/data/scripts.cfg +++ b/dist/game/data/scripts.cfg @@ -58,6 +58,8 @@ ai/npc/Selina/Selina.java ai/npc/Sirra/Sirra.java ai/npc/SubclassCertification/SubclassCertification.java ai/npc/Summons/MerchantGolem/GolemTrader.java +ai/npc/Summons/Pets/BabyPets.java +ai/npc/Summons/Pets/ImprovedBabyPets.java ai/npc/Summons/Servitors/Servitors.java ai/npc/SupportUnitCaptain/SupportUnitCaptain.java ai/npc/SymbolMaker/SymbolMaker.java diff --git a/dist/game/data/scripts/ai/npc/Summons/Pets/BabyPets.java b/dist/game/data/scripts/ai/npc/Summons/Pets/BabyPets.java new file mode 100644 index 0000000000..8399929c8f --- /dev/null +++ b/dist/game/data/scripts/ai/npc/Summons/Pets/BabyPets.java @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2004-2018 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package ai.npc.Summons.Pets; + +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.L2Summon; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; +import com.l2jserver.gameserver.model.events.EventType; +import com.l2jserver.gameserver.model.events.ListenerRegisterType; +import com.l2jserver.gameserver.model.events.annotations.RegisterEvent; +import com.l2jserver.gameserver.model.events.annotations.RegisterType; +import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLogout; +import com.l2jserver.gameserver.model.holders.SkillHolder; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.serverpackets.SystemMessage; +import com.l2jserver.gameserver.util.Util; + +import ai.npc.AbstractNpcAI; + +/** + * Baby Pets AI. + * @author St3eT + * @since 2.6.0.0 + */ +public final class BabyPets extends AbstractNpcAI +{ + // NPCs + private static final int[] BABY_PETS = + { + 12780, // Baby Buffalo + 12781, // Baby Kookaburra + 12782, // Baby Cougar + }; + + // Skills + private static final int HEAL_TRICK = 4717; + private static final int GREATER_HEAL_TRICK = 4718; + + private BabyPets() + { + super(BabyPets.class.getSimpleName(), "ai/npc/Summons/Pets"); + addSummonSpawnId(BABY_PETS); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + if (event.equals("CAST_HEAL") && (player != null)) + { + final L2PetInstance pet = (L2PetInstance) player.getSummon(); + + if (pet != null) + { + if (getRandom(100) <= 25) + { + castHealSkill(pet, new SkillHolder(HEAL_TRICK, getHealLevel(pet)), 80); + } + + if (getRandom(100) <= 75) + { + castHealSkill(pet, new SkillHolder(GREATER_HEAL_TRICK, getHealLevel(pet)), 15); + } + } + else + { + cancelQuestTimer("CAST_HEAL", null, player); + } + } + return super.onAdvEvent(event, npc, player); + } + + @RegisterEvent(EventType.ON_PLAYER_LOGOUT) + @RegisterType(ListenerRegisterType.GLOBAL) + public void OnPlayerLogout(OnPlayerLogout event) + { + cancelQuestTimer("CAST_HEAL", null, event.getActiveChar()); + } + + @Override + public void onSummonSpawn(L2Summon summon) + { + startQuestTimer("CAST_HEAL", 1000, null, summon.getOwner(), true); + } + + private void castHealSkill(L2Summon summon, SkillHolder skill, int maxHpPer) + { + final L2PcInstance owner = summon.getOwner(); + if (!owner.isDead() && !summon.isHungry() && (((owner.getCurrentHp() / owner.getMaxHp()) * 100) < maxHpPer) && summon.checkDoCastConditions(skill.getSkill())) + { + final boolean previousFollowStatus = summon.getFollowStatus(); + + if (!previousFollowStatus && !summon.isInsideRadius(owner, skill.getSkill().getCastRange(), true, true)) + { + return; + } + + summon.setTarget(owner); + summon.doCast(skill.getSkill()); + summon.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1).addSkillName(skill.getSkill())); + + if (previousFollowStatus != summon.getFollowStatus()) + { + summon.setFollowStatus(previousFollowStatus); + } + } + } + + private int getHealLevel(L2Summon summon) + { + final int summonLevel = summon.getLevel(); + return Util.constrain(summonLevel < 70 ? (summonLevel / 10) : (7 + ((summonLevel - 70) / 5)), 1, 12); + } + + public static void main(String[] args) + { + new BabyPets(); + } +} \ No newline at end of file diff --git a/dist/game/data/scripts/ai/npc/Summons/Pets/ImprovedBabyPets.java b/dist/game/data/scripts/ai/npc/Summons/Pets/ImprovedBabyPets.java new file mode 100644 index 0000000000..8ba5f668d4 --- /dev/null +++ b/dist/game/data/scripts/ai/npc/Summons/Pets/ImprovedBabyPets.java @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2004-2018 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package ai.npc.Summons.Pets; + +import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.L2Summon; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; +import com.l2jserver.gameserver.model.events.EventType; +import com.l2jserver.gameserver.model.events.ListenerRegisterType; +import com.l2jserver.gameserver.model.events.annotations.RegisterEvent; +import com.l2jserver.gameserver.model.events.annotations.RegisterType; +import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLogout; +import com.l2jserver.gameserver.model.holders.SkillHolder; +import com.l2jserver.gameserver.model.skills.AbnormalType; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.serverpackets.SystemMessage; +import com.l2jserver.gameserver.util.Util; + +import ai.npc.AbstractNpcAI; + +/** + * Improved Baby Pets AI. + * @author St3eT + * @since 2.6.0.0 + */ +public final class ImprovedBabyPets extends AbstractNpcAI +{ + // NPCs + private static final int[] IMPROVED_BABY_PETS = + { + 16034, // Improved Baby Buffalo + 16035, // Improved Baby Kookaburra + 16036, // Improved Baby Cougar + }; + + // Skill + private static final int BUFF_CONTROL = 5771; + + private ImprovedBabyPets() + { + super(ImprovedBabyPets.class.getSimpleName(), "ai/npc/Summons/Pets"); + addSummonSpawnId(IMPROVED_BABY_PETS); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + if (player != null) + { + final L2PetInstance pet = (L2PetInstance) player.getSummon(); + if (pet == null) + { + cancelQuestTimer("CAST_BUFF", null, player); + cancelQuestTimer("CAST_HEAL", null, player); + } + else if (event.equals("CAST_HEAL") && player.isInCombat() && !pet.isHungry()) + { + final double hpPer = (player.getCurrentHp() / player.getMaxHp()) * 100; + final double mpPer = (player.getCurrentMp() / player.getMaxMp()) * 100; + final int healStep = (int) Math.floor((pet.getLevel() / 5) - 11); + final int healType = pet.getTemplate().getParameters().getInt("heal_type", 0); + + switch (healType) + { + case 0: + { + if (hpPer < 30) + { + castHealSkill(pet, Util.constrain(healStep, 0, 3), 2); + } + else if (mpPer < 60) + { + castHealSkill(pet, Util.constrain(healStep, 0, 3), 1); + } + break; + } + case 1: + { + if ((hpPer >= 30) && (hpPer < 70)) + { + castHealSkill(pet, Util.constrain(healStep, 0, 3), 1); + } + else if (hpPer < 30) + { + castHealSkill(pet, Util.constrain(healStep, 0, 3), 2); + } + break; + } + } + } + else if (event.equals("CAST_BUFF") && !pet.isAffectedBySkill(BUFF_CONTROL) && !pet.isHungry()) + { + final int buffStep = (int) Util.constrain(Math.floor((pet.getLevel() / 5) - 11), 0, 3); + for (int i = 1; i <= (2 * (1 + buffStep)); i++) + { + castBuffSkill(pet, buffStep, i); + } + } + } + return super.onAdvEvent(event, npc, player); + } + + @RegisterEvent(EventType.ON_PLAYER_LOGOUT) + @RegisterType(ListenerRegisterType.GLOBAL) + public void OnPlayerLogout(OnPlayerLogout event) + { + cancelQuestTimer("CAST_BUFF", null, event.getActiveChar()); + cancelQuestTimer("CAST_HEAL", null, event.getActiveChar()); + } + + @Override + public void onSummonSpawn(L2Summon summon) + { + startQuestTimer("CAST_BUFF", 10000, null, summon.getOwner(), true); + startQuestTimer("CAST_HEAL", 3000, null, summon.getOwner(), true); + } + + private boolean castBuffSkill(L2Summon summon, int stepNumber, int buffNumber) + { + final L2PcInstance owner = summon.getOwner(); + if ((owner == null) || owner.isDead() || owner.isInvul()) + { + return false; + } + + final StatsSet parameters = summon.getTemplate().getParameters(); + final SkillHolder skill = parameters.getObject("step" + stepNumber + "_buff0" + buffNumber, SkillHolder.class); + + if (skill != null) + { + final SkillHolder mergedSkill = parameters.getObject("step" + stepNumber + "_merged_buff0" + buffNumber, SkillHolder.class); + final int targetType = parameters.getInt("step" + stepNumber + "_buff_target0" + buffNumber, 0); + if (!hasAbnormal(owner, skill.getSkill().getAbnormalType()) && summon.checkDoCastConditions(skill.getSkill())) + { + if ((mergedSkill != null) && hasAbnormal(owner, mergedSkill.getSkill().getAbnormalType())) + { + return false; + } + + final boolean previousFollowStatus = summon.getFollowStatus(); + + if (!previousFollowStatus && !summon.isInsideRadius(owner, skill.getSkill().getCastRange(), true, true)) + { + return false; + } + + if ((targetType >= 0) && (targetType <= 2)) + { + summon.setTarget((targetType == 1) ? summon : owner); + summon.doCast(skill.getSkill()); + summon.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1).addSkillName(skill.getSkill())); + + if (previousFollowStatus != summon.getFollowStatus()) + { + summon.setFollowStatus(previousFollowStatus); + } + return true; + } + } + } + return false; + } + + private void castHealSkill(L2Summon summon, int stepNumber, int healNumber) + { + final L2PcInstance owner = summon.getOwner(); + final StatsSet parameters = summon.getTemplate().getParameters(); + final SkillHolder skill = parameters.getObject("step" + stepNumber + "_heal0" + healNumber, SkillHolder.class); + final int targetType = parameters.getInt("step" + stepNumber + "_heal_target0" + healNumber, 0); + + if ((skill != null) && (owner != null) && summon.checkDoCastConditions(skill.getSkill()) && !owner.isDead()) + { + final boolean previousFollowStatus = summon.getFollowStatus(); + + if (!previousFollowStatus && !summon.isInsideRadius(owner, skill.getSkill().getCastRange(), true, true)) + { + return; + } + + if (!hasAbnormal(owner, skill.getSkill().getAbnormalType())) + { + if ((targetType >= 0) && (targetType <= 2)) + { + summon.setTarget((targetType == 1) ? summon : owner); + summon.doCast(skill.getSkill()); + summon.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1).addSkillName(skill.getSkill())); + + if (previousFollowStatus != summon.getFollowStatus()) + { + summon.setFollowStatus(previousFollowStatus); + } + } + } + } + } + + private static boolean hasAbnormal(L2PcInstance player, AbnormalType type) + { + return player.getEffectList().getBuffInfoByAbnormalType(type) != null; + } + + public static void main(String[] args) + { + new ImprovedBabyPets(); + } +} \ No newline at end of file diff --git a/dist/game/data/stats/npcs/12700-12799.xml b/dist/game/data/stats/npcs/12700-12799.xml index 7faccf9a24..8d0213c7c6 100644 --- a/dist/game/data/stats/npcs/12700-12799.xml +++ b/dist/game/data/stats/npcs/12700-12799.xml @@ -222,7 +222,7 @@ <height normal="31" /> </collision> </npc> - <npc id="12780" level="25" type="L2BabyPet" name="Baby Buffalo"> + <npc id="12780" level="25" type="L2Pet" name="Baby Buffalo"> <!-- Confirmed CT2.5 --> <parameters> <skill name="Heal1" id="4717" level="1" /> <!-- Heal Trick --> @@ -264,7 +264,7 @@ <height normal="15" /> </collision> </npc> - <npc id="12781" level="25" type="L2BabyPet" name="Baby Kookaburra"> + <npc id="12781" level="25" type="L2Pet" name="Baby Kookaburra"> <!-- Confirmed CT2.5 --> <parameters> <skill name="Heal1" id="4717" level="1" /> <!-- Heal Trick --> @@ -306,7 +306,7 @@ <height normal="15" /> </collision> </npc> - <npc id="12782" level="25" type="L2BabyPet" name="Baby Cougar"> + <npc id="12782" level="25" type="L2Pet" name="Baby Cougar"> <!-- Confirmed CT2.5 --> <parameters> <skill name="Heal1" id="4717" level="1" /> <!-- Heal Trick --> diff --git a/dist/game/data/stats/npcs/16000-16099.xml b/dist/game/data/stats/npcs/16000-16099.xml index fc2741a7d7..be80a70d6b 100644 --- a/dist/game/data/stats/npcs/16000-16099.xml +++ b/dist/game/data/stats/npcs/16000-16099.xml @@ -1100,7 +1100,7 @@ <height normal="5.271" /> </collision> </npc> - <npc id="16034" level="55" type="L2BabyPet" name="Improved Baby Buffalo"> + <npc id="16034" level="55" type="L2Pet" name="Improved Baby Buffalo"> <!-- Confirmed CT2.5 --> <parameters> <skill name="step0_buff01" id="5189" level="6" /> <!-- Pet Blessed Body --> @@ -1228,7 +1228,7 @@ <height normal="15" /> </collision> </npc> - <npc id="16035" level="55" type="L2BabyPet" name="Improved Baby Kookaburra"> + <npc id="16035" level="55" type="L2Pet" name="Improved Baby Kookaburra"> <!-- Confirmed CT2.5 --> <parameters> <skill name="step0_buff01" id="5194" level="3" /> <!-- Pet Empower --> @@ -1357,7 +1357,7 @@ <height normal="15" /> </collision> </npc> - <npc id="16036" level="55" type="L2BabyPet" name="Improved Baby Cougar"> + <npc id="16036" level="55" type="L2Pet" name="Improved Baby Cougar"> <!-- Confirmed CT2.5 --> <parameters> <skill name="step0_buff01" id="5194" level="3" /> <!-- Pet Empower --> @@ -2230,7 +2230,7 @@ <height normal="16.5" /> </collision> </npc> - <npc id="16045" level="55" type="L2BabyPet" name="White Weasel"> + <npc id="16045" level="55" type="L2Pet" name="White Weasel"> <!-- Confirmed CT2.5 --> <parameters> <param name="MoveAroundSocial" value="133" /> @@ -2323,7 +2323,7 @@ <height normal="12.5" /> </collision> </npc> - <npc id="16046" level="55" type="L2BabyPet" name="Fairy Princess"> + <npc id="16046" level="55" type="L2Pet" name="Fairy Princess"> <!-- Confirmed CT2.5 --> <parameters> <param name="MoveAroundSocial" value="123" /> @@ -2486,7 +2486,7 @@ <height normal="19.5" /> </collision> </npc> - <npc id="16051" level="55" type="L2BabyPet" name="Spirit Shaman"> + <npc id="16051" level="55" type="L2Pet" name="Spirit Shaman"> <!-- Confirmed CT2.5 --> <parameters> <param name="MoveAroundSocial" value="80" /> @@ -2631,7 +2631,7 @@ <height normal="15.6" /> </collision> </npc> - <npc id="16052" level="55" type="L2BabyPet" name="Toy Knight"> + <npc id="16052" level="55" type="L2Pet" name="Toy Knight"> <!-- Confirmed CT2.5 --> <parameters> <param name="MoveAroundSocial" value="58" /> @@ -2806,7 +2806,7 @@ <height normal="15" /> </collision> </npc> - <npc id="16053" level="55" type="L2BabyPet" name="Turtle Ascetic"> + <npc id="16053" level="55" type="L2Pet" name="Turtle Ascetic"> <!-- Confirmed CT2.5 --> <parameters> <param name="MoveAroundSocial" value="100" /> diff --git a/dist/game/data/stats/pets/0009.xml b/dist/game/data/stats/pets/0009.xml index 42164cc937..52e5496de5 100644 --- a/dist/game/data/stats/pets/0009.xml +++ b/dist/game/data/stats/pets/0009.xml @@ -5,10 +5,6 @@ <pet id="12780" itemId="6648" index="9"> <set name="food" val="7582" /> <set name="hungry_limit" val="55" /> - <skills> - <skill minLvl="1" skillId="4717" skillLvl="0" /> - <skill minLvl="1" skillId="4718" skillLvl="0" /> - </skills> <stats> <stat level="1"> <set name="max_meal" val="12" /> diff --git a/dist/game/data/stats/pets/0010.xml b/dist/game/data/stats/pets/0010.xml index 06b02d03c0..5d2edad7ef 100644 --- a/dist/game/data/stats/pets/0010.xml +++ b/dist/game/data/stats/pets/0010.xml @@ -5,10 +5,6 @@ <pet id="12781" itemId="6650" index="10"> <set name="food" val="7582" /> <set name="hungry_limit" val="55" /> - <skills> - <skill minLvl="1" skillId="4717" skillLvl="0" /> - <skill minLvl="1" skillId="4718" skillLvl="0" /> - </skills> <stats> <stat level="1"> <set name="max_meal" val="12" /> diff --git a/dist/game/data/stats/pets/0011.xml b/dist/game/data/stats/pets/0011.xml index f11c4081b6..f81532460a 100644 --- a/dist/game/data/stats/pets/0011.xml +++ b/dist/game/data/stats/pets/0011.xml @@ -5,10 +5,6 @@ <pet id="12782" itemId="6649" index="11"> <set name="food" val="7582" /> <set name="hungry_limit" val="55" /> - <skills> - <skill minLvl="1" skillId="4717" skillLvl="0" /> - <skill minLvl="1" skillId="4718" skillLvl="0" /> - </skills> <stats> <stat level="1"> <set name="max_meal" val="12" /> diff --git a/dist/game/data/stats/skills/05100-05199.xml b/dist/game/data/stats/skills/05100-05199.xml index 356d7b72f5..a681c62cc7 100644 --- a/dist/game/data/stats/skills/05100-05199.xml +++ b/dist/game/data/stats/skills/05100-05199.xml @@ -2070,28 +2070,28 @@ </effects> </skill> <skill id="5195" levels="12" name="Pet Greater Heal"> - <table name="#abnormalLvls"> 1 1 2 2 4 6 7 7 7 7 7 7 </table> + <!-- High Five Confirmed --> + <table name="#abnormalLvl"> 1 1 2 2 4 6 7 7 7 7 7 7 </table> <table name="#amount"> 58 92 148 219 299 380 450 477 500 525 542 550 </table> - <table name="#effectPoints"> 83 151 245 362 494 628 743 789 826 867 895 913 </table> + <table name="#effectPoint"> 83 151 245 362 494 628 743 789 826 867 895 913 </table> + <table name="#healOverTime"> 4 7 10 15 20 26 30 32 32 32 32 32 </table> <table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table> - <table name="#mpConsume2"> 7 12 18 25 32 39 46 49 51 52 53 53 </table> <table name="#mpConsume1"> 2 3 5 7 8 10 12 13 13 13 14 14 </table> - <set name="abnormalLvl" val="#abnormalLvls" /> + <table name="#mpConsume2"> 7 12 18 25 32 39 46 49 51 52 53 53 </table> + <set name="abnormalLvl" val="#abnormalLvl" /> <set name="abnormalTime" val="15" /> <set name="abnormalType" val="LIFE_FORCE_OTHERS" /> - <set name="activateRate" val="0" /> + <set name="affectScope" val="SINGLE" /> <set name="castRange" val="600" /> - <set name="effectPoint" val="#effectPoints" /> + <set name="effectPoint" val="#effectPoint" /> <set name="effectRange" val="1100" /> <set name="hitTime" val="5000" /> <set name="icon" val="icon.skill1217" /> - <set name="isMagic" val="1" /> <!-- Magic Skill --> + <set name="isMagic" val="1" /> <set name="magicLvl" val="#magicLvl" /> - <set name="mpConsume2" val="#mpConsume2" /> <set name="mpConsume1" val="#mpConsume1" /> + <set name="mpConsume2" val="#mpConsume2" /> <set name="operateType" val="A2" /> - <set name="power" val="#amount" /> <!-- TODO: remove after BabyPet rework --> - <set name="reuseDelay" val="6000" /> <set name="reuseDelay" val="10000" /> <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" /> <set name="targetType" val="OWNER_PET" /> @@ -2099,6 +2099,9 @@ <effect name="Heal"> <param power="#amount" /> </effect> + <effect name="HealOverTime" ticks="1"> + <param power="#healOverTime" /> + </effect> </effects> </skill> <skill id="5196" levels="3" name="Pet Wind Shackle"> diff --git a/dist/game/data/stats/skills/05500-05599.xml b/dist/game/data/stats/skills/05500-05599.xml index 21c18c7ced..bf26ee7003 100644 --- a/dist/game/data/stats/skills/05500-05599.xml +++ b/dist/game/data/stats/skills/05500-05599.xml @@ -1761,22 +1761,23 @@ </effects> </skill> <skill id="5590" levels="12" name="Pet Battle Heal"> + <!-- High Five Confirmed --> <table name="#amount"> 91 166 269 398 544 690 817 867 909 954 985 1005 </table> - <table name="#effectPoints"> 66 121 196 290 396 502 595 631 661 694 716 731 </table> + <table name="#effectPoint"> 66 121 196 290 396 502 595 631 661 694 716 731 </table> <table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table> - <table name="#mpConsume2"> 10 18 27 37 48 59 68 73 76 78 79 79 </table> <table name="#mpConsume1"> 3 5 7 10 12 15 17 19 19 20 20 20 </table> + <table name="#mpConsume2"> 10 18 27 37 48 59 68 73 76 78 79 79 </table> + <set name="affectScope" val="SINGLE" /> <set name="castRange" val="600" /> - <set name="effectPoint" val="#effectPoints" /> + <set name="effectPoint" val="#effectPoint" /> <set name="effectRange" val="1100" /> <set name="hitTime" val="2000" /> <set name="icon" val="icon.skill1218" /> - <set name="isMagic" val="1" /> <!-- Magic Skill --> + <set name="isMagic" val="1" /> <set name="magicLvl" val="#magicLvl" /> - <set name="mpConsume2" val="#mpConsume2" /> <set name="mpConsume1" val="#mpConsume1" /> + <set name="mpConsume2" val="#mpConsume2" /> <set name="operateType" val="A1" /> - <set name="power" val="#amount" /> <!-- TODO: remove after BabyPet rework --> <set name="reuseDelay" val="3000" /> <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" /> <set name="targetType" val="OWNER_PET" /> -- GitLab