From b6ec7164d59cbd2da91c07d26ac3c475d7017a73 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Thu, 8 Aug 2019 21:18:25 -0400 Subject: [PATCH] Fix mob DR skills (#509) In Maplestory, there are three reflection buffs: - Physical Reflect - Magical Reflect - Mixed Reflect (both combined) Physical reflect would only reflect damage to physical users, Magical would only reflect to magical users. In HeavenMS, the reflects are treated as an HP reflect and MP reflect, so the vanilla reflection mechanic was implemented here --- .../server/channel/handlers/AbstractDealDamageHandler.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 8162296a1e..576bf33f23 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -521,7 +521,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl map.damageMonster(player, monster, totDamageToOneMonster); } - if (monster.isBuffed(MonsterStatus.WEAPON_REFLECT)) { + if (monster.isBuffed(MonsterStatus.WEAPON_REFLECT) && !attack.magic) { List> mobSkills = monster.getSkills(); for (Pair ms : mobSkills) { @@ -532,13 +532,14 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } } } - if (monster.isBuffed(MonsterStatus.MAGIC_REFLECT)) { + if (monster.isBuffed(MonsterStatus.MAGIC_REFLECT) && attack.magic) { List> mobSkills = monster.getSkills(); for (Pair ms : mobSkills) { if (ms.left == 145) { MobSkill toUse = MobSkillFactory.getMobSkill(ms.left, ms.right); - player.addMP(-toUse.getY()); + player.addHP(-toUse.getY()); + map.broadcastMessage(player, MaplePacketCreator.damagePlayer(0, monster.getId(), player.getId(), toUse.getY(), 0, 0, false, 0, true, monster.getObjectId(), 0, 0), true); } } }