diff options
Diffstat (limited to 'src/net/tmwa/beinghandler.cpp')
-rw-r--r-- | src/net/tmwa/beinghandler.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/net/tmwa/beinghandler.cpp b/src/net/tmwa/beinghandler.cpp index a996f97da..9ff7b3ad0 100644 --- a/src/net/tmwa/beinghandler.cpp +++ b/src/net/tmwa/beinghandler.cpp @@ -23,12 +23,15 @@ #include "net/tmwa/beinghandler.h" #include "actormanager.h" +#include "effectmanager.h" #include "guild.h" #include "guildmanager.h" #include "party.h" #include "being/localplayer.h" +#include "particle/particle.h" + #include "input/keyboardconfig.h" #include "gui/windows/killstats.h" @@ -1644,4 +1647,35 @@ void BeingHandler::processPlayerGuilPartyInfo(Net::MessageIn &msg) const BLOCK_END("BeingHandler::processPlayerGuilPartyInfo") } +void BeingHandler::processBeingSelfEffect(Net::MessageIn &msg) const +{ + BLOCK_START("BeingHandler::processBeingSelfEffect") + if (!effectManager || !actorManager) + { + BLOCK_END("BeingHandler::processBeingSelfEffect") + return; + } + + const int id = static_cast<uint32_t>(msg.readInt32("being id")); + Being *const being = actorManager->findBeing(id); + if (!being) + { + BLOCK_END("BeingHandler::processBeingSelfEffect") + return; + } + + const int effectType = msg.readInt32("effect type"); + + if (Particle::enabled) + effectManager->trigger(effectType, being); + + // +++ need dehard code effectType == 3 + if (effectType == 3 && being->getType() == ActorType::Player + && socialWindow) + { // reset received damage + socialWindow->resetDamage(being->getName()); + } + BLOCK_END("BeingHandler::processBeingSelfEffect") +} + } // namespace TmwAthena |