uox3/source/classes.h
Xoduz 37a76083de Rest of the changes for 0.99.6-RC1
Misc cleanup and standardization of style and naming conventions in code and scripts
Added missing code for showing race in paperdoll based on ini setting
Players can no longer use Polymorph spell while incognitoed, or while under effect of tribal paint
Players can no longer use Incognito spell while polymorphed, or while under the effects of tribal paint
Facial hair is now removed from players who are under the effects of Incognito spell that changes their gender for female
2022-10-24 18:39:33 +08:00

108 lines
3.9 KiB
C++

#ifndef __Classes_h
#define __Classes_h
enum PackTypes
{
PT_UNKNOWN = 0,
PT_COFFIN,
PT_PACK,
PT_PACK2,
PT_BAG,
PT_BARREL,
PT_SQBASKET,
PT_RBASKET,
PT_WCHEST,
PT_SCHEST,
PT_GCHEST,
PT_WBOX,
PT_MBOX,
PT_CRATE,
PT_SHOPPACK,
PT_DRAWER,
PT_BANK,
PT_BOOKCASE,
PT_FARMOIRE,
PT_WARMOIRE,
PT_DRESSER,
PT_STOCKING,
PT_GIFTBOX1,
PT_GIFTBOX2,
PT_GIFTBOX3,
PT_GIFTBOX4,
PT_GIFTBOX5,
PT_GIFTBOX6,
PT_SECHEST1,
PT_SECHEST2,
PT_SECHEST3,
PT_SECHEST4,
PT_SECHEST5,
PT_SEBASKET,
PT_SEARMOIRE1,
PT_SEARMOIRE2,
PT_SEARMOIRE3,
PT_GAME_BACKGAMMON,
PT_GAME_CHESS,
PT_MAILBOX1,
PT_MAILBOX2,
PT_MAILBOX3,
PT_MAILBOX4,
PT_MAILBOX5,
PT_MAILBOX6,
PT_MAILBOX7,
PT_MAILBOX8,
PT_MAILBOX9,
};
class cItem
{
public:
CItem * DupeItem( CSocket *s, CItem *i, UI32 amount );
void GlowItem( CItem *i );
void AddRespawnItem( CItem *s, const std::string& x, const bool inCont, const bool randomItem = false, UI16 itemAmount = 1, bool useLootlist = false );
void CheckEquipment( CChar *p );
void StoreItemRandomValue( CItem *i, CTownRegion *tReg );
PackTypes GetPackType( CItem *i );
CItem * CreateItem( CSocket *mSock, CChar *mChar, const UI16 itemId, const UI16 iAmount, const UI16 iColour, const ObjectType itemType, bool inPack = false, bool shouldSave = true, UI08 worldNumber = 0, UI16 instanceId = 0, SI16 xLoc = -1, SI16 yLoc = -1, SI08 zLoc = 127 );
CItem * CreateScriptItem( CSocket *mSock, CChar *mChar, const std::string &item, const UI16 iAmount, const ObjectType itemType, bool inPack = false, const UI16 iColor = 0xFFFF, bool shouldSave = true );
CItem * CreateBaseScriptItem( CItem *mCont, std::string ourItem, const UI08 worldNumber, const UI16 iAmount, const UI16 instanceId = 0, const ObjectType itemType = OT_ITEM, const UI16 iColor = 0xFFFF, bool shouldSave = true );
CMultiObj * CreateMulti( const std::string& cName, const UI16 itemId, const bool isBoat, const UI16 worldNum, const UI16 instanceId, bool isBaseMulti = false );
CItem * CreateRandomItem( CSocket *mSock, const std::string& itemList );
CItem * CreateBaseItem( const UI08 worldNumber, const ObjectType itemType = OT_ITEM, const UI16 instanceId = 0, bool shouldSave = true );
CItem * CreateRandomItem( CItem *mCont, const std::string& sItemList, const UI08 worldNumber, const UI16 instanceId = 0, bool shouldSave = true, bool useLootlist = false );
private:
void GetScriptItemSettings( CItem *iCreated );
CItem * PlaceItem( CSocket *mSock, CChar *mChar, CItem *iCreated, const bool inPack, UI08 worldNumber = 0, UI16 instanceId = 0, SI16 xLoc = -1, SI16 yLoc = -1, SI08 zLoc = 127 );
};
class CCharStuff
{
private:
void FindSpotForNPC( CChar *c, const SI16 originX, const SI16 originY, const SI16 xAway, const SI16 yAway, const SI08 z, const UI08 worldNumber, const UI16 instanceId );
void LoadShopList( const std::string& list, CChar *c );
CItem * AddRandomLoot( CItem *s, const std::string& lootlist, bool shouldSave = true );
public:
CChar * CreateBaseNPC( std::string ourNPC, bool shouldSave = true );
CChar * CreateRandomNPC( const std::string& npcList );
CChar * CreateNPC( CSpawnItem *iSpawner, const std::string &npc );
CChar * CreateNPCxyz( const std::string &npc, SI16 x, SI16 y, SI08 z, UI08 worldNumber, UI16 instanceId, bool useNpcList = false );
void PostSpawnUpdate( CChar *cCreated );
bool ApplyNpcSection( CChar *applyTo, CScriptSection *NpcCreation, std::string sectionId, bool isGate = false );
bool CanControlPet( CChar *mChar, CChar *Npc, bool isRestricted, bool checkDifficulty, bool ignoreOwnerCheck = false, bool ignoreLoyaltyChanges = false );
void FinalizeTransfer( CChar *pet, CChar *srcChar, CChar *targChar );
void ReleasePet( CChar *pet );
CChar * GetGuardingPet( CChar *mChar, CBaseObject *guarded );
bool CheckPetFriend( CChar *mChar, CChar *pet );
void StopPetGuarding( CChar *pet );
GenericList<CChar *> * GetAlwaysAwakeNPCs( void );
};
extern cItem *Items;
extern CCharStuff *Npcs;
#endif