summaryrefslogtreecommitdiff
path: root/src/net/tmwa/beinghandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/tmwa/beinghandler.cpp')
-rw-r--r--src/net/tmwa/beinghandler.cpp34
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