diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/beinghandler.cpp | 27 | ||||
-rw-r--r-- | src/net/eathena/beinghandler.h | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index c96f29433..7b3c3fcaf 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -23,6 +23,7 @@ #include "net/eathena/beinghandler.h" #include "actormanager.h" +#include "effectmanager.h" #include "guild.h" #include "guildmanager.h" #include "party.h" @@ -31,6 +32,8 @@ #include "being/mercenaryinfo.h" #include "being/playerinfo.h" +#include "particle/particle.h" + #include "input/keyboardconfig.h" #include "gui/windows/socialwindow.h" @@ -1977,4 +1980,28 @@ void BeingHandler::processBeingStatUpdate1(Net::MessageIn &msg) const dstBeing->setManner(value); } +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); + + BLOCK_END("BeingHandler::processBeingSelfEffect") +} + } // namespace EAthena diff --git a/src/net/eathena/beinghandler.h b/src/net/eathena/beinghandler.h index f0d2abe49..ed7b3586f 100644 --- a/src/net/eathena/beinghandler.h +++ b/src/net/eathena/beinghandler.h @@ -127,6 +127,8 @@ class BeingHandler final : public MessageHandler, public Ea::BeingHandler void processBeingStatUpdate1(Net::MessageIn &msg) const; void processPlaterStatusChange2(Net::MessageIn &msg) const; + + void processBeingSelfEffect(Net::MessageIn &msg) const; }; } // namespace EAthena |