/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * CCharacter class Interface file * ****************************************************************************/ #ifndef CHARACTER_H #define CHARACTER_H #define CurrentPlayerFileVersion 1000 #include "ActFlags.h" #include "Affect.h" #include "Attack.h" #include "Defense.h" #include "clans.h" #include "races.h" #include "swtime.h" enum FightingStyles { STYLE_BERSERK, STYLE_AGGRESSIVE, STYLE_FIGHTING, STYLE_DEFENSIVE, STYLE_EVASIVE }; enum ConnectErrorTypes { CE_BADCLASS, CE_BADRACE, CE_MAX, CE_NONE }; // Character macros. //#define IS_HERO(ch) (ch->GetTrustLevel () >= LEVEL_HERO) #define GET_HITROLL(ch) (ch->GetHitroll() \ + str_app [ch->GetCurrentStrength()].tohit \ + (2-(abs(ch->GetMentalState ())/10))) #define GET_DAMROLL(ch) (ch->GetDamroll () \ + str_app [ch->GetCurrentStrength()].todam \ + ((ch->GetMentalState () > 5 \ && ch->GetMentalState () < 15) ? 1 : 0)) #define WAIT_STATE(ch,npulse) (ch->SetWait(UMAX ((int)(ch)->GetWait(),(npulse)))) //#define MANA_COST(ch, sn) (IS_NPC (ch) ? 0 : UMAX ( \ // skill_table [sn].min_mana, \ // 100 / (2 + ch->GetLevel() - \ // skill_table[sn].skill_level[ch->GetClass()]))) // Description macros. #define PERS(ch, looker) (can_see (looker, (ch)) ? \ (ch->IsNpc() ? (ch)->GetShortDescr() \ : (ch)->GetName()) : "someone") // Data which only PC's have. class pc_data { public: friend class CCharacter; pc_data () { ClearAddrRange (&m_flags, &openedtourney, sizeof (openedtourney)); } ~pc_data (); void SetFlag (int bit) { m_flags |= bit; } void ClrFlag (int bit) { m_flags &= ~bit; } void ToggleFlag (int bit) { m_flags ^= bit; } BOOL IsGagged () { return (m_flags & PCFLAG_GAG) != 0; } BOOL IsPagerOn () { return (m_flags & PCFLAG_PAGERON) != 0; } BOOL IsNoTitle () { return (m_flags & PCFLAG_NOTITLE) != 0; } void SetNoTitle () { m_flags |= PCFLAG_NOTITLE; } void ClrNoTitle () { m_flags &= ~PCFLAG_NOTITLE; } BOOL IsRetired () { return (m_flags & PCFLAG_RETIRED) != 0; } void SetRetired () { m_flags |= PCFLAG_RETIRED; } void ClrRetired () { m_flags &= ~PCFLAG_RETIRED; } BOOL IsNoSummon () { return (m_flags & PCFLAG_NOSUMMON) != 0; } void SetNoSummon () { m_flags |= PCFLAG_NOSUMMON; } void ClrNoSummon () { m_flags &= ~PCFLAG_NOSUMMON; } BOOL IsPkiller () { return (m_flags & PCFLAG_DEADLY) != 0; } void SetPkiller () { m_flags |= PCFLAG_DEADLY; } void ClrPkiller () { m_flags &= ~PCFLAG_DEADLY; } BOOL IsNoRecall () { return (m_flags & PCFLAG_NORECALL) != 0; } void SetNoRecall () { m_flags |= PCFLAG_NORECALL; } void ClrNoRecall () { m_flags &= ~PCFLAG_NORECALL; } BOOL IsUnauthed () { return (m_flags & PCFLAG_UNAUTHED) != 0; } void SetUnauthed () { m_flags |= PCFLAG_UNAUTHED; } void ClrUnauthed () { m_flags &= ~PCFLAG_UNAUTHED; } BOOL IsNoIntro () { return (m_flags & PCFLAG_NOINTRO) != 0; } void SetNoIntro () { m_flags |= PCFLAG_NOINTRO; } void ClrNoIntro () { m_flags &= ~PCFLAG_NOINTRO; } BOOL IsGuest () { return (m_flags & PCFLAG_GUEST) != 0; } BOOL IsGuilded () { return m_pClan ? m_pClan->GetType () == CLAN_GUILD : FALSE; } CClanData *GetClan () { return m_pClan; } void SetClan (CClanData* p) { m_pClan = p; } BOOL HasRank () { return m_pRank && *m_pRank; } char *GetRank () { return m_pRank; } void SetRank (char* p) { m_pRank = p; } BOOL HasBestowments () { return m_pBestowments && *m_pBestowments; } char *GetBestowments () { return m_pBestowments; } void SetBestowments (char* p) { m_pBestowments = p; } BOOL HasHomepage () { return m_pHomepage && *m_pHomepage; } char *GetHomepage () { return m_pHomepage; } void SetHomepage (char* p) { m_pHomepage = p; } BOOL HasBio () { return bio && *bio; } BOOL HasAuthedBy () { return authed_by && *authed_by; } BOOL HasPrompt () { return m_Prompt && *m_Prompt; } char *GetPrompt () { return m_Prompt; } void SetPrompt (char* p) { m_Prompt = p; } BOOL HasFightPrompt () { return m_Fprompt && *m_Fprompt; } char *GetFightPrompt () { return m_Fprompt; } void SetFightPrompt (char* p) { m_Fprompt = p; } BOOL HasSubPrompt () { return m_Subprompt && *m_Subprompt; } char *GetSubPrompt () { return m_Subprompt; } void SetSubPrompt (char* p) { m_Subprompt = p; } BOOL HasCouncilName () { return m_pCouncilName && *m_pCouncilName; } char *GetCouncilName () { return m_pCouncilName; } void SetCouncilName (char* p) { m_pCouncilName = p; } BOOL HasDeityName () { return m_pDeityName && *m_pDeityName; } char *GetDeityName () { return m_pDeityName; } void SetDeityName (char* p) { m_pDeityName = p; } BOOL HasClanName () { return m_pClanName && *m_pClanName; } char *GetClanName () { return m_pClanName; } void SetClanName (char* p) { m_pClanName = p; } BOOL HasTitle () { return m_pTitle && *m_pTitle; } char *GetTitle () { return m_pTitle; } void SetTitle (char* p) { m_pTitle = p; } BOOL HasPassWord () { return m_pPassWord && *m_pPassWord; } char *GetPassWord () { return m_pPassWord; } void SetPassWord (char* p) { m_pPassWord = p; } BOOL HasBamfin () { return m_pBamfin && *m_pBamfin; } char *GetBamfin () { return m_pBamfin; } void SetBamfin (char* p) { m_pBamfin = p; } BOOL HasBamfout () { return m_pBamfout && *m_pBamfout; } char *GetBamfout () { return m_pBamfout; } void SetBamfout (char* p) { m_pBamfout = p; } short GetCondition (int c) { ASSERT (c >= 0 && c < MAX_CONDS); return condition [c]; } protected: int m_flags; // Whether the player is deadly and whatever else we add char *m_pPassWord; char *m_pBamfin; char *m_pBamfout; char *m_pTitle; char *m_Prompt; // User config prompts char *m_Fprompt; // User config fight prompts char *m_Subprompt; // Substate prompt char *m_pClanName; char *m_pBestowments; // NC, Special bestowed commands char *m_pDeityName; char *m_pHomepage; char *m_pCouncilName; char *m_pRank; CClanData *m_pClan; public: CCouncilData *council; CAreaData *area; CDeityData *deity; CCharacter *m_pPet; int pkills; // Number of pkills on behalf of clan int pdeaths; // Number of times pkilled (legally) int mkills; // Number of mobs killed int mdeaths; // Number of deaths due to mobs int illegal_pk; // Number of illegal pk's committed long outcast_time; // The time at which the char was outcast int r_range_lo; // room range int r_range_hi; int m_range_lo; // mob range int m_range_hi; int o_range_lo; // obj range int o_range_hi; short wizinvis; // wizinvis level short min_snoop; // minimum snoop level short quest_number; // current *QUEST BEING DONE* DON'T REMOVE! short quest_curr; // current number of quest points int quest_accum; // quest points accumulated in players life short favor; // deity favor */ int auth_state; char *helled_by; char *bio; // Personal Bio char *authed_by; // what crazy imm authed this name ;) int m_Substate; short pagerlen; // For pager (NOT menus) int m_MenuLen; int imc_def; // IMC channel def flags int imc_allow; // IMC channel allow flags int imc_deny; // IMC channel deny flags char *rreply; // IMC reply-to char *rreply_name; // IMC reply-to shown to char char *ice_listen; // ICE channels BOOL m_bLockMenus; short learned [MAX_SKILL]; short condition [MAX_CONDS]; KILLED_DATA killed [MAX_KILLTRACK]; CSkill *special_skills [5]; // personalized skills/spells(unused) BOOL openedtourney; CSwTime restore_time; // The last time the char did a restore all CSwTime release_date; // Auto-helling.. Altrag CStringList m_IgnoreList; }; // One character (PC or NPC). class CCharacter { public: CCharacter () { Empty (); } ~CCharacter (); void Empty () { ClearAddrRange (&m_pNext, ®oto, sizeof (regoto)); } void InitChar (); int GetCurrentVersion () { return CurrentPlayerFileVersion; } BOOL Read (FILE *fp, BOOL preload); void Write (FILE *fp); void ReadMob (FILE* fp); void WriteMob (FILE *fp); void ValidateLoad (); void SendTextf (char *fmt, ...); void SendText (const char *txt); void SendColor (const char *txt); void SendColorf (char *fmt, ...); void PageColor (const char *txt); void PageColorf (char *fmt, ...); BOOL IsMenuActive () { return m_pEditMenu != NULL; } CSmaugMenu& GetMenu () { return *m_pEditMenu; } void DisplayMenu (char menu); BOOL EditMenu (char* arg, const char* cmd); void SetMenu (CSmaugMenu* m) { m_pEditMenu = m; } void RemoveMenu (); void SaveMenu (); void ReturnToMenu (BOOL b); BOOL AreMenusLocked () { return m_pPcdata ? m_pPcdata->m_bLockMenus : FALSE; } void LockMenus (BOOL f) { if (m_pPcdata) m_pPcdata->m_bLockMenus = f; } int GetMenuPagelen () { return m_pPcdata ? m_pPcdata->m_MenuLen : 24; } void SetMenuPagelen (int l) { if (m_pPcdata) m_pPcdata->m_MenuLen = l; } int GetSubstate () { return m_pPcdata ? m_pPcdata->m_Substate : 0; } void SetSubstate (int s) { if (m_pPcdata) m_pPcdata->m_Substate = s; } void SetEditor (CEditor* ed) { m_pEditor = ed; } void StopEditing (); void Edit (char* arg); char* GetEditBuffer (); int GetConnectStatus (); void SetConnectStatus (int st); int GetCurrentStrength (); int GetTrustLevel (); int GetAge (); int GetIntelligence (); int GetWisdom (); int GetDexterity (); int GetConstitution (); int GetMaxWeight (); int GetMaxItems (); const char *GetRaceName (); const char *GetClassName (); void StopIdling (); void RemoveFromRoom (); void SendToRoom (CRoomIndexData *pRoom); CCharacter *GetNext () { return m_pNext; } void SetNext (CCharacter* n) { m_pNext = n; } CCharacter *GetPrev () { return m_pPrev; } void SetPrev (CCharacter* n) { m_pPrev = n; } CCharacter *GetNextInRoom () { return m_pNextInRoom; } void SetNextInRoom (CCharacter* n) { m_pNextInRoom = n; } CCharacter *GetPrevInRoom () { return m_pPrevInRoom; } void SetPrevInRoom (CCharacter* n) { m_pPrevInRoom = n; } CCharacter *GetMaster () { return m_pMaster; } void SetMaster (CCharacter* p) { m_pMaster = p; } CCharacter *GetLeader () { return m_pLeader; } void SetLeader (CCharacter* p) { m_pLeader = p; } CFightData *GetFightData () { return m_pFighting; } void SetFightData (CFightData* p) { m_pFighting = p; } CCharacter *GetFightWho () { ASSERT (this); return m_pFighting ? m_pFighting->who : NULL; } void SetFightWho (CCharacter* ch) { ASSERT (this); if (m_pFighting) m_pFighting->who = ch; } CCharacter *GetReplier () { return m_Reply; } void SetReplier (CCharacter* p) { m_Reply = p; } CMobIndexData *GetMobIndex () { return m_pIndexData; } void SetMobIndex (CMobIndexData* p) { m_pIndexData = p; } CDescriptor *GetDesc () { return m_pDesc; } void SetDesc (CDescriptor* p) { m_pDesc = p; } CNoteData *GetNotes () { return m_pNote; } void SetNotes (CNoteData* p) { m_pNote = p; } CRoomIndexData *GetInRoom () { return m_pInRoom; } void SetInRoom (CRoomIndexData* p) { m_pInRoom = p; } CRoomIndexData *GetWasInRoom () { return m_pWasInRoom; } void SetWasInRoom (CRoomIndexData* p) { m_pWasInRoom = p; } pc_data *GetPcData () { return m_pPcdata; } void SetPcData (pc_data* p) { m_pPcdata = p; } const char *GetName () const { return m_pName; } void SetName (const char* n) { STRFREE (m_pName); m_pName = STRALLOC (n); } const char *GetShortDescr () const { return m_pShortDescr; } void SetShortDescr (const char* p) { STRFREE (m_pShortDescr); m_pShortDescr = STRALLOC (p); } BOOL HasShortDescription () { return m_pShortDescr && *m_pShortDescr; } const char *GetLongDescr () const { return m_pLongDescr; } void SetLongDescr (const char* p) { STRFREE (m_pLongDescr); m_pLongDescr = STRALLOC (p); } BOOL HasLongDescription () { return m_pLongDescr && *m_pLongDescr; } const char *GetDescription () const { return m_pDescription; } void SetDescription (const char* p) { STRFREE (m_pDescription); m_pDescription = STRALLOC (p); } // Special for GetEditBuffer void SetDescriptionNA (const char* p) { STRFREE (m_pDescription); m_pDescription = NCCP p; } BOOL HasDescription () { return m_pDescription && *m_pDescription; } CAreaData *GetArea () { return m_pPcdata ? m_pPcdata->area : NULL; } int GetLearnedPercent (int sn) { return IsNpc () ? 80 : URANGE (0,m_pPcdata->learned [sn],101); } short GetSex () { return m_Sex; } void SetSex (short s) { ASSERT (s >= 0 && s <= 2); m_Sex=s; } void AdjSex (short a) { m_Sex += a; if (m_Sex < 0 || m_Sex > 2) m_Sex = 0; } BOOL HasValidClass () { return m_Class >= 0; } short GetClass () { return m_Class; } void SetClass (short c) { ASSERT (c >= 0); m_Class = c; } // { ASSERT (c >= 0 && c <= MAX_CLASS); m_Class = c; } short GetRace () { return m_Race; } void SetRace (short r) { ASSERT (r >= 0 && r <= MAX_NPC_RACE); m_Race = r; } BOOL HasValidRace (); short GetLevel () { return m_Level; } void SetLevel (short l) { ASSERT (l >= 0); m_Level = l; } // { ASSERT (l >= 0 && l <= MAX_LEVEL); m_Level = l; } void AddLevel (short i) { ASSERT ((i+m_Level) <= MAX_LEVEL); m_Level += i; } short GetTrust () { return m_Trust; } void SetTrust (short t) { m_Trust = t; } WORD GetMobInvisLevel () { return m_MobInvis; } void SetMobInvisLevel (WORD i) { m_MobInvis = i; } CSwTime GetLogonTime () { return m_LogTime; } void SetLogonTime (CSwTime t) { m_LogTime = t; } CSwTime GetSaveTime () { return m_SaveTime; } void SetSaveTime (CSwTime t) { m_SaveTime = t; } short GetPosition () { return m_Position; } void SetPosition (short p) { m_Position = p; } short GetStyle () { return m_Style; } void SetStyle (short s) { m_Style = s; } short GetTimer () { return m_Timer; } void SetTimer (short t) { m_Timer = t; } void AddTimer (short t) { m_Timer += t; } short GetWait () { return m_Wait; } void SetWait (short w) { m_Wait = w; } void AddWait (short w) { m_Wait += w; } int GetPlayed () { return m_Played; } void SetPlayed (int p) { m_Played = p; } void AddPlayed (int p) { m_Played += p; } short GetHp () { return m_Hit; } void SetHp (short h) { m_Hit = h; } void AddHp (short h) { m_Hit += h; } short GetMaxHp () { return m_MaxHit; } void SetMaxHp (short h) { m_MaxHit = h; } void AddMaxHp (short h) { m_MaxHit += h; } short GetMana () { return m_Mana; } void SetMana (short m) { m_Mana = m; } void AddMana (short m) { m_Mana += m; } short GetMaxMana () { return m_MaxMana; } void SetMaxMana (short m) { m_MaxMana = m; } void AddMaxMana (short m) { m_MaxMana += m; } short GetMove () { return m_Move; } void SetMove (short m) { m_Move = m; } void AddMove (short m) { m_Move += m; } short GetMaxMove () { return m_MaxMove; } void SetMaxMove (short m) { m_MaxMove = m; } void AddMaxMove (short m) { m_MaxMove += m; } short GetPractices () { return m_nPractice; } void SetPractices (short n) { m_nPractice = n; } void AddPractices (short n) { m_nPractice += n; } short GetCarryWeight () { return m_CarryWeight; } void SetCarryWeight (short w) { m_CarryWeight = w; } void AddCarryWeight (short w) { m_CarryWeight += w; } short GetAlignment () { return m_Alignment; } void SetAlignment (short a) { m_Alignment = a; } void AddAlignment (short a) { m_Alignment += a; } short GetMentalState () { return m_MentalState; } void SetMentalState (short h) { m_MentalState = h; } void AddMentalState (short h) { m_MentalState += h; } short GetHitroll () { return m_Hitroll; } void SetHitroll (short h) { m_Hitroll = h; } void AddHitroll (short h) { m_Hitroll += h; } short GetDamroll () { return m_Damroll; } void SetDamroll (short d) { m_Damroll = d; } void AddDamroll (short d) { m_Damroll += d; } short GetArmor () { return m_Armor; } void SetArmor (short d) { m_Armor = d; } void AddArmor (short d) { m_Armor += d; } short GetWimpLevel () { return m_Wimpy; } void SetWimpLevel (short d) { m_Wimpy = d; } int GetGold () { return m_Gold; } void SetGold (int g) { m_Gold = g; } void AddGold (int g) { m_Gold += g; } short GetHeight () { return m_Height; } void SetHeight (short h) { m_Height = h; } void AddHeight (short h) { m_Height += h; } short GetWeight () { return m_Weight; } void SetWeight (short w) { m_Weight = w; } void AddWeight (short w) { m_Weight += w; } int GetExp () { return m_Exp; } void SetExp (int e) { m_Exp = e; } void AddExp (int e) { m_Exp += e; } CActFlags GetActFlags () { return m_ActionBits; } void SetActFlags (CActFlags a) { m_ActionBits = a; } void ToggleActBit (int bit) { m_ActionBits.ToggleBit (bit); } BOOL IsAction (int b) { return m_ActionBits.IsSet (b); } void SetActBit (int b) { m_ActionBits.SetBit (b); } void ClrActBit (int b) { m_ActionBits.ClrBit (b); } BOOL IsPacifist () { return IsNpc () && m_ActionBits.IsPacifist (); } void SetPacifist () { if (IsNpc ()) m_ActionBits.SetPacifist (); } void ClrPacifist () { if (IsNpc ()) m_ActionBits.ClrPacifist (); } BOOL IsAggressive () { return m_ActionBits.IsSet (ACT_AGGRESSIVE); } void SetAggressive () { m_ActionBits.SetBit (ACT_AGGRESSIVE); } void ClrAggressive () { m_ActionBits.ClrBit (ACT_AGGRESSIVE); } BOOL IsWimpy () { return m_ActionBits.IsSet (ACT_WIMPY); } void SetWimpy () { m_ActionBits.SetBit (ACT_WIMPY); } void ClrWimpy () { m_ActionBits.ClrBit (ACT_WIMPY); } BOOL IsNpc () { return m_ActionBits.IsSet (ACT_IS_NPC); } void SetNpc () { m_ActionBits.SetBit (ACT_IS_NPC); } void ClrNpc () { m_ActionBits.ClrBit (ACT_IS_NPC); } BOOL IsSilent () { return m_ActionBits.IsSet (PLR_SILENCE); } void SetSilent () { m_ActionBits.SetBit (PLR_SILENCE); } void ClrSilent () { m_ActionBits.ClrBit (PLR_SILENCE); } BOOL IsDenied () { return m_ActionBits.IsSet (PLR_DENY); } void SetDeny () { m_ActionBits.SetBit (PLR_DENY); } void ClrDeny () { m_ActionBits.ClrBit (PLR_DENY); } BOOL IsNice () { return m_ActionBits.IsSet (PLR_NICE); } void SetNice () { m_ActionBits.SetBit (PLR_NICE); } void ClrNice () { m_ActionBits.ClrBit (PLR_NICE); } BOOL IsAttacker () { return m_ActionBits.IsSet (PLR_ATTACKER); } void SetAttacker () { m_ActionBits.SetBit (PLR_ATTACKER); } void ClrAttacker () { m_ActionBits.ClrBit (PLR_ATTACKER); } BOOL IsKiller () { return m_ActionBits.IsSet (PLR_KILLER); } void SetKiller () { m_ActionBits.SetBit (PLR_KILLER); } void ClrKiller () { m_ActionBits.ClrBit (PLR_KILLER); } BOOL IsThief () { return m_ActionBits.IsSet (PLR_THIEF); } void SetThief () { m_ActionBits.SetBit (PLR_THIEF); } void ClrThief () { m_ActionBits.ClrBit (PLR_THIEF); } BOOL IsLitterBug () { return m_ActionBits.IsLitterBug (); } void SetLitterBug () { m_ActionBits.SetLitterBug (); } void ClrLitterBug () { m_ActionBits.ClrLitterBug (); } BOOL IsFrozen () { return m_ActionBits.IsSet (PLR_FREEZE); } void SetFrozen () { m_ActionBits.SetBit (PLR_FREEZE); } void ClrFrozen () { m_ActionBits.ClrBit (PLR_FREEZE); } BOOL IsLogged () { return m_ActionBits.IsSet (PLR_LOG); } void SetLogged () { m_ActionBits.SetBit (PLR_LOG); } void ClrLogged () { m_ActionBits.ClrBit (PLR_LOG); } BOOL IsNoEmote () { return m_ActionBits.IsSet (PLR_NO_EMOTE); } void SetNoEmote () { m_ActionBits.SetBit (PLR_NO_EMOTE); } void ClrNoEmote () { m_ActionBits.ClrBit (PLR_NO_EMOTE); } BOOL IsNoTell () { return m_ActionBits.IsSet (PLR_NO_TELL); } void SetNoTell () { m_ActionBits.SetBit (PLR_NO_TELL); } void ClrNoTell () { m_ActionBits.ClrBit (PLR_NO_TELL); } BOOL IsWizInvis () { return m_ActionBits.IsSet (PLR_WIZINVIS); } void SetWizInvis () { m_ActionBits.SetBit (PLR_WIZINVIS); } void ClrWizInvis () { m_ActionBits.ClrBit (PLR_WIZINVIS); } BOOL IsMobInvis () { return m_ActionBits.IsSet (ACT_MOBINVIS); } void SetMobInvis () { m_ActionBits.SetBit (ACT_MOBINVIS); } void ClrMobInvis () { m_ActionBits.ClrBit (ACT_MOBINVIS); } BOOL IsSecretive () { return m_ActionBits.IsSet (ACT_SECRETIVE); } void SetSecretive () { m_ActionBits.SetBit (ACT_SECRETIVE); } void ClrSecretive () { m_ActionBits.ClrBit (ACT_SECRETIVE); } BOOL IsHolyLight () { return m_ActionBits.IsSet (PLR_HOLYLIGHT); } void SetHolyLight () { m_ActionBits.SetBit (PLR_HOLYLIGHT); } void ClrHolyLight () { m_ActionBits.ClrBit (PLR_HOLYLIGHT); } BOOL IsCombined () { return m_ActionBits.IsSet (PLR_COMBINE); } void SetCombine () { m_ActionBits.SetBit (PLR_COMBINE); } void ClrCombine () { m_ActionBits.ClrBit (PLR_COMBINE); } BOOL IsBrief () { return m_ActionBits.IsSet (PLR_BRIEF); } void SetBrief () { m_ActionBits.SetBit (PLR_BRIEF); } void ClrBrief () { m_ActionBits.ClrBit (PLR_BRIEF); } BOOL IsBlank () { return m_ActionBits.IsSet (PLR_BLANK); } void SetBlank () { m_ActionBits.SetBit (PLR_BLANK); } void ClrBlank () { m_ActionBits.ClrBit (PLR_BLANK); } BOOL HasPrompt () { return m_ActionBits.IsSet (PLR_PROMPT); } void SetHasPrompt () { m_ActionBits.SetBit (PLR_PROMPT); } void ClrHasPrompt () { m_ActionBits.ClrBit (PLR_PROMPT); } BOOL IsTelenet () { return m_ActionBits.IsSet (PLR_TELNET_GA); } void SetTelenet () { m_ActionBits.SetBit (PLR_TELNET_GA); } void ClrTelenet () { m_ActionBits.ClrBit (PLR_TELNET_GA); } BOOL IsRip () { return m_ActionBits.IsSet (PLR_RIP); } void SetRip () { m_ActionBits.SetBit (PLR_RIP); } void ClrRip () { m_ActionBits.ClrBit (PLR_RIP); } BOOL IsAutoExit () { return m_ActionBits.IsSet (PLR_AUTOEXIT); } void SetAutoExit () { m_ActionBits.SetBit (PLR_AUTOEXIT); } void ClrAutoExit () { m_ActionBits.ClrBit (PLR_AUTOEXIT); } BOOL IsAutoLoot () { return m_ActionBits.IsSet (PLR_AUTOLOOT); } void SetAutoLoot () { m_ActionBits.SetBit (PLR_AUTOLOOT); } void ClrAutoLoot () { m_ActionBits.ClrBit (PLR_AUTOLOOT); } BOOL IsAutoSac () { return m_ActionBits.IsSet (PLR_AUTOSAC); } void SetAutoSac () { m_ActionBits.SetBit (PLR_AUTOSAC); } void ClrAutoSac () { m_ActionBits.ClrBit (PLR_AUTOSAC); } BOOL CanPractice () { return m_ActionBits.IsSet (ACT_PRACTICE); } void SetPractice () { m_ActionBits.SetBit (ACT_PRACTICE); } void ClrPractice () { m_ActionBits.ClrBit (ACT_PRACTICE); } BOOL BoughtPet () { return m_ActionBits.IsSet (PLR_BOUGHT_PET); } void SetBoughtPet () { m_ActionBits.SetBit (PLR_BOUGHT_PET); } void ClrBoughtPet () { m_ActionBits.ClrBit (PLR_BOUGHT_PET); } BOOL IsPet () { return m_ActionBits.IsSet (ACT_PET); } void SetPetFlag () { m_ActionBits.SetBit (ACT_PET); } void ClrPetFlag () { m_ActionBits.ClrBit (ACT_PET); } BOOL IsAnsi () { return m_ActionBits.IsSet (PLR_ANSI); } void SetAnsi () { m_ActionBits.SetBit (PLR_ANSI); } void ClrAnsi () { m_ActionBits.ClrBit (PLR_ANSI); } BOOL IsVnums () { return m_ActionBits.IsSet (PLR_ROOMVNUM); } void SetVnums () { m_ActionBits.SetBit (PLR_ROOMVNUM); } void ClrVnums () { m_ActionBits.ClrBit (PLR_ROOMVNUM); } BOOL IsPolymorphed () { return m_ActionBits.IsSet (ACT_POLYMORPHED); } void SetPolymorphed () { m_ActionBits.SetBit (ACT_POLYMORPHED); } void ClrPolymorphed () { m_ActionBits.ClrBit (ACT_POLYMORPHED); } BOOL IsNoAssist () { return m_ActionBits.IsSet (ACT_NOASSIST); } void SetNoAssist () { m_ActionBits.SetBit (ACT_NOASSIST); } void ClrNoAssist () { m_ActionBits.ClrBit (ACT_NOASSIST); } BOOL IsAfk () { return m_ActionBits.IsAfk (); } void SetAfk () { m_ActionBits.SetAfk (); } void ClrAfk () { m_ActionBits.ClrAfk (); } BOOL IsPrototype () { return m_ActionBits.IsSet (ACT_PROTOTYPE); } void SetPrototype () { m_ActionBits.SetBit (ACT_PROTOTYPE); } void ClrPrototype () { m_ActionBits.ClrBit (ACT_PROTOTYPE); } BOOL IsAutonomous () { return m_ActionBits.IsAutonomous (); } void SetAutonomous () { m_ActionBits.SetAutonomous (); } void ClrAutonomous () { m_ActionBits.ClrAutonomous (); } const CAffectFlags& GetAffectFlags () { return m_AffectBits; } const CAffectFlags& GetNoAffectFlags () { return m_NoAffectBits; } void SetAffectFlags (CAffectFlags a) { m_AffectBits = a; } void SetAffectBits (CAffectFlags f) { m_AffectBits.SetBits (f); } void ClrAffectBits (CAffectFlags f) { m_AffectBits.ClearBits (f); } void ToggleAffect (int b) { if (b >= 0) m_AffectBits.ToggleBit (b); } BOOL IsAffected (int b) { return b < 0 ? FALSE : m_AffectBits.IsSet (b); } void SetAffBit (int b) { if (b >= 0) m_AffectBits.SetBit (b); } void ClrAffBit (int b) { if (b >= 0) m_AffectBits.ClrBit (b); } BOOL IsPermanentAffect (int b); CAffectFlags *GetAffectBitsAddr () { return &m_AffectBits; } // (Special for Reset.cpp) BOOL IsCharmed () { return m_AffectBits.IsSet (AFF_CHARM); } void SetCharmed () { m_AffectBits.SetBit (AFF_CHARM); } void ClrCharmed () { m_AffectBits.ClrBit (AFF_CHARM); } BOOL IsInvis () { return m_AffectBits.IsSet (AFF_INVISIBLE); } void SetInvis () { m_AffectBits.SetBit (AFF_INVISIBLE); } void ClrInvis () { m_AffectBits.ClrBit (AFF_INVISIBLE); } BOOL IsHidden () { return m_AffectBits.IsSet (AFF_HIDE); } void SetHide () { m_AffectBits.SetBit (AFF_HIDE); } void ClrHide () { m_AffectBits.ClrBit (AFF_HIDE); } BOOL CanPass () { return m_AffectBits.IsSet (AFF_PASS_DOOR); } void SetPass () { m_AffectBits.SetBit (AFF_PASS_DOOR); } void ClrPass () { m_AffectBits.ClrBit (AFF_PASS_DOOR); } BOOL IsFaerieFire () { return m_AffectBits.IsSet (AFF_FAERIE_FIRE); } void SetFaerieFire () { m_AffectBits.SetBit (AFF_FAERIE_FIRE); } void ClrFaerieFire () { m_AffectBits.ClrBit (AFF_FAERIE_FIRE); } BOOL HasSanctuary () { return m_AffectBits.IsSet (AFF_SANCTUARY); } void SetSanctuary () { m_AffectBits.SetBit (AFF_SANCTUARY); } void ClrSanctuary () { m_AffectBits.ClrBit (AFF_SANCTUARY); } BOOL CanSeeInfra () { return m_AffectBits.IsSet (AFF_INFRARED); } void SetSeeInfra () { m_AffectBits.SetBit (AFF_INFRARED); } void ClrSeeInfra () { m_AffectBits.ClrBit (AFF_INFRARED); } BOOL CanSeeHidden () { return m_AffectBits.IsSet (AFF_DETECT_HIDDEN); } void SetSeeHidden () { m_AffectBits.SetBit (AFF_DETECT_HIDDEN); } void ClrSeeHidden () { m_AffectBits.ClrBit (AFF_DETECT_HIDDEN); } BOOL CanSeeEvil () { return m_AffectBits.IsSet (AFF_DETECT_EVIL); } void SetSeeEvil () { m_AffectBits.SetBit (AFF_DETECT_EVIL); } void ClrSeeEvil () { m_AffectBits.ClrBit (AFF_DETECT_EVIL); } BOOL CanSeeMagic () { return m_AffectBits.IsSet (AFF_DETECT_MAGIC); } void SetSeeMagic () { m_AffectBits.SetBit (AFF_DETECT_MAGIC); } void ClrSeeMagic () { m_AffectBits.ClrBit (AFF_DETECT_MAGIC); } BOOL CanSeeInvis () { return m_AffectBits.IsSet (AFF_DETECT_INVIS); } void SetSeeInvis () { m_AffectBits.SetBit (AFF_DETECT_INVIS); } void ClrSeeInvis () { m_AffectBits.ClrBit (AFF_DETECT_INVIS); } BOOL IsBlind () { return m_AffectBits.IsSet (AFF_BLIND); } void SetBlind () { m_AffectBits.SetBit (AFF_BLIND); } void ClrBlind () { m_AffectBits.ClrBit (AFF_BLIND); } BOOL IsSneaking () { return m_AffectBits.IsSet (AFF_SNEAK); } void SetSneak () { m_AffectBits.SetBit (AFF_SNEAK); } void ClrSneak () { m_AffectBits.ClrBit (AFF_SNEAK); } BOOL IsCursed () { return m_AffectBits.IsSet (AFF_CURSE); } void SetCursed () { m_AffectBits.SetBit (AFF_CURSE); } void ClrCursed () { m_AffectBits.ClrBit (AFF_CURSE); } BOOL IsFlying () { return m_AffectBits.IsSet (AFF_FLYING); } void SetFly () { m_AffectBits.SetBit (AFF_FLYING); } void ClrFly () { m_AffectBits.ClrBit (AFF_FLYING); } BOOL IsFloating () { return m_AffectBits.IsSet (AFF_FLOATING); } void SetFloat () { m_AffectBits.SetBit (AFF_FLOATING); } void ClrFloat () { m_AffectBits.ClrBit (AFF_FLOATING); } BOOL IsProtected () { return m_AffectBits.IsSet (AFF_PROTECT); } void SetProtect () { m_AffectBits.SetBit (AFF_PROTECT); } void ClrProtect () { m_AffectBits.ClrBit (AFF_PROTECT); } BOOL IsSleeping () { return m_AffectBits.IsSet (AFF_SLEEP); } void SetSleeping () { m_AffectBits.SetBit (AFF_SLEEP); } void ClrSleeping () { m_AffectBits.ClrBit (AFF_SLEEP); } BOOL IsPoisoned () { return m_AffectBits.IsSet (AFF_POISON); } void SetPoisoned () { m_AffectBits.SetBit (AFF_POISON); } void ClrPoisoned () { m_AffectBits.ClrBit (AFF_POISON); } BOOL IsPossessed () { return m_AffectBits.IsSet (AFF_POSSESS); } void SetPossessed () { m_AffectBits.SetBit (AFF_POSSESS); } void ClrPossessed () { m_AffectBits.ClrBit (AFF_POSSESS); } BOOL IsParalysed () { return m_AffectBits.IsSet (AFF_PARALYSIS); } void SetParalysed () { m_AffectBits.SetBit (AFF_PARALYSIS); } void ClrParalysed () { m_AffectBits.ClrBit (AFF_PARALYSIS); } BOOL IsBeserk () { return m_AffectBits.IsSet (AFF_BERSERK); } void SetBeserk () { m_AffectBits.SetBit (AFF_BERSERK); } void ClrBeserk () { m_AffectBits.ClrBit (AFF_BERSERK); } BOOL IsFlaming () { return m_AffectBits.IsSet (AFF_FLAMING); } BOOL IsScrying () { return m_AffectBits.IsSet (AFF_SCRYING); } BOOL HasFireShield () { return m_AffectBits.IsSet (AFF_FIRESHIELD); } BOOL HasShockShield () { return m_AffectBits.IsSet (AFF_SHOCKSHIELD); } BOOL HasIceShield () { return m_AffectBits.IsSet (AFF_ICESHIELD); } BOOL HasTrueSight () { return m_AffectBits.IsSet (AFF_TRUESIGHT); } BOOL IsAqua () { return m_AffectBits.IsSet (AFF_AQUA_BREATH); } BOOL IsDetTrap () { return m_AffectBits.IsSet (AFF_DETECTTRAPS); } // Styles BOOL IsBeserkStyle () { return m_Style == STYLE_BERSERK; } BOOL IsAggressiveStyle () { return m_Style == STYLE_AGGRESSIVE; } BOOL IsFightingStyle () { return m_Style == STYLE_FIGHTING; } BOOL IsDefensiveStyle () { return m_Style == STYLE_DEFENSIVE; } BOOL IsEvasiveStyle () { return m_Style == STYLE_EVASIVE; } // Access functions for defenses const CDefenseFlags& GetDefenseFlags () { return m_defenses; } void SetDefenseFlags (CDefenseFlags f) { m_defenses = f; } BOOL HasDefenses () { return ! m_defenses.IsEmpty (); } BOOL CanDefend (int bit) { return m_defenses.IsSet (bit); } void ToggleDefense (int bit) { m_defenses.ToggleBit (bit); } BOOL CanParry () { return m_defenses.CanParry (); } BOOL CanDodge () { return m_defenses.CanDodge (); } BOOL CanGrip () { return m_defenses.CanGrip (); } BOOL CanDisarm () { return m_defenses.CanDisarm (); } // Access functions for attacks const CAttackFlags& GetAttackFlags () { return m_attacks; } void SetAttackFlags (CAttackFlags f) { m_attacks = f; } void ToggleAttack (int bit) { m_attacks.ToggleBit (bit); } BOOL HasAttacks () { return ! m_attacks.IsEmpty (); } BOOL CanAttack (int bit) { return m_attacks.IsSet (bit); } BOOL CanTrip () { return m_attacks.CanTrip (); } BOOL CanBackStab () { return m_attacks.CanBackStab (); } // Access functions for immunes int GetImmuneFlags () { return m_Immune; } void SetImmuneFlags (int f) { m_Immune = f; } BOOL IsImmune (int bit) { return (m_Immune & bit) != 0; } void SetImmune (int bit) { m_Immune |= bit; } void ClrImmune (int bit) { m_Immune &= ~bit; } void ToggleImmune (int bit) { m_Immune ^= bit; } BOOL IsImmuneFire () { return (m_Immune & RIS_FIRE) != 0; } BOOL IsImmuneCold () { return (m_Immune & RIS_COLD) != 0; } BOOL IsImmuneElectricity () { return (m_Immune & RIS_ELECTRICITY) != 0; } BOOL IsImmuneEnergy () { return (m_Immune & RIS_ENERGY) != 0; } BOOL IsImmuneAcid () { return (m_Immune & RIS_ACID) != 0; } BOOL IsImmunePoison () { return (m_Immune & RIS_POISON) != 0; } BOOL IsImmuneEnergyDrain () { return (m_Immune & RIS_DRAIN) != 0; } BOOL IsImmuneMagic () { return (m_Immune & RIS_MAGIC) != 0; } BOOL IsImmuneCharm () { return (m_Immune & RIS_CHARM) != 0; } // Access functions for resistances int GetResistFlags () { return m_Resist; } void SetResistFlags (int f) { m_Resist = f; } void ToggleResist (int bit) { m_Resist ^= bit; } BOOL CanResist (int bit) { return (m_Resist & bit) != 0; } void SetResist (int bit) { m_Resist |= bit; } void ClrResist (int bit) { m_Resist &= ~bit; } // Access functions for susceptibility int GetSusceptFlags () { return m_Suscept; } void SetSusceptFlags (int f) { m_Suscept = f; } void ToggleSuscept (int bit) { m_Suscept ^= bit; } BOOL IsSusceptible (int bit) { return (m_Suscept & bit) != 0; } void SetSusceptible (int bit) { m_Suscept |= bit; } void ClrSusceptible (int bit) { m_Suscept &= ~bit; } // Access functions for xflags int GetXFlags () { return m_xflags; } void SetXFlags (int f) { m_xflags = f; } void ToggleXFlag (int bit) { m_xflags ^= bit; } // Access functions for Languages const CBitVector& GetSpeaksFlags () { return m_Speaks; } void SetSpeaksFlags (const CBitVector& f) { m_Speaks = f; } int GetSpeaking () { return m_Speaking; } void SetSpeaking (int l) { m_Speaking = l; } BOOL SpeaksLanguage (int l) { return m_Speaks.IsSet (LANG_ALL) || m_Speaks.IsSet (l); } BOOL IsSpeaking (int l) { return m_Speaking == LANG_ALL || m_Speaking == l; } void SetSpeaks (int l) { m_Speaks.SetBit (l); } void ClrSpeaks (int l) { m_Speaks.ClrBit (l); } BOOL IsChannelOn (int c) { return (m_Channels & c) != 0; } void SetChannel (int c) { m_Channels |= c; } void ClrChannel (int c) { m_Channels &= ~c; } short GetAllChannels () { return m_Channels; } void SetAllChannels (int c) { m_Channels = c; } BOOL IsVampire (); BOOL IsEvil () { return m_Alignment <= -350; } BOOL IsGood () { return m_Alignment >= 350; } BOOL IsDevoted () { return ! IsNpc () && GetPcData()->deity; } BOOL IsNeutral () { return ! IsGood () && ! IsEvil (); } BOOL IsStanding () { return m_Position == POS_STANDING; } BOOL IsFighting () { return m_Position == POS_FIGHTING; } BOOL IsStunned () { return m_Position == POS_STUNNED; } BOOL IsSLeeping () { return m_Position == POS_SLEEPING; } BOOL IsDead () { return m_Position == POS_DEAD; } BOOL IsAwake () { return m_Position > POS_SLEEPING; } BOOL IsMounted () { return m_Position == POS_MOUNTED; } BOOL IsImmortal () { return GetTrustLevel() >= LEVEL_IMMORTAL; } BOOL IsMortal () { return GetTrustLevel() < LEVEL_IMMORTAL; } BOOL IsHero () { return GetTrustLevel () >= LEVEL_HERO; } BOOL IsFightPosition (); // Access functions for pc_data flags int GetPcFlags () { return m_pPcdata ? m_pPcdata->m_flags : 0; } void SetPcFlag (int bit) { if (m_pPcdata) m_pPcdata->SetFlag (bit); } void ClrPcFlag (int bit) { if (m_pPcdata) m_pPcdata->ClrFlag (bit); } void TogglePcFlag (int bit) { if (m_pPcdata) m_pPcdata->ToggleFlag (bit); } BOOL IsPkiller () { return m_pPcdata ? m_pPcdata->IsPkiller () : FALSE; } void SetPkiller () { if (m_pPcdata) m_pPcdata->SetPkiller (); } void ClrPkiller () { if (m_pPcdata) m_pPcdata->ClrPkiller (); } BOOL CanPkill () { return IsPkiller () && m_Level >= 5 && GetAge() >= 18; } BOOL CanCast () { return m_Class != 2 && m_Class != 3; } BOOL IsGuilded () { return m_pPcdata ? m_pPcdata->IsGuilded () : FALSE; } BOOL IsPagerOn () { return m_pPcdata ? m_pPcdata->IsPagerOn () : FALSE; } BOOL IsNoTitle () { return m_pPcdata ? m_pPcdata->IsNoTitle () : TRUE; } void SetNoTitle () { if (m_pPcdata) m_pPcdata->SetNoTitle (); } void ClrNoTitle () { if (m_pPcdata) m_pPcdata->ClrNoTitle (); } BOOL IsNoSummon () { return m_pPcdata ? m_pPcdata->IsNoSummon () : TRUE; } BOOL IsNoRecall () { return m_pPcdata ? m_pPcdata->IsNoRecall () : TRUE; } void SetNoRecall () { if (m_pPcdata) m_pPcdata->SetNoRecall (); } void ClrNoRecall () { if (m_pPcdata) m_pPcdata->ClrNoRecall (); } BOOL IsGagged () { return m_pPcdata ? m_pPcdata->IsGagged () : FALSE; } BOOL IsUnauthed () { return m_pPcdata ? m_pPcdata->IsUnauthed () : TRUE; } void SetUnauthed () { if (m_pPcdata) m_pPcdata->SetUnauthed (); } void ClrUnauthed () { if (m_pPcdata) m_pPcdata->ClrUnauthed (); } BOOL IsNoIntro () { return m_pPcdata ? m_pPcdata->IsNoIntro () : TRUE; } void SetNoIntro () { if (m_pPcdata) m_pPcdata->SetNoIntro (); } void ClrNoIntro () { if (m_pPcdata) m_pPcdata->ClrNoIntro (); } // Retired and guest imms. BOOL IsRetired () { return IsNpc () ? FALSE : m_pPcdata->IsRetired (); } void SetRetired () { if (m_pPcdata) m_pPcdata->SetRetired (); } void ClrRetired () { if (m_pPcdata) m_pPcdata->ClrRetired (); } BOOL IsGuest () { return m_pPcdata ? m_pPcdata->IsGuest () : FALSE; } int GetAc () { return m_Armor + VAMP_AC(this) + (IsAwake () ? dex_app [GetDexterity ()].defensive : 0); } int GetManaCost (int sn); BOOL IsIndoors () { return m_pInRoom->IsIndoors (); } BOOL IsOutside () { return ! IsIndoors (); } short GetSectorType () { return m_pInRoom->sector_type; } BOOL CheckSubrestricted (); BOOL HasBodypart (int part) { return m_xflags == 0 || (m_xflags & part) != 0; } BOOL IsDrunk (int drunk) { if (IsNpc ()) return FALSE; return number_percent () < (m_pPcdata->condition [COND_DRUNK] * 2 / drunk); } BOOL IsClanned () { if (IsNpc ()) return FALSE; return m_pPcdata->m_pClan && m_pPcdata->m_pClan->GetType () != CLAN_ORDER && m_pPcdata->m_pClan->GetType () != CLAN_GUILD; } CExitData *GetExit (short door) { return get_exit (GetInRoom (), door); } BOOL CanGo (short door); BOOL IsAuthed () { if (IsNpc ()) return TRUE; return m_pPcdata->auth_state > 3 || ! IS_SET (m_pPcdata->m_flags, PCFLAG_UNAUTHED); } BOOL IsWaitingForAuth () { if (IsNpc ()) return FALSE; return m_pPcdata->auth_state == 1 && IS_SET (m_pPcdata->m_flags, PCFLAG_UNAUTHED); } BOOL HasPet () { return m_pPcdata && m_pPcdata->m_pPet; } CCharacter *GetPet () { return m_pPcdata ? m_pPcdata->m_pPet : NULL; } void SetPet (CCharacter* p) { if (m_pPcdata) m_pPcdata->m_pPet = p; } BOOL IsIgnoring (CCharacter* ich); BOOL IsConnectError () { return ! m_ConnectError.IsEmpty (); } void SetConnectError (ConnectErrorTypes e); void ClrConnectError (int b) { m_ConnectError.ClrBit (b); } ConnectErrorTypes GetConnectError (); CMobProgActList *GetMobPact () { return m_pMobPact; } void SetMobPact (CMobProgActList* p) { m_pMobPact = p; } SPEC_FUN *GetSpecialMobFunction () { return m_SpecFun; } void SetSpecialMobFunction (SPEC_FUN* p) { m_SpecFun = p; } int GetMobPactnum () { return m_MobPactnum; } void SetMobPactnum (int n) { m_MobPactnum = n; } void AddMobPactnum (int n) { m_MobPactnum += n; } void AddCarrying (CObjData* pObj, BOOL bLevSort = FALSE) { m_Carrying.AddByLevel (pObj, bLevSort); } void RemoveCarrying (CObjData* pObj) { m_Carrying.Remove (pObj); } CObjData *GetFirstCarrying () { return m_Carrying.GetFirst (); } CObjData *GetLastCarrying () { return m_Carrying.GetLast (); } BOOL IsCarrying () { return ! m_Carrying.IsEmpty (); } POSITION GetHeadCarryPos () { return m_Carrying.GetHeadPosition (); } POSITION GetTailCarryPos () { return m_Carrying.GetTailPosition (); } CObjData *GetNextCarrying (POSITION& pos) { return m_Carrying.GetNext (pos); } CObjData *GetPreviousCarrying (POSITION& pos) { return m_Carrying.GetPrev (pos); } CObjectList &GetCarryList () { return m_Carrying; } BOOL IsStackColors () { return m_Flags.IsSet (0); } void StartColorStack () { m_ColorStack.RemoveAll (); m_Flags.SetBit (0); } void EndColorStack () { m_ColorStack.RemoveAll (); m_Flags.ClrBit (0); } private: CSwTime m_LogTime; CSwTime m_SaveTime; CCharacter *m_pNext; // Global chain of all char/mob CCharacter *m_pPrev; // Global chain of all char/mob CCharacter *m_pNextInRoom; // Chain set by SendToRoom () CCharacter *m_pPrevInRoom; // Chain set by SendToRoom () CCharacter *m_pMaster; // Who char follows or is charmed by CCharacter *m_pLeader; // Leader of a group CFightData *m_pFighting; // Who char is fighting CCharacter *m_Reply; // Last person who talked to char CDescriptor *m_pDesc; // Player socket info CNoteData *m_pNote; // Note writing stuff CRoomIndexData *m_pInRoom; // Room char is in CRoomIndexData *m_pWasInRoom; // Room returned to after 'idle void' pc_data *m_pPcdata; // Data only PCs have CSmaugMenu *m_pEditMenu; // Pointer to menu char is editing CEditor *m_pEditor; char *m_pName; char *m_pShortDescr; char *m_pLongDescr; char *m_pDescription; short m_Sex; short m_Class; short m_Race; short m_Level; short m_Trust; int m_Played; short m_Timer; short m_Wait; short m_Hit; short m_MaxHit; short m_Mana; short m_MaxMana; short m_Move; short m_MaxMove; int m_Gold; int m_Exp; short m_Height; short m_Weight; CActFlags m_ActionBits; // was act CAffectFlags m_AffectBits; // was affected_by CAffectFlags m_NoAffectBits; // was no_affected_by short m_Position; short m_nPractice; short m_CarryWeight; short m_Alignment; short m_Hitroll; short m_Damroll; short m_Armor; short m_Wimpy; short m_Channels; int m_xflags; int m_Resist; int m_NoResist; int m_Immune; int m_NoImmune; int m_Suscept; int m_NoSuscept; WORD m_MobInvis; // Mobinvis level SB CAttackFlags m_attacks; CDefenseFlags m_defenses; int m_Speaking; CBitVector m_Speaks; // languages spoken CIntVector m_ConnectError; SPEC_FUN *m_SpecFun; // Mobile special function CMobIndexData *m_pIndexData; // Mobile class info CMobProgActList* m_pMobPact; // Used by MOBprogram int m_MobPactnum; // Used by MOBprogram public: CCharacter *switched; CCharacter *mount; HHF_DATA *hunting; HHF_DATA *fearing; HHF_DATA *hating; short mpscriptpos; CNoteData *comments; DO_FUN *last_cmd; DO_FUN *prev_cmd; // mapping void *dest_buf; // This one is to assign to different things char *alloc_ptr; // Must str_dup and delete this one void *spare_ptr; int tempnum; CTimerData *first_timer; CTimerData *last_timer; short num_fighting; short numattacks; int carry_number; short saving_poison_death; short saving_wand; short saving_para_petri; short saving_breath; short saving_spell_staff; short barenumdie; short baresizedie; short mobthac0; short hitplus; short damplus; short defposition; short m_Style; int deaf; short perm_str; short perm_int; short perm_wis; short perm_dex; short perm_con; short perm_cha; short perm_lck; short mod_str; short mod_int; short mod_wis; short mod_dex; short mod_con; short mod_cha; short mod_lck; short m_MentalState; // simplified short emotional_state; // simplified int retran; int regoto; CAffectList m_AffectList; CObjectList m_Carrying; CPtrList m_ColorStack; CIntVector m_Flags; }; #endif