summaryrefslogtreecommitdiff
path: root/src/being
diff options
context:
space:
mode:
Diffstat (limited to 'src/being')
-rw-r--r--src/being/actorsprite.cpp11
-rw-r--r--src/being/actorsprite.h11
2 files changed, 18 insertions, 4 deletions
diff --git a/src/being/actorsprite.cpp b/src/being/actorsprite.cpp
index bbb016525..9c1eeddc7 100644
--- a/src/being/actorsprite.cpp
+++ b/src/being/actorsprite.cpp
@@ -57,7 +57,8 @@ ActorSprite::ActorSprite(const int id) :
mActorSpriteListeners(),
mCursorPaddingX(0),
mCursorPaddingY(0),
- mMustResetParticles(false)
+ mMustResetParticles(false),
+ mPoison(false)
{
}
@@ -197,7 +198,13 @@ void ActorSprite::updateStunMode(const int oldMode, const int newMode)
void ActorSprite::updateStatusEffect(const int index, const bool newStatus)
{
- handleStatusEffect(StatusEffect::getStatusEffect(index, newStatus), index);
+ StatusEffect *const effect = StatusEffect::getStatusEffect(
+ index, newStatus);
+ if (!effect)
+ return;
+ if (effect->isPoison() && getType() == PLAYER)
+ setPoison(newStatus);
+ handleStatusEffect(effect, index);
}
void ActorSprite::handleStatusEffect(StatusEffect *const effect,
diff --git a/src/being/actorsprite.h b/src/being/actorsprite.h
index 444232ddd..76e90182d 100644
--- a/src/being/actorsprite.h
+++ b/src/being/actorsprite.h
@@ -179,12 +179,18 @@ public:
*/
void removeActorSpriteListener(ActorSpriteListener *const listener);
- int getActorX() const
+ int getActorX() const A_WARN_UNUSED
{ return getPixelX() - mapTileSize / 2; }
- int getActorY() const
+ int getActorY() const A_WARN_UNUSED
{ return getPixelY() - mapTileSize; }
+ void setPoison(const bool b)
+ { mPoison = b; }
+
+ bool getPoison() const A_WARN_UNUSED
+ { return mPoison; }
+
protected:
/**
* Notify self that the stun mode has been updated. Invoked by
@@ -244,6 +250,7 @@ private:
/** Reset particle status effects on next redraw? */
bool mMustResetParticles;
+ bool mPoison;
};
#endif // BEING_ACTORSPRITE_H