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
void setStatusEffectBlock (const int offset, const uint16_t newEffects)
 
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:91
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:71
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:5033
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:5400
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:305
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 4914 of file being.cpp.

References addSpecialEffect(), and mAwayEffect.

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

4915 {
4917 }
static int mAwayEffect
Definition: being.h:1352
void addSpecialEffect(const int effect)
Definition: being.cpp:4924

◆ 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 5365 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().

5371 {
5372  if (waitTimeTicks <= 0)
5373  {
5374  mCastEndTime = 0;
5375  return;
5376  }
5377  mCastEndTime = tick_time + waitTimeTicks;
5379  skillId,
5380  skillLevel);
5382  if (data != nullptr)
5383  {
5384  const std::string castingAnimation = data->castingAnimation;
5385  mCastingEffect = new CastingEffect(skillId,
5386  skillLevel,
5387  castingAnimation,
5388  dstX,
5389  dstY,
5390  range);
5392  }
5393  else
5394  {
5395  reportAlways("Want to draw casting for unknown skill %d",
5396  skillId);
5397  }
5398 }
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 4955 of file being.cpp.

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

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

4956 {
4957  delete mAnimationEffect;
4959  paths.getStringValue("sprites") + name,
4960  0);
4961 }
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 5040 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().

5042 {
5043  const SpriteParticleInfoIter it = mSpriteParticles.find(id);
5044  ParticleInfo *restrict pi = nullptr;
5045  if (it == mSpriteParticles.end())
5046  {
5047  pi = new ParticleInfo;
5048  mSpriteParticles[id] = pi;
5049  }
5050  else
5051  {
5052  pi = (*it).second;
5053  }
5054 
5055  if ((pi == nullptr) || !pi->particles.empty())
5056  return;
5057 
5058  // setup particle effects
5060  (particleEngine != nullptr))
5061  {
5062  FOR_EACH (StringVectCIter, itr, display.particles)
5063  {
5064  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5066  pi->files.push_back(*itr);
5067  pi->particles.push_back(p);
5068  }
5069  }
5070  else
5071  {
5072  FOR_EACH (StringVectCIter, itr, display.particles)
5073  pi->files.push_back(*itr);
5074  }
5075 }
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:176

◆ addItemParticlesCards()

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

Definition at line 5077 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().

5080 {
5081  const SpriteParticleInfoIter it = mSpriteParticles.find(id);
5082  ParticleInfo *restrict pi = nullptr;
5083  if (it == mSpriteParticles.end())
5084  {
5085  pi = new ParticleInfo;
5086  mSpriteParticles[id] = pi;
5087  }
5088  else
5089  {
5090  pi = (*it).second;
5091  }
5092 
5093  if ((pi == nullptr) || !pi->particles.empty())
5094  return;
5095 
5096  // setup particle effects
5098  (particleEngine != nullptr))
5099  {
5100  FOR_EACH (StringVectCIter, itr, display.particles)
5101  {
5102  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5104  pi->files.push_back(*itr);
5105  pi->particles.push_back(p);
5106  }
5107  for (int f = 0; f < maxCards; f ++)
5108  {
5109  const int cardId = cards.cards[f];
5110  if (!Item::isItem(cardId))
5111  continue;
5112  const ItemInfo &info = ItemDB::get(cardId);
5113  const SpriteDisplay &restrict display2 = info.getDisplay();
5114  FOR_EACH (StringVectCIter, itr, display2.particles)
5115  {
5116  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5118  pi->files.push_back(*itr);
5119  pi->particles.push_back(p);
5120  }
5121  }
5122  }
5123  else
5124  {
5125  FOR_EACH (StringVectCIter, itr, display.particles)
5126  {
5127  pi->files.push_back(*itr);
5128  }
5129  for (int f = 0; f < maxCards; f ++)
5130  {
5131  const int cardId = cards.cards[f];
5132  if (!Item::isItem(cardId))
5133  continue;
5134  const ItemInfo &info = ItemDB::get(cardId);
5135  const SpriteDisplay &restrict display2 = info.getDisplay();
5136  FOR_EACH (StringVectCIter, itr, display2.particles)
5137  {
5138  pi->files.push_back(*itr);
5139  }
5140  }
5141  }
5142 }
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:784
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:176
#define maxCards
Definition: cards.h:24

◆ addSpecialEffect()

void Being::addSpecialEffect ( const int  effect)

Definition at line 4924 of file being.cpp.

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

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

4925 {
4926  if ((effectManager != nullptr) &&
4928  (mSpecialParticle == nullptr) &&
4929  effect != -1)
4930  {
4932  this,
4933  0);
4934  }
4935 }
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 5491 of file being.cpp.

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

Referenced by setSpiritBalls().

5493 {
5494  if (effectManager == nullptr)
5495  return;
5496  for (unsigned int f = 0; f < balls; f ++)
5497  {
5498  Particle *const particle = effectManager->triggerReturn(
5499  effectId,
5500  this,
5501  0);
5502  mSpiritParticles.push_back(particle);
5503  }
5504 }
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 3514 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().

3515 {
3516  if (localPlayer == this)
3517  return;
3518 
3520  if (entry == nullptr)
3521  {
3522  entry = new BeingCacheEntry(getId());
3523  beingInfoCache.push_front(entry);
3524 
3525  if (beingInfoCache.size() >= CACHE_SIZE)
3526  {
3527  delete beingInfoCache.back();
3528  beingInfoCache.pop_back();
3529  }
3530  }
3531  if (!mLowTraffic)
3532  return;
3533 
3534  entry->setName(mName);
3535  entry->setLevel(getLevel());
3536  entry->setPartyName(getPartyName());
3537  entry->setGuildName(getGuildName());
3538  entry->setTime(cur_time);
3539  entry->setPvpRank(getPvpRank());
3540  entry->setIp(getIp());
3541  entry->setAdvanced(isAdvanced());
3542  entry->setTeamId(getTeamId());
3543  if (isAdvanced())
3544  {
3545  int flags = 0;
3547  flags += BeingFlag::SHOP;
3548  if (mAway)
3549  flags += BeingFlag::AWAY;
3550  if (mInactive)
3551  flags += BeingFlag::INACTIVE;
3552  entry->setFlags(flags);
3553  }
3554  else
3555  {
3556  entry->setFlags(0);
3557  }
3558 }
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:180
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:3560
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:773
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:110
int getThinkTime() const
Definition: beinginfo.h:290
virtual void attack(const BeingId targetId, const Keep keep) const =0
Net::HomunculusHandler * homunculusHandler
Definition: net.cpp:105
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 4715 of file being.cpp.

References beingInfoCache, and delete_all().

Referenced by Game::~Game().

4716 {
4718  beingInfoCache.clear();
4719 }
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:255

◆ 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 5571 of file being.cpp.

References Being(), and postInit().

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

5575 {
5576  Being *const being = new Being(id,
5577  type);
5578  being->postInit(subType,
5579  map);
5580  return being;
5581 }
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 3840 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().

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

◆ drawBasic()

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

Definition at line 3931 of file being.cpp.

References drawCompound(), x, and y.

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

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

◆ drawBeingCursor()

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

Definition at line 3735 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().

3738 {
3739  if (mUsedTargetCursor != nullptr)
3740  {
3742  if (mInfo == nullptr)
3743  {
3744  mUsedTargetCursor->draw(graphics,
3745  offsetX - mCursorPaddingX,
3746  offsetY - mCursorPaddingY);
3747  }
3748  else
3749  {
3750  mUsedTargetCursor->draw(graphics,
3751  offsetX + mInfo->getTargetOffsetX() - mCursorPaddingX,
3752  offsetY + mInfo->getTargetOffsetY() - mCursorPaddingY);
3753  }
3754  }
3755 }
volatile int tick_time
Definition: timer.cpp:52
int mCursorPaddingX
Definition: actorsprite.h:264
void draw(Graphics *const graphics, const int posX, const int posY) const
int getTargetOffsetX() const
Definition: beinginfo.h:134
AnimatedSprite * mUsedTargetCursor
Definition: actorsprite.h:258
static const int MILLISECONDS_IN_A_TICK
Definition: timer.h:29
int mCursorPaddingY
Definition: actorsprite.h:265
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 3938 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().

3941 {
3942  FUNC_BLOCK("CompoundSprite::draw", 1)
3943  if (mNeedsRedraw)
3944  updateImages();
3945 
3946  if (mSprites.empty()) // Nothing to draw
3947  return;
3948 
3949  if (mAlpha == 1.0F && (mImage != nullptr))
3950  {
3951  graphics->drawImage(mImage,
3952  posX + mOffsetX,
3953  posY + mOffsetY);
3954  }
3955  else if ((mAlpha != 0.0f) && (mAlphaImage != nullptr))
3956  {
3958  graphics->drawImage(mAlphaImage,
3959  posX + mOffsetX,
3960  posY + mOffsetY);
3961  }
3962  else
3963  {
3964  Being::drawPlayerSprites(graphics, posX, posY);
3965  }
3966 }
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:3894
#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 3817 of file being.cpp.

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

Referenced by draw(), and getLastAttackY().

3820 {
3821  // getActorX() + offsetX;
3822  const int px = mPixelX - mapTileSize / 2 + offsetX;
3823  // getActorY() + offsetY;
3824  const int py = mPixelY - mapTileSize + offsetY;
3825  drawBeingCursor(graphics, px, py);
3826  drawElementalSpriteAt(graphics, px, py);
3827 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
void drawElementalSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4170
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 4170 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().

4173 {
4176  {
4177  if (userPalette == nullptr)
4178  {
4179  CompoundSprite::drawSimple(graphics, x, y);
4180  return;
4181  }
4182 
4183  int attackRange;
4184  if (mAttackRange != 0)
4185  attackRange = mapTileSize * mAttackRange;
4186  else
4187  attackRange = mapTileSize;
4188 
4191 
4192  graphics->fillRectangle(Rect(
4193  x - attackRange, y - attackRange,
4194  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4195  }
4196 
4197  CompoundSprite::drawSimple(graphics, x, y);
4198 
4199  if (mShowMobHP &&
4200  (mInfo != nullptr))
4201  {
4203  {
4204  // show hp bar here
4206  if (maxHP == 0)
4207  maxHP = mInfo->getMaxHP();
4208 
4209  drawHpBar(graphics,
4210  maxHP,
4212  mDamageTaken,
4215  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4216  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4217  2 * 50,
4218  4);
4219  }
4220  }
4221 }
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:4254
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:255
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:176
uint16_t mBadgesCount
Definition: being.h:1378

◆ drawHomunculus()

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

Definition at line 3793 of file being.cpp.

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

Referenced by draw(), and getLastAttackY().

3796 {
3797  // getActorX() + offsetX;
3798  const int px = mPixelX - mapTileSize / 2 + offsetX;
3799  // getActorY() + offsetY;
3800  const int py = mPixelY - mapTileSize + offsetY;
3801  drawBeingCursor(graphics, px, py);
3802  drawHomunculusSpriteAt(graphics, px, py);
3803 }
void drawHomunculusSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4060
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
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 4060 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().

4063 {
4066  {
4067  if (userPalette == nullptr)
4068  {
4069  CompoundSprite::drawSimple(graphics, x, y);
4070  return;
4071  }
4072 
4073  int attackRange;
4074  if (mAttackRange != 0)
4075  attackRange = mapTileSize * mAttackRange;
4076  else
4077  attackRange = mapTileSize;
4078 
4081 
4082  graphics->fillRectangle(Rect(
4083  x - attackRange, y - attackRange,
4084  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4085  }
4086 
4087  CompoundSprite::drawSimple(graphics, x, y);
4088 
4089  if (mShowMobHP &&
4090  (mInfo != nullptr))
4091  {
4093  if ((info != nullptr) &&
4094  mId == info->id)
4095  {
4096  // show hp bar here
4098  if (maxHP == 0)
4099  maxHP = mInfo->getMaxHP();
4100 
4101  drawHpBar(graphics,
4102  maxHP,
4104  mDamageTaken,
4107  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4108  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4109  2 * 50,
4110  4);
4111  }
4112  }
4113 }
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:4254
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:255
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 4254 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().

4264 {
4265  if (maxHP <= 0 || (userPalette == nullptr))
4266  return;
4267 
4268  float p;
4269 
4270  if (hp != 0)
4271  {
4272  p = static_cast<float>(maxHP) / static_cast<float>(hp);
4273  }
4274  else if (maxHP != damage)
4275  {
4276  p = static_cast<float>(maxHP)
4277  / static_cast<float>(maxHP - damage);
4278  }
4279  else
4280  {
4281  p = 1;
4282  }
4283 
4284  if (p <= 0 || p > width)
4285  return;
4286 
4287  const int dx = static_cast<int>(static_cast<float>(width) / p);
4288 
4289 #ifdef TMWA_SUPPORT
4290  if (!serverFeatures->haveServerHp())
4291  { // old servers
4292  if ((damage == 0 && (this != localPlayer || hp == maxHP))
4293  || (hp == 0 && maxHP == damage))
4294  {
4295  graphics->setColor(userPalette->getColorWithAlpha(color1));
4296  graphics->fillRectangle(Rect(
4297  x, y, dx, height));
4298  return;
4299  }
4300  else if (width - dx <= 0)
4301  {
4302  graphics->setColor(userPalette->getColorWithAlpha(color2));
4303  graphics->fillRectangle(Rect(
4304  x, y, width, height));
4305  return;
4306  }
4307  }
4308  else
4309 #endif // TMWA_SUPPORT
4310  {
4311  if (hp == maxHP)
4312  {
4313  graphics->setColor(userPalette->getColorWithAlpha(color1));
4314  graphics->fillRectangle(Rect(
4315  x, y, dx, height));
4316  return;
4317  }
4318  else if (width - dx <= 0)
4319  {
4320  graphics->setColor(userPalette->getColorWithAlpha(color2));
4321  graphics->fillRectangle(Rect(
4322  x, y, width, height));
4323  return;
4324  }
4325  }
4326 
4327  graphics->setColor(userPalette->getColorWithAlpha(color1));
4328  graphics->fillRectangle(Rect(
4329  x, y, dx, height));
4330 
4331  graphics->setColor(userPalette->getColorWithAlpha(color2));
4332  graphics->fillRectangle(Rect(x + dx, y, width - dx, height));
4333 }
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:96
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 3805 of file being.cpp.

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

Referenced by draw(), and getLastAttackY().

3808 {
3809  // getActorX() + offsetX;
3810  const int px = mPixelX - mapTileSize / 2 + offsetX;
3811  // getActorY() + offsetY;
3812  const int py = mPixelY - mapTileSize + offsetY;
3813  drawBeingCursor(graphics, px, py);
3814  drawMercenarySpriteAt(graphics, px, py);
3815 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
void drawMercenarySpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4115
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 4115 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().

4118 {
4121  {
4122  if (userPalette == nullptr)
4123  {
4124  CompoundSprite::drawSimple(graphics, x, y);
4125  return;
4126  }
4127 
4128  int attackRange;
4129  if (mAttackRange != 0)
4130  attackRange = mapTileSize * mAttackRange;
4131  else
4132  attackRange = mapTileSize;
4133 
4136 
4137  graphics->fillRectangle(Rect(
4138  x - attackRange, y - attackRange,
4139  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4140  }
4141 
4142  CompoundSprite::drawSimple(graphics, x, y);
4143 
4144  if (mShowMobHP &&
4145  (mInfo != nullptr))
4146  {
4147  const MercenaryInfo *const info = PlayerInfo::getMercenary();
4148  if ((info != nullptr) &&
4149  mId == info->id)
4150  {
4151  // show hp bar here
4153  if (maxHP == 0)
4154  maxHP = mInfo->getMaxHP();
4155 
4156  drawHpBar(graphics,
4157  maxHP,
4159  mDamageTaken,
4162  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4163  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4164  2 * 50,
4165  4);
4166  }
4167  }
4168 }
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:4254
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:255
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 3781 of file being.cpp.

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

Referenced by canTalk(), and draw().

3784 {
3785  // getActorX() + offsetX;
3786  const int px = mPixelX - mapTileSize / 2 + offsetX;
3787  // getActorY() + offsetY;
3788  const int py = mPixelY - mapTileSize + offsetY;
3789  drawBeingCursor(graphics, px, py);
3790  drawMonsterSpriteAt(graphics, px, py);
3791 }
void drawMonsterSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:4006
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
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 4006 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().

4009 {
4013  {
4014  if (userPalette == nullptr)
4015  {
4016  CompoundSprite::drawSimple(graphics, x, y);
4017  return;
4018  }
4019 
4020  int attackRange;
4021  if (mAttackRange != 0)
4022  attackRange = mapTileSize * mAttackRange;
4023  else
4024  attackRange = mapTileSize;
4025 
4028 
4029  graphics->fillRectangle(Rect(
4030  x - attackRange, y - attackRange,
4031  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4032  }
4033 
4034  CompoundSprite::drawSimple(graphics, x, y);
4035 
4036  if (mShowMobHP &&
4037  (mInfo != nullptr) &&
4038  (localPlayer != nullptr) &&
4039  localPlayer->getTarget() == this &&
4041  {
4042  // show hp bar here
4043  int maxHP = mMaxHP;
4044  if (maxHP == 0)
4045  maxHP = mInfo->getMaxHP();
4046 
4047  drawHpBar(graphics,
4048  maxHP,
4049  mHP,
4050  mDamageTaken,
4053  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4054  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4055  2 * 50,
4056  4);
4057  }
4058 }
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:4254
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 3769 of file being.cpp.

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

Referenced by canTalk(), and draw().

3772 {
3773  // getActorX() + offsetX;
3774  const int px = mPixelX - mapTileSize / 2 + offsetX;
3775  // getActorY() + offsetY;
3776  const int py = mPixelY - mapTileSize + offsetY;
3777  drawBeingCursor(graphics, px, py);
3778  drawNpcSpriteAt(graphics, px, py);
3779 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
void drawNpcSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3999
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 3999 of file being.cpp.

References drawCompound(), x, and y.

Referenced by drawNpc(), and getAllowNpcEquipment().

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

◆ drawOther()

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

Definition at line 3757 of file being.cpp.

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

Referenced by canTalk(), and draw().

3760 {
3761  // getActorX() + offsetX;
3762  const int px = mPixelX - mapTileSize / 2 + offsetX;
3763  // getActorY() + offsetY;
3764  const int py = mPixelY - mapTileSize + offsetY;
3765  drawBeingCursor(graphics, px, py);
3766  drawOtherSpriteAt(graphics, px, py);
3767 }
void drawBeingCursor(Graphics *const graphics, const int offsetX, const int offsetY) const
Definition: being.cpp:3735
int mPixelX
Definition: actor.h:132
void drawOtherSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3992
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 3992 of file being.cpp.

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

Referenced by drawOther(), and getAllowNpcEquipment().

3995 {
3996  CompoundSprite::drawSimple(graphics, x, y);
3997 }
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 3695 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().

3698 {
3699  if (!mErased)
3700  {
3701  // getActorX() + offsetX;
3702  const int px = mPixelX - mapTileSize / 2 + offsetX;
3703  // getActorY() + offsetY;
3704  const int py = mPixelY - mapTileSize + offsetY;
3705  if (mHorseInfo != nullptr)
3706  {
3709  {
3710  (*it)->draw(graphics,
3711  px + offset.downOffsetX,
3712  py + offset.downOffsetY);
3713  }
3714 
3715  drawBeingCursor(graphics, px, py);
3716  drawPlayerSpriteAt(graphics,
3717  px + offset.riderOffsetX,
3718  py + offset.riderOffsetY);
3719 
3721  {
3722  (*it)->draw(graphics,
3723  px + offset.upOffsetX,
3724  py + offset.upOffsetY);
3725  }
3726  }
3727  else
3728  {
3729  drawBeingCursor(graphics, px, py);
3730  drawPlayerSpriteAt(graphics, px, py);
3731  }
3732  }
3733 }
#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:3735
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:3968
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 3968 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().

3971 {
3972  drawCompound(graphics, x, y);
3973 
3974  if (mShowOwnHP &&
3975  (mInfo != nullptr) &&
3976  localPlayer == this &&
3978  {
3979  drawHpBar(graphics,
3982  0,
3985  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
3986  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
3987  2 * 50,
3988  4);
3989  }
3990 }
void drawCompound(Graphics *const graphics, const int posX, const int posY) const
Definition: being.cpp:3938
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:4254
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 3894 of file being.cpp.

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

Referenced by drawCompound(), and setDistance().

3897 {
3898  const int sz = CompoundSprite::getNumberOfLayers();
3899  for (int f = 0; f < sz; f ++)
3900  {
3901  const int rSprite = mSpriteHide[mSpriteRemap[f]];
3902  if (rSprite == 1)
3903  continue;
3904 
3905  Sprite *restrict const sprite = mSprites[mSpriteRemap[f]];
3906  if (sprite != nullptr)
3907  {
3908  sprite->setAlpha(mAlpha);
3909  sprite->draw(graphics, posX, posY);
3910  }
3911  }
3912 }
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:176
float mAlpha
Definition: sprite.h:129

◆ drawPortal()

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

Definition at line 3829 of file being.cpp.

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

Referenced by canTalk(), and draw().

3832 {
3833  // getActorX() + offsetX;
3834  const int px = mPixelX - mapTileSize / 2 + offsetX;
3835  // getActorY() + offsetY;
3836  const int py = mPixelY - mapTileSize + offsetY;
3837  drawPortalSpriteAt(graphics, px, py);
3838 }
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:4223
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 4223 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().

4226 {
4227  if (mHighlightMapPortals &&
4228  (mMap != nullptr) &&
4229  !mMap->getHasWarps())
4230  {
4231  if (userPalette == nullptr)
4232  {
4233  CompoundSprite::drawSimple(graphics, x, y);
4234  return;
4235  }
4236 
4237  graphics->setColor(userPalette->
4238  getColorWithAlpha(UserColorId::PORTAL_HIGHLIGHT));
4239 
4240  graphics->fillRectangle(Rect(x, y,
4242 
4243  if (mDrawHotKeys && !mName.empty())
4244  {
4245  const Color &color = userPalette->getColor(UserColorId::BEING,
4246  255U);
4247  gui->getFont()->drawString(graphics, color, color, mName, x, y);
4248  }
4249  }
4250 
4251  CompoundSprite::drawSimple(graphics, x, y);
4252 }
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:243
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, SpeechBubble::requestMoveToBackground(), 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()));
2440  }
2441  }
2442  else if (mSpeechTime > 0 && speech == BeingSpeech::TEXT_OVERHEAD)
2443  {
2444  if (mSpeechBubble != nullptr)
2446 
2447  if ((mText == nullptr) && (userPalette != nullptr))
2448  {
2449  mText = new Text(mSpeech,
2450  mPixelX,
2451  mPixelY - getHeight(),
2454  Speech_true,
2455  nullptr);
2457  (mY + 1) * mapTileSize - getHeight() - mText->getHeight() - 9,
2458  mMoveNames);
2459  }
2460  }
2461  else if (speech == BeingSpeech::NO_SPEECH)
2462  {
2463  if (mSpeechBubble != nullptr)
2465  delete2(mText)
2466  }
2467 }
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
void requestMoveToBackground()
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 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
const Color & getColor(ThemeColorIdT type, const unsigned int alpha)
Definition: theme.h:135
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 3914 of file being.cpp.

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

Referenced by setDistance().

3917 {
3918  const size_t sz = mSprites.size();
3919  for (size_t f = 0; f < sz; f ++)
3920  {
3921  const int rSprite = mSpriteHide[mSpriteRemap[f]];
3922  if (rSprite == 1)
3923  continue;
3924 
3925  const Sprite *restrict const sprite = mSprites[mSpriteRemap[f]];
3926  if (sprite != nullptr)
3927  sprite->draw(graphics, posX, posY);
3928  }
3929 }
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:176

◆ dumpSprites()

void Being::dumpSprites ( ) const
protected

Definition at line 3410 of file being.cpp.

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

3411 {
3412  STD_VECTOR<BeingSlot>::const_iterator it1 = mSlots.begin();
3413  const STD_VECTOR<BeingSlot>::const_iterator it1_end = mSlots.end();
3414 
3415  logger->log("sprites");
3416  for (; it1 != it1_end;
3417  ++ it1)
3418  {
3419  logger->log("%d,%s,%d",
3420  (*it1).spriteId,
3421  (*it1).color.c_str(),
3422  toInt((*it1).colorId, int));
3423  }
3424 }
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 5340 of file being.cpp.

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

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

5341 {
5342  mShop = b;
5343  updateName();
5345 }
void showShopBadge(const bool show)
Definition: being.cpp:5251
bool mShop
Definition: being.h:1384
void updateName()
Definition: being.cpp:3426

◆ 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:176
void addEffect(const std::string &name)
Definition: being.cpp:4955
float speed
Definition: missileinfo.h:42

◆ fixDirectionOffsets()

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

Definition at line 5524 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().

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

◆ flashName()

void Being::flashName ( const int  time)

Definition at line 2535 of file being.cpp.

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

Referenced by setDistance().

2536 {
2537  if (mDispName != nullptr)
2538  mDispName->flash(time);
2539 }
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::MALE, Gender::OTHER, 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::OTHER:
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:784
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 3560 of file being.cpp.

References beingInfoCache, cur_time, and FOR_EACH.

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

3561 {
3562  FOR_EACH (std::list<BeingCacheEntry*>::iterator, i, beingInfoCache)
3563  {
3564  if (*i == nullptr)
3565  continue;
3566 
3567  if (id == (*i)->getId())
3568  {
3569  // Raise priority: move it to front
3570  if ((*i)->getTime() + 120 < cur_time)
3571  {
3572  beingInfoCache.splice(beingInfoCache.begin(),
3573  beingInfoCache, i);
3574  }
3575  return *i;
3576  }
3577  }
3578  return nullptr;
3579 }
#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:784
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 4693 of file being.cpp.

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

Referenced by EquipmentWindow::setBeing().

4694 {
4695  Equipment *restrict const eq = new Equipment;
4696  Equipment::Backend *restrict const bk = new BeingEquipBackend(this);
4697  eq->setBackend(bk);
4698  return eq;
4699 }
friend class BeingEquipBackend
Definition: being.h:98
#define restrict
Definition: localconsts.h:176

◆ 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 2550 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().

2551 {
2552  std::string str;
2553  if (mShowGender)
2554  {
2555  if (getGender() == Gender::FEMALE)
2556  str = "\u2640";
2557  else if (getGender() == Gender::MALE)
2558  str = "\u2642";
2559  }
2560  if (mShowPlayersStatus &&
2562  {
2563  if (mShop)
2564  str.append("$");
2565  if (mAway)
2566  {
2567  // TRANSLATORS: this away status writed in player nick
2568  str.append(_("A"));
2569  }
2570  else if (mInactive)
2571  {
2572  // TRANSLATORS: this inactive status writed in player nick
2573  str.append(_("I"));
2574  }
2575  }
2576  return str;
2577 }
#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 2541 of file being.cpp.

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

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

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

◆ 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:176
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:176
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:784
int mX
Definition: being.h:1317
static const std::string FLY("fly")