ManaPlus
Public Member Functions | Static Public Member Functions | Data Fields | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends
Being Class Reference

#include <being.h>

Inheritance diagram for Being:
ActorSprite ConfigListener CompoundSprite Actor Sprite LocalPlayer

Public Member Functions

 Being (const BeingId id, const ActorTypeT type)
 
 ~Being ()
 
ActorTypeT getType () const
 
void clearPath ()
 
int getActionTime () const
 
void setActionTime (const int actionTime)
 
virtual void nextTile ()
 
void setDestination (const int dstX, const int dstY)
 
void setCachedDestination (const int dstX, const int dstY)
 
int getCachedX () const
 
int getCachedY () const
 
const VectorgetDestination () const
 
int getTileX () const
 
int getTileY () const
 
void setTileCoords (const int x, const int y)
 
void setSpeech (const std::string &text)
 
void takeDamage (Being *const attacker, const int amount, const AttackTypeT type, const int attackId, const int level)
 
void handleAttack (Being *const victim, const int damage, const int attackId)
 
void handleSkillCasting (Being *const victim, const int skillId, const int skillLevel)
 
void handleSkill (Being *const victim, const int damage, const int skillId, const int skillLevel)
 
const ItemInfogetEquippedWeapon () const
 
const std::string & getName () const
 
const std::string & getExtName () const
 
void setName (const std::string &name)
 
bool getShowName () const
 
void setShowName (const bool doShowName)
 
void setPartyName (const std::string &name)
 
const std::string & getPartyName () const
 
const std::string & getGuildName () const
 
const std::string & getClanName () const
 
void setGuildName (const std::string &name)
 
void setGuildPos (const std::string &pos)
 
void setClanName (const std::string &name)
 
void addGuild (Guild *const guild)
 
void removeGuild (const int id)
 
const GuildgetGuild (const std::string &guildName) const
 
const GuildgetGuild (const int id) const
 
GuildgetGuild () const
 
const std::map< int, Guild * > & getGuilds () const
 
void clearGuilds ()
 
int16_t getNumberOfGuilds () const
 
bool isInParty () const
 
void setParty (Party *const party)
 
void setGuild (Guild *const guild)
 
void updateGuild ()
 
PartygetParty () const
 
void setSprite (const unsigned int slot, const int id, std::string color, ItemColor colorId)
 
void setSpriteColor (const unsigned int slot, const int id, const std::string &color)
 
void setSpriteColorId (const unsigned int slot, const int id, ItemColor colorId)
 
void setSpriteCards (const unsigned int slot, const int id, const CardsList &cards)
 
void setSpriteId (const unsigned int slot, const int id)
 
void unSetSprite (const unsigned int slot)
 
void setWeaponId (const int id)
 
void setTempSprite (const unsigned int slot, const int id)
 
void setHairTempSprite (const unsigned int slot, const int id)
 
void updateSprite (const unsigned int slot, const int id, const std::string &color)
 
void setHairColorSpriteID (const unsigned int slot, const int id)
 
void setSpriteColor (const unsigned int slot, const std::string &color)
 
int getNumberOfLayers () const
 
void logic ()
 
void botLogic ()
 
void drawSpeech (const int offsetX, const int offsetY)
 
void drawEmotion (Graphics *const graphics, const int offsetX, const int offsetY) const
 
BeingTypeId getSubType () const
 
void setSubtype (const BeingTypeId subtype, const uint16_t look)
 
const BeingInfogetInfo () const
 
TargetCursorSizeT getTargetCursorSize () const
 
int getTargetOffsetX () const
 
int getTargetOffsetY () const
 
virtual unsigned char getBlockWalkMask () const
 
BlockTypeT getBlockType () const
 
void setWalkSpeed (const int speed)
 
int getWalkSpeed () const
 
void setAttackSpeed (const int speed)
 
int getAttackSpeed () const
 
virtual void setAction (const BeingActionT &action, const int attackId)
 
BeingActionT getCurrentAction () const
 
bool isAlive () const
 
uint8_t getDirection () const
 
virtual void setDirection (const uint8_t direction)
 
void setDirectionDelayed (const uint8_t direction)
 
uint8_t getDirectionDelayed () const
 
SpriteDirection::Type getSpriteDirection () const
 
void setPixelPositionF (const Vector &pos)
 
void setPixelPositionF (const float x, const float y, const float z) A_INLINE
 
int getWidth () const
 
int getHeight () const
 
void fireMissile (Being *const victim, const MissileInfo &missile) const
 
const PathgetPath () const
 
int getDistance () const
 
void setDistance (const int n)
 
void setEmote (const uint8_t emotion, const int emote_time)
 
void setState (const uint8_t state)
 
void drawPlayerSprites (Graphics *const graphics, const int posX, const int posY) const
 
void drawSpritesSDL (Graphics *const graphics, const int posX, const int posY) const
 
void drawHpBar (Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
 
void optionChanged (const std::string &value)
 
void flashName (const int time)
 
int getDamageTaken () const
 
void setDamageTaken (const int damage)
 
void updateName ()
 
void setLevel (const int n)
 
virtual int getLevel () const
 
void setReachable (const ReachableT n)
 
ReachableT getReachable () const
 
void addToCache () const
 
bool updateFromCache ()
 
virtual void setGender (const GenderT gender)
 
GenderT getGender () const
 
std::string getSitAction () const
 
std::string getCastAction () const
 
std::string getCastAction (const SkillInfo *const skill) const
 
std::string getMoveAction () const
 
std::string getDeadAction () const
 
std::string getStandAction () const
 
std::string getSpawnAction () const
 
std::string getWeaponAttackAction (const ItemInfo *const weapon) const
 
std::string getAttackAction () const
 
std::string getAttackAction (const Attack *const attack1) const
 
bool isGM () const
 
void setGM (const bool gm)
 
bool canTalk () const
 
void talkTo () const
 
void draw (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawPlayer (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawOther (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawNpc (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawMonster (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawPortal (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawBasic (Graphics *const graphics, const int x, const int y) const
 
void setMoveTime ()
 
void setAttackTime ()
 
void setTalkTime ()
 
void setTestTime ()
 
void setOtherTime ()
 
time_t getMoveTime () const
 
time_t getAttackTime () const
 
time_t getTalkTime () const
 
time_t getTestTime () const
 
time_t getOtherTime () const
 
void resetCounters ()
 
void updateColors ()
 
void setEnemy (const bool n)
 
const std::string & getIp () const
 
void setIp (const std::string &ip)
 
unsigned int getPvpRank () const
 
void setPvpRank (const unsigned int rank)
 
void setHP (const int hp)
 
void setMaxHP (const int hp)
 
int getHP () const
 
int getMaxHP () const
 
uint8_t calcDirection (const int dstX, const int dstY) const
 
uint8_t calcDirection () const
 
void setAttackDelay (const int n)
 
int getAttackDelay () const
 
int getMinHit () const
 
void setMinHit (const int n)
 
int getMaxHit () const
 
void setMaxHit (const int n)
 
int getCriticalHit () const
 
void setCriticalHit (const int n)
 
void updateHit (const int amount)
 
EquipmentgetEquipment ()
 
void undressItemById (const int id)
 
int getGoodStatus () const
 
void setGoodStatus (const int n)
 
std::string getGenderSign () const
 
std::string getGenderSignWithSpace () const
 
void updateComment ()
 
const std::string getComment () const
 
void setComment (const std::string &n)
 
bool isAdvanced () const
 
void setAdvanced (const bool n)
 
bool isBuyShopEnabled () const
 
bool isSellShopEnabled () const
 
void enableShop (const bool b)
 
void setAttackRange (const int range)
 
void updatePercentHP ()
 
void setRaceName (const std::string &name)
 
std::string getRaceName () const
 
int getSpriteID (const int slot) const
 
const BeingSlotgetSpriteSlot (const int slot) const
 
ItemColor getSpriteColor (const int slot) const
 
void setHairStyle (const unsigned int slot, const int id)
 
void setHairColor (const unsigned int slot, const ItemColor color)
 
void setHairColor (const ItemColor color)
 
void setSpriteSlot (const unsigned int slot, const BeingSlot &beingSlot)
 
ItemColor getHairColor () const
 
void recalcSpritesOrder ()
 
int getHitEffect (const Being *const attacker, const AttackTypeT type, const int attackId, const int level) const
 
CursorT getHoverCursor () const
 
void addAfkEffect ()
 
void removeAfkEffect ()
 
void updateAwayEffect ()
 
void addSpecialEffect (const int effect)
 
void removeSpecialEffect ()
 
void addEffect (const std::string &name)
 
void setOwner (Being *const owner)
 
BeinggetOwner () const
 
void playSfx (const SoundInfo &sound, Being *const being, const bool main, const int x, const int y) const
 
uint16_t getLook () const
 
void setLook (const uint16_t look)
 
void setPath (const Path &path)
 
int getSortPixelY () const
 
void setMap (Map *const map)
 
void recreateItemParticles ()
 
void incUsage ()
 
int decUsage ()
 
virtual int getLastAttackX () const
 
virtual int getLastAttackY () const
 
void drawHomunculus (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawMercenary (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawElemental (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void setTrickDead (const bool b)
 
void setChat (ChatObject *const obj)
 
ChatObjectgetChat () const
 
void setRiding (const bool b)
 
void setHorse (const int horseId)
 
void removeHorse ()
 
void setSellBoard (const std::string &text)
 
std::string getSellBoard () const
 
void setBuyBoard (const std::string &text)
 
std::string getBuyBoard () const
 
void setSpiritBalls (const unsigned int balls)
 
unsigned int getSpiritBalls () const
 
void stopCast (const bool b)
 
void setCreatorId (const BeingId id)
 
BeingId getCreatorId () const
 
void setKarma (const int karma)
 
int getKarma () const
 
void setManner (const int manner)
 
int getManner () const
 
void disableBotAi ()
 
void enableBotAi ()
 
int getAreaSize () const
 
void setAreaSize (const int areaSize)
 
void setTeamId (const uint16_t teamId)
 
void showTeamBadge (const bool show)
 
void showGuildBadge (const bool show)
 
void showClanBadge (const bool show)
 
void showGmBadge (const bool show)
 
void showPartyBadge (const bool show)
 
void showNameBadge (const bool show)
 
void showShopBadge (const bool show)
 
void showInactiveBadge (const bool show)
 
void showAwayBadge (const bool show)
 
void showBadges (const bool show)
 
void setLanguageId (const int lang)
 
int getLanguageId ()
 
uint16_t getTeamId () const
 
virtual void setGroupId (const int id)
 
int getGroupId () const
 
void serverRemove ()
 
void addCast (const int dstX, const int dstY, const int skillId, const int skillLevel, const int range, const int waitTimeTicks)
 
void fixDirectionOffsets (int &offsetX, int &offsetY) const
 
bool getAllowNpcEquipment () const
 
- Public Member Functions inherited from ActorSprite
 ActorSprite (const BeingId id)
 
 ~ActorSprite ()
 
BeingId getId () const
 
void setId (const BeingId id)
 
void controlAutoParticle (Particle *const particle)
 
void controlCustomParticle (Particle *const particle)
 
void setTargetType (const TargetCursorTypeT type)
 
void untarget ()
 
void setStatusEffect (const int32_t index, const Enable active, const IsStart start)
 
void setStatusEffectOpitons (const uint32_t option, const uint32_t opt1, const uint32_t opt2, const uint32_t opt3)
 
void setStatusEffectOpitons (const uint32_t option, const uint32_t opt1, const uint32_t opt2)
 
void setStatusEffectOpiton0 (const uint32_t option)
 
void setAlpha (const float alpha)
 
float getAlpha () const
 
void addActorSpriteListener (ActorSpriteListener *const listener)
 
void removeActorSpriteListener (ActorSpriteListener *const listener)
 
int getActorX () const
 
int getActorY () const
 
void setPoison (const bool b)
 
bool getPoison () const
 
void setHaveCart (const bool b)
 
bool getHaveCart () const
 
bool isTrickDead () const
 
const std::set< int32_t > & getStatusEffects () const
 
std::string getStatusEffectsString () const
 
size_t getParticlesCount () const
 
void controlParticleDeleted (const Particle *const particle)
 
- Public Member Functions inherited from CompoundSprite
 CompoundSprite ()
 
 ~CompoundSprite ()
 
bool reset ()
 
bool play (const std::string &action)
 
bool update (const int time)
 
void drawSimple (Graphics *const graphics, const int posX, const int posY) const
 
int getWidth () const
 
int getHeight () const
 
const ImagegetImage () const
 
bool setSpriteDirection (const SpriteDirection::Type direction)
 
int getNumberOfLayers () const
 
unsigned int getCurrentFrame () const
 
unsigned int getFrameCount () const
 
void addSprite (Sprite *const sprite)
 
void setSprite (const size_t layer, Sprite *const sprite)
 
void removeSprite (const int layer)
 
void clear ()
 
void ensureSize (const size_t layerCount)
 
void drawSprites (Graphics *const graphics, const int posX, const int posY) const
 
void setAlpha (float alpha)
 
bool updateNumber (const unsigned num)
 
int getLastTime () const
 
int getStartTime () const
 
- Public Member Functions inherited from Sprite
virtual ~Sprite ()
 
virtual const void * getHash () const
 
virtual const void * getHash2 () const
 
- Public Member Functions inherited from Actor
virtual ~Actor ()
 
const VectorgetPixelPositionF () const
 
int getPixelX () const
 
virtual int getPixelY () const
 
const MapgetMap () const
 
- Public Member Functions inherited from ConfigListener
 ConfigListener ()
 
virtual ~ConfigListener ()
 

Static Public Member Functions

static void reReadConfig ()
 
static BeingCacheEntrygetCacheEntry (const BeingId id)
 
static void clearCache ()
 
static std::string loadComment (const std::string &name, const ActorTypeT &type)
 
static void saveComment (const std::string &name, const std::string &comment, const ActorTypeT &type)
 
static uint8_t genderToInt (const GenderT sex) A_CONST
 
static GenderT intToGender (const uint8_t sex) A_CONST
 
static BeingcreateBeing (const BeingId id, const ActorTypeT type, const BeingTypeId subtype, Map *const map)
 
- Static Public Member Functions inherited from ActorSprite
static void load ()
 
static void unload ()
 
- Static Public Member Functions inherited from CompoundSprite
static void setEnableDelay (bool b)
 

Data Fields

NextSoundInfo mNextSound
 
- Data Fields inherited from CompoundSprite
std::vector< Sprite * > mSprites
 
- Data Fields inherited from Actor
int mPixelX
 
int mPixelY
 

Protected Types

typedef std::map< int, ParticleInfo * > SpriteParticleInfo
 
typedef SpriteParticleInfo::iterator SpriteParticleInfoIter
 
- Protected Types inherited from ActorSprite
typedef std::list< ActorSpriteListener * > ActorSpriteListeners
 
typedef ActorSpriteListeners::iterator ActorSpriteListenerIterator
 
- Protected Types inherited from CompoundSprite
typedef std::list< CompoundItem * > ImagesCache
 

Protected Member Functions

void drawPlayerSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawOtherSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawNpcSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawPortalSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawMonsterSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawHomunculusSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawMercenarySpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawElementalSpriteAt (Graphics *const graphics, const int x, const int y) const
 
void drawCompound (Graphics *const graphics, const int posX, const int posY) const
 
virtual void updateCoords ()
 
void showName ()
 
void addItemParticles (const int id, const SpriteDisplay &display)
 
void addItemParticlesCards (const int id, const SpriteDisplay &display, const CardsList &cards)
 
void removeAllItemsParticles ()
 
void removeItemParticles (const int id)
 
void createSpeechBubble ()
 
void setDefaultNameColor (const UserColorIdT defaultColor)
 
void updateBadgesCount ()
 
void postInit (const BeingTypeId subType, Map *const map)
 
void updateBadgesPosition ()
 
template<signed char pos, signed char neg>
int getOffset () const
 
int searchSlotValue (const std::vector< int > &slotRemap, const int val) const
 
void addSpiritBalls (const unsigned int balls, const int effectId)
 
void removeSpiritBalls (const unsigned int balls)
 
void dumpSprites () const
 
void drawBeingCursor (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void drawCasting (Graphics *const graphics, const int offsetX, const int offsetY) const
 
void updateBotFollow (int dstX, int dstY, const int divX, const int divY)
 
void moveBotTo (int dstX, int dstY)
 
void updateBotDirection (const int dstX, const int dstY)
 
void botFixOffset (int &dstX, int &dstY) const
 
- Protected Member Functions inherited from ActorSprite
virtual void updateStatusEffect (const int32_t index, const Enable newStatus, const IsStart start)
 
virtual void handleStatusEffect (const StatusEffect *const effect, const int32_t effectId, const Enable newStatus, const IsStart start)
 
void setupSpriteDisplay (const SpriteDisplay &display, const ForceDisplay forceDisplay, const DisplayTypeT displayType, const std::string &color)
 
- Protected Member Functions inherited from CompoundSprite
void redraw () const
 
void updateImages () const
 
bool updateFromCache () const
 
void initCurrentCacheItem () const
 
- Protected Member Functions inherited from Sprite
 Sprite ()
 
- Protected Member Functions inherited from Actor
 Actor ()
 

Static Protected Member Functions

static int getDefaultEffectId (const AttackTypeT &type)
 
static void searchSlotValueItr (std::vector< int >::iterator &it, int &idx, std::vector< int > &slotRemap, const int val)
 
- Static Protected Member Functions inherited from ActorSprite
static void initTargetCursor ()
 
static void cleanupTargetCursors ()
 

Protected Attributes

BeingInfomInfo
 
AnimatedSpritemEmotionSprite
 
AnimatedSpritemAnimationEffect
 
CastingEffectmCastingEffect
 
AnimatedSpritemBadges [BadgeIndex::BadgeIndexSize]
 
std::string mSpriteAction
 
std::string mName
 
std::string mExtName
 
std::string mRaceName
 
std::string mPartyName
 
std::string mGuildName
 
std::string mClanName
 
std::string mSpeech
 
FlashTextmDispName
 
const ColormNameColor
 
const ItemInfomEquippedWeapon
 
Path mPath
 
TextmText
 
const ColormTextColor
 
Vector mDest
 
std::vector< BeingSlotmSlots
 
SpriteParticleInfo mSpriteParticles
 
std::map< int, Guild * > mGuilds
 
PartymParty
 
int mActionTime
 
int mEmotionTime
 
int mSpeechTime
 
int mAttackSpeed
 
int mLevel
 
int mGroupId
 
int mAttackRange
 
int mLastAttackX
 
int mLastAttackY
 
int mPreStandTime
 
GenderT mGender
 
BeingActionT mAction
 
BeingTypeId mSubType
 
uint8_t mDirection
 
uint8_t mDirectionDelayed
 
SpriteDirection::Type mSpriteDirection
 
bool mShowName
 
bool mIsGM
 
const ActorTypeT mType
 
SpeechBubblemSpeechBubble
 
int mWalkSpeed
 
int mSpeed
 
std::string mIp
 
int * mSpriteRemap
 
int * mSpriteHide
 
int * mSpriteDraw
 
std::string mComment
 
std::string mBuyBoard
 
std::string mSellBoard
 
BeingmOwner
 
ParticlemSpecialParticle
 
ChatObjectmChat
 
HorseInfomHorseInfo
 
std::vector< AnimatedSprite * > mDownHorseSprites
 
std::vector< AnimatedSprite * > mUpHorseSprites
 
std::vector< Particle * > mSpiritParticles
 
int mX
 
int mY
 
int mCachedX
 
int mCachedY
 
int mSortOffsetY
 
int mPixelOffsetY
 
int mFixedOffsetY
 
uint8_t mOldHeight
 
int mDamageTaken
 
int mHP
 
int mMaxHP
 
int mDistance
 
ReachableT mReachable
 
int mGoodStatus
 
time_t mMoveTime
 
time_t mAttackTime
 
time_t mTalkTime
 
time_t mOtherTime
 
time_t mTestTime
 
int mAttackDelay
 
int mMinHit
 
int mMaxHit
 
int mCriticalHit
 
unsigned int mPvpRank
 
unsigned int mNumber
 
unsigned int mSpiritBalls
 
int mUsageCounter
 
int mKarma
 
int mManner
 
int mAreaSize
 
int mCastEndTime
 
int mLanguageId
 
int mBadgesX
 
int mBadgesY
 
BeingId mCreatorId
 
uint16_t mTeamId
 
uint16_t mLook
 
uint16_t mBadgesCount
 
ItemColor mHairColor
 
bool mErased
 
bool mEnemy
 
bool mGotComment
 
bool mAdvanced
 
bool mShop
 
bool mAway
 
bool mInactive
 
bool mNeedPosUpdate
 
bool mBotAi
 
bool mAllowNpcEquipment
 
- Protected Attributes inherited from ActorSprite
std::set< int32_t > mStatusEffects
 
ParticleVector mStatusParticleEffects
 
ParticleList mChildParticleEffects
 
int mHorseId
 
BeingId mId
 
AnimatedSpritemUsedTargetCursor
 
ActorSpriteListeners mActorSpriteListeners
 
int mCursorPaddingX
 
int mCursorPaddingY
 
bool mMustResetParticles
 
bool mPoison
 
bool mHaveCart
 
bool mTrickDead
 
- Protected Attributes inherited from CompoundSprite
ImagesCache imagesCache
 
CompoundItemmCacheItem
 
ImagemImage
 
ImagemAlphaImage
 
int mOffsetX
 
int mOffsetY
 
int mStartTime
 
int mLastTime
 
int mNextRedrawTime
 
bool mNeedsRedraw
 
bool mEnableAlphaFix
 
bool mDisableAdvBeingCaching
 
bool mDisableBeingCaching
 
- Protected Attributes inherited from Sprite
float mAlpha
 
- Protected Attributes inherited from Actor
MapmMap
 
Vector mPos
 
int mYDiff
 

Static Protected Attributes

static time_t mUpdateConfigTime = 0
 
static unsigned int mConfLineLim = 0
 
static int mSpeechType = 0
 
static bool mHighlightMapPortals = false
 
static bool mHighlightMonsterAttackRange = false
 
static bool mLowTraffic = true
 
static bool mDrawHotKeys = true
 
static bool mShowBattleEvents = false
 
static bool mShowMobHP = false
 
static bool mShowOwnHP = false
 
static bool mShowGender = false
 
static bool mShowLevel = false
 
static bool mShowPlayersStatus = false
 
static bool mEnableReorderSprites = true
 
static bool mHideErased = false
 
static Move mMoveNames = Move_false
 
static bool mUseDiagonal = true
 
static BadgeDrawType::Type mShowBadges = BadgeDrawType::Top
 
static int mAwayEffect = -1
 
static VisibleNamePos::Type mVisibleNamePos = VisibleNamePos::Bottom
 
- Static Protected Attributes inherited from ActorSprite
static AnimatedSpritetargetCursor [static_cast< size_t >(TargetCursorType::NUM_TCT)][static_cast< size_t >(TargetCursorSize::NUM_TC)]
 
static bool loaded = false
 
- Static Protected Attributes inherited from CompoundSprite
static bool mEnableDelay = true
 

Friends

class ActorManager
 
class BeingEquipBackend
 
class LocalPlayer
 

Additional Inherited Members

- Public Types inherited from CompoundSprite
typedef std::vector< Sprite * >::iterator SpriteIterator
 
typedef std::vector< Sprite * >::const_iterator SpriteConstIterator
 

Detailed Description

Definition at line 93 of file being.h.

Member Typedef Documentation

◆ SpriteParticleInfo

typedef std::map<int, ParticleInfo*> Being::SpriteParticleInfo
protected

Definition at line 1206 of file being.h.

◆ SpriteParticleInfoIter

typedef SpriteParticleInfo::iterator Being::SpriteParticleInfoIter
protected

Definition at line 1207 of file being.h.

Constructor & Destructor Documentation

◆ Being()

Being::Being ( const BeingId  id,
const ActorTypeT  type 
)

Constructor.

Parameters
ida unique being id
subtypepartly determines the type of the being
mapthe map the being is on

Definition at line 161 of file being.cpp.

References for_each_badges, mBadges, mSpriteDraw, mSpriteHide, and mSpriteRemap.

Referenced by createBeing().

162  :
163  ActorSprite(id),
164  mNextSound(),
166  mEmotionSprite(nullptr),
167  mAnimationEffect(nullptr),
168  mCastingEffect(nullptr),
169  mBadges(),
171  mName(),
172  mExtName(),
173  mRaceName(),
174  mPartyName(),
175  mGuildName(),
176  mClanName(),
177  mSpeech(),
178  mDispName(nullptr),
179  mNameColor(nullptr),
180  mEquippedWeapon(nullptr),
181  mPath(),
182  mText(nullptr),
183  mTextColor(nullptr),
184  mDest(),
185  mSlots(),
187  mGuilds(),
188  mParty(nullptr),
189  mActionTime(0),
190  mEmotionTime(0),
191  mSpeechTime(0),
192  mAttackSpeed(350),
193  mLevel(0),
194  mGroupId(0),
195  mAttackRange(1),
196  mLastAttackX(0),
197  mLastAttackY(0),
198  mPreStandTime(0),
201  mSubType(fromInt(0xFFFF, BeingTypeId)),
205  mShowName(false),
206  mIsGM(false),
207  mType(type),
208  mSpeechBubble(nullptr),
209  mWalkSpeed(playerHandler != nullptr ?
211  mSpeed(playerHandler != nullptr ?
213  mIp(),
214  mSpriteRemap(new int[20]),
215  mSpriteHide(new int[20]),
216  mSpriteDraw(new int[20]),
217  mComment(),
218  mBuyBoard(),
219  mSellBoard(),
220  mOwner(nullptr),
221  mSpecialParticle(nullptr),
222  mChat(nullptr),
223  mHorseInfo(nullptr),
225  mUpHorseSprites(),
227  mX(0),
228  mY(0),
229  mCachedX(0),
230  mCachedY(0),
231  mSortOffsetY(0),
232  mPixelOffsetY(0),
233  mFixedOffsetY(0),
234  mOldHeight(0),
235  mDamageTaken(0),
236  mHP(0),
237  mMaxHP(0),
238  mDistance(0),
240  mGoodStatus(-1),
241  mMoveTime(0),
242  mAttackTime(0),
243  mTalkTime(0),
244  mOtherTime(0),
246  mAttackDelay(0),
247  mMinHit(0),
248  mMaxHit(0),
249  mCriticalHit(0),
250  mPvpRank(0),
251  mNumber(100),
252  mSpiritBalls(0U),
253  mUsageCounter(1),
254  mKarma(0),
255  mManner(0),
256  mAreaSize(11),
257  mCastEndTime(0),
258  mLanguageId(-1),
259  mBadgesX(0),
260  mBadgesY(0),
262  mTeamId(0U),
263  mLook(0U),
264  mBadgesCount(0U),
266  mErased(false),
267  mEnemy(false),
268  mGotComment(false),
269  mAdvanced(false),
270  mShop(false),
271  mAway(false),
272  mInactive(false),
273  mNeedPosUpdate(true),
274  mBotAi(true),
275  mAllowNpcEquipment(false)
276 {
277  for (int f = 0; f < 20; f ++)
278  {
279  mSpriteRemap[f] = f;
280  mSpriteHide[f] = 0;
281  mSpriteDraw[f] = 0;
282  }
283 
285  mBadges[f] = nullptr;
286 }
Net::PlayerHandler * playerHandler
Definition: net.cpp:92
SpriteParticleInfo mSpriteParticles
Definition: being.h:1210
int mSpeechTime
Definition: being.h:1220
unsigned int mPvpRank
Definition: being.h:1364
bool mBotAi
Definition: being.h:1388
int mAttackSpeed
Definition: being.h:1221
bool mEnemy
Definition: being.h:1381
SpriteDirection::Type mSpriteDirection
Definition: being.h:1236
std::string mGuildName
Definition: being.h:1187
int mKarma
Definition: being.h:1368
#define fromInt(val, name)
Definition: intdefines.h:45
uint8_t mDirection
Definition: being.h:1234
int mFixedOffsetY
Definition: being.h:1324
const Color * mNameColor
Definition: being.h:1195
time_t mAttackTime
Definition: being.h:1356
uint16_t mLook
Definition: being.h:1377
unsigned int mSpiritBalls
Definition: being.h:1366
std::vector< AnimatedSprite * > mDownHorseSprites
Definition: being.h:1313
int mEmotionTime
Definition: being.h:1217
static BeingInfo * unknown
Definition: beinginfo.h:55
bool mIsGM
Definition: being.h:1238
ActorSprite(const BeingId id)
Definition: actorsprite.cpp:68
int mCachedX
Definition: being.h:1319
Path mPath
Definition: being.h:1200
CastingEffect * mCastingEffect
Definition: being.h:1179
int mLevel
Definition: being.h:1223
AnimatedSprite * mAnimationEffect
Definition: being.h:1178
int mDistance
Definition: being.h:1330
int mAttackDelay
Definition: being.h:1360
static const std::string STAND("stand")
const ItemColor ItemColor_zero
Definition: itemcolor.h:29
std::string mPartyName
Definition: being.h:1186
const Color * mTextColor
Definition: being.h:1202
std::vector< AnimatedSprite * > mUpHorseSprites
Definition: being.h:1314
int mManner
Definition: being.h:1369
Text * mText
Definition: being.h:1201
std::string mSellBoard
Definition: being.h:1308
Vector mDest
Definition: being.h:1204
std::string mRaceName
Definition: being.h:1185
std::string mClanName
Definition: being.h:1188
uint16_t mTeamId
Definition: being.h:1376
ReachableT mReachable
Definition: being.h:1331
std::vector< Particle * > mSpiritParticles
Definition: being.h:1315
std::vector< BeingSlot > mSlots
Definition: being.h:1209
int mMaxHit
Definition: being.h:1362
bool mErased
Definition: being.h:1380
std::string mName
Definition: being.h:1183
int mGoodStatus
Definition: being.h:1332
time_t mTestTime
Definition: being.h:1359
bool mInactive
Definition: being.h:1386
BeingTypeId mSubType
Definition: being.h:1233
std::string mSpeech
Definition: being.h:1189
Party * mParty
Definition: being.h:1214
bool mNeedPosUpdate
Definition: being.h:1387
SpeechBubble * mSpeechBubble
Definition: being.h:1293
int mUsageCounter
Definition: being.h:1367
std::string mIp
Definition: being.h:1302
AnimatedSprite * mBadges[BadgeIndex::BadgeIndexSize]
Definition: being.h:1180
uint8_t mDirectionDelayed
Definition: being.h:1235
int mX
Definition: being.h:1317
NextSoundInfo mNextSound
Definition: being.h:957
int mMaxHP
Definition: being.h:1329
int mLanguageId
Definition: being.h:1372
const ItemInfo * mEquippedWeapon
Definition: being.h:1198
time_t mMoveTime
Definition: being.h:1355
std::string mComment
Definition: being.h:1306
#define for_each_badges()
Definition: being.cpp:155
int * mSpriteHide
Definition: being.h:1304
int mMinHit
Definition: being.h:1361
int mLastAttackY
Definition: being.h:1227
int mDamageTaken
Definition: being.h:1327
int * mSpriteRemap
Definition: being.h:1303
int mCastEndTime
Definition: being.h:1371
bool mGotComment
Definition: being.h:1382
int mLastAttackX
Definition: being.h:1226
bool mShop
Definition: being.h:1384
std::string mExtName
Definition: being.h:1184
time_t mTalkTime
Definition: being.h:1357
volatile time_t cur_time
Definition: timer.cpp:57
bool mShowName
Definition: being.h:1237
unsigned int mNumber
Definition: being.h:1365
BeingId mCreatorId
Definition: being.h:1375
int mWalkSpeed
Definition: being.h:1300
int mActionTime
Definition: being.h:1216
int mSortOffsetY
Definition: being.h:1321
int mGroupId
Definition: being.h:1224
int mPreStandTime
Definition: being.h:1229
int mCachedY
Definition: being.h:1320
AnimatedSprite * mEmotionSprite
Definition: being.h:1177
HorseInfo * mHorseInfo
Definition: being.h:1312
GenderT mGender
Definition: being.h:1231
int mBadgesX
Definition: being.h:1373
int mBadgesY
Definition: being.h:1374
int * mSpriteDraw
Definition: being.h:1305
int mY
Definition: being.h:1318
FlashText * mDispName
Definition: being.h:1194
bool mAway
Definition: being.h:1385
std::string mBuyBoard
Definition: being.h:1307
int mAreaSize
Definition: being.h:1370
int mCriticalHit
Definition: being.h:1363
std::string mSpriteAction
Definition: being.h:1182
const BeingId BeingId_zero
Definition: beingid.h:29
uint8_t mOldHeight
Definition: being.h:1325
ItemColor mHairColor
Definition: being.h:1379
std::map< int, Guild * > mGuilds
Definition: being.h:1213
Being * mOwner
Definition: being.h:1309
int mAttackRange
Definition: being.h:1225
bool mAllowNpcEquipment
Definition: being.h:1389
int mPixelOffsetY
Definition: being.h:1322
Particle * mSpecialParticle
Definition: being.h:1310
int BeingTypeId
Definition: beingtypeid.h:29
int mSpeed
Definition: being.h:1301
uint16_t mBadgesCount
Definition: being.h:1378
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232
bool mAdvanced
Definition: being.h:1383
int mHP
Definition: being.h:1328
ChatObject * mChat
Definition: being.h:1311
time_t mOtherTime
Definition: being.h:1358
virtual int getDefaultWalkSpeed() const =0
const ActorTypeT mType
Definition: being.h:1290

◆ ~Being()

Being::~Being ( )

Definition at line 336 of file being.cpp.

References CHECKLISTENERS, config, delete2, for_each_badges, mAnimationEffect, mBadges, mBadgesCount, mCastingEffect, mChat, mDispName, mEmotionSprite, mSpeechBubble, mSpiritParticles, mSpriteDraw, mSpriteHide, mSpriteRemap, mText, removeAllItemsParticles(), removeHorse(), and Configuration::removeListener().

337 {
338  config.removeListener("visiblenames", this);
340 
341  delete [] mSpriteRemap;
342  mSpriteRemap = nullptr;
343  delete [] mSpriteHide;
344  mSpriteHide = nullptr;
345  delete [] mSpriteDraw;
346  mSpriteDraw = nullptr;
347 
349  delete2(mBadges[f]);
350 
353  delete2(mText);
357  mBadgesCount = 0;
358  delete2(mChat);
359  removeHorse();
360 
363 }
void removeAllItemsParticles()
Definition: being.cpp:5037
Configuration config
CastingEffect * mCastingEffect
Definition: being.h:1179
AnimatedSprite * mAnimationEffect
Definition: being.h:1178
#define delete2(var)
Definition: delete2.h:24
Text * mText
Definition: being.h:1201
std::vector< Particle * > mSpiritParticles
Definition: being.h:1315
void removeHorse()
Definition: being.cpp:5404
SpeechBubble * mSpeechBubble
Definition: being.h:1293
AnimatedSprite * mBadges[BadgeIndex::BadgeIndexSize]
Definition: being.h:1180
#define for_each_badges()
Definition: being.cpp:155
int * mSpriteHide
Definition: being.h:1304
int * mSpriteRemap
Definition: being.h:1303
AnimatedSprite * mEmotionSprite
Definition: being.h:1177
int * mSpriteDraw
Definition: being.h:1305
FlashText * mDispName
Definition: being.h:1194
#define CHECKLISTENERS
Definition: localconsts.h:268
uint16_t mBadgesCount
Definition: being.h:1378
ChatObject * mChat
Definition: being.h:1311
void removeListener(const std::string &key, ConfigListener *const listener)

Member Function Documentation

◆ addAfkEffect()

void Being::addAfkEffect ( )

Definition at line 4918 of file being.cpp.

References addSpecialEffect(), and mAwayEffect.

Referenced by GameModifiers::changeAwayMode(), getHoverCursor(), and updateAwayEffect().

4919 {
4921 }
static int mAwayEffect
Definition: being.h:1352
void addSpecialEffect(const int effect)
Definition: being.cpp:4928

◆ addCast()

void Being::addCast ( const int  dstX,
const int  dstY,
const int  skillId,
const int  skillLevel,
const int  range,
const int  waitTimeTicks 
)

Definition at line 5369 of file being.cpp.

References SkillData::castingAnimation, data, delete2, SkillDialog::getSkillDataByLevel(), mCastEndTime, mCastingEffect, Actor::mMap, reportAlways, Actor::setMap(), skillDialog, and tick_time.

Referenced by getGroupId(), and EAthena::BeingRecv::processSkillCastingContinue().

5375 {
5376  if (waitTimeTicks <= 0)
5377  {
5378  mCastEndTime = 0;
5379  return;
5380  }
5381  mCastEndTime = tick_time + waitTimeTicks;
5383  skillId,
5384  skillLevel);
5386  if (data != nullptr)
5387  {
5388  const std::string castingAnimation = data->castingAnimation;
5389  mCastingEffect = new CastingEffect(skillId,
5390  skillLevel,
5391  castingAnimation,
5392  dstX,
5393  dstY,
5394  range);
5396  }
5397  else
5398  {
5399  reportAlways("Want to draw casting for unknown skill %d",
5400  skillId);
5401  }
5402 }
volatile int tick_time
Definition: timer.cpp:52
CastingEffect * mCastingEffect
Definition: being.h:1179
#define delete2(var)
Definition: delete2.h:24
std::string castingAnimation
Definition: skilldata.h:41
SkillData * getSkillDataByLevel(const int id, const int level) const
uint32_t data
int mCastEndTime
Definition: being.h:1371
virtual void setMap(Map *const map)
Definition: actor.cpp:47
SkillDialog * skillDialog
Definition: skilldialog.cpp:65
#define reportAlways(...)
Definition: checkutils.h:252
Map * mMap
Definition: actor.h:138

◆ addEffect()

void Being::addEffect ( const std::string &  name)

Definition at line 4959 of file being.cpp.

References Configuration::getStringValue(), AnimatedSprite::load(), mAnimationEffect, and paths.

Referenced by getHoverCursor(), EffectManager::trigger(), and EffectManager::triggerReturn().

4960 {
4961  delete mAnimationEffect;
4963  paths.getStringValue("sprites") + name,
4964  0);
4965 }
std::string getStringValue(const std::string &key) const
AnimatedSprite * mAnimationEffect
Definition: being.h:1178
static AnimatedSprite * load(const std::string &filename, const int variant)
Configuration paths

◆ addGuild()

void Being::addGuild ( Guild *const  guild)

Adds a guild to the being.

Definition at line 1236 of file being.cpp.

References SocialWindow::addTab(), guild, localPlayer, mGuilds, and socialWindow.

Referenced by GuildManager::createTab(), getClanName(), EAthena::GuildRecv::processGuildPositionInfo(), and setGuild().

1237 {
1238  if (guild == nullptr)
1239  return;
1240 
1241  mGuilds[guild->getId()] = guild;
1242 
1243  if (this == localPlayer && (socialWindow != nullptr))
1244  socialWindow->addTab(guild);
1245 }
int16_t getId() const
Definition: guild.h:127
bool addTab(Guild *const guild)
LocalPlayer * localPlayer
SocialWindow * socialWindow
std::map< int, Guild * > mGuilds
Definition: being.h:1213
uint32_t guild

◆ addItemParticles()

void Being::addItemParticles ( const int  id,
const SpriteDisplay display 
)
protected

Definition at line 5044 of file being.cpp.

References ParticleEngine::addEffect(), ActorSprite::controlCustomParticle(), ParticleEngine::enabled, FOR_EACH, mSpriteParticles, particleEngine, and restrict.

Referenced by getAllowNpcEquipment(), setHairTempSprite(), setSpriteColor(), setSpriteColorId(), setSpriteId(), and setTempSprite().

5046 {
5047  const SpriteParticleInfoIter it = mSpriteParticles.find(id);
5048  ParticleInfo *restrict pi = nullptr;
5049  if (it == mSpriteParticles.end())
5050  {
5051  pi = new ParticleInfo;
5052  mSpriteParticles[id] = pi;
5053  }
5054  else
5055  {
5056  pi = (*it).second;
5057  }
5058 
5059  if ((pi == nullptr) || !pi->particles.empty())
5060  return;
5061 
5062  // setup particle effects
5064  (particleEngine != nullptr))
5065  {
5066  FOR_EACH (StringVectCIter, itr, display.particles)
5067  {
5068  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5070  pi->files.push_back(*itr);
5071  pi->particles.push_back(p);
5072  }
5073  }
5074  else
5075  {
5076  FOR_EACH (StringVectCIter, itr, display.particles)
5077  pi->files.push_back(*itr);
5078  }
5079 }
SpriteParticleInfo mSpriteParticles
Definition: being.h:1210
#define FOR_EACH(type, iter, array)
Definition: foreach.h:24
static bool enabled
StringVect::const_iterator StringVectCIter
Definition: stringvector.h:30
Particle * addEffect(const std::string &particleEffectFile, const int pixelX, const int pixelY, const int rotation)
ParticleEngine * particleEngine
SpriteParticleInfo::iterator SpriteParticleInfoIter
Definition: being.h:1207
void controlCustomParticle(Particle *const particle)
StringVect particles
Definition: spritedisplay.h:47
#define restrict
Definition: localconsts.h:156

◆ addItemParticlesCards()

void Being::addItemParticlesCards ( const int  id,
const SpriteDisplay display,
const CardsList cards 
)
protected

Definition at line 5081 of file being.cpp.

References ParticleEngine::addEffect(), ActorSprite::controlCustomParticle(), ParticleEngine::enabled, FOR_EACH, ItemDB::get(), ItemInfo::getDisplay(), Actions::info(), Item::isItem(), maxCards, mSpriteParticles, particleEngine, and restrict.

Referenced by getAllowNpcEquipment(), and setSpriteCards().

5084 {
5085  const SpriteParticleInfoIter it = mSpriteParticles.find(id);
5086  ParticleInfo *restrict pi = nullptr;
5087  if (it == mSpriteParticles.end())
5088  {
5089  pi = new ParticleInfo;
5090  mSpriteParticles[id] = pi;
5091  }
5092  else
5093  {
5094  pi = (*it).second;
5095  }
5096 
5097  if ((pi == nullptr) || !pi->particles.empty())
5098  return;
5099 
5100  // setup particle effects
5102  (particleEngine != nullptr))
5103  {
5104  FOR_EACH (StringVectCIter, itr, display.particles)
5105  {
5106  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5108  pi->files.push_back(*itr);
5109  pi->particles.push_back(p);
5110  }
5111  for (int f = 0; f < maxCards; f ++)
5112  {
5113  const int cardId = cards.cards[f];
5114  if (!Item::isItem(cardId))
5115  continue;
5116  const ItemInfo &info = ItemDB::get(cardId);
5117  const SpriteDisplay &restrict display2 = info.getDisplay();
5118  FOR_EACH (StringVectCIter, itr, display2.particles)
5119  {
5120  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5122  pi->files.push_back(*itr);
5123  pi->particles.push_back(p);
5124  }
5125  }
5126  }
5127  else
5128  {
5129  FOR_EACH (StringVectCIter, itr, display.particles)
5130  {
5131  pi->files.push_back(*itr);
5132  }
5133  for (int f = 0; f < maxCards; f ++)
5134  {
5135  const int cardId = cards.cards[f];
5136  if (!Item::isItem(cardId))
5137  continue;
5138  const ItemInfo &info = ItemDB::get(cardId);
5139  const SpriteDisplay &restrict display2 = info.getDisplay();
5140  FOR_EACH (StringVectCIter, itr, display2.particles)
5141  {
5142  pi->files.push_back(*itr);
5143  }
5144  }
5145  }
5146 }
int cards[4]
Definition: cardslist.h:67
SpriteParticleInfo mSpriteParticles
Definition: being.h:1210
#define FOR_EACH(type, iter, array)
Definition: foreach.h:24
static bool enabled
const ItemInfo & get(const int id)
Definition: itemdb.cpp:792
StringVect::const_iterator StringVectCIter
Definition: stringvector.h:30
Particle * addEffect(const std::string &particleEffectFile, const int pixelX, const int pixelY, const int rotation)
ParticleEngine * particleEngine
SpriteParticleInfo::iterator SpriteParticleInfoIter
Definition: being.h:1207
void controlCustomParticle(Particle *const particle)
bool info(InputEvent &event)
Definition: commands.cpp:56
StringVect particles
Definition: spritedisplay.h:47
const SpriteDisplay & getDisplay() const
Definition: iteminfo.h:93
static bool isItem(const int id)
Definition: item.h:237
#define restrict
Definition: localconsts.h:156
#define maxCards
Definition: cards.h:24

◆ addSpecialEffect()

void Being::addSpecialEffect ( const int  effect)

Definition at line 4928 of file being.cpp.

References ServerCommandType::effect, effectManager, ParticleEngine::enabled, mSpecialParticle, and EffectManager::triggerReturn().

Referenced by addAfkEffect(), QuestsWindow::addEffect(), getHoverCursor(), and ActorManager::updateEffects().

4929 {
4930  if ((effectManager != nullptr) &&
4932  (mSpecialParticle == nullptr) &&
4933  effect != -1)
4934  {
4936  this,
4937  0);
4938  }
4939 }
static bool enabled
Particle * triggerReturn(const int id, Being *const being, const int rotation)
Particle * mSpecialParticle
Definition: being.h:1310
EffectManager * effectManager

◆ addSpiritBalls()

void Being::addSpiritBalls ( const unsigned int  balls,
const int  effectId 
)
protected

Definition at line 5495 of file being.cpp.

References effectManager, mSpiritParticles, and EffectManager::triggerReturn().

Referenced by setSpiritBalls().

5497 {
5498  if (effectManager == nullptr)
5499  return;
5500  for (unsigned int f = 0; f < balls; f ++)
5501  {
5502  Particle *const particle = effectManager->triggerReturn(
5503  effectId,
5504  this,
5505  0);
5506  mSpiritParticles.push_back(particle);
5507  }
5508 }
std::vector< Particle * > mSpiritParticles
Definition: being.h:1315
Particle * triggerReturn(const int id, Being *const being, const int rotation)
EffectManager * effectManager

◆ addToCache()

void Being::addToCache ( ) const

Definition at line 3513 of file being.cpp.

References BeingFlag::AWAY, beingInfoCache, CACHE_SIZE, cur_time, getCacheEntry(), getGuildName(), ActorSprite::getId(), getIp(), getLevel(), Net::getNetworkType(), getPartyName(), getPvpRank(), getTeamId(), BeingFlag::INACTIVE, isAdvanced(), localPlayer, mAway, mInactive, mLowTraffic, mName, mShop, BeingCacheEntry::setAdvanced(), BeingCacheEntry::setFlags(), BeingCacheEntry::setGuildName(), BeingCacheEntry::setIp(), BeingCacheEntry::setLevel(), BeingCacheEntry::setName(), BeingCacheEntry::setPartyName(), BeingCacheEntry::setPvpRank(), BeingCacheEntry::setTeamId(), BeingCacheEntry::setTime(), BeingFlag::SHOP, and ServerType::TMWATHENA.

Referenced by getReachable(), ActorManager::logic(), ActorManager::parseLevels(), Ea::BeingRecv::processNameResponse(), EAthena::BeingRecv::processNameResponse2(), TmwAthena::BeingRecv::processPlayerGuilPartyInfo(), EAthena::BeingRecv::processPlayerGuilPartyInfo(), TmwAthena::BeingRecv::processPvpSet(), setAdvanced(), and setState().

3514 {
3515  if (localPlayer == this)
3516  return;
3517 
3519  if (entry == nullptr)
3520  {
3521  entry = new BeingCacheEntry(getId());
3522  beingInfoCache.push_front(entry);
3523 
3524  if (beingInfoCache.size() >= CACHE_SIZE)
3525  {
3526  delete beingInfoCache.back();
3527  beingInfoCache.pop_back();
3528  }
3529  }
3530  if (!mLowTraffic)
3531  return;
3532 
3533  entry->setName(mName);
3534  entry->setLevel(getLevel());
3535  entry->setPartyName(getPartyName());
3536  entry->setGuildName(getGuildName());
3537  entry->setTime(cur_time);
3538  entry->setPvpRank(getPvpRank());
3539  entry->setIp(getIp());
3540  entry->setAdvanced(isAdvanced());
3541  entry->setTeamId(getTeamId());
3542  if (isAdvanced())
3543  {
3544  int flags = 0;
3546  flags += BeingFlag::SHOP;
3547  if (mAway)
3548  flags += BeingFlag::AWAY;
3549  if (mInactive)
3550  flags += BeingFlag::INACTIVE;
3551  entry->setFlags(flags);
3552  }
3553  else
3554  {
3555  entry->setFlags(0);
3556  }
3557 }
void setTime(const time_t n)
void setLevel(const int n)
const unsigned int CACHE_SIZE
Definition: being.cpp:124
const std::string & getPartyName() const
Definition: being.h:254
void setAdvanced(const bool a)
BeingId getId() const
Definition: actorsprite.h:63
void setPvpRank(const int r)
void setFlags(const int flags)
static bool mLowTraffic
Definition: being.h:1339
void setGuildName(const std::string &name)
std::string mName
Definition: being.h:1183
bool mInactive
Definition: being.h:1386
void setPartyName(const std::string &name)
LocalPlayer * localPlayer
bool mShop
Definition: being.h:1384
std::list< BeingCacheEntry * > beingInfoCache
Definition: being.cpp:147
volatile time_t cur_time
Definition: timer.cpp:57
void setIp(const std::string &ip)
ServerTypeT getNetworkType()
Definition: net.cpp:182
bool isAdvanced() const
Definition: being.h:827
unsigned int getPvpRank() const
Definition: being.h:748
bool mAway
Definition: being.h:1385
static BeingCacheEntry * getCacheEntry(const BeingId id)
Definition: being.cpp:3559
uint16_t getTeamId() const
Definition: being.h:1085
virtual int getLevel() const
Definition: being.h:603
void setTeamId(const uint16_t teamId)
const std::string & getIp() const
Definition: being.h:742
void setName(const std::string &name)
const std::string & getGuildName() const
Definition: being.h:258

◆ botFixOffset()

void Being::botFixOffset ( int &  dstX,
int &  dstY 
) const
protected

Definition at line 2082 of file being.cpp.

References BeingAction::ATTACK, BeingAction::CAST, BeingAction::DEAD, BeingDirection::DOWN, BeingInfo::getAttackOffsetX(), BeingInfo::getAttackOffsetY(), getBlockWalkMask(), getCurrentAction(), BeingInfo::getDeadOffsetX(), BeingInfo::getDeadOffsetY(), BeingInfo::getMoveOffsetX(), BeingInfo::getMoveOffsetY(), BeingInfo::getSitOffsetX(), BeingInfo::getSitOffsetY(), BeingInfo::getTargetOffsetX(), BeingInfo::getTargetOffsetY(), Map::getWalk(), BeingAction::HURT, BeingDirection::LEFT, mDirection, mInfo, Actor::mMap, BeingAction::MOVE, mOwner, mX, mY, BeingAction::PRESTAND, BeingDirection::RIGHT, BeingAction::SIT, BeingAction::SPAWN, BeingAction::STAND, and BeingDirection::UP.

Referenced by botLogic(), and updateBotFollow().

2084 {
2085  if ((mInfo == nullptr) || (mOwner == nullptr))
2086  return;
2087 
2088  int offsetX1;
2089  int offsetY1;
2090  switch (mOwner->getCurrentAction())
2091  {
2092  case BeingAction::SIT:
2093  offsetX1 = mInfo->getSitOffsetX();
2094  offsetY1 = mInfo->getSitOffsetY();
2095  break;
2096 
2097  case BeingAction::MOVE:
2098  offsetX1 = mInfo->getMoveOffsetX();
2099  offsetY1 = mInfo->getMoveOffsetY();
2100  break;
2101 
2102  case BeingAction::DEAD:
2103  offsetX1 = mInfo->getDeadOffsetX();
2104  offsetY1 = mInfo->getDeadOffsetY();
2105  break;
2106 
2107  case BeingAction::ATTACK:
2108  offsetX1 = mInfo->getAttackOffsetX();
2109  offsetY1 = mInfo->getAttackOffsetY();
2110  break;
2111 
2112  case BeingAction::SPAWN:
2113  case BeingAction::HURT:
2114  case BeingAction::STAND:
2115  case BeingAction::PRESTAND:
2116  case BeingAction::CAST:
2117  default:
2118  offsetX1 = mInfo->getTargetOffsetX();
2119  offsetY1 = mInfo->getTargetOffsetY();
2120  break;
2121  }
2122 
2123  int offsetX = offsetX1;
2124  int offsetY = offsetY1;
2125  switch (mOwner->mDirection)
2126  {
2127  case BeingDirection::LEFT:
2128  offsetX = -offsetY1;
2129  offsetY = offsetX1;
2130  break;
2131  case BeingDirection::RIGHT:
2132  offsetX = offsetY1;
2133  offsetY = -offsetX1;
2134  break;
2135  case BeingDirection::UP:
2136  offsetY = -offsetY;
2137  offsetX = -offsetX;
2138  break;
2139  default:
2140  case BeingDirection::DOWN:
2141  break;
2142  }
2143  dstX += offsetX;
2144  dstY += offsetY;
2145  if (mMap != nullptr)
2146  {
2147  if (!mMap->getWalk(dstX, dstY, getBlockWalkMask()))
2148  {
2149  dstX = mOwner->mX;
2150  dstY = mOwner->mY;
2151  }
2152  }
2153 }
uint8_t mDirection
Definition: being.h:1234
int getDeadOffsetX() const
Definition: beinginfo.h:266
virtual unsigned char getBlockWalkMask() const
Definition: being.h:431
int getDeadOffsetY() const
Definition: beinginfo.h:272
int getTargetOffsetX() const
Definition: beinginfo.h:134
int getSitOffsetY() const
Definition: beinginfo.h:248
int mX
Definition: being.h:1317
int getSitOffsetX() const
Definition: beinginfo.h:242
BeingActionT getCurrentAction() const
Definition: being.h:481
bool getWalk(const int x, const int y, const unsigned char blockWalkMask) const
Definition: map.cpp:780
int getMoveOffsetY() const
Definition: beinginfo.h:260
int getMoveOffsetX() const
Definition: beinginfo.h:254
int getAttackOffsetY() const
Definition: beinginfo.h:284
int mY
Definition: being.h:1318
int getAttackOffsetX() const
Definition: beinginfo.h:278
Being * mOwner
Definition: being.h:1309
int getTargetOffsetY() const
Definition: beinginfo.h:140
BeingInfo * mInfo
Definition: being.h:1176
Map * mMap
Definition: actor.h:138

◆ botLogic()

void Being::botLogic ( )

Definition at line 1998 of file being.cpp.

References BeingAction::ATTACK, Net::MercenaryHandler::attack(), Net::HomunculusHandler::attack(), botFixOffset(), BeingAction::CAST, CAST_S32, BeingAction::DEAD, ActorSprite::getId(), LocalPlayer::getTarget(), BeingInfo::getThinkTime(), BeingInfo::getWarpDist(), ActorType::Homunculus, homunculusHandler, BeingAction::HURT, Keep_true, localPlayer, mAction, mBotAi, mercenaryHandler, mInfo, Actor::mMap, mMoveTime, BeingAction::MOVE, moveBotTo(), Net::HomunculusHandler::moveToMaster(), Net::MercenaryHandler::moveToMaster(), mOwner, mType, mX, mY, BeingAction::PRESTAND, BeingAction::SIT, BeingAction::SPAWN, BeingAction::STAND, tick_time, ServerCommandType::time, and updateBotFollow().

Referenced by getNumberOfLayers(), and logic().

1999 {
2000  if ((mOwner == nullptr) || (mMap == nullptr) || (mInfo == nullptr))
2001  return;
2002 
2003  const int time = tick_time;
2004  const int thinkTime = mInfo->getThinkTime();
2005  if (abs(CAST_S32(mMoveTime) - time) < thinkTime)
2006  return;
2007 
2008  mMoveTime = time;
2009 
2010  int dstX = mOwner->mX;
2011  int dstY = mOwner->mY;
2012  const int warpDist = mInfo->getWarpDist();
2013  const int divX = abs(dstX - mX);
2014  const int divY = abs(dstY - mY);
2015 
2016  if (divX >= warpDist || divY >= warpDist)
2017  {
2020  else
2022  mBotAi = true;
2023  return;
2024  }
2025  if (!mBotAi)
2026  return;
2027  if (mAction == BeingAction::MOVE)
2028  {
2030  {
2031  updateBotFollow(dstX, dstY,
2032  divX, divY);
2033  }
2034  return;
2035  }
2036 
2037  switch (mOwner->mAction)
2038  {
2039  case BeingAction::MOVE:
2040  case BeingAction::PRESTAND:
2041  updateBotFollow(dstX, dstY,
2042  divX, divY);
2043  break;
2044  case BeingAction::STAND:
2045  case BeingAction::SPAWN:
2046  botFixOffset(dstX, dstY);
2047  moveBotTo(dstX, dstY);
2048  break;
2049  case BeingAction::ATTACK:
2050  {
2051  const Being *const target = localPlayer->getTarget();
2052  if (target == nullptr)
2053  return;
2054  const BeingId targetId = target->getId();
2056  {
2057  homunculusHandler->attack(targetId,
2058  Keep_true);
2059  }
2060  else
2061  {
2062  mercenaryHandler->attack(targetId,
2063  Keep_true);
2064  }
2065  break;
2066  }
2067  case BeingAction::SIT:
2068  botFixOffset(dstX, dstY);
2069  moveBotTo(dstX, dstY);
2070  break;
2071  case BeingAction::DEAD:
2072  botFixOffset(dstX, dstY);
2073  moveBotTo(dstX, dstY);
2074  break;
2075  case BeingAction::CAST:
2076  case BeingAction::HURT:
2077  default:
2078  break;
2079  }
2080 }
virtual void attack(const BeingId targetId, const Keep keep) const =0
bool mBotAi
Definition: being.h:1388
volatile int tick_time
Definition: timer.cpp:52
const bool Keep_true
Definition: keep.h:29
BeingId getId() const
Definition: actorsprite.h:63
int BeingId
Definition: beingid.h:29
virtual void moveToMaster() const =0
virtual void moveToMaster() const =0
#define CAST_S32
Definition: cast.h:29
int mX
Definition: being.h:1317
time_t mMoveTime
Definition: being.h:1355
LocalPlayer * localPlayer
Net::MercenaryHandler * mercenaryHandler
Definition: net.cpp:112
int getThinkTime() const
Definition: beinginfo.h:290
virtual void attack(const BeingId targetId, const Keep keep) const =0
Net::HomunculusHandler * homunculusHandler
Definition: net.cpp:107
int mY
Definition: being.h:1318
void moveBotTo(int dstX, int dstY)
Definition: being.cpp:2194
Being * mOwner
Definition: being.h:1309
int getWarpDist() const
Definition: beinginfo.h:236
Definition: being.h:93
void botFixOffset(int &dstX, int &dstY) const
Definition: being.cpp:2082
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232
void updateBotFollow(int dstX, int dstY, const int divX, const int divY)
Definition: being.cpp:2155
Being * getTarget() const
const ActorTypeT mType
Definition: being.h:1290
Map * mMap
Definition: actor.h:138

◆ calcDirection() [1/2]

uint8_t Being::calcDirection ( const int  dstX,
const int  dstY 
) const

Definition at line 1766 of file being.cpp.

References BeingDirection::DOWN, BeingDirection::LEFT, mX, mY, BeingDirection::RIGHT, and BeingDirection::UP.

Referenced by EAthena::BeingRecv::processBeingMove(), and TmwAthena::BeingRecv::processPlayerMove().

1768 {
1769  uint8_t dir = 0;
1770  if (dstX > mX)
1771  dir |= BeingDirection::RIGHT;
1772  else if (dstX < mX)
1773  dir |= BeingDirection::LEFT;
1774  if (dstY > mY)
1775  dir |= BeingDirection::DOWN;
1776  else if (dstY < mY)
1777  dir |= BeingDirection::UP;
1778  return dir;
1779 }
int mX
Definition: being.h:1317
int mY
Definition: being.h:1318

◆ calcDirection() [2/2]

uint8_t Being::calcDirection ( ) const

Definition at line 1752 of file being.cpp.

References BeingDirection::DOWN, BeingDirection::LEFT, mDest, mX, mY, BeingDirection::RIGHT, BeingDirection::UP, Vector::x, and Vector::y.

Referenced by getMaxHP(), handleAttack(), handleSkill(), and nextTile().

1753 {
1754  uint8_t dir = 0;
1755  if (mDest.x > mX)
1756  dir |= BeingDirection::RIGHT;
1757  else if (mDest.x < mX)
1758  dir |= BeingDirection::LEFT;
1759  if (mDest.y > mY)
1760  dir |= BeingDirection::DOWN;
1761  else if (mDest.y < mY)
1762  dir |= BeingDirection::UP;
1763  return dir;
1764 }
Vector mDest
Definition: being.h:1204
int mX
Definition: being.h:1317
float x
Definition: vector.h:208
int mY
Definition: being.h:1318
float y
Definition: vector.h:208

◆ canTalk()

bool Being::canTalk ( ) const
inline

Definition at line 666 of file being.h.

References A_NONNULL, draw(), drawBasic(), drawMonster(), drawNpc(), drawOther(), drawPlayer(), drawPortal(), mType, ActorType::Npc, restrict, restrict2, and talkTo().

Referenced by Actions::doSit(), and Viewport::drawPath().

667  { return mType == ActorType::Npc; }
const ActorTypeT mType
Definition: being.h:1290

◆ clearCache()

void Being::clearCache ( )
static

Definition at line 4719 of file being.cpp.

References beingInfoCache, and delete_all().

Referenced by Game::~Game().

4720 {
4722  beingInfoCache.clear();
4723 }
void delete_all(Container &c)
Definition: dtor.h:55
std::list< BeingCacheEntry * > beingInfoCache
Definition: being.cpp:147

◆ clearGuilds()

void Being::clearGuilds ( )

Removes all guilds the being is in.

Definition at line 1288 of file being.cpp.

References FOR_EACH, guild, localPlayer, mGuilds, ActorSprite::mId, Guild::removeMember(), SocialWindow::removeTab(), and socialWindow.

Referenced by GuildManager::afterRemove(), getGuilds(), GuildManager::process(), EAthena::GuildRecv::processGuildExpulsionContinue(), EAthena::GuildRecv::processGuildLeave(), TmwAthena::BeingRecv::processPlayerMove(), TmwAthena::BeingRecv::processPlayerUpdate1(), TmwAthena::BeingRecv::processPlayerUpdate2(), setGuild(), and updateGuild().

1289 {
1291  {
1292  Guild *const guild = itr->second;
1293 
1294  if (guild != nullptr)
1295  {
1296  if (this == localPlayer && (socialWindow != nullptr))
1297  socialWindow->removeTab(guild);
1298 
1299  guild->removeMember(mId);
1300  }
1301  }
1302 
1303  mGuilds.clear();
1304 }
#define FOR_EACH(type, iter, array)
Definition: foreach.h:24
bool removeTab(Guild *const guild)
void removeMember(const GuildMember *const member)
Definition: guild.cpp:186
LocalPlayer * localPlayer
SocialWindow * socialWindow
std::map< int, Guild * >::const_iterator GuildsMapCIter
Definition: being.cpp:148
std::map< int, Guild * > mGuilds
Definition: being.h:1213
uint32_t guild
Definition: guild.h:68
BeingId mId
Definition: actorsprite.h:246

◆ clearPath()

void Being::clearPath ( )

Removes all path nodes from this being.

Definition at line 553 of file being.cpp.

References mPath.

Referenced by getType(), TmwAthena::BeingRecv::processBeingVisible(), EAthena::BeingRecv::processBeingVisible(), and LocalPlayer::stopWalking().

554 {
555  mPath.clear();
556 }
Path mPath
Definition: being.h:1200

◆ createBeing()

Being * Being::createBeing ( const BeingId  id,
const ActorTypeT  type,
const BeingTypeId  subtype,
Map *const  map 
)
static

Definition at line 5575 of file being.cpp.

References Being(), and postInit().

Referenced by ActorManager::createBeing(), and NpcDialog::showAvatar().

5579 {
5580  Being *const being = new Being(id,
5581  type);
5582  being->postInit(subType,
5583  map);
5584  return being;
5585 }
Being(const BeingId id, const ActorTypeT type)
Definition: being.cpp:161
void postInit(const BeingTypeId subType, Map *const map)
Definition: being.cpp:288
Definition: being.h:93

◆ createSpeechBubble()

void Being::createSpeechBubble ( )
protected

Definition at line 365 of file being.cpp.

References CREATEWIDGETV0, and mSpeechBubble.

Referenced by getAllowNpcEquipment(), and setSpeech().

366 {
368 }
#define CREATEWIDGETV0(var, type)
Definition: createwidget.h:31
SpeechBubble * mSpeechBubble
Definition: being.h:1293

◆ decUsage()

int Being::decUsage ( )
inline

Definition at line 974 of file being.h.

References mUsageCounter.

975  { return --mUsageCounter; }
int mUsageCounter
Definition: being.h:1367

◆ disableBotAi()

void Being::disableBotAi ( )
inline

Definition at line 1046 of file being.h.

References mBotAi.

1047  { mBotAi = false; }
bool mBotAi
Definition: being.h:1388

◆ draw()

void Being::draw ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const
virtual

Draws the Actor to the given graphics context.

Note: this function could be simplified if the graphics context would support setting a translation offset. It already does this partly with the clipping rectangle support.

Implements Actor.

Definition at line 3839 of file being.cpp.

References ActorType::Avatar, drawElemental(), drawHomunculus(), drawMercenary(), drawMonster(), drawNpc(), drawOther(), drawPlayer(), drawPortal(), ActorType::Elemental, ActorType::FloorItem, ActorType::Homunculus, ActorType::Mercenary, ActorType::Monster, mType, ActorType::Npc, ActorType::Pet, ActorType::Player, ActorType::Portal, ActorType::SkillUnit, and ActorType::Unknown.

Referenced by canTalk(), DebugWindow::draw(), and DebugWindow::safeDraw().

3842 {
3843  switch (mType)
3844  {
3845  case ActorType::Player:
3846  drawPlayer(graphics,
3847  offsetX,
3848  offsetY);
3849  break;
3850  case ActorType::Portal:
3851  drawPortal(graphics,
3852  offsetX,
3853  offsetY);
3854  break;
3855  case ActorType::Homunculus:
3856  drawHomunculus(graphics,
3857  offsetX,
3858  offsetY);
3859  break;
3860  case ActorType::Mercenary:
3861  drawMercenary(graphics,
3862  offsetX,
3863  offsetY);
3864  break;
3865  case ActorType::Elemental:
3866  drawElemental(graphics,
3867  offsetX,
3868  offsetY);
3869  break;
3870  case ActorType::Monster:
3871  drawMonster(graphics,
3872  offsetX,
3873  offsetY);
3874  break;
3875  case ActorType::Npc:
3876  drawNpc(graphics,
3877  offsetX,
3878  offsetY);
3879  break;
3880  case ActorType::Pet:
3881  case ActorType::SkillUnit:
3882  case ActorType::Unknown:
3883  case ActorType::FloorItem:
3884  case ActorType::Avatar:
3885  default:
3886  drawOther(graphics,
3887  offsetX,
3888  offsetY);
3889  break;
3890  }
3891 }
void drawMonster(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3780
void drawNpc(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3768
void drawPlayer(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3694
void drawMercenary(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3804
void drawPortal(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3828
void drawElemental(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3816
void drawHomunculus(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3792
void drawOther(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3756
const ActorTypeT mType
Definition: being.h:1290

◆ drawBasic()

void Being::drawBasic ( Graphics *const  graphics,
const int  x,
const int  y 
) const

Definition at line 3930 of file being.cpp.

References drawCompound(), x, and y.

Referenced by canTalk(), and PlayerBox::draw().

3933 {
3934  drawCompound(graphics, x, y);
3935 }
void drawCompound(Graphics *const graphics, const int posX, const int posY) const
Definition: being.cpp:3937

◆ drawBeingCursor()

void Being::drawBeingCursor ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const
protected

Definition at line 3734 of file being.cpp.

References AnimatedSprite::draw(), BeingInfo::getTargetOffsetX(), BeingInfo::getTargetOffsetY(), ActorSprite::mCursorPaddingX, ActorSprite::mCursorPaddingY, MILLISECONDS_IN_A_TICK, mInfo, ActorSprite::mUsedTargetCursor, tick_time, and AnimatedSprite::update().

Referenced by drawElemental(), drawHomunculus(), drawMercenary(), drawMonster(), drawNpc(), drawOther(), and drawPlayer().

3737 {
3738  if (mUsedTargetCursor != nullptr)
3739  {
3741  if (mInfo == nullptr)
3742  {
3743  mUsedTargetCursor->draw(graphics,
3744  offsetX - mCursorPaddingX,
3745  offsetY - mCursorPaddingY);
3746  }
3747  else
3748  {
3749  mUsedTargetCursor->draw(graphics,
3750  offsetX + mInfo->getTargetOffsetX() - mCursorPaddingX,
3751  offsetY + mInfo->getTargetOffsetY() - mCursorPaddingY);
3752  }
3753  }
3754 }
volatile int tick_time
Definition: timer.cpp:52
int mCursorPaddingX
Definition: actorsprite.h:255
void draw(Graphics *const graphics, const int posX, const int posY) const
int getTargetOffsetX() const
Definition: beinginfo.h:134
AnimatedSprite * mUsedTargetCursor
Definition: actorsprite.h:249
static const int MILLISECONDS_IN_A_TICK
Definition: timer.h:29
int mCursorPaddingY
Definition: actorsprite.h:256
int getTargetOffsetY() const
Definition: beinginfo.h:140
bool update(const int time)
BeingInfo * mInfo
Definition: being.h:1176

◆ drawCasting()

void Being::drawCasting ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const
protected

◆ drawCompound()

void Being::drawCompound ( Graphics *const  graphics,
const int  posX,
const int  posY 
) const
protected

Definition at line 3937 of file being.cpp.

References Graphics::drawImage(), drawPlayerSprites(), FUNC_BLOCK, Sprite::mAlpha, CompoundSprite::mAlphaImage, CompoundSprite::mImage, CompoundSprite::mNeedsRedraw, CompoundSprite::mOffsetX, CompoundSprite::mOffsetY, CompoundSprite::mSprites, Image::setAlpha(), and CompoundSprite::updateImages().

Referenced by drawBasic(), drawNpcSpriteAt(), drawPlayerSpriteAt(), and getAllowNpcEquipment().

3940 {
3941  FUNC_BLOCK("CompoundSprite::draw", 1)
3942  if (mNeedsRedraw)
3943  updateImages();
3944 
3945  if (mSprites.empty()) // Nothing to draw
3946  return;
3947 
3948  if (mAlpha == 1.0F && (mImage != nullptr))
3949  {
3950  graphics->drawImage(mImage,
3951  posX + mOffsetX,
3952  posY + mOffsetY);
3953  }
3954  else if ((mAlpha != 0.0f) && (mAlphaImage != nullptr))
3955  {
3957  graphics->drawImage(mAlphaImage,
3958  posX + mOffsetX,
3959  posY + mOffsetY);
3960  }
3961  else
3962  {
3963  Being::drawPlayerSprites(graphics, posX, posY);
3964  }
3965 }
if(!vert) return
virtual void setAlpha(const float alpha)
Definition: image.cpp:286
std::vector< Sprite * > mSprites
void drawPlayerSprites(Graphics *const graphics, const int posX, const int posY) const
Definition: being.cpp:3893
#define FUNC_BLOCK(name, id)
Definition: perfomance.h:80
std::string empty
Definition: podict.cpp:25
virtual void drawImage(const Image *const image, int dstX, int dstY)=0
void updateImages() const
float mAlpha
Definition: sprite.h:129

◆ drawElemental()

void Being::drawElemental ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3816 of file being.cpp.

References drawBeingCursor(), drawElementalSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by draw(), and getLastAttackY().

3819 {
3820  // getActorX() + offsetX;
3821  const int px = mPixelX - mapTileSize / 2 + offsetX;
3822  // getActorY() + offsetY;
3823  const int py = mPixelY - mapTileSize + offsetY;
3824  drawBeingCursor(graphics, px, py);
3825  drawElementalSpriteAt(graphics, px, py);
3826 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
void drawElementalSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4169
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawElementalSpriteAt()

void Being::drawElementalSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 4169 of file being.cpp.

References BeingAction::DEAD, drawHpBar(), CompoundSprite::drawSimple(), UserColorId::ELEMENTAL_HP, Attributes::ELEMENTAL_HP, UserColorId::ELEMENTAL_HP2, Attributes::ELEMENTAL_MAX_HP, UserPalette::getColorWithAlpha(), PlayerInfo::getElementalId(), BeingInfo::getHpBarOffsetX(), BeingInfo::getHpBarOffsetY(), BeingInfo::getMaxHP(), PlayerInfo::getStatBase(), mAction, mapTileSize, mAttackRange, mDamageTaken, mHighlightMonsterAttackRange, ActorSprite::mId, mInfo, UserColorId::MONSTER_ATTACK_RANGE, mShowMobHP, userPalette, x, and y.

Referenced by drawElemental(), and getAllowNpcEquipment().

4172 {
4175  {
4176  if (userPalette == nullptr)
4177  {
4178  CompoundSprite::drawSimple(graphics, x, y);
4179  return;
4180  }
4181 
4182  int attackRange;
4183  if (mAttackRange != 0)
4184  attackRange = mapTileSize * mAttackRange;
4185  else
4186  attackRange = mapTileSize;
4187 
4190 
4191  graphics->fillRectangle(Rect(
4192  x - attackRange, y - attackRange,
4193  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4194  }
4195 
4196  CompoundSprite::drawSimple(graphics, x, y);
4197 
4198  if (mShowMobHP &&
4199  (mInfo != nullptr))
4200  {
4202  {
4203  // show hp bar here
4205  if (maxHP == 0)
4206  maxHP = mInfo->getMaxHP();
4207 
4208  drawHpBar(graphics,
4209  maxHP,
4211  mDamageTaken,
4214  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4215  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4216  2 * 50,
4217  4);
4218  }
4219  }
4220 }
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:199
int getHpBarOffsetY() const
Definition: beinginfo.h:164
Definition: rect.h:72
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
UserPalette * userPalette
Definition: userpalette.cpp:33
static bool mHighlightMonsterAttackRange
Definition: being.h:1338
virtual void setColor(const Color &color)
Definition: graphics.h:319
static bool mShowMobHP
Definition: being.h:1342
int mDamageTaken
Definition: being.h:1327
int getStatBase(const AttributesT id)
Definition: playerinfo.cpp:133
BeingId getElementalId()
Definition: playerinfo.cpp:540
virtual void fillRectangle(const Rect &rectangle)=0
int getHpBarOffsetX() const
Definition: beinginfo.h:158
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static const int mapTileSize
Definition: map.h:26
int mAttackRange
Definition: being.h:1225
int getMaxHP() const
Definition: beinginfo.h:170
BeingId mId
Definition: actorsprite.h:246
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232

◆ drawEmotion()

void Being::drawEmotion ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Draws the emotion picture above the being.

Definition at line 2377 of file being.cpp.

References AnimatedSprite::draw(), for_each_badges, BadgeDrawType::Hide, mAnimationEffect, mapTileSize, mBadges, mBadgesCount, mBadgesX, mBadgesY, mEmotionSprite, mErased, Actor::mPixelX, Actor::mPixelY, mShowBadges, restrict, x, and y.

Referenced by getNumberOfLayers().

2380 {
2381  if (mErased)
2382  return;
2383 
2384  const int px = mPixelX - offsetX - mapTileSize / 2;
2385  const int py = mPixelY - offsetY - mapTileSize * 2 - mapTileSize;
2386  if (mAnimationEffect != nullptr)
2387  mAnimationEffect->draw(graphics, px, py);
2389  mBadgesCount != 0u)
2390  {
2391  int x = mBadgesX - offsetX;
2392  const int y = mBadgesY - offsetY;
2393  for_each_badges()
2394  {
2395  const AnimatedSprite *restrict const sprite = mBadges[f];
2396  if (sprite != nullptr)
2397  {
2398  sprite->draw(graphics, x, y);
2399  x += 16;
2400  }
2401  }
2402  }
2403  if (mEmotionSprite != nullptr)
2404  mEmotionSprite->draw(graphics, px, py);
2405 }
void draw(Graphics *const graphics, const int posX, const int posY) const
AnimatedSprite * mAnimationEffect
Definition: being.h:1178
bool mErased
Definition: being.h:1380
int mPixelX
Definition: actor.h:132
AnimatedSprite * mBadges[BadgeIndex::BadgeIndexSize]
Definition: being.h:1180
#define for_each_badges()
Definition: being.cpp:155
int mPixelY
Definition: actor.h:133
AnimatedSprite * mEmotionSprite
Definition: being.h:1177
int mBadgesX
Definition: being.h:1373
int mBadgesY
Definition: being.h:1374
static BadgeDrawType::Type mShowBadges
Definition: being.h:1351
static const int mapTileSize
Definition: map.h:26
#define restrict
Definition: localconsts.h:156
uint16_t mBadgesCount
Definition: being.h:1378

◆ drawHomunculus()

void Being::drawHomunculus ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3792 of file being.cpp.

References drawBeingCursor(), drawHomunculusSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by draw(), and getLastAttackY().

3795 {
3796  // getActorX() + offsetX;
3797  const int px = mPixelX - mapTileSize / 2 + offsetX;
3798  // getActorY() + offsetY;
3799  const int py = mPixelY - mapTileSize + offsetY;
3800  drawBeingCursor(graphics, px, py);
3801  drawHomunculusSpriteAt(graphics, px, py);
3802 }
void drawHomunculusSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4059
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawHomunculusSpriteAt()

void Being::drawHomunculusSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 4059 of file being.cpp.

References BeingAction::DEAD, drawHpBar(), CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), PlayerInfo::getHomunculus(), BeingInfo::getHpBarOffsetX(), BeingInfo::getHpBarOffsetY(), BeingInfo::getMaxHP(), PlayerInfo::getStatBase(), UserColorId::HOMUN_HP, Attributes::HOMUN_HP, UserColorId::HOMUN_HP2, Attributes::HOMUN_MAX_HP, HomunculusInfo::id, Actions::info(), mAction, mapTileSize, mAttackRange, mDamageTaken, mHighlightMonsterAttackRange, ActorSprite::mId, mInfo, UserColorId::MONSTER_ATTACK_RANGE, mShowMobHP, userPalette, x, and y.

Referenced by drawHomunculus(), and getAllowNpcEquipment().

4062 {
4065  {
4066  if (userPalette == nullptr)
4067  {
4068  CompoundSprite::drawSimple(graphics, x, y);
4069  return;
4070  }
4071 
4072  int attackRange;
4073  if (mAttackRange != 0)
4074  attackRange = mapTileSize * mAttackRange;
4075  else
4076  attackRange = mapTileSize;
4077 
4080 
4081  graphics->fillRectangle(Rect(
4082  x - attackRange, y - attackRange,
4083  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4084  }
4085 
4086  CompoundSprite::drawSimple(graphics, x, y);
4087 
4088  if (mShowMobHP &&
4089  (mInfo != nullptr))
4090  {
4092  if ((info != nullptr) &&
4093  mId == info->id)
4094  {
4095  // show hp bar here
4097  if (maxHP == 0)
4098  maxHP = mInfo->getMaxHP();
4099 
4100  drawHpBar(graphics,
4101  maxHP,
4103  mDamageTaken,
4106  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4107  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4108  2 * 50,
4109  4);
4110  }
4111  }
4112 }
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:199
int getHpBarOffsetY() const
Definition: beinginfo.h:164
Definition: rect.h:72
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
UserPalette * userPalette
Definition: userpalette.cpp:33
static bool mHighlightMonsterAttackRange
Definition: being.h:1338
virtual void setColor(const Color &color)
Definition: graphics.h:319
static bool mShowMobHP
Definition: being.h:1342
bool info(InputEvent &event)
Definition: commands.cpp:56
int mDamageTaken
Definition: being.h:1327
int getStatBase(const AttributesT id)
Definition: playerinfo.cpp:133
virtual void fillRectangle(const Rect &rectangle)=0
int getHpBarOffsetX() const
Definition: beinginfo.h:158
HomunculusInfo * getHomunculus()
Definition: playerinfo.cpp:599
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static const int mapTileSize
Definition: map.h:26
int mAttackRange
Definition: being.h:1225
int getMaxHP() const
Definition: beinginfo.h:170
BeingId mId
Definition: actorsprite.h:246
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232

◆ drawHpBar()

void Being::drawHpBar ( Graphics *const  graphics,
const int  maxHP,
const int  hp,
const int  damage,
const UserColorIdT  color1,
const UserColorIdT  color2,
const int  x,
const int  y,
const int  width,
const int  height 
) const

Definition at line 4253 of file being.cpp.

References UserPalette::getColorWithAlpha(), Net::ServerFeatures::haveServerHp(), localPlayer, serverFeatures, userPalette, x, and y.

Referenced by drawElementalSpriteAt(), drawHomunculusSpriteAt(), drawMercenarySpriteAt(), drawMonsterSpriteAt(), drawPlayerSpriteAt(), and setDistance().

4263 {
4264  if (maxHP <= 0 || (userPalette == nullptr))
4265  return;
4266 
4267  float p;
4268 
4269  if (hp != 0)
4270  {
4271  p = static_cast<float>(maxHP) / static_cast<float>(hp);
4272  }
4273  else if (maxHP != damage)
4274  {
4275  p = static_cast<float>(maxHP)
4276  / static_cast<float>(maxHP - damage);
4277  }
4278  else
4279  {
4280  p = 1;
4281  }
4282 
4283  if (p <= 0 || p > width)
4284  return;
4285 
4286  const int dx = static_cast<int>(static_cast<float>(width) / p);
4287 
4288 #ifdef TMWA_SUPPORT
4289  if (!serverFeatures->haveServerHp())
4290  { // old servers
4291  if ((damage == 0 && (this != localPlayer || hp == maxHP))
4292  || (hp == 0 && maxHP == damage))
4293  {
4294  graphics->setColor(userPalette->getColorWithAlpha(color1));
4295  graphics->fillRectangle(Rect(
4296  x, y, dx, height));
4297  return;
4298  }
4299  else if (width - dx <= 0)
4300  {
4301  graphics->setColor(userPalette->getColorWithAlpha(color2));
4302  graphics->fillRectangle(Rect(
4303  x, y, width, height));
4304  return;
4305  }
4306  }
4307  else
4308 #endif // TMWA_SUPPORT
4309  {
4310  if (hp == maxHP)
4311  {
4312  graphics->setColor(userPalette->getColorWithAlpha(color1));
4313  graphics->fillRectangle(Rect(
4314  x, y, dx, height));
4315  return;
4316  }
4317  else if (width - dx <= 0)
4318  {
4319  graphics->setColor(userPalette->getColorWithAlpha(color2));
4320  graphics->fillRectangle(Rect(
4321  x, y, width, height));
4322  return;
4323  }
4324  }
4325 
4326  graphics->setColor(userPalette->getColorWithAlpha(color1));
4327  graphics->fillRectangle(Rect(
4328  x, y, dx, height));
4329 
4330  graphics->setColor(userPalette->getColorWithAlpha(color2));
4331  graphics->fillRectangle(Rect(x + dx, y, width - dx, height));
4332 }
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:199
Definition: rect.h:72
UserPalette * userPalette
Definition: userpalette.cpp:33
Net::ServerFeatures * serverFeatures
Definition: net.cpp:97
virtual void setColor(const Color &color)
Definition: graphics.h:319
virtual bool haveServerHp() const =0
LocalPlayer * localPlayer
virtual void fillRectangle(const Rect &rectangle)=0

◆ drawMercenary()

void Being::drawMercenary ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3804 of file being.cpp.

References drawBeingCursor(), drawMercenarySpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by draw(), and getLastAttackY().

3807 {
3808  // getActorX() + offsetX;
3809  const int px = mPixelX - mapTileSize / 2 + offsetX;
3810  // getActorY() + offsetY;
3811  const int py = mPixelY - mapTileSize + offsetY;
3812  drawBeingCursor(graphics, px, py);
3813  drawMercenarySpriteAt(graphics, px, py);
3814 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
void drawMercenarySpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4114
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawMercenarySpriteAt()

void Being::drawMercenarySpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 4114 of file being.cpp.

References BeingAction::DEAD, drawHpBar(), CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), BeingInfo::getHpBarOffsetX(), BeingInfo::getHpBarOffsetY(), BeingInfo::getMaxHP(), PlayerInfo::getMercenary(), PlayerInfo::getStatBase(), MercenaryInfo::id, Actions::info(), mAction, mapTileSize, mAttackRange, mDamageTaken, UserColorId::MERC_HP, Attributes::MERC_HP, UserColorId::MERC_HP2, Attributes::MERC_MAX_HP, mHighlightMonsterAttackRange, ActorSprite::mId, mInfo, UserColorId::MONSTER_ATTACK_RANGE, mShowMobHP, userPalette, x, and y.

Referenced by drawMercenary(), and getAllowNpcEquipment().

4117 {
4120  {
4121  if (userPalette == nullptr)
4122  {
4123  CompoundSprite::drawSimple(graphics, x, y);
4124  return;
4125  }
4126 
4127  int attackRange;
4128  if (mAttackRange != 0)
4129  attackRange = mapTileSize * mAttackRange;
4130  else
4131  attackRange = mapTileSize;
4132 
4135 
4136  graphics->fillRectangle(Rect(
4137  x - attackRange, y - attackRange,
4138  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4139  }
4140 
4141  CompoundSprite::drawSimple(graphics, x, y);
4142 
4143  if (mShowMobHP &&
4144  (mInfo != nullptr))
4145  {
4146  const MercenaryInfo *const info = PlayerInfo::getMercenary();
4147  if ((info != nullptr) &&
4148  mId == info->id)
4149  {
4150  // show hp bar here
4152  if (maxHP == 0)
4153  maxHP = mInfo->getMaxHP();
4154 
4155  drawHpBar(graphics,
4156  maxHP,
4158  mDamageTaken,
4161  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4162  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4163  2 * 50,
4164  4);
4165  }
4166  }
4167 }
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:199
int getHpBarOffsetY() const
Definition: beinginfo.h:164
Definition: rect.h:72
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
UserPalette * userPalette
Definition: userpalette.cpp:33
MercenaryInfo * getMercenary()
Definition: playerinfo.cpp:545
static bool mHighlightMonsterAttackRange
Definition: being.h:1338
virtual void setColor(const Color &color)
Definition: graphics.h:319
static bool mShowMobHP
Definition: being.h:1342
bool info(InputEvent &event)
Definition: commands.cpp:56
int mDamageTaken
Definition: being.h:1327
int getStatBase(const AttributesT id)
Definition: playerinfo.cpp:133
virtual void fillRectangle(const Rect &rectangle)=0
int getHpBarOffsetX() const
Definition: beinginfo.h:158
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static const int mapTileSize
Definition: map.h:26
int mAttackRange
Definition: being.h:1225
int getMaxHP() const
Definition: beinginfo.h:170
BeingId mId
Definition: actorsprite.h:246
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232

◆ drawMonster()

void Being::drawMonster ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3780 of file being.cpp.

References drawBeingCursor(), drawMonsterSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by canTalk(), and draw().

3783 {
3784  // getActorX() + offsetX;
3785  const int px = mPixelX - mapTileSize / 2 + offsetX;
3786  // getActorY() + offsetY;
3787  const int py = mPixelY - mapTileSize + offsetY;
3788  drawBeingCursor(graphics, px, py);
3789  drawMonsterSpriteAt(graphics, px, py);
3790 }
void drawMonsterSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4005
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawMonsterSpriteAt()

void Being::drawMonsterSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 4005 of file being.cpp.

References BeingAction::DEAD, drawHpBar(), CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), BeingInfo::getHpBarOffsetX(), BeingInfo::getHpBarOffsetY(), BeingInfo::getMaxHP(), LocalPlayer::getTarget(), localPlayer, mAction, mapTileSize, mAttackRange, mDamageTaken, mHighlightMonsterAttackRange, mHP, mInfo, mMaxHP, ActorType::Monster, UserColorId::MONSTER_ATTACK_RANGE, UserColorId::MONSTER_HP, UserColorId::MONSTER_HP2, mShowMobHP, mType, userPalette, x, and y.

Referenced by drawMonster(), and getAllowNpcEquipment().

4008 {
4012  {
4013  if (userPalette == nullptr)
4014  {
4015  CompoundSprite::drawSimple(graphics, x, y);
4016  return;
4017  }
4018 
4019  int attackRange;
4020  if (mAttackRange != 0)
4021  attackRange = mapTileSize * mAttackRange;
4022  else
4023  attackRange = mapTileSize;
4024 
4027 
4028  graphics->fillRectangle(Rect(
4029  x - attackRange, y - attackRange,
4030  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4031  }
4032 
4033  CompoundSprite::drawSimple(graphics, x, y);
4034 
4035  if (mShowMobHP &&
4036  (mInfo != nullptr) &&
4037  (localPlayer != nullptr) &&
4038  localPlayer->getTarget() == this &&
4040  {
4041  // show hp bar here
4042  int maxHP = mMaxHP;
4043  if (maxHP == 0)
4044  maxHP = mInfo->getMaxHP();
4045 
4046  drawHpBar(graphics,
4047  maxHP,
4048  mHP,
4049  mDamageTaken,
4052  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4053  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4054  2 * 50,
4055  4);
4056  }
4057 }
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:199
int getHpBarOffsetY() const
Definition: beinginfo.h:164
Definition: rect.h:72
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
UserPalette * userPalette
Definition: userpalette.cpp:33
static bool mHighlightMonsterAttackRange
Definition: being.h:1338
virtual void setColor(const Color &color)
Definition: graphics.h:319
static bool mShowMobHP
Definition: being.h:1342
int mMaxHP
Definition: being.h:1329
LocalPlayer * localPlayer
int mDamageTaken
Definition: being.h:1327
virtual void fillRectangle(const Rect &rectangle)=0
int getHpBarOffsetX() const
Definition: beinginfo.h:158
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static const int mapTileSize
Definition: map.h:26
int mAttackRange
Definition: being.h:1225
int getMaxHP() const
Definition: beinginfo.h:170
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232
int mHP
Definition: being.h:1328
Being * getTarget() const
const ActorTypeT mType
Definition: being.h:1290

◆ drawNpc()

void Being::drawNpc ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3768 of file being.cpp.

References drawBeingCursor(), drawNpcSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by canTalk(), and draw().

3771 {
3772  // getActorX() + offsetX;
3773  const int px = mPixelX - mapTileSize / 2 + offsetX;
3774  // getActorY() + offsetY;
3775  const int py = mPixelY - mapTileSize + offsetY;
3776  drawBeingCursor(graphics, px, py);
3777  drawNpcSpriteAt(graphics, px, py);
3778 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
void drawNpcSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3998
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawNpcSpriteAt()

void Being::drawNpcSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 3998 of file being.cpp.

References drawCompound(), x, and y.

Referenced by drawNpc(), and getAllowNpcEquipment().

4001 {
4002  drawCompound(graphics, x, y);
4003 }
void drawCompound(Graphics *const graphics, const int posX, const int posY) const
Definition: being.cpp:3937

◆ drawOther()

void Being::drawOther ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3756 of file being.cpp.

References drawBeingCursor(), drawOtherSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by canTalk(), and draw().

3759 {
3760  // getActorX() + offsetX;
3761  const int px = mPixelX - mapTileSize / 2 + offsetX;
3762  // getActorY() + offsetY;
3763  const int py = mPixelY - mapTileSize + offsetY;
3764  drawBeingCursor(graphics, px, py);
3765  drawOtherSpriteAt(graphics, px, py);
3766 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
int mPixelX
Definition: actor.h:132
void drawOtherSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3991
int mPixelY
Definition: actor.h:133
static const int mapTileSize
Definition: map.h:26

◆ drawOtherSpriteAt()

void Being::drawOtherSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 3991 of file being.cpp.

References CompoundSprite::drawSimple(), x, and y.

Referenced by drawOther(), and getAllowNpcEquipment().

3994 {
3995  CompoundSprite::drawSimple(graphics, x, y);
3996 }
void drawSimple(Graphics *const graphics, const int posX, const int posY) const

◆ drawPlayer()

void Being::drawPlayer ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3694 of file being.cpp.

References HorseOffset::downOffsetX, HorseOffset::downOffsetY, drawBeingCursor(), drawPlayerSpriteAt(), for_each_horses, mapTileSize, mDownHorseSprites, mErased, mHorseInfo, Actor::mPixelX, Actor::mPixelY, mSpriteDirection, mUpHorseSprites, HorseInfo::offsets, HorseOffset::riderOffsetX, HorseOffset::riderOffsetY, HorseOffset::upOffsetX, and HorseOffset::upOffsetY.

Referenced by canTalk(), and draw().

3697 {
3698  if (!mErased)
3699  {
3700  // getActorX() + offsetX;
3701  const int px = mPixelX - mapTileSize / 2 + offsetX;
3702  // getActorY() + offsetY;
3703  const int py = mPixelY - mapTileSize + offsetY;
3704  if (mHorseInfo != nullptr)
3705  {
3708  {
3709  (*it)->draw(graphics,
3710  px + offset.downOffsetX,
3711  py + offset.downOffsetY);
3712  }
3713 
3714  drawBeingCursor(graphics, px, py);
3715  drawPlayerSpriteAt(graphics,
3716  px + offset.riderOffsetX,
3717  py + offset.riderOffsetY);
3718 
3720  {
3721  (*it)->draw(graphics,
3722  px + offset.upOffsetX,
3723  py + offset.upOffsetY);
3724  }
3725  }
3726  else
3727  {
3728  drawBeingCursor(graphics, px, py);
3729  drawPlayerSpriteAt(graphics, px, py);
3730  }
3731  }
3732 }
#define for_each_horses(name)
Definition: being.cpp:158
SpriteDirection::Type mSpriteDirection
Definition: being.h:1236
std::vector< AnimatedSprite * > mDownHorseSprites
Definition: being.h:1313
int downOffsetX
Definition: horseoffset.h:41
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3734
std::vector< AnimatedSprite * > mUpHorseSprites
Definition: being.h:1314
bool mErased
Definition: being.h:1380
int mPixelX
Definition: actor.h:132
int downOffsetY
Definition: horseoffset.h:42
int mPixelY
Definition: actor.h:133
int riderOffsetX
Definition: horseoffset.h:43
void drawPlayerSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3967
HorseInfo * mHorseInfo
Definition: being.h:1312
int riderOffsetY
Definition: horseoffset.h:44
static const int mapTileSize
Definition: map.h:26
HorseOffset offsets[10]
Definition: horseinfo.h:53

◆ drawPlayerSpriteAt()

void Being::drawPlayerSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 3967 of file being.cpp.

References BeingAction::DEAD, drawCompound(), drawHpBar(), PlayerInfo::getAttribute(), BeingInfo::getHpBarOffsetX(), BeingInfo::getHpBarOffsetY(), localPlayer, mAction, mapTileSize, mInfo, mShowOwnHP, Attributes::PLAYER_HP, UserColorId::PLAYER_HP, UserColorId::PLAYER_HP2, Attributes::PLAYER_MAX_HP, x, and y.

Referenced by drawPlayer(), and getAllowNpcEquipment().

3970 {
3971  drawCompound(graphics, x, y);
3972 
3973  if (mShowOwnHP &&
3974  (mInfo != nullptr) &&
3975  localPlayer == this &&
3977  {
3978  drawHpBar(graphics,
3981  0,
3984  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
3985  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
3986  2 * 50,
3987  4);
3988  }
3989 }
void drawCompound(Graphics *const graphics, const int posX, const int posY) const
Definition: being.cpp:3937
int getHpBarOffsetY() const
Definition: beinginfo.h:164
LocalPlayer * localPlayer
int getHpBarOffsetX() const
Definition: beinginfo.h:158
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static const int mapTileSize
Definition: map.h:26
static bool mShowOwnHP
Definition: being.h:1343
int32_t getAttribute(const AttributesT id)
Definition: playerinfo.cpp:100
BeingInfo * mInfo
Definition: being.h:1176
BeingActionT mAction
Definition: being.h:1232

◆ drawPlayerSprites()

void Being::drawPlayerSprites ( Graphics *const  graphics,
const int  posX,
const int  posY 
) const

Definition at line 3893 of file being.cpp.

References CompoundSprite::getNumberOfLayers(), Sprite::mAlpha, mSpriteHide, mSpriteRemap, CompoundSprite::mSprites, and restrict.

Referenced by drawCompound(), and setDistance().

3896 {
3897  const int sz = CompoundSprite::getNumberOfLayers();
3898  for (int f = 0; f < sz; f ++)
3899  {
3900  const int rSprite = mSpriteHide[mSpriteRemap[f]];
3901  if (rSprite == 1)
3902  continue;
3903 
3904  Sprite *restrict const sprite = mSprites[mSpriteRemap[f]];
3905  if (sprite != nullptr)
3906  {
3907  sprite->setAlpha(mAlpha);
3908  sprite->draw(graphics, posX, posY);
3909  }
3910  }
3911 }
Definition: sprite.h:32
int getNumberOfLayers() const
int * mSpriteHide
Definition: being.h:1304
std::vector< Sprite * > mSprites
int * mSpriteRemap
Definition: being.h:1303
#define restrict
Definition: localconsts.h:156
float mAlpha
Definition: sprite.h:129

◆ drawPortal()

void Being::drawPortal ( Graphics *const  graphics,
const int  offsetX,
const int  offsetY 
) const

Definition at line 3828 of file being.cpp.

References drawPortalSpriteAt(), mapTileSize, Actor::mPixelX, and Actor::mPixelY.

Referenced by canTalk(), and draw().

3831 {
3832  // getActorX() + offsetX;
3833  const int px = mPixelX - mapTileSize / 2 + offsetX;
3834  // getActorY() + offsetY;
3835  const int py = mPixelY - mapTileSize + offsetY;
3836  drawPortalSpriteAt(graphics, px, py);
3837 }
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
void drawPortalSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4222
static const int mapTileSize
Definition: map.h:26

◆ drawPortalSpriteAt()

void Being::drawPortalSpriteAt ( Graphics *const  graphics,
const int  x,
const int  y 
) const
protected

Definition at line 4222 of file being.cpp.

References UserColorId::BEING, CompoundSprite::drawSimple(), Font::drawString(), UserPalette::getColor(), Gui::getFont(), Map::getHasWarps(), gui, mapTileSize, mDrawHotKeys, mHighlightMapPortals, Actor::mMap, mName, UserColorId::PORTAL_HIGHLIGHT, userPalette, x, and y.

Referenced by drawPortal(), and getAllowNpcEquipment().

4225 {
4226  if (mHighlightMapPortals &&
4227  (mMap != nullptr) &&
4228  !mMap->getHasWarps())
4229  {
4230  if (userPalette == nullptr)
4231  {
4232  CompoundSprite::drawSimple(graphics, x, y);
4233  return;
4234  }
4235 
4236  graphics->setColor(userPalette->
4237  getColorWithAlpha(UserColorId::PORTAL_HIGHLIGHT));
4238 
4239  graphics->fillRectangle(Rect(x, y,
4241 
4242  if (mDrawHotKeys && !mName.empty())
4243  {
4244  const Color &color = userPalette->getColor(UserColorId::BEING,
4245  255U);
4246  gui->getFont()->drawString(graphics, color, color, mName, x, y);
4247  }
4248  }
4249 
4250  CompoundSprite::drawSimple(graphics, x, y);
4251 }
static bool mDrawHotKeys
Definition: being.h:1340
const Color & getColor(UserColorIdT type, const unsigned int alpha)
Definition: userpalette.h:159
Gui * gui
Definition: gui.cpp:110
Definition: rect.h:72
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
static bool mHighlightMapPortals
Definition: being.h:1337
Font * getFont() const
Definition: gui.h:159
UserPalette * userPalette
Definition: userpalette.cpp:33
std::string mName
Definition: being.h:1183
virtual void setColor(const Color &color)
Definition: graphics.h:319
bool getHasWarps() const
Definition: map.h:246
void drawString(Graphics *const graphics, Color col, const Color &col2, const std::string &text, const int x, const int y)
Definition: font.cpp:253
virtual void fillRectangle(const Rect &rectangle)=0
static const int mapTileSize
Definition: map.h:26
Definition: color.h:74
Map * mMap
Definition: actor.h:138

◆ drawSpeech()

void Being::drawSpeech ( const int  offsetX,
const int  offsetY 
)

Draws the speech text above the being.

Definition at line 2407 of file being.cpp.

References Text::adviseXY(), ThemeColorId::BUBBLE_TEXT, Graphics::CENTER, delete2, Theme::getColor(), Text::getHeight(), Widget::getHeight(), getHeight(), Widget::getWidth(), mapTileSize, mErased, mMoveNames, Actor::mPixelX, Actor::mPixelY, mSpeech, mSpeechBubble, mSpeechTime, mSpeechType, mText, Widget::mVisible, mY, BeingSpeech::NAME_IN_BUBBLE, BeingSpeech::NO_NAME_IN_BUBBLE, BeingSpeech::NO_SPEECH, Widget::setPosition(), Widget::setVisible(), Speech_true, MailMessageType::Text, BeingSpeech::TEXT_OVERHEAD, theme, userPalette, Visible_false, and Visible_true.

Referenced by getNumberOfLayers().

2409 {
2410  if (mErased)
2411  return;
2412  if (mSpeech.empty())
2413  return;
2414 
2415  const int px = mPixelX - offsetX;
2416  const int py = mPixelY - offsetY;
2417  const int speech = mSpeechType;
2418 
2419  // Draw speech above this being
2420  if (mSpeechTime == 0)
2421  {
2422  if (mSpeechBubble != nullptr &&
2424  {
2426  }
2427  mSpeech.clear();
2428  }
2429  else if (mSpeechTime > 0 && (speech == BeingSpeech::NAME_IN_BUBBLE ||
2430  speech == BeingSpeech::NO_NAME_IN_BUBBLE))
2431  {
2432  delete2(mText)
2433 
2434  if (mSpeechBubble != nullptr)
2435  {
2437  py - getHeight() - (mSpeechBubble->getHeight()));
2439  }
2440  }
2441  else if (mSpeechTime > 0 && speech == BeingSpeech::TEXT_OVERHEAD)
2442  {
2443  if (mSpeechBubble != nullptr)
2445 
2446  if ((mText == nullptr) && (userPalette != nullptr))
2447  {
2448  mText = new Text(mSpeech,
2449  mPixelX,
2450  mPixelY - getHeight(),
2453  Speech_true,
2454  nullptr);
2456  (mY + 1) * mapTileSize - getHeight() - mText->getHeight() - 9,
2457  mMoveNames);
2458  }
2459  }
2460  else if (speech == BeingSpeech::NO_SPEECH)
2461  {
2462  if (mSpeechBubble != nullptr)
2464  delete2(mText)
2465  }
2466 }
int mSpeechTime
Definition: being.h:1220
int getWidth() const
Definition: widget.h:220
const bool Visible_true
Definition: visible.h:29
void setVisible(Visible visible)
Definition: widget.cpp:224
#define delete2(var)
Definition: delete2.h:24
Text * mText
Definition: being.h:1201
UserPalette * userPalette
Definition: userpalette.cpp:33
bool mErased
Definition: being.h:1380
Visible mVisible
Definition: widget.h:962
std::string mSpeech
Definition: being.h:1189
int mPixelX
Definition: actor.h:132
SpeechBubble * mSpeechBubble
Definition: being.h:1293
const Color & getColor(const ThemeColorIdT type, const unsigned int alpha)
Definition: theme.h:135
const bool Visible_false
Definition: visible.h:29
void setPosition(const int x, const int y)
Definition: widget.cpp:160
int mPixelY
Definition: actor.h:133
int getHeight() const
Definition: text.h:65
static int mSpeechType
Definition: being.h:1336
const bool Speech_true
Definition: speech.h:29
Theme * theme
Definition: theme.cpp:61
int mY
Definition: being.h:1318
int getHeight() const
Definition: being.h:535
static Move mMoveNames
Definition: being.h:1349
int getHeight() const
Definition: widget.h:239
static const int mapTileSize
Definition: map.h:26
void adviseXY(const int x, const int y, const Move move)
Definition: text.cpp:143

◆ drawSpritesSDL()

void Being::drawSpritesSDL ( Graphics *const  graphics,
const int  posX,
const int  posY 
) const
virtual

Reimplemented from CompoundSprite.

Definition at line 3913 of file being.cpp.

References mSpriteHide, mSpriteRemap, CompoundSprite::mSprites, and restrict.

Referenced by setDistance().

3916 {
3917  const size_t sz = mSprites.size();
3918  for (size_t f = 0; f < sz; f ++)
3919  {
3920  const int rSprite = mSpriteHide[mSpriteRemap[f]];
3921  if (rSprite == 1)
3922  continue;
3923 
3924  const Sprite *restrict const sprite = mSprites[mSpriteRemap[f]];
3925  if (sprite != nullptr)
3926  sprite->draw(graphics, posX, posY);
3927  }
3928 }
Definition: sprite.h:32
int * mSpriteHide
Definition: being.h:1304
std::vector< Sprite * > mSprites
int * mSpriteRemap
Definition: being.h:1303
#define restrict
Definition: localconsts.h:156

◆ dumpSprites()

void Being::dumpSprites ( ) const
protected

Definition at line 3409 of file being.cpp.

References Logger::log(), logger, mSlots, and toInt.

3410 {
3411  STD_VECTOR<BeingSlot>::const_iterator it1 = mSlots.begin();
3412  const STD_VECTOR<BeingSlot>::const_iterator it1_end = mSlots.end();
3413 
3414  logger->log("sprites");
3415  for (; it1 != it1_end;
3416  ++ it1)
3417  {
3418  logger->log("%d,%s,%d",
3419  (*it1).spriteId,
3420  (*it1).color.c_str(),
3421  toInt((*it1).colorId, int));
3422  }
3423 }
Logger * logger
Definition: logger.cpp:88
std::vector< BeingSlot > mSlots
Definition: being.h:1209
#define toInt(val, name)
Definition: intdefines.h:46
void log(const char *const log_text,...)
Definition: logger.cpp:264

◆ enableBotAi()

void Being::enableBotAi ( )
inline

Definition at line 1049 of file being.h.

References mBotAi.

1050  { mBotAi = true; }
bool mBotAi
Definition: being.h:1388

◆ enableShop()

void Being::enableShop ( const bool  b)

Definition at line 5344 of file being.cpp.

References mShop, showShopBadge(), and updateName().

Referenced by ShopWindow::buyingStoreEnabled(), setAdvanced(), and ShopWindow::vendingEnabled().

5345 {
5346  mShop = b;
5347  updateName();
5349 }
void showShopBadge(const bool show)
Definition: being.cpp:5255
bool mShop
Definition: being.h:1384
void updateName()
Definition: being.cpp:3425

◆ fireMissile()

void Being::fireMissile ( Being *const  victim,
const MissileInfo missile 
) const

Shoots a missile particle from this being, to target being

Definition at line 1377 of file being.cpp.

References BLOCK_END, BLOCK_START, ParticleEngine::createChild(), Actor::mPixelX, Actor::mPixelY, particleEngine, and restrict.

Referenced by getHeight(), handleAttack(), handleSkill(), and handleSkillCasting().

1379 {
1380  BLOCK_START("Being::fireMissile")
1381 
1382  if (victim == nullptr ||
1383  missile.particle.empty() ||
1384  particleEngine == nullptr)
1385  {
1386  BLOCK_END("Being::fireMissile")
1387  return;
1388  }
1389 
1390  Particle *restrict const target = particleEngine->createChild();
1391 
1392  if (target == nullptr)
1393  {
1394  BLOCK_END("Being::fireMissile")
1395  return;
1396  }
1397 
1398  // +++ add z particle position?
1399  Particle *restrict const missileParticle = target->addEffect(
1400  missile.particle,
1401  mPixelX,
1402  mPixelY,
1403  0);
1404 
1405  target->moveBy(Vector(0.0F, 0.0F, missile.z));
1406  target->setLifetime(missile.lifeTime);
1407  victim->controlAutoParticle(target);
1408 
1409  if (missileParticle != nullptr)
1410  {
1411  missileParticle->setDestination(target, missile.speed, 0.0F);
1412  missileParticle->setDieDistance(missile.dieDistance);
1413  missileParticle->setLifetime(missile.lifeTime);
1414  }
1415  BLOCK_END("Being::fireMissile")
1416 }
Definition: vector.h:38
#define BLOCK_START(name)
Definition: perfomance.h:78
ParticleEngine * particleEngine
if(!vert) return
#define BLOCK_END(name)
Definition: perfomance.h:79
void controlAutoParticle(Particle *const particle)
int mPixelX
Definition: actor.h:132
int mPixelY
Definition: actor.h:133
std::string empty
Definition: podict.cpp:25
float dieDistance
Definition: missileinfo.h:43
#define restrict
Definition: localconsts.h:156
void addEffect(const std::string &name)
Definition: being.cpp:4959
float speed
Definition: missileinfo.h:42

◆ fixDirectionOffsets()

void Being::fixDirectionOffsets ( int &  offsetX,
int &  offsetY 
) const

Definition at line 5528 of file being.cpp.

References BeingDirection::DOWN, BeingDirection::LEFT, mDirection, BeingDirection::RIGHT, and BeingDirection::UP.

Referenced by getGroupId(), SkillDialog::useSkillDefault(), SkillDialog::useSkillPosition(), and SkillDialog::useSkillTarget().

5530 {
5531  const uint8_t dir = mDirection;
5532  if ((dir & BeingDirection::DOWN) != 0)
5533  {
5534  // do nothing
5535  }
5536  else if ((dir & BeingDirection::UP) != 0)
5537  {
5538  offsetX = -offsetX;
5539  offsetY = -offsetY;
5540  }
5541  else if ((dir & BeingDirection::LEFT) != 0)
5542  {
5543  const int tmp = offsetY;
5544  offsetY = offsetX;
5545  offsetX = -tmp;
5546  }
5547  else if ((dir & BeingDirection::RIGHT) != 0)
5548  {
5549  const int tmp = offsetY;
5550  offsetY = -offsetX;
5551  offsetX = tmp;
5552  }
5553 }
uint8_t mDirection
Definition: being.h:1234

◆ flashName()

void Being::flashName ( const int  time)

Definition at line 2534 of file being.cpp.

References FlashText::flash(), mDispName, and ServerCommandType::time.

Referenced by setDistance().

2535 {
2536  if (mDispName != nullptr)
2537  mDispName->flash(time);
2538 }
FlashText * mDispName
Definition: being.h:1194
void flash(const int time)
Definition: text.h:119

◆ genderToInt()

static uint8_t Being::genderToInt ( const GenderT  sex)
inlinestatic

Definition at line 926 of file being.h.

References Gender::FEMALE, Gender::HIDDEN, Gender::MALE, and Gender::UNSPECIFIED.

Referenced by EAthena::GameHandler::connect(), TmwAthena::GameHandler::connect(), EAthena::CharServerHandler::connect(), TmwAthena::CharServerHandler::connect(), and EAthena::CharServerHandler::newCharacter().

928  {
929  switch (sex)
930  {
931  case Gender::FEMALE:
932  case Gender::UNSPECIFIED:
933  default:
934  return 0;
935  case Gender::MALE:
936  return 1;
937  case Gender::HIDDEN:
938  return 3;
939  }
940  }

◆ getActionTime()

int Being::getActionTime ( ) const
inline

Returns the time spent in the current action.

Definition at line 127 of file being.h.

References mActionTime.

Referenced by Viewport::getMouseTile().

128  { return mActionTime; }
int mActionTime
Definition: being.h:1216

◆ getAllowNpcEquipment()

bool Being::getAllowNpcEquipment ( ) const
inline

◆ getAreaSize()

int Being::getAreaSize ( ) const
inline

Definition at line 1052 of file being.h.

References mAreaSize.

1053  { return mAreaSize; }
int mAreaSize
Definition: being.h:1370

◆ getAttackAction() [1/2]

std::string Being::getAttackAction ( ) const

Definition at line 1524 of file being.cpp.

Referenced by getAttackAction(), getGender(), getWeaponAttackAction(), and setAction().

◆ getAttackAction() [2/2]

std::string Being::getAttackAction ( const Attack *const  attack1) const

Definition at line 1470 of file being.cpp.

References BlockMask::AIR, getAttackAction(), Map::getBlockMask(), ActorSprite::mHorseId, Actor::mMap, mX, mY, and BlockMask::WATER.

1472 {
1473  if (attack1 == nullptr)
1474  return getAttackAction();
1475 
1476  if (mHorseId != 0)
1477  return attack1->mRideAction;
1478  if (mMap != nullptr)
1479  {
1480  const unsigned char mask = mMap->getBlockMask(mX, mY);
1481  if ((mask & BlockMask::AIR) != 0)
1482  return attack1->mSkyAction;
1483  else if ((mask & BlockMask::WATER) != 0)
1484  return attack1->mWaterAction;
1485  }
1486  return attack1->mAction;
1487 }
std::string mAction
Definition: attack.h:30
unsigned char getBlockMask(const int x, const int y) const
Definition: map.cpp:791
std::string mSkyAction
Definition: attack.h:31
int mX
Definition: being.h:1317
std::string mRideAction
Definition: attack.h:33
int mY
Definition: being.h:1318
std::string mWaterAction
Definition: attack.h:32
std::string getAttackAction() const
Definition: being.cpp:1524
Map * mMap
Definition: actor.h:138

◆ getAttackDelay()

int Being::getAttackDelay ( ) const
inline

Definition at line 772 of file being.h.

References mAttackDelay.

Referenced by TargetDebugTab::logic().

773  { return mAttackDelay; }
int mAttackDelay
Definition: being.h:1360

◆ getAttackSpeed()

int Being::getAttackSpeed ( ) const
inline

Gets the attack speed.

Definition at line 469 of file being.h.

References mAttackSpeed, restrict, restrict2, and LocalPlayer::setAction().

470  { return mAttackSpeed; }
int mAttackSpeed
Definition: being.h:1221

◆ getAttackTime()

time_t Being::getAttackTime ( ) const
inline

Definition at line 723 of file being.h.

References mAttackTime.

724  { return mAttackTime; }
time_t mAttackTime
Definition: being.h:1356

◆ getBlockType()

BlockTypeT Being::getBlockType ( ) const
inlinevirtual

Gets the way the monster blocks pathfinding for other objects

Reimplemented from ActorSprite.

Definition at line 441 of file being.h.

References BeingInfo::getBlockType(), mInfo, and BlockType::NONE.

442  {
443  if (mInfo == nullptr)
444  return BlockType::NONE;
445  return mInfo->getBlockType();
446  }
BlockTypeT getBlockType() const
Definition: beinginfo.h:128
BeingInfo * mInfo
Definition: being.h:1176

◆ getBlockWalkMask()

virtual unsigned char Being::getBlockWalkMask ( ) const
inlinevirtual

Gets the way the object is blocked by other objects.

Reimplemented in LocalPlayer.

Definition at line 431 of file being.h.

References BeingInfo::getBlockWalkMask(), and mInfo.

Referenced by botFixOffset(), moveBotTo(), nextTile(), and setDestination().

432  {
433  if (mInfo == nullptr)
434  return 0;
435  return mInfo->getBlockWalkMask();
436  }
unsigned char getBlockWalkMask() const
Definition: beinginfo.h:122
BeingInfo * mInfo
Definition: being.h:1176

◆ getBuyBoard()

std::string Being::getBuyBoard ( ) const
inline

Definition at line 1018 of file being.h.

References mBuyBoard, restrict2, and setSpiritBalls().

Referenced by BeingPopup::show().

1019  { return mBuyBoard; }
std::string mBuyBoard
Definition: being.h:1307

◆ getCachedX()

int Being::getCachedX ( ) const
inline

Definition at line 152 of file being.h.

References mCachedX.

Referenced by Ea::BeingRecv::processBeingMove3().

153  { return mCachedX; }
int mCachedX
Definition: being.h:1319

◆ getCachedY()

int Being::getCachedY ( ) const
inline

Definition at line 155 of file being.h.

References mCachedY.

Referenced by Ea::BeingRecv::processBeingMove3().

156  { return mCachedY; }
int mCachedY
Definition: being.h:1320

◆ getCacheEntry()

BeingCacheEntry * Being::getCacheEntry ( const BeingId  id)
static

Definition at line 3559 of file being.cpp.

References beingInfoCache, cur_time, and FOR_EACH.

Referenced by addToCache(), getReachable(), and updateFromCache().

3560 {
3561  FOR_EACH (std::list<BeingCacheEntry*>::iterator, i, beingInfoCache)
3562  {
3563  if (*i == nullptr)
3564  continue;
3565 
3566  if (id == (*i)->getId())
3567  {
3568  // Raise priority: move it to front
3569  if ((*i)->getTime() + 120 < cur_time)
3570  {
3571  beingInfoCache.splice(beingInfoCache.begin(),
3572  beingInfoCache, i);
3573  }
3574  return *i;
3575  }
3576  }
3577  return nullptr;
3578 }
#define FOR_EACH(type, iter, array)
Definition: foreach.h:24
std::list< BeingCacheEntry * > beingInfoCache
Definition: being.cpp:147
volatile time_t cur_time
Definition: timer.cpp:57

◆ getCastAction() [1/2]

std::string Being::getCastAction ( ) const

Definition at line 1525 of file being.cpp.

Referenced by getCastAction(), getGender(), and setAction().

◆ getCastAction() [2/2]

std::string Being::getCastAction ( const SkillInfo *const  skill) const

Definition at line 1489 of file being.cpp.

References BlockMask::AIR, Map::getBlockMask(), getCastAction(), ActorSprite::mHorseId, Actor::mMap, mX, mY, Actions::skill(), and BlockMask::WATER.

1491 {
1492  if (skill == nullptr)
1493  return getCastAction();
1494 
1495  if (mHorseId != 0)
1496  return skill->castingRideAction;
1497  if (mMap != nullptr)
1498  {
1499  const unsigned char mask = mMap->getBlockMask(mX, mY);
1500  if ((mask & BlockMask::AIR) != 0)
1501  return skill->castingSkyAction;
1502  else if ((mask & BlockMask::WATER) != 0)
1503  return skill->castingWaterAction;
1504  }
1505  return skill->castingAction;
1506 }
std::string castingWaterAction
Definition: skillinfo.h:58
std::string castingRideAction
Definition: skillinfo.h:56
unsigned char getBlockMask(const int x, const int y) const
Definition: map.cpp:791
std::string getCastAction() const
Definition: being.cpp:1525
std::string castingAction
Definition: skillinfo.h:55
int mX
Definition: being.h:1317
std::string castingSkyAction
Definition: skillinfo.h:57
int mY
Definition: being.h:1318
Map * mMap
Definition: actor.h:138

◆ getChat()

ChatObject* Being::getChat ( ) const
inline

◆ getClanName()

const std::string& Being::getClanName ( ) const
inline

Definition at line 262 of file being.h.

References A_WARN_UNUSED, addGuild(), getGuild(), guild, mClanName, removeGuild(), restrict, restrict2, setClanName(), setGuildName(), and setGuildPos().

Referenced by BeingPopup::show().

264  { return mClanName; }
std::string mClanName
Definition: being.h:1188

◆ getComment()

const std::string Being::getComment ( ) const
inline

Definition at line 811 of file being.h.

References mComment.

Referenced by PopupMenu::handleLink(), and BeingPopup::show().

812  { return mComment; }
std::string mComment
Definition: being.h:1306

◆ getCreatorId()

BeingId Being::getCreatorId ( ) const
inline

Definition at line 1031 of file being.h.

References mCreatorId.

Referenced by PopupMenu::showPopup().

1032  { return mCreatorId; }
BeingId mCreatorId
Definition: being.h:1375

◆ getCriticalHit()

int Being::getCriticalHit ( ) const
inline

Definition at line 787 of file being.h.

References mCriticalHit.

Referenced by TargetDebugTab::logic().

788  { return mCriticalHit; }
int mCriticalHit
Definition: being.h:1363

◆ getCurrentAction()

BeingActionT Being::getCurrentAction ( ) const
inline

◆ getDamageTaken()

int Being::getDamageTaken ( ) const
inline

Definition at line 592 of file being.h.

References mDamageTaken.

Referenced by ActorManager::findMostDamagedPlayer(), BeingPopup::show(), showName(), and SocialPlayersTab::updateAvatar().

593  { return mDamageTaken; }
int mDamageTaken
Definition: being.h:1327

◆ getDeadAction()

std::string Being::getDeadAction ( ) const

Definition at line 1526 of file being.cpp.

Referenced by getGender(), and setAction().

◆ getDefaultEffectId()

int Being::getDefaultEffectId ( const AttackTypeT type)
staticprotected

Definition at line 952 of file being.cpp.

References AttackType::CRITICAL, Configuration::getIntValue(), AttackType::MISS, and paths.

Referenced by getAllowNpcEquipment(), and getHitEffect().

953 {
954  if (type == AttackType::MISS)
955  return paths.getIntValue("missEffectId");
956  else if (type != AttackType::CRITICAL)
957  return paths.getIntValue("hitEffectId");
958  else
959  return paths.getIntValue("criticalHitEffectId");
960 }
int getIntValue(const std::string &key) const
Configuration paths

◆ getDestination()

const Vector& Being::getDestination ( ) const
inline

Returns the destination for this being.

Definition at line 161 of file being.h.

References mDest.

162  { return mDest; }
Vector mDest
Definition: being.h:1204

◆ getDirection()

uint8_t Being::getDirection ( ) const
inline

◆ getDirectionDelayed()

uint8_t Being::getDirectionDelayed ( ) const
inline

◆ getDistance()

int Being::getDistance ( ) const
inline

Definition at line 551 of file being.h.

References mDistance.

Referenced by ActorManager::findNearestLivingBeing().

552  { return mDistance; }
int mDistance
Definition: being.h:1330

◆ getEquipment()

Equipment * Being::getEquipment ( )

Definition at line 4697 of file being.cpp.

References BeingEquipBackend, doctest::detail::binaryAssertComparison::eq, DragDropSource::Equipment, and restrict.

Referenced by EquipmentWindow::setBeing().

4698 {
4699  Equipment *restrict const eq = new Equipment;
4700  Equipment::Backend *restrict const bk = new BeingEquipBackend(this);
4701  eq->setBackend(bk);
4702  return eq;
4703 }
friend class BeingEquipBackend
Definition: being.h:98
#define restrict
Definition: localconsts.h:156

◆ getEquippedWeapon()

const ItemInfo* Being::getEquippedWeapon ( ) const
inline

Definition at line 225 of file being.h.

References mEquippedWeapon.

226  { return mEquippedWeapon; }
const ItemInfo * mEquippedWeapon
Definition: being.h:1198

◆ getExtName()

const std::string& Being::getExtName ( ) const
inline

Definition at line 234 of file being.h.

References mExtName, restrict, restrict2, and setName().

Referenced by PopupMenu::showChatPopup(), and PopupMenu::showPopup().

235  { return mExtName; }
std::string mExtName
Definition: being.h:1184

◆ getGender()

GenderT Being::getGender ( ) const
inline

◆ getGenderSign()

std::string Being::getGenderSign ( ) const

Definition at line 2549 of file being.cpp.

References _, Gender::FEMALE, getGender(), BadgeDrawType::Hide, Gender::MALE, mAway, mInactive, mShop, mShowBadges, mShowGender, mShowPlayersStatus, and ServerCommandType::str.

Referenced by getGenderSignWithSpace(), setGoodStatus(), and showName().

2550 {
2551  std::string str;
2552  if (mShowGender)
2553  {
2554  if (getGender() == Gender::FEMALE)
2555  str = "\u2640";
2556  else if (getGender() == Gender::MALE)
2557  str = "\u2642";
2558  }
2559  if (mShowPlayersStatus &&
2561  {
2562  if (mShop)
2563  str.append("$");
2564  if (mAway)
2565  {
2566  // TRANSLATORS: this away status writed in player nick
2567  str.append(_("A"));
2568  }
2569  else if (mInactive)
2570  {
2571  // TRANSLATORS: this inactive status writed in player nick
2572  str.append(_("I"));
2573  }
2574  }
2575  return str;
2576 }
#define _(s)
Definition: gettext.h:34
GenderT getGender() const
Definition: being.h:625
bool mInactive
Definition: being.h:1386
static bool mShowGender
Definition: being.h:1344
bool mShop
Definition: being.h:1384
static bool mShowPlayersStatus
Definition: being.h:1346
static BadgeDrawType::Type mShowBadges
Definition: being.h:1351
bool mAway
Definition: being.h:1385

◆ getGenderSignWithSpace()

std::string Being::getGenderSignWithSpace ( ) const

Definition at line 2540 of file being.cpp.

References getGenderSign(), restrict, and ServerCommandType::str.

Referenced by setGoodStatus(), BeingPopup::show(), and PopupMenu::showPopup().

2541 {
2542  const std::string &restrict str = getGenderSign();
2543  if (str.empty())
2544  return str;
2545  else
2546  return std::string(" ").append(str);
2547 }
#define restrict
Definition: localconsts.h:156
std::string getGenderSign() const
Definition: being.cpp:2549

◆ getGoodStatus()

int Being::getGoodStatus ( ) const
inline

Definition at line 799 of file being.h.

References mGoodStatus.

Referenced by PlayerRelationsManager::isGoodName().

800  { return mGoodStatus; }
int mGoodStatus
Definition: being.h:1332

◆ getGroupId()

int Being::getGroupId ( ) const
inline

◆ getGuild() [1/3]

const Guild * Being::getGuild ( const std::string &  guildName) const

Returns a pointer to the specified guild that the being is in.

Definition at line 1257 of file being.cpp.

References FOR_EACH, guild, mGuilds, and restrict.

Referenced by PopupMenu::addSocialMenu(), SocialGuildTab2::buildCounter(), SocialGuildTab::buildCounter(), Actions::changeRelation(), Minimap::draw2(), NotifyManager::getGuildTab(), PopupMenu::handleLink(), Actions::outString(), outStringNormal(), SocialWindow::postInit(), WhoIsOnline::setNeutralColor(), PopupMenu::showChangePos(), PopupMenu::showChatPopup(), PopupMenu::showPlayerPopup(), PopupMenu::showPopup(), Actions::splitWhisper(), updateColors(), updateGuild(), SocialWindow::updateGuildCounter(), and ChatWindow::updateOnline().

1259 {
1261  {
1262  const Guild *restrict const guild = itr->second;
1263  if ((guild != nullptr) && guild->getName() == guildName)
1264  return guild;
1265  }
1266 
1267  return nullptr;
1268 }
#define FOR_EACH(type, iter, array)
Definition: foreach.h:24
std::map< int, Guild * >::const_iterator GuildsMapCIter
Definition: being.cpp:148
#define restrict
Definition: localconsts.h:156
std::map< int, Guild * > mGuilds
Definition: being.h:1213
uint32_t guild
Definition: guild.h:68

◆ getGuild() [2/3]

const Guild * Being::getGuild ( const int  id) const

Returns a pointer to the specified guild that the being is in.

Definition at line 1270 of file being.cpp.

References mGuilds.

1271 {
1272  const std::map<int, Guild*>::const_iterator itr = mGuilds.find(id);
1273  if (itr != mGuilds.end())
1274  return itr->second;
1275 
1276  return nullptr;
1277 }
std::map< int, Guild * > mGuilds
Definition: being.h:1213

◆ getGuild() [3/3]

Guild * Being::getGuild ( ) const

Returns a pointer to the specified guild that the being is in.

Definition at line 1279 of file being.cpp.

References mGuilds.

Referenced by LocalPlayer::checkNewName(), getClanName(), setGuild(), and updateColors().

1280 {
1281  const std::map<int, Guild*>::const_iterator itr = mGuilds.begin();
1282  if (itr != mGuilds.end())
1283  return itr->second;
1284 
1285  return nullptr;
1286 }
std::map< int, Guild * > mGuilds
Definition: being.h:1213

◆ getGuildName()

const std::string& Being::getGuildName ( ) const
inline

Definition at line 258 of file being.h.

References mGuildName.

Referenced by addToCache(), Minimap::draw2(), TargetDebugTab::logic(), BeingPopup::show(), and PopupMenu::showPlayerGMCommands().

260  { return mGuildName; }
std::string mGuildName
Definition: being.h:1187

◆ getGuilds()

const std::map<int, Guild*>& Being::getGuilds ( ) const
inline

Returns all guilds the being is in.

Definition at line 305 of file being.h.

References clearGuilds(), anonymous_namespace{badgesdb.cpp}::mGuilds, and restrict2.

307  { return mGuilds; }
std::map< int, Guild * > mGuilds
Definition: being.h:1213

◆ getHairColor()

ItemColor Being::getHairColor ( ) const
inline

Definition at line 882 of file being.h.

References A_WARN_UNUSED, getHitEffect(), mHairColor, recalcSpritesOrder(), restrict, and restrict2.

Referenced by ActorManager::cloneBeing().

883  { return mHairColor; }
ItemColor mHairColor
Definition: being.h:1379

◆ getHeight()

int Being::getHeight ( ) const
inlinevirtual

Returns the vertical size of the current base sprite of the being.

Reimplemented from ActorSprite.

Definition at line 535 of file being.h.

References DEFAULT_BEING_HEIGHT, fireMissile(), CompoundSprite::getHeight(), restrict, and restrict2.

Referenced by drawSpeech(), setPixelPositionF(), and setSpeech().

536  { return std::max(CompoundSprite::getHeight(), DEFAULT_BEING_HEIGHT); }
int getHeight() const
static const int DEFAULT_BEING_HEIGHT
Definition: being.h:52

◆ getHitEffect()

int Being::getHitEffect ( const Being *const  attacker,
const AttackTypeT  type,
const int  attackId,
const int  level 
) const

Definition at line 869 of file being.cpp.

References BLOCK_END, BLOCK_START, AttackType::CRITICAL, data, effectManager, getDefaultEffectId(), Configuration::getIntValue(), SkillDialog::getSkillDataByLevel(), SkillData::hitEffectId, Actions::info(), AttackType::MISS, ActorType::Monster, paths, ActorType::Player, restrict, AttackType::SKILL, skillDialog, and AttackType::SKILLMISS.

Referenced by getHairColor(), and takeDamage().

873 {
874  if (effectManager == nullptr)
875  return 0;
876 
877  BLOCK_START("Being::getHitEffect")
878  // Init the particle effect path based on current
879  // weapon or default.
880  int hitEffectId = 0;
881  if (type == AttackType::SKILL || type == AttackType::SKILLMISS)
882  {
883  const SkillData *restrict const data =
884  skillDialog->getSkillDataByLevel(attackId, level);
885  if (data == nullptr)
886  return -1;
887  if (type == AttackType::SKILL)
888  {
889  hitEffectId = data->hitEffectId;
890  if (hitEffectId == -1)
891  hitEffectId = paths.getIntValue("skillHitEffectId");
892  }
893  else
894  {
895  hitEffectId = data->missEffectId;
896  if (hitEffectId == -1)
897  hitEffectId = paths.getIntValue("skillMissEffectId");
898  }
899  }
900  else
901  {
902  if (attacker != nullptr)
903  {
904  const ItemInfo *restrict const attackerWeapon
905  = attacker->getEquippedWeapon();
906  if (attackerWeapon != nullptr &&
907  attacker->getType() == ActorType::Player)
908  {
909  if (type == AttackType::MISS)
910  hitEffectId = attackerWeapon->getMissEffectId();
911  else if (type != AttackType::CRITICAL)
912  hitEffectId = attackerWeapon->getHitEffectId();
913  else
914  hitEffectId = attackerWeapon->getCriticalHitEffectId();
915  }
916  else if (attacker->getType() == ActorType::Monster)
917  {
918  const BeingInfo *restrict const info = attacker->getInfo();
919  if (info != nullptr)
920  {
921  const Attack *restrict const atk =
922  info->getAttack(attackId);
923  if (atk != nullptr)
924  {
925  if (type == AttackType::MISS)
926  hitEffectId = atk->mMissEffectId;
927  else if (type != AttackType::CRITICAL)
928  hitEffectId = atk->mHitEffectId;
929  else
930  hitEffectId = atk->mCriticalHitEffectId;
931  }
932  else
933  {
934  hitEffectId = getDefaultEffectId(type);
935  }
936  }
937  }
938  else
939  {
940  hitEffectId = getDefaultEffectId(type);
941  }
942  }
943  else
944  {
945  hitEffectId = getDefaultEffectId(type);
946  }
947  }
948  BLOCK_END("Being::getHitEffect")
949  return hitEffectId;
950 }
Definition: attack.h:28
int hitEffectId
Definition: skilldata.h:50
#define BLOCK_START(name)
Definition: perfomance.h:78
if(!vert) return
#define BLOCK_END(name)
Definition: perfomance.h:79
int getIntValue(const std::string &key) const
SkillData * getSkillDataByLevel(const int id, const int level) const
bool info(InputEvent &event)
Definition: commands.cpp:56
uint32_t data
ActorTypeT getType() const
Definition: being.h:115
const ItemInfo * getEquippedWeapon() const
Definition: being.h:225
int getMissEffectId() const
Definition: iteminfo.h:182
static int getDefaultEffectId(const AttackTypeT &type)
Definition: being.cpp:952
Configuration paths
SkillDialog * skillDialog
Definition: skilldialog.cpp:65
const BeingInfo * getInfo() const
Definition: being.h:408
#define restrict
Definition: localconsts.h:156
EffectManager * effectManager

◆ getHoverCursor()

CursorT Being::getHoverCursor ( ) const
inline

◆ getHP()

int Being::getHP ( ) const
inline

Definition at line 758 of file being.h.

References mHP.

Referenced by TmwAthena::BeingRecv::processBeingMove(), TmwAthena::BeingRecv::processBeingVisible(), and BeingPopup::show().

759  { return mHP; }
int mHP
Definition: being.h:1328

◆ getInfo()

const BeingInfo* Being::getInfo ( ) const
inline

◆ getIp()

const std::string& Being::getIp ( ) const
inline

Definition at line 742 of file being.h.

References mIp.

Referenced by addToCache(), and SocialPlayersTab::updateAvatar().

743  { return mIp; }
std::string mIp
Definition: being.h:1302

◆ getKarma()

int Being::getKarma ( ) const
inline

Definition at line 1037 of file being.h.

References mKarma.

Referenced by TargetDebugTab::logic().

1038  { return mKarma; }
int mKarma
Definition: being.h:1368

◆ getLanguageId()

int Being::getLanguageId ( )
inline

Definition at line 1082 of file being.h.

References mLanguageId.

Referenced by Actions::splitWhisper().

1083  { return mLanguageId; }
int mLanguageId
Definition: being.h:1372

◆ getLastAttackX()

virtual int Being::getLastAttackX ( ) const
inlinevirtual

Reimplemented in LocalPlayer.

Definition at line 977 of file being.h.

References mLastAttackX.

Referenced by updateBotDirection().

978  { return mLastAttackX; }
int mLastAttackX
Definition: being.h:1226

◆ getLastAttackY()

virtual int Being::getLastAttackY ( ) const
inlinevirtual

Reimplemented in LocalPlayer.

Definition at line 980 of file being.h.

References A_NONNULL, drawElemental(), drawHomunculus(), drawMercenary(), mLastAttackY, restrict, restrict2, setChat(), and setTrickDead().

Referenced by updateBotDirection().

981  { return mLastAttackY; }
int mLastAttackY
Definition: being.h:1227

◆ getLevel()

virtual int Being::getLevel ( ) const
inlinevirtual

◆ getLook()

uint16_t Being::getLook ( ) const
inline

Definition at line 921 of file being.h.

References mLook, restrict2, and setLook().

Referenced by TmwAthena::BeingRecv::processBeingChangeLookContinue(), and EAthena::BeingRecv::processBeingChangeLookContinue().

922  { return mLook; }
uint16_t mLook
Definition: being.h:1377

◆ getManner()

int Being::getManner ( ) const
inline

Definition at line 1043 of file being.h.

References mManner.

Referenced by TargetDebugTab::logic().

1044  { return mManner; }
int mManner
Definition: being.h:1369

◆ getMaxHit()

int Being::getMaxHit ( ) const
inline

Definition at line 781 of file being.h.

References mMaxHit.

Referenced by TargetDebugTab::logic().

782  { return mMaxHit; }
int mMaxHit
Definition: being.h:1362

◆ getMaxHP()

int Being::getMaxHP ( ) const
inline

Definition at line 761 of file being.h.

References A_WARN_UNUSED, calcDirection(), and mMaxHP.

Referenced by BeingPopup::show().

762  { return mMaxHP; }
int mMaxHP
Definition: being.h:1329

◆ getMinHit()

int Being::getMinHit ( ) const
inline

Definition at line 775 of file being.h.

References mMinHit.

Referenced by TargetDebugTab::logic().

776  { return mMinHit; }
int mMinHit
Definition: being.h:1361

◆ getMoveAction()

std::string Being::getMoveAction ( ) const

Definition at line 1436 of file being.cpp.

References BlockMask::AIR, SpriteAction::FLY(), Map::getBlockMask(), ActorSprite::mHorseId, Actor::mMap, SpriteAction::MOVE(), mX, mY, SpriteAction::RIDE(), SpriteAction::SWIM(), and BlockMask::WATER.

Referenced by getGender(), and setAction().

1437 {
1438  if (mHorseId != 0)
1439  return SpriteAction::RIDE;
1440  if (mMap != nullptr)
1441  {
1442  const unsigned char mask = mMap->getBlockMask(mX, mY);
1443  if ((mask & BlockMask::AIR) != 0)
1444  return SpriteAction::FLY;
1445  else if ((mask & BlockMask::WATER) != 0)
1446  return SpriteAction::SWIM;
1447  }
1448  return SpriteAction::MOVE;
1449 }
static const std::string RIDE("ride")
unsigned char getBlockMask(const int x, const int y) const
Definition: map.cpp:791
int mX
Definition: being.h:1317
static const std::string FLY("fly")
int mY
Definition: being.h:1318
static const std::string SWIM("swim")
static const std::string MOVE("walk")
Map * mMap
Definition: actor.h:138