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
 
virtual 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 ()
 
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 int getHitEffect (const Being *const attacker, const AttackTypeT type, const int attackId, const int level)
 
static uint8_t genderToInt (const GenderT sex) A_CONST
 
static GenderT intToGender (const uint8_t sex) A_CONST
 
static BeingcreateBeing (const BeingId id, const ActorTypeT type, const BeingTypeId subtype, Map *const map)
 
- Static Public Member Functions inherited from ActorSprite
static void load ()
 
static void unload ()
 
- Static Public Member Functions inherited from CompoundSprite
static void setEnableDelay (bool b)
 

Data Fields

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

Protected Types

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

Protected Member Functions

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

Static Protected Member Functions

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

Protected Attributes

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

Static Protected Attributes

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

Friends

class ActorManager
 
class BeingEquipBackend
 
class LocalPlayer
 

Additional Inherited Members

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

Detailed Description

Definition at line 94 of file being.h.

Member Typedef Documentation

◆ SpriteParticleInfo

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

Definition at line 1203 of file being.h.

◆ SpriteParticleInfoIter

typedef SpriteParticleInfo::iterator Being::SpriteParticleInfoIter
protected

Definition at line 1204 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 162 of file being.cpp.

163  :
164  ActorSprite(id),
165  mNextSound(),
167  mEmotionSprite(nullptr),
168  mAnimationEffect(nullptr),
169  mCastingEffect(nullptr),
170  mBadges(),
172  mName(),
173  mExtName(),
174  mRaceName(),
175  mPartyName(),
176  mGuildName(),
177  mClanName(),
178  mSpeech(),
179  mDispName(nullptr),
180  mNameColor(nullptr),
181  mEquippedWeapon(nullptr),
182  mPath(),
183  mText(nullptr),
184  mTextColor(nullptr),
185  mDest(),
186  mSlots(),
188  mGuilds(),
189  mParty(nullptr),
190  mActionTime(0),
191  mEmotionTime(0),
192  mSpeechTime(0),
193  mAttackSpeed(350),
194  mLevel(0),
195  mGroupId(0),
196  mAttackRange(1),
197  mLastAttackX(0),
198  mLastAttackY(0),
199  mPreStandTime(0),
202  mSubType(fromInt(0xFFFF, BeingTypeId)),
206  mShowName(false),
207  mIsGM(false),
208  mType(type),
209  mSpeechBubble(nullptr),
210  mWalkSpeed(playerHandler != nullptr ?
212  mSpeed(playerHandler != nullptr ?
214  mIp(),
215  mSpriteRemap(new int[20]),
216  mSpriteHide(new int[20]),
217  mSpriteDraw(new int[20]),
218  mComment(),
219  mBuyBoard(),
220  mSellBoard(),
221  mOwner(nullptr),
222  mSpecialParticle(nullptr),
223  mChat(nullptr),
224  mHorseInfo(nullptr),
226  mUpHorseSprites(),
228  mX(0),
229  mY(0),
230  mCachedX(0),
231  mCachedY(0),
232  mSortOffsetY(0),
233  mPixelOffsetY(0),
234  mFixedOffsetY(0),
235  mOldHeight(0),
236  mDamageTaken(0),
237  mHP(0),
238  mMaxHP(0),
239  mDistance(0),
241  mGoodStatus(-1),
242  mMoveTime(0),
243  mAttackTime(0),
244  mTalkTime(0),
245  mOtherTime(0),
247  mAttackDelay(0),
248  mMinHit(0),
249  mMaxHit(0),
250  mCriticalHit(0),
251  mPvpRank(0),
252  mNumber(100),
253  mSpiritBalls(0U),
254  mUsageCounter(1),
255  mKarma(0),
256  mManner(0),
257  mAreaSize(11),
258  mCastEndTime(0),
259  mLanguageId(-1),
260  mBadgesX(0),
261  mBadgesY(0),
263  mTeamId(0U),
264  mLook(0U),
265  mBadgesCount(0U),
267  mErased(false),
268  mEnemy(false),
269  mGotComment(false),
270  mAdvanced(false),
271  mShop(false),
272  mAway(false),
273  mInactive(false),
274  mNeedPosUpdate(true),
275  mBotAi(true),
276  mAllowNpcEquipment(false)
277 {
278  for (int f = 0; f < 20; f ++)
279  {
280  mSpriteRemap[f] = f;
281  mSpriteHide[f] = 0;
282  mSpriteDraw[f] = 0;
283  }
284 
286  mBadges[f] = nullptr;
287 }
#define for_each_badges()
Definition: being.cpp:156
volatile time_t cur_time
Definition: timer.cpp:58
const BeingId BeingId_zero
Definition: beingid.h:30
int BeingTypeId
Definition: beingtypeid.h:30
ActorSprite(const BeingId id)
Definition: actorsprite.cpp:69
static BeingInfo * unknown
Definition: beinginfo.h:56
bool mNeedPosUpdate
Definition: being.h:1384
uint16_t mLook
Definition: being.h:1374
bool mAway
Definition: being.h:1382
int mLanguageId
Definition: being.h:1369
bool mIsGM
Definition: being.h:1235
Text * mText
Definition: being.h:1198
int mAreaSize
Definition: being.h:1367
SpriteParticleInfo mSpriteParticles
Definition: being.h:1207
time_t mMoveTime
Definition: being.h:1352
ReachableT mReachable
Definition: being.h:1328
int mKarma
Definition: being.h:1365
int mFixedOffsetY
Definition: being.h:1321
int mLastAttackX
Definition: being.h:1223
int mX
Definition: being.h:1314
int mBadgesX
Definition: being.h:1370
int mDamageTaken
Definition: being.h:1324
std::string mPartyName
Definition: being.h:1183
std::string mGuildName
Definition: being.h:1184
int mY
Definition: being.h:1315
int mDistance
Definition: being.h:1327
CastingEffect * mCastingEffect
Definition: being.h:1176
std::string mIp
Definition: being.h:1299
uint8_t mDirectionDelayed
Definition: being.h:1232
int mSpeechTime
Definition: being.h:1217
const Color * mNameColor
Definition: being.h:1192
SpriteDirection::Type mSpriteDirection
Definition: being.h:1233
int mManner
Definition: being.h:1366
AnimatedSprite * mAnimationEffect
Definition: being.h:1175
NextSoundInfo mNextSound
Definition: being.h:954
std::string mSellBoard
Definition: being.h:1305
bool mEnemy
Definition: being.h:1378
bool mErased
Definition: being.h:1377
int * mSpriteHide
Definition: being.h:1301
std::string mSpeech
Definition: being.h:1186
const Color * mTextColor
Definition: being.h:1199
BeingId mCreatorId
Definition: being.h:1372
std::string mClanName
Definition: being.h:1185
ItemColor mHairColor
Definition: being.h:1376
int mUsageCounter
Definition: being.h:1364
bool mGotComment
Definition: being.h:1379
AnimatedSprite * mEmotionSprite
Definition: being.h:1174
bool mBotAi
Definition: being.h:1385
int * mSpriteDraw
Definition: being.h:1302
std::map< int, Guild * > mGuilds
Definition: being.h:1210
std::string mName
Definition: being.h:1180
time_t mTalkTime
Definition: being.h:1354
int mMaxHP
Definition: being.h:1326
SpeechBubble * mSpeechBubble
Definition: being.h:1290
time_t mTestTime
Definition: being.h:1356
int mAttackRange
Definition: being.h:1222
std::vector< Particle * > mSpiritParticles
Definition: being.h:1312
uint16_t mBadgesCount
Definition: being.h:1375
std::string mRaceName
Definition: being.h:1182
unsigned int mPvpRank
Definition: being.h:1361
int mSortOffsetY
Definition: being.h:1318
std::string mBuyBoard
Definition: being.h:1304
GenderT mGender
Definition: being.h:1228
std::vector< BeingSlot > mSlots
Definition: being.h:1206
int mHP
Definition: being.h:1325
const ItemInfo * mEquippedWeapon
Definition: being.h:1195
AnimatedSprite * mBadges[BadgeIndex::BadgeIndexSize]
Definition: being.h:1177
bool mAllowNpcEquipment
Definition: being.h:1386
Vector mDest
Definition: being.h:1201
ChatObject * mChat
Definition: being.h:1308
int mGoodStatus
Definition: being.h:1329
uint16_t mTeamId
Definition: being.h:1373
int mCastEndTime
Definition: being.h:1368
int mActionTime
Definition: being.h:1213
int mLastAttackY
Definition: being.h:1224
Being * mOwner
Definition: being.h:1306
BeingTypeId mSubType
Definition: being.h:1230
HorseInfo * mHorseInfo
Definition: being.h:1309
time_t mOtherTime
Definition: being.h:1355
uint8_t mOldHeight
Definition: being.h:1322
int mGroupId
Definition: being.h:1221
bool mInactive
Definition: being.h:1383
BeingInfo * mInfo
Definition: being.h:1173
std::string mExtName
Definition: being.h:1181
bool mShop
Definition: being.h:1381
int mMaxHit
Definition: being.h:1359
FlashText * mDispName
Definition: being.h:1191
int mEmotionTime
Definition: being.h:1214
int mCachedX
Definition: being.h:1316
std::vector< AnimatedSprite * > mDownHorseSprites
Definition: being.h:1310
std::string mComment
Definition: being.h:1303
Party * mParty
Definition: being.h:1211
int mPixelOffsetY
Definition: being.h:1319
int mCachedY
Definition: being.h:1317
int mCriticalHit
Definition: being.h:1360
const ActorTypeT mType
Definition: being.h:1287
int mPreStandTime
Definition: being.h:1226
Particle * mSpecialParticle
Definition: being.h:1307
bool mAdvanced
Definition: being.h:1380
int mMinHit
Definition: being.h:1358
int mBadgesY
Definition: being.h:1371
uint8_t mDirection
Definition: being.h:1231
int mAttackDelay
Definition: being.h:1357
BeingActionT mAction
Definition: being.h:1229
int * mSpriteRemap
Definition: being.h:1300
int mLevel
Definition: being.h:1220
std::string mSpriteAction
Definition: being.h:1179
unsigned int mNumber
Definition: being.h:1362
int mAttackSpeed
Definition: being.h:1218
time_t mAttackTime
Definition: being.h:1353
int mWalkSpeed
Definition: being.h:1297
std::vector< AnimatedSprite * > mUpHorseSprites
Definition: being.h:1311
bool mShowName
Definition: being.h:1234
Path mPath
Definition: being.h:1197
unsigned int mSpiritBalls
Definition: being.h:1363
int mSpeed
Definition: being.h:1298
virtual int getDefaultWalkSpeed() const =0
#define fromInt(val, name)
Definition: intdefines.h:46
const ItemColor ItemColor_zero
Definition: itemcolor.h:30
@ UNSPECIFIED
Definition: gender.h:33
@ REACH_UNKNOWN
Definition: reachable.h:31
static const std::string STAND("stand")
Net::PlayerHandler * playerHandler
Definition: net.cpp:96

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

Referenced by createBeing().

◆ ~Being()

Being::~Being ( )

Definition at line 337 of file being.cpp.

338 {
339  config.removeListener("visiblenames", this);
341 
342  delete [] mSpriteRemap;
343  mSpriteRemap = nullptr;
344  delete [] mSpriteHide;
345  mSpriteHide = nullptr;
346  delete [] mSpriteDraw;
347  mSpriteDraw = nullptr;
348 
350  delete2(mBadges[f])
351 
354  delete2(mText)
358  mBadgesCount = 0;
359  delete2(mChat)
360  removeHorse();
361 
364 }
void removeAllItemsParticles()
Definition: being.cpp:5037
void removeHorse()
Definition: being.cpp:5404
void removeListener(const std::string &key, ConfigListener *const listener)
Configuration config
#define delete2(var)
Definition: delete2.h:25
#define CHECKLISTENERS
Definition: localconsts.h:277

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

Member Function Documentation

◆ addAfkEffect()

void Being::addAfkEffect ( )

Definition at line 4918 of file being.cpp.

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

References addSpecialEffect(), and mAwayEffect.

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

◆ addCast()

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

Definition at line 5369 of file being.cpp.

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

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

Referenced by EAthena::BeingRecv::processSkillCastingContinue().

◆ addEffect()

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

Definition at line 4959 of file being.cpp.

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

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

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

◆ addGuild()

void Being::addGuild ( Guild *const  guild)

Adds a guild to the being.

Definition at line 1237 of file being.cpp.

1238 {
1239  if (guild == nullptr)
1240  return;
1241 
1242  mGuilds[guild->getId()] = guild;
1243 
1244  if (this == localPlayer && (socialWindow != nullptr))
1246 }
bool addTab(Guild *const guild)
LocalPlayer * localPlayer
uint32_t guild
SocialWindow * socialWindow

References SocialWindow::addTab(), guild, localPlayer, anonymous_namespace{badgesdb.cpp}::mGuilds, and socialWindow.

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

◆ addItemParticles()

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

Definition at line 5044 of file being.cpp.

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

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

◆ addItemParticlesCards()

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

Definition at line 5081 of file being.cpp.

5084 {
5085  const SpriteParticleInfoIter it = mSpriteParticles.find(id);
5086  ParticleInfo *restrict pi = nullptr;
5087  if (it == mSpriteParticles.end())
5088  {
5089  pi = new ParticleInfo;
5090  mSpriteParticles[id] = pi;
5091  }
5092  else
5093  {
5094  pi = (*it).second;
5095  }
5096 
5097  if ((pi == nullptr) || !pi->particles.empty())
5098  return;
5099 
5100  // setup particle effects
5102  (particleEngine != nullptr))
5103  {
5104  FOR_EACH (StringVectCIter, itr, display.particles)
5105  {
5106  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5108  pi->files.push_back(*itr);
5109  pi->particles.push_back(p);
5110  }
5111  for (int f = 0; f < maxCards; f ++)
5112  {
5113  const int cardId = cards.cards[f];
5114  if (!Item::isItem(cardId))
5115  continue;
5116  const ItemInfo &info = ItemDB::get(cardId);
5117  const SpriteDisplay &restrict display2 = info.getDisplay();
5118  FOR_EACH (StringVectCIter, itr, display2.particles)
5119  {
5120  Particle *const p = particleEngine->addEffect(*itr, 0, 0, 0);
5122  pi->files.push_back(*itr);
5123  pi->particles.push_back(p);
5124  }
5125  }
5126  }
5127  else
5128  {
5129  FOR_EACH (StringVectCIter, itr, display.particles)
5130  {
5131  pi->files.push_back(*itr);
5132  }
5133  for (int f = 0; f < maxCards; f ++)
5134  {
5135  const int cardId = cards.cards[f];
5136  if (!Item::isItem(cardId))
5137  continue;
5138  const ItemInfo &info = ItemDB::get(cardId);
5139  const SpriteDisplay &restrict display2 = info.getDisplay();
5140  FOR_EACH (StringVectCIter, itr, display2.particles)
5141  {
5142  pi->files.push_back(*itr);
5143  }
5144  }
5145  }
5146 }
#define maxCards
Definition: cards.h:25
static bool isItem(const int id)
Definition: item.h:238
bool info(InputEvent &event)
Definition: commands.cpp:57
const ItemInfo & get(const int id)
Definition: itemdb.cpp:792
int cards[4]
Definition: cardslist.h:68

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

◆ addSpecialEffect()

void Being::addSpecialEffect ( const int  effect)

Definition at line 4928 of file being.cpp.

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

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

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

◆ addSpiritBalls()

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

Definition at line 5495 of file being.cpp.

5497 {
5498  if (effectManager == nullptr)
5499  return;
5500  for (unsigned int f = 0; f < balls; f ++)
5501  {
5502  Particle *const particle = effectManager->triggerReturn(
5503  effectId,
5504  this,
5505  0);
5506  mSpiritParticles.push_back(particle);
5507  }
5508 }

References effectManager, and EffectManager::triggerReturn().

◆ addToCache()

void Being::addToCache ( ) const

Definition at line 3513 of file being.cpp.

3514 {
3515  if (localPlayer == this)
3516  return;
3517 
3519  if (entry == nullptr)
3520  {
3521  entry = new BeingCacheEntry(getId());
3522  beingInfoCache.push_front(entry);
3523 
3524  if (beingInfoCache.size() >= CACHE_SIZE)
3525  {
3526  delete beingInfoCache.back();
3527  beingInfoCache.pop_back();
3528  }
3529  }
3530  if (!mLowTraffic)
3531  return;
3532 
3533  entry->setName(mName);
3534  entry->setLevel(getLevel());
3535  entry->setPartyName(getPartyName());
3536  entry->setGuildName(getGuildName());
3537  entry->setTime(cur_time);
3538  entry->setPvpRank(getPvpRank());
3539  entry->setIp(getIp());
3540  entry->setAdvanced(isAdvanced());
3541  entry->setTeamId(getTeamId());
3542  if (isAdvanced())
3543  {
3544  int flags = 0;
3546  flags += BeingFlag::SHOP;
3547  if (mAway)
3548  flags += BeingFlag::AWAY;
3549  if (mInactive)
3550  flags += BeingFlag::INACTIVE;
3551  entry->setFlags(flags);
3552  }
3553  else
3554  {
3555  entry->setFlags(0);
3556  }
3557 }
const unsigned int CACHE_SIZE
Definition: being.cpp:125
std::list< BeingCacheEntry * > beingInfoCache
Definition: being.cpp:148
BeingId getId() const
Definition: actorsprite.h:64
void setFlags(const int flags)
void setGuildName(const std::string &name)
void setPartyName(const std::string &name)
void setIp(const std::string &ip)
void setLevel(const int n)
void setTime(const time_t n)
void setAdvanced(const bool a)
void setTeamId(const uint16_t teamId)
void setName(const std::string &name)
void setPvpRank(const int r)
static BeingCacheEntry * getCacheEntry(const BeingId id)
Definition: being.cpp:3559
virtual int getLevel() const
Definition: being.h:604
uint16_t getTeamId() const
Definition: being.h:1082
const std::string & getPartyName() const
Definition: being.h:255
const std::string & getGuildName() const
Definition: being.h:259
static bool mLowTraffic
Definition: being.h:1336
const std::string & getIp() const
Definition: being.h:743
bool isAdvanced() const
Definition: being.h:828
unsigned int getPvpRank() const
Definition: being.h:749
@ INACTIVE
Definition: beingflag.h:31
ServerTypeT getNetworkType()
Definition: net.cpp:189

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 ActorManager::logic(), ActorManager::parseLevels(), EAthena::GuildRecv::processGuildSetPosition(), Ea::BeingRecv::processNameResponse(), EAthena::BeingRecv::processNameResponse2(), EAthena::BeingRecv::processNameResponseTitle(), EAthena::BeingRecv::processPlayerGuilPartyInfo(), TmwAthena::BeingRecv::processPlayerGuilPartyInfo(), EAthena::BeingRecv::processPlayerGuilPartyInfo2(), TmwAthena::BeingRecv::processPvpSet(), and setAdvanced().

◆ botFixOffset()

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

Definition at line 2080 of file being.cpp.

2082 {
2083  if ((mInfo == nullptr) || (mOwner == nullptr))
2084  return;
2085 
2086  int offsetX1;
2087  int offsetY1;
2088  switch (mOwner->getCurrentAction())
2089  {
2090  case BeingAction::SIT:
2091  offsetX1 = mInfo->getSitOffsetX();
2092  offsetY1 = mInfo->getSitOffsetY();
2093  break;
2094 
2095  case BeingAction::MOVE:
2096  offsetX1 = mInfo->getMoveOffsetX();
2097  offsetY1 = mInfo->getMoveOffsetY();
2098  break;
2099 
2100  case BeingAction::DEAD:
2101  offsetX1 = mInfo->getDeadOffsetX();
2102  offsetY1 = mInfo->getDeadOffsetY();
2103  break;
2104 
2105  case BeingAction::ATTACK:
2106  offsetX1 = mInfo->getAttackOffsetX();
2107  offsetY1 = mInfo->getAttackOffsetY();
2108  break;
2109 
2110  case BeingAction::SPAWN:
2111  case BeingAction::HURT:
2112  case BeingAction::STAND:
2113  case BeingAction::PRESTAND:
2114  case BeingAction::CAST:
2115  default:
2116  offsetX1 = mInfo->getTargetOffsetX();
2117  offsetY1 = mInfo->getTargetOffsetY();
2118  break;
2119  }
2120 
2121  int offsetX = offsetX1;
2122  int offsetY = offsetY1;
2123  switch (mOwner->mDirection)
2124  {
2125  case BeingDirection::LEFT:
2126  offsetX = -offsetY1;
2127  offsetY = offsetX1;
2128  break;
2129  case BeingDirection::RIGHT:
2130  offsetX = offsetY1;
2131  offsetY = -offsetX1;
2132  break;
2133  case BeingDirection::UP:
2134  offsetY = -offsetY;
2135  offsetX = -offsetX;
2136  break;
2137  default:
2138  case BeingDirection::DOWN:
2139  break;
2140  }
2141  dstX += offsetX;
2142  dstY += offsetY;
2143  if (mMap != nullptr)
2144  {
2145  if (!mMap->getWalk(dstX, dstY, getBlockWalkMask()))
2146  {
2147  dstX = mOwner->mX;
2148  dstY = mOwner->mY;
2149  }
2150  }
2151 }
int getTargetOffsetY() const
Definition: beinginfo.h:141
int getDeadOffsetX() const
Definition: beinginfo.h:267
int getSitOffsetX() const
Definition: beinginfo.h:243
int getSitOffsetY() const
Definition: beinginfo.h:249
int getAttackOffsetX() const
Definition: beinginfo.h:279
int getMoveOffsetY() const
Definition: beinginfo.h:261
int getTargetOffsetX() const
Definition: beinginfo.h:135
int getDeadOffsetY() const
Definition: beinginfo.h:273
int getAttackOffsetY() const
Definition: beinginfo.h:285
int getMoveOffsetX() const
Definition: beinginfo.h:255
virtual unsigned char getBlockWalkMask() const
Definition: being.h:432
BeingActionT getCurrentAction() const
Definition: being.h:482
bool getWalk(const int x, const int y, const unsigned char blockWalkMask) const
Definition: map.cpp:785

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

◆ botLogic()

void Being::botLogic ( )

Definition at line 1999 of file being.cpp.

2000 {
2001  if ((mOwner == nullptr) || (mMap == nullptr) || (mInfo == nullptr))
2002  return;
2003 
2004  const int time = tick_time;
2005  const int thinkTime = mInfo->getThinkTime();
2006  if (abs(CAST_S32(mMoveTime) - time) < thinkTime)
2007  return;
2008 
2009  mMoveTime = time;
2010 
2011  int dstX = mOwner->mX;
2012  int dstY = mOwner->mY;
2013  const int warpDist = mInfo->getWarpDist();
2014  const int divX = abs(dstX - mX);
2015  const int divY = abs(dstY - mY);
2016 
2017  if (divX >= warpDist || divY >= warpDist)
2018  {
2021  else
2023  mBotAi = true;
2024  return;
2025  }
2026  if (!mBotAi)
2027  return;
2028  if (mAction == BeingAction::MOVE)
2029  {
2031  {
2032  updateBotFollow(dstX, dstY,
2033  divX, divY);
2034  }
2035  return;
2036  }
2037 
2038  switch (mOwner->mAction)
2039  {
2040  case BeingAction::MOVE:
2041  case BeingAction::PRESTAND:
2042  updateBotFollow(dstX, dstY,
2043  divX, divY);
2044  break;
2045  case BeingAction::STAND:
2046  case BeingAction::SPAWN:
2047  botFixOffset(dstX, dstY);
2048  moveBotTo(dstX, dstY);
2049  break;
2050  case BeingAction::ATTACK:
2051  {
2052  const Being *const target = localPlayer->getTarget();
2053  if (target == nullptr)
2054  return;
2055  const BeingId targetId = target->getId();
2057  {
2058  homunculusHandler->attack(targetId,
2059  Keep_true);
2060  }
2061  else
2062  {
2063  mercenaryHandler->attack(targetId,
2064  Keep_true);
2065  }
2066  break;
2067  }
2068  case BeingAction::SIT:
2069  case BeingAction::DEAD:
2070  botFixOffset(dstX, dstY);
2071  moveBotTo(dstX, dstY);
2072  break;
2073  case BeingAction::CAST:
2074  case BeingAction::HURT:
2075  default:
2076  break;
2077  }
2078 }
int BeingId
Definition: beingid.h:30
#define CAST_S32
Definition: cast.h:30
int getThinkTime() const
Definition: beinginfo.h:291
int getWarpDist() const
Definition: beinginfo.h:237
Definition: being.h:96
void updateBotFollow(int dstX, int dstY, const int divX, const int divY)
Definition: being.cpp:2153
void moveBotTo(int dstX, int dstY)
Definition: being.cpp:2192
void botFixOffset(int &dstX, int &dstY) const
Definition: being.cpp:2080
Being * getTarget() const
virtual void moveToMaster() const =0
virtual void attack(const BeingId targetId, const Keep keep) const =0
virtual void moveToMaster() const =0
virtual void attack(const BeingId targetId, const Keep keep) const =0
Net::HomunculusHandler * homunculusHandler
Definition: net.cpp:112
const bool Keep_true
Definition: keep.h:30
Net::MercenaryHandler * mercenaryHandler
Definition: net.cpp:118
@ Homunculus
Definition: actortype.h:39

References BeingAction::ATTACK, Net::HomunculusHandler::attack(), Net::MercenaryHandler::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, and updateBotFollow().

Referenced by logic().

◆ calcDirection() [1/2]

uint8_t Being::calcDirection ( ) const

Definition at line 1753 of file being.cpp.

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

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

Referenced by nextTile().

◆ calcDirection() [2/2]

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

Definition at line 1767 of file being.cpp.

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

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

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

◆ canTalk()

bool Being::canTalk ( ) const
inline

Definition at line 667 of file being.h.

668  { return mType == ActorType::Npc; }

References mType, and ActorType::Npc.

◆ clearCache()

void Being::clearCache ( )
static

Definition at line 4719 of file being.cpp.

4720 {
4722  beingInfoCache.clear();
4723 }
void delete_all(Container &c)
Definition: dtor.h:56

References beingInfoCache, and delete_all().

Referenced by Game::~Game().

◆ clearGuilds()

void Being::clearGuilds ( )

Removes all guilds the being is in.

Definition at line 1289 of file being.cpp.

1290 {
1292  {
1293  Guild *const guild = itr->second;
1294 
1295  if (guild != nullptr)
1296  {
1297  if (this == localPlayer && (socialWindow != nullptr))
1299 
1300  guild->removeMember(mId);
1301  }
1302  }
1303 
1304  mGuilds.clear();
1305 }
std::map< int, Guild * >::const_iterator GuildsMapCIter
Definition: being.cpp:149
BeingId mId
Definition: actorsprite.h:247
Definition: guild.h:70
bool removeTab(Guild *const guild)

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

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

◆ clearPath()

void Being::clearPath ( )

Removes all path nodes from this being.

Definition at line 554 of file being.cpp.

555 {
556  mPath.clear();
557 }

References mPath.

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

◆ createBeing()

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

Definition at line 5575 of file being.cpp.

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

References Being(), and postInit().

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

◆ createSpeechBubble()

void Being::createSpeechBubble ( )
protected

Definition at line 366 of file being.cpp.

367 {
369 }
#define CREATEWIDGETV0(var, type)
Definition: createwidget.h:32

References CREATEWIDGETV0, and mSpeechBubble.

◆ decUsage()

int Being::decUsage ( )
inline

Definition at line 971 of file being.h.

972  { return --mUsageCounter; }

References mUsageCounter.

◆ disableBotAi()

void Being::disableBotAi ( )
inline

Definition at line 1043 of file being.h.

1044  { mBotAi = false; }

References mBotAi.

◆ draw()

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

Draws the Actor to the given graphics context.

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

Implements Actor.

Definition at line 3839 of file being.cpp.

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

References ActorType::Avatar, ActorType::Elemental, ActorType::FloorItem, ActorType::Homunculus, ActorType::Mercenary, ActorType::Monster, ActorType::Npc, ActorType::Pet, ActorType::Player, ActorType::Portal, ActorType::SkillUnit, and ActorType::Unknown.

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

◆ drawBasic()

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

Definition at line 3930 of file being.cpp.

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

References x, and y.

Referenced by PlayerBox::draw().

◆ drawBeingCursor()

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

Definition at line 3734 of file being.cpp.

3737 {
3738  if (mUsedTargetCursor != nullptr)
3739  {
3741  if (mInfo == nullptr)
3742  {
3743  mUsedTargetCursor->draw(graphics,
3744  offsetX - mCursorPaddingX,
3745  offsetY - mCursorPaddingY);
3746  }
3747  else
3748  {
3749  mUsedTargetCursor->draw(graphics,
3750  offsetX + mInfo->getTargetOffsetX() - mCursorPaddingX,
3751  offsetY + mInfo->getTargetOffsetY() - mCursorPaddingY);
3752  }
3753  }
3754 }
AnimatedSprite * mUsedTargetCursor
Definition: actorsprite.h:250
int mCursorPaddingY
Definition: actorsprite.h:257
int mCursorPaddingX
Definition: actorsprite.h:256
void draw(Graphics *const graphics, const int posX, const int posY) const
bool update(const int time)
static const int MILLISECONDS_IN_A_TICK
Definition: timer.h:30

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

◆ drawCasting()

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

◆ drawCompound()

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

Definition at line 3937 of file being.cpp.

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

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

◆ drawElemental()

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

Definition at line 3816 of file being.cpp.

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

References mapTileSize.

◆ drawElementalSpriteAt()

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

Definition at line 4169 of file being.cpp.

4172 {
4175  {
4176  if (userPalette == nullptr)
4177  {
4178  CompoundSprite::drawSimple(graphics, x, y);
4179  return;
4180  }
4181 
4182  int attackRange;
4183  if (mAttackRange != 0)
4184  attackRange = mapTileSize * mAttackRange;
4185  else
4186  attackRange = mapTileSize;
4187 
4190 
4191  graphics->fillRectangle(Rect(
4192  x - attackRange, y - attackRange,
4193  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4194  }
4195 
4196  CompoundSprite::drawSimple(graphics, x, y);
4197 
4198  if (mShowMobHP &&
4199  (mInfo != nullptr))
4200  {
4202  {
4203  // show hp bar here
4205  if (maxHP == 0)
4206  maxHP = mInfo->getMaxHP();
4207 
4208  drawHpBar(graphics,
4209  maxHP,
4211  mDamageTaken,
4214  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4215  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4216  2 * 50,
4217  4);
4218  }
4219  }
4220 }
int getHpBarOffsetY() const
Definition: beinginfo.h:165
int getMaxHP() const
Definition: beinginfo.h:171
int getHpBarOffsetX() const
Definition: beinginfo.h:159
static bool mHighlightMonsterAttackRange
Definition: being.h:1335
void drawHpBar(Graphics *const graphics, const int maxHP, const int hp, const int damage, const UserColorIdT color1, const UserColorIdT color2, const int x, const int y, const int width, const int height) const
Definition: being.cpp:4253
static bool mShowMobHP
Definition: being.h:1339
void drawSimple(Graphics *const graphics, const int posX, const int posY) const
virtual void fillRectangle(const Rect &rectangle)=0
virtual void setColor(const Color &color)
Definition: graphics.h:320
Definition: rect.h:74
const Color & getColorWithAlpha(const UserColorIdT type)
Definition: userpalette.h:200
@ ELEMENTAL_MAX_HP
Definition: attributes.h:112
int getStatBase(const AttributesT id)
Definition: playerinfo.cpp:135
BeingId getElementalId()
Definition: playerinfo.cpp:544
@ MONSTER_ATTACK_RANGE
Definition: usercolorid.h:90
UserPalette * userPalette
Definition: userpalette.cpp:34

References BeingAction::DEAD, CompoundSprite::drawSimple(), Attributes::ELEMENTAL_HP, UserColorId::ELEMENTAL_HP, UserColorId::ELEMENTAL_HP2, Attributes::ELEMENTAL_MAX_HP, UserPalette::getColorWithAlpha(), PlayerInfo::getElementalId(), PlayerInfo::getStatBase(), mapTileSize, UserColorId::MONSTER_ATTACK_RANGE, userPalette, x, and y.

◆ drawEmotion()

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

Draws the emotion picture above the being.

Definition at line 2375 of file being.cpp.

2378 {
2379  if (mErased)
2380  return;
2381 
2382  const int px = mPixelX - offsetX - mapTileSize / 2;
2383  const int py = mPixelY - offsetY - mapTileSize * 2 - mapTileSize;
2384  if (mAnimationEffect != nullptr)
2385  mAnimationEffect->draw(graphics, px, py);
2387  mBadgesCount != 0U)
2388  {
2389  int x = mBadgesX - offsetX;
2390  const int y = mBadgesY - offsetY;
2391  for_each_badges()
2392  {
2393  const AnimatedSprite *restrict const sprite = mBadges[f];
2394  if (sprite != nullptr)
2395  {
2396  sprite->draw(graphics, x, y);
2397  x += 16;
2398  }
2399  }
2400  }
2401  if (mEmotionSprite != nullptr)
2402  mEmotionSprite->draw(graphics, px, py);
2403 }
static BadgeDrawType::Type mShowBadges
Definition: being.h:1348

References for_each_badges, BadgeDrawType::Hide, mapTileSize, restrict, x, and y.

◆ drawHomunculus()

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

Definition at line 3792 of file being.cpp.

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

References mapTileSize.

◆ drawHomunculusSpriteAt()

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

Definition at line 4059 of file being.cpp.

4062 {
4065  {
4066  if (userPalette == nullptr)
4067  {
4068  CompoundSprite::drawSimple(graphics, x, y);
4069  return;
4070  }
4071 
4072  int attackRange;
4073  if (mAttackRange != 0)
4074  attackRange = mapTileSize * mAttackRange;
4075  else
4076  attackRange = mapTileSize;
4077 
4080 
4081  graphics->fillRectangle(Rect(
4082  x - attackRange, y - attackRange,
4083  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4084  }
4085 
4086  CompoundSprite::drawSimple(graphics, x, y);
4087 
4088  if (mShowMobHP &&
4089  (mInfo != nullptr))
4090  {
4092  if ((info != nullptr) &&
4093  mId == info->id)
4094  {
4095  // show hp bar here
4097  if (maxHP == 0)
4098  maxHP = mInfo->getMaxHP();
4099 
4100  drawHpBar(graphics,
4101  maxHP,
4103  mDamageTaken,
4106  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4107  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4108  2 * 50,
4109  4);
4110  }
4111  }
4112 }
@ HOMUN_MAX_HP
Definition: attributes.h:72
HomunculusInfo * getHomunculus()
Definition: playerinfo.cpp:603

References BeingAction::DEAD, CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), PlayerInfo::getHomunculus(), PlayerInfo::getStatBase(), Attributes::HOMUN_HP, UserColorId::HOMUN_HP, UserColorId::HOMUN_HP2, Attributes::HOMUN_MAX_HP, Actions::info(), mapTileSize, UserColorId::MONSTER_ATTACK_RANGE, userPalette, x, and y.

◆ drawHpBar()

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

Definition at line 4253 of file being.cpp.

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

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

◆ drawMercenary()

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

Definition at line 3804 of file being.cpp.

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

References mapTileSize.

◆ drawMercenarySpriteAt()

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

Definition at line 4114 of file being.cpp.

4117 {
4120  {
4121  if (userPalette == nullptr)
4122  {
4123  CompoundSprite::drawSimple(graphics, x, y);
4124  return;
4125  }
4126 
4127  int attackRange;
4128  if (mAttackRange != 0)
4129  attackRange = mapTileSize * mAttackRange;
4130  else
4131  attackRange = mapTileSize;
4132 
4135 
4136  graphics->fillRectangle(Rect(
4137  x - attackRange, y - attackRange,
4138  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4139  }
4140 
4141  CompoundSprite::drawSimple(graphics, x, y);
4142 
4143  if (mShowMobHP &&
4144  (mInfo != nullptr))
4145  {
4146  const MercenaryInfo *const info = PlayerInfo::getMercenary();
4147  if ((info != nullptr) &&
4148  mId == info->id)
4149  {
4150  // show hp bar here
4152  if (maxHP == 0)
4153  maxHP = mInfo->getMaxHP();
4154 
4155  drawHpBar(graphics,
4156  maxHP,
4158  mDamageTaken,
4161  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4162  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4163  2 * 50,
4164  4);
4165  }
4166  }
4167 }
MercenaryInfo * getMercenary()
Definition: playerinfo.cpp:549

References BeingAction::DEAD, CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), PlayerInfo::getMercenary(), PlayerInfo::getStatBase(), Actions::info(), mapTileSize, Attributes::MERC_HP, UserColorId::MERC_HP, UserColorId::MERC_HP2, Attributes::MERC_MAX_HP, UserColorId::MONSTER_ATTACK_RANGE, userPalette, x, and y.

◆ drawMonster()

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

Definition at line 3780 of file being.cpp.

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

References mapTileSize.

◆ drawMonsterSpriteAt()

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

Definition at line 4005 of file being.cpp.

4008 {
4012  {
4013  if (userPalette == nullptr)
4014  {
4015  CompoundSprite::drawSimple(graphics, x, y);
4016  return;
4017  }
4018 
4019  int attackRange;
4020  if (mAttackRange != 0)
4021  attackRange = mapTileSize * mAttackRange;
4022  else
4023  attackRange = mapTileSize;
4024 
4027 
4028  graphics->fillRectangle(Rect(
4029  x - attackRange, y - attackRange,
4030  2 * attackRange + mapTileSize, 2 * attackRange + mapTileSize));
4031  }
4032 
4033  CompoundSprite::drawSimple(graphics, x, y);
4034 
4035  if (mShowMobHP &&
4036  (mInfo != nullptr) &&
4037  (localPlayer != nullptr) &&
4038  localPlayer->getTarget() == this &&
4040  {
4041  // show hp bar here
4042  int maxHP = mMaxHP;
4043  if (maxHP == 0)
4044  maxHP = mInfo->getMaxHP();
4045 
4046  drawHpBar(graphics,
4047  maxHP,
4048  mHP,
4049  mDamageTaken,
4052  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
4053  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
4054  2 * 50,
4055  4);
4056  }
4057 }

References BeingAction::DEAD, CompoundSprite::drawSimple(), UserPalette::getColorWithAlpha(), LocalPlayer::getTarget(), localPlayer, mapTileSize, ActorType::Monster, UserColorId::MONSTER_ATTACK_RANGE, UserColorId::MONSTER_HP, UserColorId::MONSTER_HP2, userPalette, x, and y.

◆ drawNpc()

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

Definition at line 3768 of file being.cpp.

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

References mapTileSize.

◆ drawNpcSpriteAt()

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

Definition at line 3998 of file being.cpp.

4001 {
4002  drawCompound(graphics, x, y);
4003 }

References x, and y.

◆ drawOther()

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

Definition at line 3756 of file being.cpp.

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

References mapTileSize.

◆ drawOtherSpriteAt()

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

Definition at line 3991 of file being.cpp.

3994 {
3995  CompoundSprite::drawSimple(graphics, x, y);
3996 }

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

◆ drawPlayer()

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

Definition at line 3694 of file being.cpp.

3697 {
3698  if (!mErased)
3699  {
3700  // getActorX() + offsetX;
3701  const int px = mPixelX - mapTileSize / 2 + offsetX;
3702  // getActorY() + offsetY;
3703  const int py = mPixelY - mapTileSize + offsetY;
3704  if (mHorseInfo != nullptr)
3705  {
3708  {
3709  (*it)->draw(graphics,
3710  px + offset.downOffsetX,
3711  py + offset.downOffsetY);
3712  }
3713 
3714  drawBeingCursor(graphics, px, py);
3715  drawPlayerSpriteAt(graphics,
3716  px + offset.riderOffsetX,
3717  py + offset.riderOffsetY);
3718 
3720  {
3721  (*it)->draw(graphics,
3722  px + offset.upOffsetX,
3723  py + offset.upOffsetY);
3724  }
3725  }
3726  else
3727  {
3728  drawBeingCursor(graphics, px, py);
3729  drawPlayerSpriteAt(graphics, px, py);
3730  }
3731  }
3732 }
#define for_each_horses(name)
Definition: being.cpp:159
void drawPlayerSpriteAt(Graphics *const graphics, const int x, const int y) const
Definition: being.cpp:3967
HorseOffset offsets[10]
Definition: horseinfo.h:54
int downOffsetY
Definition: horseoffset.h:43
int riderOffsetY
Definition: horseoffset.h:45
int downOffsetX
Definition: horseoffset.h:42
int riderOffsetX
Definition: horseoffset.h:44

References HorseOffset::downOffsetX, HorseOffset::downOffsetY, for_each_horses, mapTileSize, HorseOffset::riderOffsetX, HorseOffset::riderOffsetY, HorseOffset::upOffsetX, and HorseOffset::upOffsetY.

◆ drawPlayerSpriteAt()

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

Definition at line 3967 of file being.cpp.

3970 {
3971  drawCompound(graphics, x, y);
3972 
3973  if (mShowOwnHP &&
3974  (mInfo != nullptr) &&
3975  localPlayer == this &&
3977  {
3978  drawHpBar(graphics,
3981  0,
3984  x - 50 + mapTileSize / 2 + mInfo->getHpBarOffsetX(),
3985  y + mapTileSize - 6 + mInfo->getHpBarOffsetY(),
3986  2 * 50,
3987  4);
3988  }
3989 }
static bool mShowOwnHP
Definition: being.h:1340
@ PLAYER_MAX_HP
Definition: attributes.h:33
int32_t getAttribute(const AttributesT id)
Definition: playerinfo.cpp:102

References BeingAction::DEAD, PlayerInfo::getAttribute(), localPlayer, mapTileSize, Attributes::PLAYER_HP, UserColorId::PLAYER_HP, UserColorId::PLAYER_HP2, Attributes::PLAYER_MAX_HP, x, and y.

◆ drawPlayerSprites()

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

Definition at line 3893 of file being.cpp.

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

References CompoundSprite::getNumberOfLayers(), and restrict.

Referenced by drawCompound().

◆ drawPortal()

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

Definition at line 3828 of file being.cpp.

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

References mapTileSize.

◆ drawPortalSpriteAt()

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

Definition at line 4222 of file being.cpp.

4225 {
4226  if (mHighlightMapPortals &&
4227  (mMap != nullptr) &&
4228  !mMap->getHasWarps())
4229  {
4230  if (userPalette == nullptr)
4231  {
4232  CompoundSprite::drawSimple(graphics, x, y);
4233  return;
4234  }
4235 
4236  graphics->setColor(userPalette->
4237  getColorWithAlpha(UserColorId::PORTAL_HIGHLIGHT));
4238 
4239  graphics->fillRectangle(Rect(x, y,
4241 
4242  if (mDrawHotKeys && !mName.empty())
4243  {
4244  const Color &color = userPalette->getColor(UserColorId::BEING,
4245  255U);
4246  gui->getFont()->drawString(graphics, color, color, mName, x, y);
4247  }
4248  }
4249 
4250  CompoundSprite::drawSimple(graphics, x, y);
4251 }
static bool mDrawHotKeys
Definition: being.h:1337
static bool mHighlightMapPortals
Definition: being.h:1334
Definition: color.h:76
void drawString(Graphics *const graphics, Color col, const Color &col2, const std::string &text, const int x, const int y)
Definition: font.cpp:254
Font * getFont() const
Definition: gui.h:160
bool getHasWarps() const
Definition: map.h:247
const Color & getColor(UserColorIdT type, const unsigned int alpha)
Definition: userpalette.h:160
Gui * gui
Definition: gui.cpp:111
@ PORTAL_HIGHLIGHT
Definition: usercolorid.h:79

References UserColorId::BEING, CompoundSprite::drawSimple(), Font::drawString(), UserPalette::getColor(), Gui::getFont(), gui, mapTileSize, Ea::GameRecv::mMap, UserColorId::PORTAL_HIGHLIGHT, userPalette, x, and y.

◆ drawSpeech()

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

Draws the speech text above the being.

Definition at line 2405 of file being.cpp.

2407 {
2408  if (mErased)
2409  return;
2410  if (mSpeech.empty())
2411  return;
2412 
2413  const int px = mPixelX - offsetX;
2414  const int py = mPixelY - offsetY;
2415  const int speech = mSpeechType;
2416 
2417  // Draw speech above this being
2418  if (mSpeechTime == 0)
2419  {
2420  if (mSpeechBubble != nullptr &&
2422  {
2424  }
2425  mSpeech.clear();
2426  }
2427  else if (mSpeechTime > 0 && (speech == BeingSpeech::NAME_IN_BUBBLE ||
2428  speech == BeingSpeech::NO_NAME_IN_BUBBLE))
2429  {
2430  delete2(mText)
2431 
2432  if (mSpeechBubble != nullptr)
2433  {
2435  py - getHeight() - (mSpeechBubble->getHeight()));
2437  }
2438  }
2439  else if (mSpeechTime > 0 && speech == BeingSpeech::TEXT_OVERHEAD)
2440  {
2441  if (mSpeechBubble != nullptr)
2443 
2444  if ((mText == nullptr) && (userPalette != nullptr))
2445  {
2446  mText = new Text(mSpeech,
2447  mPixelX,
2448  mPixelY - getHeight(),
2450  &theme->getColor(ThemeColorId::BUBBLE_TEXT, 255),
2451  Speech_true,
2452  nullptr);
2454  (mY + 1) * mapTileSize - getHeight() - mText->getHeight() - 9,
2455  mMoveNames);
2456  }
2457  }
2458  else if (speech == BeingSpeech::NO_SPEECH)
2459  {
2460  if (mSpeechBubble != nullptr)
2462  delete2(mText)
2463  }
2464 }
static int mSpeechType
Definition: being.h:1333
static Move mMoveNames
Definition: being.h:1346
int getHeight() const
Definition: being.h:536
@ CENTER
Definition: graphics.h:132
int getHeight() const
Definition: text.h:66
void adviseXY(const int x, const int y, const Move move)
Definition: text.cpp:144
const Color & getColor(const ThemeColorIdT type, const unsigned int alpha)
Definition: theme.h:136
void setVisible(Visible visible)
Definition: widget.cpp:225
Visible mVisible
Definition: widget.h:963
void setPosition(const int x, const int y)
Definition: widget.cpp:161
int getHeight() const
Definition: widget.h:240
int getWidth() const
Definition: widget.h:221
@ NO_NAME_IN_BUBBLE
Definition: beingspeech.h:33
const bool Speech_true
Definition: speech.h:30
Theme * theme
Definition: theme.cpp:62
const bool Visible_false
Definition: visible.h:30
const bool Visible_true
Definition: visible.h:30

References Graphics::CENTER, delete2, Theme::getColor(), mapTileSize, BeingSpeech::NAME_IN_BUBBLE, BeingSpeech::NO_NAME_IN_BUBBLE, BeingSpeech::NO_SPEECH, Speech_true, MailMessageType::Text, BeingSpeech::TEXT_OVERHEAD, theme, userPalette, Visible_false, and Visible_true.

◆ drawSpritesSDL()

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

Reimplemented from CompoundSprite.

Definition at line 3913 of file being.cpp.

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

References restrict.

◆ dumpSprites()

void Being::dumpSprites ( ) const
protected

Definition at line 3409 of file being.cpp.

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

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

◆ enableBotAi()

void Being::enableBotAi ( )
inline

Definition at line 1046 of file being.h.

1047  { mBotAi = true; }

References mBotAi.

◆ enableShop()

void Being::enableShop ( const bool  b)

Definition at line 5344 of file being.cpp.

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

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

◆ fireMissile()

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

Shoots a missile particle from this being, to target being

Definition at line 1378 of file being.cpp.

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

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

◆ fixDirectionOffsets()

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

Definition at line 5528 of file being.cpp.

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

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

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

◆ flashName()

void Being::flashName ( const int  time)

Definition at line 2532 of file being.cpp.

2533 {
2534  if (mDispName != nullptr)
2535  mDispName->flash(time);
2536 }
void flash(const int time)
Definition: text.h:120

◆ genderToInt()

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

Definition at line 927 of file being.h.

929  {
930  switch (sex)
931  {
932  case Gender::FEMALE:
933  case Gender::UNSPECIFIED:
934  default:
935  return 0;
936  case Gender::MALE:
937  return 1;
938  }
939  }
@ MALE
Definition: gender.h:31
@ FEMALE
Definition: gender.h:32

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

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

◆ getActionTime()

int Being::getActionTime ( ) const
inline

Returns the time spent in the current action.

Definition at line 128 of file being.h.

129  { return mActionTime; }

References mActionTime.

◆ getAllowNpcEquipment()

bool Being::getAllowNpcEquipment ( ) const
inline

Definition at line 1102 of file being.h.

1103  { return mAllowNpcEquipment; }

References mAllowNpcEquipment.

◆ getAreaSize()

int Being::getAreaSize ( ) const
inline

Definition at line 1049 of file being.h.

1050  { return mAreaSize; }

References mAreaSize.

◆ getAttackAction() [1/2]

std::string Being::getAttackAction ( ) const

Definition at line 1525 of file being.cpp.

◆ getAttackAction() [2/2]

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

Definition at line 1471 of file being.cpp.

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

References BlockMask::AIR, Ea::GameRecv::mMap, and BlockMask::WATER.

◆ getAttackDelay()

int Being::getAttackDelay ( ) const
inline

Definition at line 773 of file being.h.

774  { return mAttackDelay; }

References mAttackDelay.

Referenced by TargetDebugTab::logic().

◆ getAttackSpeed()

int Being::getAttackSpeed ( ) const
inline

Gets the attack speed.

Definition at line 470 of file being.h.

471  { return mAttackSpeed; }

References mAttackSpeed.

◆ getAttackTime()

time_t Being::getAttackTime ( ) const
inline

Definition at line 724 of file being.h.

725  { return mAttackTime; }

References mAttackTime.

◆ getBlockType()

BlockTypeT Being::getBlockType ( ) const
inlinevirtual

Gets the way the monster blocks pathfinding for other objects

Reimplemented from ActorSprite.

Definition at line 442 of file being.h.

443  {
444  if (mInfo == nullptr)
445  return BlockType::NONE;
446  return mInfo->getBlockType();
447  }
BlockTypeT getBlockType() const
Definition: beinginfo.h:129

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

◆ getBlockWalkMask()

virtual unsigned char Being::getBlockWalkMask ( ) const
inlinevirtual

Gets the way the object is blocked by other objects.

Reimplemented in LocalPlayer.

Definition at line 432 of file being.h.

433  {
434  if (mInfo == nullptr)
435  return 0;
436  return mInfo->getBlockWalkMask();
437  }
unsigned char getBlockWalkMask() const
Definition: beinginfo.h:123

References BeingInfo::getBlockWalkMask(), and mInfo.

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

◆ getBuyBoard()

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

Definition at line 1015 of file being.h.

1016  { return mBuyBoard; }

References mBuyBoard.

Referenced by BeingPopup::show().

◆ getCachedX()

int Being::getCachedX ( ) const
inline

Definition at line 153 of file being.h.

154  { return mCachedX; }

References mCachedX.

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

◆ getCachedY()

int Being::getCachedY ( ) const
inline

Definition at line 156 of file being.h.

157  { return mCachedY; }

References mCachedY.

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

◆ getCacheEntry()

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

Definition at line 3559 of file being.cpp.

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

References beingInfoCache, cur_time, and FOR_EACH.

Referenced by addToCache(), and updateFromCache().

◆ getCastAction() [1/2]

std::string Being::getCastAction ( ) const

Definition at line 1526 of file being.cpp.

◆ getCastAction() [2/2]

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

Definition at line 1490 of file being.cpp.

1492 {
1493  if (skill == nullptr)
1494  return getCastAction();
1495 
1496  if (mHorseId != 0)
1497  return skill->castingRideAction;
1498  if (mMap != nullptr)
1499  {
1500  const unsigned char mask = mMap->getBlockMask(mX, mY);
1501  if ((mask & BlockMask::AIR) != 0)
1502  return skill->castingSkyAction;
1503  else if ((mask & BlockMask::WATER) != 0)
1504  return skill->castingWaterAction;
1505  }
1506  return skill->castingAction;
1507 }
std::string getCastAction() const
Definition: being.cpp:1526
bool skill(InputEvent &event)
Definition: commands.cpp:97

References BlockMask::AIR, Ea::GameRecv::mMap, Actions::skill(), and BlockMask::WATER.

◆ getChat()

ChatObject* Being::getChat ( ) const
inline

◆ getClanName()

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

Definition at line 263 of file being.h.

265  { return mClanName; }

References mClanName.

Referenced by BeingPopup::show().

◆ getComment()

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

Definition at line 812 of file being.h.

813  { return mComment; }

References mComment.

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

◆ getCreatorId()

BeingId Being::getCreatorId ( ) const
inline

Definition at line 1028 of file being.h.

1029  { return mCreatorId; }

References mCreatorId.

Referenced by PopupMenu::showPopup().

◆ getCriticalHit()

int Being::getCriticalHit ( ) const
inline

Definition at line 788 of file being.h.

789  { return mCriticalHit; }

References mCriticalHit.

Referenced by TargetDebugTab::logic().

◆ getCurrentAction()

BeingActionT Being::getCurrentAction ( ) const
inline

◆ getDamageTaken()

int Being::getDamageTaken ( ) const
inline

Definition at line 593 of file being.h.

594  { return mDamageTaken; }

References mDamageTaken.

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

◆ getDeadAction()

std::string Being::getDeadAction ( ) const

Definition at line 1527 of file being.cpp.

◆ getDefaultEffectId()

int Being::getDefaultEffectId ( const AttackTypeT type)
staticprotected

Definition at line 953 of file being.cpp.

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

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

Referenced by getHitEffect().

◆ getDestination()

const Vector& Being::getDestination ( ) const
inline

Returns the destination for this being.

Definition at line 162 of file being.h.

163  { return mDest; }

References mDest.

◆ getDirection()

uint8_t Being::getDirection ( ) const
inline

◆ getDirectionDelayed()

uint8_t Being::getDirectionDelayed ( ) const
inline

◆ getDistance()

int Being::getDistance ( ) const
inline

Definition at line 552 of file being.h.

553  { return mDistance; }

References mDistance.

Referenced by ActorManager::findNearestLivingBeing().

◆ getEquipment()

Equipment * Being::getEquipment ( )

Definition at line 4697 of file being.cpp.

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

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

Referenced by EquipmentWindow::setBeing().

◆ getEquippedWeapon()

const ItemInfo* Being::getEquippedWeapon ( ) const
inline

Definition at line 226 of file being.h.

227  { return mEquippedWeapon; }

References mEquippedWeapon.

◆ getExtName()

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

Definition at line 235 of file being.h.

236  { return mExtName; }

References mExtName.

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

◆ getGender()

GenderT Being::getGender ( ) const
inline

Definition at line 626 of file being.h.

627  { return mGender; }

References mGender.

Referenced by ActorManager::cloneBeing(), getGenderSign(), LocalPlayer::imitateOutfit(), and SocialPlayersTab::updateAvatar().

◆ getGenderSign()

std::string Being::getGenderSign ( ) const

Definition at line 2547 of file being.cpp.

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

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

Referenced by getGenderSignWithSpace(), and showName().

◆ getGenderSignWithSpace()

std::string Being::getGenderSignWithSpace ( ) const

Definition at line 2538 of file being.cpp.

2539 {
2540  const std::string &restrict str = getGenderSign();
2541  if (str.empty())
2542  return str;
2543  else
2544  return std::string(" ").append(str);
2545 }
std::string getGenderSign() const
Definition: being.cpp:2547

References getGenderSign(), and restrict.

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

◆ getGoodStatus()

int Being::getGoodStatus ( ) const
inline

Definition at line 800 of file being.h.

801  { return mGoodStatus; }

References mGoodStatus.

Referenced by PlayerRelationsManager::isGoodName().

◆ getGroupId()

int Being::getGroupId ( ) const
inline

◆ getGuild() [1/3]

Guild * Being::getGuild ( ) const

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

Definition at line 1280 of file being.cpp.

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

References mGuilds.

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

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

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

References anonymous_namespace{badgesdb.cpp}::mGuilds.

◆ getGuild() [3/3]

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

◆ getGuildName()

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

Definition at line 259 of file being.h.

261  { return mGuildName; }

References mGuildName.

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

◆ getGuilds()

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

Returns all guilds the being is in.

Definition at line 306 of file being.h.

308  { return mGuilds; }

References anonymous_namespace{badgesdb.cpp}::mGuilds.

◆ getHairColor()

ItemColor Being::getHairColor ( ) const
inline

Definition at line 883 of file being.h.

884  { return mHairColor; }

References mHairColor.

Referenced by ActorManager::cloneBeing().

◆ getHeight()

int Being::getHeight ( ) const
inlinevirtual

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

Reimplemented from ActorSprite.

Definition at line 536 of file being.h.

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

References DEFAULT_BEING_HEIGHT, and CompoundSprite::getHeight().

◆ getHitEffect()

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

Definition at line 870 of file being.cpp.

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

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

◆ getHoverCursor()

CursorT Being::getHoverCursor ( ) const
inline

Definition at line 893 of file being.h.

894  {
895  return mInfo != nullptr ?
897  }
CursorT getHoverCursor() const
Definition: beinginfo.h:87
@ CURSOR_POINTER
Definition: cursor.h:29

References Cursor::CURSOR_POINTER, BeingInfo::getHoverCursor(), and mInfo.

◆ getHP()

int Being::getHP ( ) const
inline

Definition at line 759 of file being.h.

760  { return mHP; }

References mHP.

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

◆ getInfo()

const BeingInfo* Being::getInfo ( ) const
inline

◆ getIp()

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

Definition at line 743 of file being.h.

744  { return mIp; }

References mIp.

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

◆ getKarma()

int Being::getKarma ( ) const
inline

Definition at line 1034 of file being.h.

1035  { return mKarma; }

References mKarma.

Referenced by TargetDebugTab::logic().

◆ getLanguageId()

int Being::getLanguageId ( )
inline

Definition at line 1079 of file being.h.

1080  { return mLanguageId; }

References mLanguageId.

◆ getLastAttackX()

virtual int Being::getLastAttackX ( ) const
inlinevirtual

Reimplemented in LocalPlayer.

Definition at line 974 of file being.h.

975  { return mLastAttackX; }

References mLastAttackX.

Referenced by updateBotDirection().

◆ getLastAttackY()

virtual int Being::getLastAttackY ( ) const
inlinevirtual

Reimplemented in LocalPlayer.

Definition at line 977 of file being.h.

978  { return mLastAttackY; }

References mLastAttackY.

Referenced by updateBotDirection().

◆ getLevel()

virtual int Being::getLevel ( ) const
inlinevirtual

◆ getLook()

uint16_t Being::getLook ( ) const
inline

Definition at line 922 of file being.h.

923  { return mLook; }

References mLook.

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

◆ getManner()

int Being::getManner ( ) const
inline

Definition at line 1040 of file being.h.

1041  { return mManner; }

References mManner.

Referenced by TargetDebugTab::logic().

◆ getMaxHit()

int Being::getMaxHit ( ) const
inline

Definition at line 782 of file being.h.

783  { return mMaxHit; }

References mMaxHit.

Referenced by TargetDebugTab::logic().

◆ getMaxHP()

int Being::getMaxHP ( ) const
inline

Definition at line 762 of file being.h.

763  { return mMaxHP; }

References mMaxHP.

Referenced by BeingPopup::show().

◆ getMinHit()

int Being::getMinHit ( ) const
inline

Definition at line 776 of file being.h.

777  { return mMinHit; }

References mMinHit.

Referenced by TargetDebugTab::logic().

◆ getMoveAction()

std::string Being::getMoveAction ( ) const

Definition at line 1437 of file being.cpp.

1438 {
1439  if (mHorseId != 0)
1440  return SpriteAction::RIDE;
1441  if (mMap != nullptr)
1442  {
1443  const unsigned char mask = mMap->getBlockMask(mX, mY);
1444  if ((mask & BlockMask::AIR) != 0)
1445  return SpriteAction::FLY;
1446  else if ((mask & BlockMask::WATER) != 0)
1447  return SpriteAction::SWIM;
1448  }
1449  return SpriteAction::MOVE;
1450 }
static const std::string RIDE("ride")
static const std::string SWIM("swim")
static const std::string FLY("fly")
static const std::string MOVE("walk")

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

◆ getMoveTime()

time_t Being::getMoveTime ( ) const
inline

Definition at line 721 of file being.h.

722  { return mMoveTime; }

References mMoveTime.

◆ getName()

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

Returns the name of the being.

Definition at line 232 of file being.h.

233  { return mName; }

References mName.

Referenced by CharSelectDialog::action(), PlayerPostDeathListener::action(), ChatWindow::addWhisper(), ChatWindow::addWhisperTab(), EAthena::ChatHandler::battleTalk(), GuildManager::chat(), EAthena::ClanHandler::chat(), EAthena::GuildHandler::chat(), EAthena::PartyHandler::chat(), ChatTab::chatLog(), ActorManager::cloneBeing(), ChatWindow::doPresent(), AvatarListBox::draw(), Minimap::draw2(), ActorManager::findBeingByName(), ActorManager::findMostDamagedPlayer(), ActorManager::findNearestByName(), ActorManager::findNearestLivingBeing(), ActorManager::getMobNames(), ActorManager::getPlayerNames(), ChatWindow::getWhisperTab(), WhisperTab::handleCommandStr(), WhisperTab::handleInput(), PopupMenu::handleLink(), WhoIsOnline::handleLink(), PlayerRelationsManager::hasPermission(), ActorManager::heal(), PopupMenu::isAllowOtherCommand(), PlayerRelationsManager::isGoodName(), EAthena::PartyHandler::kick(), TargetDebugTab::logic(), outStringNormal(), SpellManager::parseCommand(), ChatWindow::parseGlobalsFilter(), ChatWindow::parseHighlights(), NpcDialog::postInit(), ActorManager::printBeingsToChat(), EAthena::ChatRecv::processBeingChat(), TmwAthena::ChatRecv::processBeingChat(), Ea::BeingRecv::processBeingRemove(), TmwAthena::BeingRecv::processBeingSelfEffect(), EAthena::BeingRecv::processBeingSpecialEffect(), EAthena::FamilyRecv::processCallPartner(), EAthena::CharServerRecv::processCharCharacters(), EAthena::CharServerRecv::processCharLogin(), TmwAthena::CharServerRecv::processCharLogin(), EAthena::ChatRecv::processChatRoomLeave(), EAthena::ChatRecv::processColorChat(), EAthena::GuildRecv::processGuildExpulsionContinue(), EAthena::GuildRecv::processGuildLeave(), EAthena::PlayerRecv::processKilledBy(), Ea::ChatRecv::processMVPEffect(), Ea::BeingRecv::processNameResponse(), EAthena::BeingRecv::processNameResponse2(), EAthena::BeingRecv::processNameResponseTitle(), EAthena::PartyRecv::processPartyInfo(), TmwAthena::PartyRecv::processPartyInfo(), TmwAthena::PartyRecv::processPartyInvited(), replaceVars(), ChatWindow::resortChatLog(), Gm::runCharCommand(), AvatarListBox::safeDraw(), CharSelectDialog::selectByName(), EAthena::Mail2Handler::sendMail(), WhoIsOnline::setNeutralColor(), PlayerRelationsManager::setRelation(), BeingPopup::show(), PopupMenu::showChatPopup(), PopupMenu::showPlayerGMCommands(), PopupMenu::showPlayerPopup(), PopupMenu::showPopup(), Actions::splitWhisper(), StatusWindow::StatusWindow(), EAthena::ChatHandler::talk(), TmwAthena::ChatHandler::talk(), CharacterDisplay::update(), GuildManager::updateList(), ActorManager::updatePlayerColors(), ActorManager::updatePlayerGuild(), and ActorManager::updatePlayerNames().

◆ getNumberOfGuilds()

int16_t Being::getNumberOfGuilds ( ) const
inline

Get number of guilds the being belongs to.

Definition at line 318 of file being.h.

319  { return CAST_S16(mGuilds.size()); }
#define CAST_S16
Definition: cast.h:28

References CAST_S16, and anonymous_namespace{badgesdb.cpp}::mGuilds.

◆ getNumberOfLayers()

int Being::getNumberOfLayers ( ) const
inlinevirtual

Get the number of layers used to draw the being

Reimplemented from Actor.

Definition at line 377 of file being.h.

References CompoundSprite::getNumberOfLayers().

Referenced by LocalPlayer::imitateOutfit().

◆ getOffset()

template<signed char pos, signed char neg>
int Being::getOffset
protected

Calculates the offset in the given directions. If walking in direction 'neg' the value is negated.

Definition at line 2467 of file being.cpp.

2468 {
2469  // Check whether we're walking in the requested direction
2470  if (mAction != BeingAction::MOVE || !(mDirection & (pos | neg)))
2471  return 0;
2472 
2473  int offset = 0;
2474 
2475  if (mMap && mSpeed)
2476  {
2477  const int time = get_elapsed_time(mActionTime);
2478  offset = (pos == BeingDirection::LEFT &&
2479  neg == BeingDirection::RIGHT) ?
2480  (time * mMap->getTileWidth() / mSpeed)
2481  : (time * mMap->getTileHeight() / mSpeed);
2482  }
2483 
2484  // We calculate the offset _from_ the _target_ location
2485  offset -= mapTileSize;
2486  if (offset > 0)
2487  offset = 0;
2488 
2489  // Going into negative direction? Invert the offset.
2490  if (mDirection & pos)
2491  offset = -offset;
2492 
2493  if (offset > mapTileSize)
2494  offset = mapTileSize;
2495  if (offset < -mapTileSize)
2496  offset = -mapTileSize;
2497 
2498  return offset;
2499 }
int getTileHeight() const
Definition: map.h:184
int getTileWidth() const
Definition: map.h:178
int get_elapsed_time(const int startTime)
Definition: timer.cpp:94

References get_elapsed_time(), Map::getTileHeight(), Map::getTileWidth(), BeingDirection::LEFT, mAction, mActionTime, mapTileSize, mDirection, Actor::mMap, BeingAction::MOVE, mSpeed, and BeingDirection::RIGHT.

Referenced by logic().

◆ getOtherTime()

time_t Being::getOtherTime ( ) const
inline

Definition at line 733 of file being.h.

734  { return mOtherTime; }

References mOtherTime.

◆ getOwner()

Being* Being::getOwner ( ) const
inline

Definition at line 914 of file being.h.

915  { return mOwner; }

References mOwner.

Referenced by PopupMenu::showPopup().

◆ getParty()

Party* Being::getParty ( ) const
inline

◆ getPartyName()

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

◆ getPath()

const Path& Being::getPath ( ) const
inline

Returns the path this being is following. An empty path is returned when this being isn't following any path currently.

Definition at line 549 of file being.h.

550  { return mPath; }

References mPath.

◆ getPvpRank()

unsigned int Being::getPvpRank ( ) const
inline

Definition at line 749 of file being.h.

750  { return mPvpRank; }

References mPvpRank.

Referenced by addToCache(), and BeingPopup::show().

◆ getRaceName()

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

Definition at line 861 of file being.h.

862  { return mRaceName; }

References mRaceName.

Referenced by TargetDebugTab::logic(), and StatusWindow::StatusWindow().

◆ getReachable()

ReachableT Being::getReachable ( ) const
inline

Definition at line 610 of file being.h.

611  { return mReachable; }

References mReachable.

Referenced by LocalPlayer::isReachable().

◆ getSellBoard()

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

Definition at line 1010 of file being.h.

1011  { return mSellBoard; }

References mSellBoard.

Referenced by BeingPopup::show().

◆ getShowName()

bool Being::getShowName ( ) const
inline

Definition at line 245 of file being.h.

246  { return mShowName; }

References mShowName.

◆ getSitAction()

std::string Being::getSitAction ( ) const

Return sprite sit action for current environment.

Definition at line 1419 of file being.cpp.

1420 {
1421  if (mHorseId != 0)
1422  return SpriteAction::SITRIDE;
1423  if (mMap != nullptr)
1424  {
1425  const unsigned char mask = mMap->getBlockMask(mX, mY);
1426  if ((mask & BlockMask::GROUNDTOP) != 0)
1427  return SpriteAction::SITTOP;
1428  else if ((mask & BlockMask::AIR) != 0)
1429  return SpriteAction::SITSKY;
1430  else if ((mask & BlockMask::WATER) != 0)
1431  return SpriteAction::SITWATER;
1432  }
1433  return SpriteAction::SIT;
1434 }
@ GROUNDTOP
Definition: blockmask.h:35
static const std::string SIT("sit")
static const std::string SITRIDE("sitride")
static const std::string SITSKY("sitsky")
static const std::string SITWATER("sitwater")
static const std::string SITTOP("sittop")

References BlockMask::AIR, Map::getBlockMask(), BlockMask::GROUNDTOP, ActorSprite::mHorseId, Actor::mMap, mX, mY, SpriteAction::SIT(), SpriteAction::SITRIDE(), SpriteAction::SITSKY(), SpriteAction::SITTOP(), SpriteAction::SITWATER(), and BlockMask::WATER.

◆ getSortPixelY()

int Being::getSortPixelY ( ) const
inlinevirtual

Returns the pixel Y coordinate of the actor for sorting only.

Reimplemented from Actor.

Definition at line 961 of file being.h.

962  { return CAST_S32(mPos.y) - mYDiff - mSortOffsetY; }
Vector mPos
Definition: actor.h:140
int mYDiff
Definition: actor.h:141

References CAST_S32, anonymous_namespace{mrand.cpp}::mPos, mSortOffsetY, and Actor::mYDiff.

◆ getSpawnAction()

std::string Being::getSpawnAction ( ) const

Definition at line 1528 of file being.cpp.

◆ getSpiritBalls()

unsigned int Being::getSpiritBalls ( ) const
inline

Definition at line 1020 of file being.h.

1021  { return mSpiritBalls; }

References mSpiritBalls.

◆ getSpriteColor()

ItemColor Being::getSpriteColor ( const int  slot) const

Definition at line 4910 of file being.cpp.

4911 {
4912  if (slot < 0 || CAST_SIZE(slot) >= mSlots.size())
4913  return ItemColor_one;
4914 
4915  return mSlots[slot].colorId;
4916 }
#define CAST_SIZE
Definition: cast.h:34
const ItemColor ItemColor_one
Definition: itemcolor.h:30

References CAST_SIZE, and ItemColor_one.

Referenced by ActorManager::cloneBeing().

◆ getSpriteDirection()

SpriteDirection::Type Being::getSpriteDirection ( ) const
inline

Returns the direction the being is facing.

Definition at line 511 of file being.h.

513  { return mSpriteDirection; }

References mSpriteDirection.

◆ getSpriteID()

int Being::getSpriteID ( const int  slot) const

Definition at line 4894 of file being.cpp.

4895 {
4896  if (slot < 0 || CAST_SIZE(slot) >= mSlots.size())
4897  return -1;
4898 
4899  return mSlots[slot].spriteId;
4900 }

References CAST_SIZE.

Referenced by ActorManager::cloneBeing(), and EAthena::BeingRecv::processBeingChangeLookContinue().

◆ getSpriteSlot()

const BeingSlot & Being::getSpriteSlot ( const int  slot) const

Definition at line 4902 of file being.cpp.

4903 {
4904  if (slot < 0 || CAST_SIZE(slot) >= mSlots.size())
4905  return *emptyBeingSlot;
4906 
4907  return mSlots[slot];
4908 }
BeingSlot * emptyBeingSlot
Definition: beingslot.cpp:26

References CAST_SIZE, and emptyBeingSlot.

◆ getStandAction()

std::string Being::getStandAction ( ) const

Definition at line 1530 of file being.cpp.

1531 {
1532  if (mHorseId != 0)
1533  return SpriteAction::STANDRIDE;
1534  if (mMap != nullptr)
1535  {
1536  const unsigned char mask = mMap->getBlockMask(mX, mY);
1537  if (mTrickDead)
1538  {
1539  if ((mask & BlockMask::AIR) != 0)
1540  return SpriteAction::DEADSKY;
1541  else if ((mask & BlockMask::WATER) != 0)
1542  return SpriteAction::DEADWATER;
1543  else
1544  return SpriteAction::DEAD;
1545  }
1546  if ((mask & BlockMask::AIR) != 0)
1547  return SpriteAction::STANDSKY;
1548  else if ((mask & BlockMask::WATER) != 0)
1549  return SpriteAction::STANDWATER;
1550  }
1551  return SpriteAction::STAND;
1552 }
bool mTrickDead
Definition: actorsprite.h:263
static const std::string STANDWATER("standwater")
static const std::string STANDRIDE("standride")
static const std::string DEAD("dead")
static const std::string STANDSKY("standsky")
static const std::string DEADSKY("deadsky")
static const std::string DEADWATER("deadwater")

References BlockMask::AIR, SpriteAction::DEAD(), SpriteAction::DEADSKY(), SpriteAction::DEADWATER(), Ea::GameRecv::mMap, SpriteAction::STAND(), SpriteAction::STANDRIDE(), SpriteAction::STANDSKY(), SpriteAction::STANDWATER(), and BlockMask::WATER.

◆ getSubType()

BeingTypeId Being::getSubType ( ) const
inline

◆ getTalkTime()

time_t Being::getTalkTime ( ) const
inline

Definition at line 727 of file being.h.

728  { return mTalkTime; }

References mTalkTime.

◆ getTargetCursorSize()

TargetCursorSizeT Being::getTargetCursorSize ( ) const
virtual

Returns the required size of a target cursor for this being.

Reimplemented from ActorSprite.

Definition at line 518 of file being.cpp.

519 {
520  if (mInfo == nullptr)
522 
523  return mInfo->getTargetCursorSize();
524 }
TargetCursorSizeT getTargetCursorSize() const
Definition: beinginfo.h:90

References BeingInfo::getTargetCursorSize(), mInfo, and TargetCursorSize::SMALL.

◆ getTargetOffsetX()

int Being::getTargetOffsetX ( ) const
inlinevirtual

Reimplemented from ActorSprite.

Definition at line 415 of file being.h.

416  {
417  if (mInfo == nullptr)
418  return 0;
419  return mInfo->getTargetOffsetX();
420  }

References BeingInfo::getTargetOffsetX(), and mInfo.

◆ getTargetOffsetY()

int Being::getTargetOffsetY ( ) const
inlinevirtual

Reimplemented from ActorSprite.

Definition at line 422 of file being.h.

423  {
424  if (mInfo == nullptr)
425  return 0;
426  return mInfo->getTargetOffsetY();
427  }

References BeingInfo::getTargetOffsetY(), and mInfo.

◆ getTeamId()

uint16_t Being::getTeamId ( ) const
inline

Definition at line 1082 of file being.h.

1083  { return mTeamId; }

References mTeamId.

Referenced by addToCache(), and ActorManager::findNearestPvpPlayer().

◆ getTestTime()

time_t Being::getTestTime ( ) const
inline

Definition at line 730 of file being.h.

731  { return mTestTime; }

References mTestTime.

◆ getTileX()

int Being::getTileX ( ) const
inlinevirtual

◆ getTileY()

int Being::getTileY ( ) const
inlinevirtual

◆ getType()

ActorTypeT Being::getType ( ) const
inlinevirtual

Returns the type of the ActorSprite.

Reimplemented from ActorSprite.

Definition at line 116 of file being.h.

118  { return mType; }

References mType.

Referenced by LocalPlayer::attack(), LocalPlayer::attack2(), LocalPlayer::checkNewName(), Minimap::draw2(), ActorManager::findBeingByName(), ActorManager::findBeingByPixel(), ActorManager::findNearestByName(), ActorManager::findNearestLivingBeing(), ActorManager::getMobNames(), ActorManager::getPlayerNames(), PlayerRelationsManager::hasPermission(), ActorManager::heal(), SpellManager::invoke(), LocalPlayer::logic(), FindBeingFunctor::operator()(), Ea::BeingRecv::processBeingAction(), EAthena::BeingRecv::processBeingAction2(), TmwAthena::BeingRecv::processBeingChangeLookContinue(), EAthena::BeingRecv::processBeingChangeLookContinue(), EAthena::ChatRecv::processBeingChat(), TmwAthena::ChatRecv::processBeingChat(), Ea::BeingRecv::processBeingEmotion(), EAthena::BeingRecv::processBeingMove(), TmwAthena::BeingRecv::processBeingMove(), EAthena::BeingRecv::processBeingMove2(), TmwAthena::BeingRecv::processBeingMove2(), Ea::BeingRecv::processBeingRemove(), TmwAthena::BeingRecv::processBeingSelfEffect(), EAthena::BeingRecv::processBeingSpawn(), EAthena::BeingRecv::processBeingSpecialEffect(), EAthena::BeingRecv::processBeingVisible(), TmwAthena::BeingRecv::processBeingVisible(), Ea::BeingRecv::processNameResponse(), EAthena::BeingRecv::processNameResponse2(), EAthena::BeingRecv::processNameResponseTitle(), TmwAthena::PartyRecv::processPartyInvited(), Ea::PartyRecv::processPartyLeave(), TmwAthena::BeingRecv::processPlayerMove(), replaceVars(), LocalPlayer::setTarget(), BeingPopup::show(), PopupMenu::showChatPopup(), PopupMenu::showPopup(), PlayerRelationsManager::signalUpdate(), ActorManager::updatePlayerColors(), ActorManager::updatePlayerGuild(), ActorManager::updatePlayerNames(), and ActorManager::validateBeing().

◆ getWalkSpeed()

int Being::getWalkSpeed ( ) const
inline

Gets the walk speed in pixels per second.

Definition at line 458 of file being.h.

459  { return mWalkSpeed; }

References mWalkSpeed.

Referenced by LocalPlayer::LocalPlayer().

◆ getWeaponAttackAction()

std::string Being::getWeaponAttackAction ( const ItemInfo *const  weapon) const

Definition at line 1452 of file being.cpp.

1454 {
1455  if (weapon == nullptr)
1456  return getAttackAction();
1457 
1458  if (mHorseId != 0)
1459  return weapon->getRideAttackAction();
1460  if (mMap != nullptr)
1461  {
1462  const unsigned char mask = mMap->getBlockMask(mX, mY);
1463  if ((mask & BlockMask::AIR) != 0)
1464  return weapon->getSkyAttackAction();
1465  else if ((mask & BlockMask::WATER) != 0)
1466  return weapon->getWaterAttackAction();
1467  }
1468  return weapon->getAttackAction();
1469 }
const std::string & getWaterAttackAction() const
Definition: iteminfo.h:192
const std::string & getRideAttackAction() const
Definition: iteminfo.h:195
const std::string & getAttackAction() const
Definition: iteminfo.h:186
const std::string & getSkyAttackAction() const
Definition: iteminfo.h:189

References BlockMask::AIR, Ea::GameRecv::mMap, and BlockMask::WATER.

◆ getWidth()

int Being::getWidth ( ) const
inlinevirtual

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

Reimplemented from ActorSprite.

Definition at line 530 of file being.h.

531  { return std::max(CompoundSprite::getWidth(), DEFAULT_BEING_WIDTH); }
static const int DEFAULT_BEING_WIDTH
Definition: being.h:52
int getWidth() const

References DEFAULT_BEING_WIDTH, and CompoundSprite::getWidth().

◆ handleAttack()

void Being::handleAttack ( Being *const  victim,
const int  damage,
const int  attackId 
)

Handles an attack of another being by this being.

Parameters
victimthe victim being
damagethe amount of damage dealt (0 means miss)
attackIdthe attack id

Definition at line 963 of file being.cpp.

966 {
967  if ((victim == nullptr) || (mInfo == nullptr))
968  return;
969 
970  BLOCK_START("Being::handleAttack")
971 
972  if (this != localPlayer)
973  setAction(BeingAction::ATTACK, attackId);
974 
975  mLastAttackX = victim->mX;
976  mLastAttackY = victim->mY;
977 
978  if (mType == ActorType::Player && (mEquippedWeapon != nullptr))
979  fireMissile(victim, mEquippedWeapon->getMissileConst());
980  else if (mInfo->getAttack(attackId) != nullptr)
981  fireMissile(victim, mInfo->getAttack(attackId)->mMissile);
982 
983  reset();
985 
987  this != localPlayer)
988  {
989  const uint8_t dir = calcDirection(victim->mX,
990  victim->mY);
991  if (dir != 0U)
992  setDirection(dir);
993  }
994 
995  if ((damage != 0) && victim->mType == ActorType::Player
996  && victim->mAction == BeingAction::SIT)
997  {
998  victim->setAction(BeingAction::STAND, 0);
999  }
1000 
1001  if (mType == ActorType::Player)
1002  {
1003  if (mSlots.size() >= 10)
1004  {
1005  // here 10 is weapon slot
1006  int weaponId = mSlots[10].spriteId;
1007  if (weaponId == 0)
1008  weaponId = -100 - toInt(mSubType, int);
1009  const ItemInfo &info = ItemDB::get(weaponId);
1010  playSfx(info.getSound(
1011  (damage > 0) ? ItemSoundEvent::HIT : ItemSoundEvent::MISS),
1012  victim,
1013  true,
1014  mX, mY);
1015  }
1016  }
1017  else
1018  {
1019  playSfx(mInfo->getSound((damage > 0) ?
1020  ItemSoundEvent::HIT : ItemSoundEvent::MISS), victim, true, mX, mY);
1021  }
1022  BLOCK_END("Being::handleAttack")
1023 }
const SoundInfo & getSound(const ItemSoundEvent::Type event) const
Definition: beinginfo.cpp:165
virtual void setDirection(const uint8_t direction)
Definition: being.cpp:1690
virtual void setAction(const BeingActionT &action, const int attackId)
Definition: being.cpp:1554
void playSfx(const SoundInfo &sound, Being *const being, const bool main, const int x, const int y) const
Definition: being.cpp:4967
uint8_t calcDirection() const
Definition: being.cpp:1753
void fireMissile(Being *const victim, const MissileInfo &missile) const
Definition: being.cpp:1378

References BeingAction::ATTACK, BLOCK_END, BLOCK_START, ItemDB::get(), Net::getNetworkType(), ItemSoundEvent::HIT, Actions::info(), localPlayer, ItemSoundEvent::MISS, ActorType::Player, BeingAction::SIT, BeingAction::STAND, tick_time, ServerType::TMWATHENA, and toInt.

Referenced by Ea::BeingRecv::processBeingAction(), and EAthena::BeingRecv::processBeingAction2().

◆ handleSkill()

void Being::handleSkill ( Being *const  victim,
const int  damage,
const int  skillId,
const int  skillLevel 
)

Definition at line 1050 of file being.cpp.

1054 {
1055  if ((victim == nullptr) || (mInfo == nullptr) || (skillDialog == nullptr))
1056  return;
1057 
1058  const SkillInfo *restrict const skill = skillDialog->getSkill(skillId);
1059  const SkillData *restrict const data = skill != nullptr
1060  ? skill->getData1(skillLevel) : nullptr;
1061  if (data != nullptr)
1062  {
1063  effectManager->triggerDefault(data->srcEffectId,
1064  this,
1065  paths.getIntValue("skillSrcEffectId"));
1066  effectManager->triggerDefault(data->dstEffectId,
1067  victim,
1068  paths.getIntValue("skillDstEffectId"));
1069  fireMissile(victim, data->missile);
1070  }
1071 
1072  if (this != localPlayer && (skill != nullptr))
1073  {
1074  const SkillType::SkillType type = skill->type;
1075  if ((type & SkillType::Attack) != 0 ||
1076  (type & SkillType::Ground) != 0)
1077  {
1079  }
1080  else
1081  {
1083  }
1084  }
1085 
1086  reset();
1088 
1090  this != localPlayer)
1091  {
1092  const uint8_t dir = calcDirection(victim->mX,
1093  victim->mY);
1094  if (dir != 0U)
1095  setDirection(dir);
1096  }
1097  if ((damage != 0) && victim->mType == ActorType::Player
1098  && victim->mAction == BeingAction::SIT)
1099  {
1100  victim->setAction(BeingAction::STAND, 0);
1101  }
1102  if (data != nullptr)
1103  {
1104  if (damage > 0)
1105  playSfx(data->soundHit, victim, true, mX, mY);
1106  else
1107  playSfx(data->soundMiss, victim, true, mX, mY);
1108  }
1109  else
1110  {
1111  playSfx(mInfo->getSound((damage > 0) ?
1113  victim,
1114  true,
1115  mX, mY);
1116  }
1117 }
void triggerDefault(int effectId, Being *const being, const int defaultEffectId)
SkillInfo * getSkill(const int id) const

References BeingAction::ATTACK, SkillType::Attack, data, effectManager, Configuration::getIntValue(), Net::getNetworkType(), SkillDialog::getSkill(), SkillType::Ground, ItemSoundEvent::HIT, localPlayer, ItemSoundEvent::MISS, paths, ActorType::Player, restrict, BeingAction::SIT, Actions::skill(), skillDialog, BeingAction::STAND, tick_time, ServerType::TMWATHENA, and EffectManager::triggerDefault().

Referenced by EAthena::BeingRecv::processSkillAutoCast(), EAthena::BeingRecv::processSkillDamage(), TmwAthena::BeingRecv::processSkillDamage(), and Ea::BeingRecv::processSkillNoDamage().

◆ handleSkillCasting()

void Being::handleSkillCasting ( Being *const  victim,
const int  skillId,
const int  skillLevel 
)

Definition at line 1025 of file being.cpp.

1028 {
1029  if ((victim == nullptr) || (mInfo == nullptr) || (skillDialog == nullptr))
1030  return;
1031 
1032  setAction(BeingAction::CAST, skillId);
1033 
1035  skillId,
1036  skillLevel);
1037 
1038  if (data != nullptr)
1039  {
1040  effectManager->triggerDefault(data->castingSrcEffectId,
1041  this,
1042  paths.getIntValue("skillCastingSrcEffectId"));
1043  effectManager->triggerDefault(data->castingDstEffectId,
1044  victim,
1045  paths.getIntValue("skillCastingDstEffectId"));
1046  fireMissile(victim, data->castingMissile);
1047  }
1048 }

References BeingAction::CAST, data, effectManager, Configuration::getIntValue(), SkillDialog::getSkillDataByLevel(), paths, restrict, skillDialog, and EffectManager::triggerDefault().

Referenced by EAthena::BeingRecv::processSkillCastingContinue().

◆ incUsage()

void Being::incUsage ( )
inline

Definition at line 968 of file being.h.

969  { mUsageCounter ++; }

References mUsageCounter.

◆ intToGender()

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

◆ isAdvanced()

bool Being::isAdvanced ( ) const
inline

Definition at line 828 of file being.h.

829  { return mAdvanced; }

References mAdvanced.

Referenced by addToCache(), and BeingPopup::show().

◆ isAlive()

bool Being::isAlive ( ) const
inline

◆ isBuyShopEnabled()

bool Being::isBuyShopEnabled ( ) const

Definition at line 5351 of file being.cpp.

5352 {
5354  !mBuyBoard.empty());
5355 }

References Net::getNetworkType(), mBuyBoard, mShop, and ServerType::TMWATHENA.

Referenced by PopupMenu::addBuySell().

◆ isGM()

bool Being::isGM ( ) const
inline

◆ isInParty()

bool Being::isInParty ( ) const
inline

◆ isSellShopEnabled()

bool Being::isSellShopEnabled ( ) const

Definition at line 5357 of file being.cpp.

5358 {
5360  !mSellBoard.empty());
5361 }

References Net::getNetworkType(), mSellBoard, mShop, and ServerType::TMWATHENA.

Referenced by PopupMenu::addBuySell().

◆ loadComment()

std::string Being::loadComment ( const std::string &  name,
const ActorTypeT type 
)
static

Definition at line 4734 of file being.cpp.

4736 {
4737  std::string str;
4738  switch (type)
4739  {
4740  case ActorType::Player:
4741  str = settings.usersDir;
4742  break;
4743  case ActorType::Npc:
4744  str = settings.npcsDir;
4745  break;
4746  case ActorType::Unknown:
4747  case ActorType::Monster:
4748  case ActorType::FloorItem:
4749  case ActorType::Portal:
4750  case ActorType::Avatar:
4751  case ActorType::Mercenary:
4752  case ActorType::Homunculus:
4753  case ActorType::Pet:
4754  case ActorType::SkillUnit:
4755  case ActorType::Elemental:
4756  default:
4757  return "";
4758  }
4759 
4760  str = pathJoin(str, stringToHexPath(name), "comment.txt");
4761  if (Files::existsLocal(str))
4762  {
4763  StringVect lines;
4764  Files::loadTextFileLocal(str, lines);
4765  if (lines.size() >= 2)
4766  return lines[1];
4767  }
4768  return std::string();
4769 }
std::string npcsDir
Definition: settings.h:120
std::string usersDir
Definition: settings.h:118
bool loadTextFileLocal(const std::string &fileName, StringVect &lines)
Definition: files.cpp:229
bool existsLocal(const std::string &path)
Definition: files.cpp:209
Settings settings
Definition: settings.cpp:32
std::string stringToHexPath(const std::string &str)
std::string pathJoin(std::string str1, const std::string &str2)
std::vector< std::string > StringVect
Definition: stringvector.h:29

References ActorType::Avatar, ActorType::Elemental, Files::existsLocal(), ActorType::FloorItem, ActorType::Homunculus, Files::loadTextFileLocal(), ActorType::Mercenary, ActorType::Monster, ActorType::Npc, Settings::npcsDir, pathJoin(), ActorType::Pet, ActorType::Player, ActorType::Portal, settings, ActorType::SkillUnit, stringToHexPath(), ActorType::Unknown, and Settings::usersDir.

Referenced by PopupMenu::handleLink(), and updateComment().

◆ logic()