From 717f5cd9dacf30fe6bf1561db9297e75fd27fdef Mon Sep 17 00:00:00 2001 From: fusion32 Date: Fri, 16 May 2025 18:46:18 -0300 Subject: initial commit - getting at TSkill structs --- reference/types.hh | 1712 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1712 insertions(+) create mode 100644 reference/types.hh (limited to 'reference/types.hh') diff --git a/reference/types.hh b/reference/types.hh new file mode 100644 index 0000000..5b493d2 --- /dev/null +++ b/reference/types.hh @@ -0,0 +1,1712 @@ +struct Object { + uint32 ObjectID; +}; + +struct TSkill { + int (**_vptr.TSkill)(...); // VTABLE? + int DAct; + int MDAct; + uint16 SkNr; + TCreature *Master; + int Act; + int Max; + int Min; + int FactorPercent; + int LastLevel; + int NextLevel; + int Delta; + int Exp; + int Cycle; + int MaxCycle; + int Count; + int MaxCount; + int AddLevel; +}; + +struct TSkillAdd { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillHitpoints { + TSkillAdd super_TSkillAdd; // INHERITANCE? +}; + +struct TSkillSoulpoints { + TSkillAdd super_TSkillAdd; // INHERITANCE? +}; + +struct TSkillProbe { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillMana { + TSkillAdd super_TSkillAdd; // INHERITANCE? +}; + +struct TSkillGoStrength { + TSkillAdd super_TSkillAdd; // INHERITANCE? +}; + +struct TSkillLight { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillEnergy { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillCarryStrength { + TSkillAdd super_TSkillAdd; // INHERITANCE? +}; + +struct TSkillPoison { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillBurning { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillFed { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillIllusion { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillLevel { + TSkill super_TSkill; // INHERITANCE? +}; + +struct TSkillBase { + TSkill *Skills[25]; + TSkill *TimerList[25]; + uint16 FirstFreeTimer; +}; + +struct TImpact { + int (**_vptr.TImpact)(...); // VTABLE? +}; + +struct TSummonImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int Race; + int Maximum; +}; + +struct TSpeedImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int Percent; + int Duration; +}; + +struct THealingImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int Power; +}; + +struct TOutfitImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + TOutfit Outfit; + int Duration; +}; + +struct TFieldImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int FieldType; +}; + +struct TDrunkenImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int Power; + int Duration; +}; + +struct TStrengthImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int Skills; + int Percent; + int Duration; +}; + +struct TDamageImpact { + TImpact super_TImpact; // INHERITANCE? + TCreature *Actor; + int DamageType; + int Power; + bool AllowDefense; +}; + +struct TCombatEntry { + uint32 ID; + uint32 Damage; + int TimeStamp; +}; + +struct TCombat { + TCreature *Master; + uint32 EarliestAttackTime; + uint32 EarliestDefendTime; + uint32 LastDefendTime; + uint32 LatestAttackTime; + uint32 AttackMode; + uint32 ChaseMode; + uint32 SecureMode; + uint32 AttackDest; + bool Following; + Object Shield; + Object Close; + Object Missile; + Object Throw; + Object Wand; + Object Ammo; + bool Fist; + uint32 CombatDamage; + int ActCombatEntry; + TCombatEntry CombatList[20]; + int LearningPoints; +}; + +struct TOutfit { + int OutfitID; + union{ + uint16 ObjectType; + uint8 Colors[4]; + }; +}; + +struct TCreature { + int (**_vptr.TCreature)(...); // CREATURE VTABLE? + TSkillBase super_TSkillBase; // INHERITANCE? + TCombat Combat; + uint32 ID; + TCreature *NextHashEntry; + uint32 NextChainCreature; + char Name[31]; + char Murderer[31]; + TOutfit OrgOutfit; + TOutfit Outfit; + int startx; + int starty; + int startz; + int posx; + int posy; + int posz; + int Sex; + int Race; + int Direction; + int Radius; + CreatureType Type; + bool IsDead; + int LoseInventory; + bool LoggingOut; + bool LogoutAllowed; + uint32 EarliestLogoutRound; + uint32 EarliestProtectionZoneRound; + uint32 EarliestYellRound; + uint32 EarliestTradeChannelRound; + uint32 EarliestSpellTime; + uint32 EarliestMultiuseTime; + uint32 EarliestWalkTime; + uint32 LifeEndRound; + TKnownCreature *FirstKnowingConnection; + int SummonedCreatures; + uint32 FireDamageOrigin; + uint32 PoisonDamageOrigin; + uint32 EnergyDamageOrigin; + Object CrObject; + vector ToDoList; + int ActToDo; + int NrToDo; + uint32 NextWakeup; + bool Stop; + bool LockToDo; + uint8 Profession; + TConnection *Connection; +}; + + +struct TKnownCreature { + KNOWNCREATURESTATE State; + uint32 CreatureID; + TKnownCreature *Next; + TConnection *Connection; +}; + +struct TConnection { + uint8 InData[2048]; + int InDataSize; + bool SigIOPending; + bool WaitingForACK; + uint8 OutData[16384]; + uint8 field5_0x4806; + uint8 field6_0x4807; + int NextToSend; + int NextToCommit; + int NextToWrite; + bool Overflow; + bool WillingToSend; + uint8 field12_0x4816; + uint8 field13_0x4817; + TConnection *NextSendingConnection; + uint32 RandomSeed; + CONNECTIONSTATE State; + pid_t PID; + int Socket; + char IPAddress[16]; + TXTEASymmetricKey SymmetricKey; + bool ConnectionIsOk; + bool ClosingIsDelayed; + uint8 field23_0x4852; + uint8 field24_0x4853; + uint32 TimeStamp; + uint32 TimeStampAction; + int TerminalType; + int TerminalVersion; + int TerminalOffsetX; + int TerminalOffsetY; + int TerminalWidth; + int TerminalHeight; + uint32 CharacterID; + char Name[31]; + uint8 field35_0x4897; + TKnownCreature KnownCreatureTable[150]; +}; + +struct TCircle { + int x[32]; + int y[32]; + int Count; +}; + +struct TSpellList { + uint8 Syllable[10]; + uint8 RuneGr; + uint8 RuneNr; + char *Comment; + uint16 Level; + uint16 RuneLevel; + uint16 Flags; + int Mana; + int SoulPoints; + int Amount; +}; + +struct TToDoEntry { + ToDoType Code; + union{ + struct{ + uint32 Time; + } Wait; + + struct{ + int x; + int y; + int z; + } Go; + + struct{ + int Direction; + } Rotate; + + struct{ + uint32 Obj; + int x; + int y; + int z; + int Count; + } Move; + + struct{ + uint32 Obj; + uint32 Partner; + } Trade; + + struct{ + uint32 Obj1; + uint32 Obj2; + int Dummy; + } Use; + + struct{ + uint32 Obj; + } Turn; + + struct{ + uint32 Text; // POINTER? + int Mode; + uint32 Addressee; + bool CheckSpamming; + } Talk; + + struct{ + int NewState; + } ChangeState; + }; +}; + +// TODO(fusion): The storage per creature of TToDoEntry's? +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + TToDoEntry init; + TToDoEntry *entry; +}; + +struct TXTEASymmetricKey { + int (**_vptr.TXTEASymmetricKey)(...); // VTABLE? + uint8 m_SymmetricKey[16]; +}; + + +// NOTE(fusion): Some minimal processing up until here. Then I realized the file would be huge. +//================================================================================================== +//================================================================================================== +//================================================================================================== + +struct TDatabasePoolConnection { + TDatabaseConnectionPool *DatabaseConnectionPool; + TDatabaseConnection *DatabaseConnection; + bool TransactionRunning; +}; + +struct TDatabaseSettings { + char Product[30]; + char Database[30]; + char Login[30]; + char Password[30]; + char Host[30]; + char Port[6]; +}; + +struct Semaphore { + int value; + struct pthread_mutex_t mutex; + struct pthread_cond_t condition; +}; + +struct TDatabaseConnectionPool { + int NumberOfConnections; + struct TDatabaseSettings DatabaseSettings; + struct TDatabaseConnection **DatabaseConnection; + bool *DatabaseConnectionFree; + struct Semaphore FreeDatabaseConnections; + struct Semaphore DatabaseConnectionMutex; +}; + +// TODO(fusion): Opaque struct? +struct TDatabaseConnection {}; + +struct TPreparedQuery { + int Number; + char *Query; + char *DBTypes; + char *CTypes; + char *Name; +}; + +struct TSharedMemory { + int Command; + char CommandBuffer[256]; + ulong RoundNr; + ulong ObjectCounter; + ulong Errors; + int PlayersOnline; + int NewbiesOnline; + int PrintBufferPosition; + char PrintBuffer[200][128]; + enum GAMESTATE GameState; + pid_t GameThreadPID; +}; + +struct TPlayerIndexNode { + bool InternalNode; +}; + +struct TPlayerIndexInternalNode { + struct TPlayerIndexNode super_TPlayerIndexNode; + struct TPlayerIndexNode *Child[27]; +}; + +union storeitem { + union storeitem *next; + struct TPlayerIndexInternalNode data; +}; + +struct storeunit { + union storeitem item[100]; +}; + +struct listnode_> { // Original name: listnode > + struct listnode_> *next; + struct listnode_> *prev; + struct storeunit data; +}; + +struct TPlayerIndexEntry { + char Name[30]; + ulong CharacterID; +}; + +struct TPlayerIndexLeafNode { + struct TPlayerIndexNode super_TPlayerIndexNode; + int Count; + struct TPlayerIndexEntry Entry[10]; +}; + +union storeitem { + union storeitem *next; + struct TPlayerIndexLeafNode data; +}; + +struct storeunit { + union storeitem item[100]; +}; + +struct TNode { + int Type; + int Data; + struct TNode *Left; + struct TNode *Right; +}; + +union storeitem { + union storeitem *next; + struct TNode data; +}; + +struct store { + struct list_> *Units; + union storeitem *firstFreeItem; +}; + +struct list_> { // Original name: list > + struct listnode_> *firstNode; + struct listnode_> *lastNode; +}; + +struct priority_queue_entry { // Original name: priority_queue_entry + ulong Key; + ulong Data; +}; + +struct THouseGuest { + char Name[60]; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct THouseGuest init; + struct THouseGuest *entry; +}; + +struct THouse { + ushort ID; + char Name[50]; + char Description[500]; + int Size; + ulong Rent; + int DepotNr; + bool NoAuction; + bool GuildHouse; + int ExitX; + int ExitY; + int ExitZ; + int CenterX; + int CenterY; + int CenterZ; + ulong OwnerID; + char OwnerName[30]; + int LastTransition; + int PaidUntil; + struct vector Subowner; + int Subowners; + struct vector Guest; + int Guests; + int Help; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct THouse init; + struct THouse *entry; +}; + +struct matrix { // Original name: matrix + int xmin; + int ymin; + int dx; + int dy; + ulong *entry; +}; + +struct TWaitinglistEntry { + struct TWaitinglistEntry *Next; + char Name[30]; + ulong NextTry; + bool FreeAccount; + bool Newbie; + bool Sleeping; +}; + +union storeitem { + union storeitem *next; + struct TWaitinglistEntry data; +}; + +struct storeunit { + union storeitem item[100]; +}; + +struct listnode_> { // Original name: listnode > + struct listnode_> *next; + struct listnode_> *prev; + struct storeunit data; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TCreature *init; + struct TCreature **entry; +}; + +struct ObjectType { + int TypeID; +}; + +struct priority_queue_entry { // Original name: priority_queue_entry + ulong Key; + struct TAttackWave *Data; +}; + +struct TItemData { + struct ObjectType Type; + int Maximum; + int Probability; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TItemData init; + struct TItemData *entry; +}; + +struct TAttackWave { + int x; + int y; + int z; + int Spread; + int Race; + int MinCount; + int MaxCount; + int Radius; + int Lifetime; + ulong Message; + int ExtraItems; + struct vector ExtraItem; +}; + +struct TSkillData { + int Nr; + int Actual; + int Minimum; + int Maximum; + int NextLevel; + int FactorPercent; + int AddLevel; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TSkillData init; + struct TSkillData *entry; +}; + +struct store { + struct list_> *Units; + union storeitem *firstFreeItem; +}; + +struct list_> { // Original name: list > + struct listnode_> *firstNode; + struct listnode_> *lastNode; +}; + +struct TDynamicStringTableBlock { + int FreeEntries; + int TotalTextLength; + bool Dirty; + uchar EntryType[256]; + ushort StringOffset[256]; + char Text[32768]; +}; + +struct listnode { + struct listnode *next; + struct listnode *prev; + struct TDynamicStringTableBlock data; +}; + +struct listIterator { + struct listnode *actNode; +}; + + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TNonplayer *init; + struct TNonplayer **entry; +}; + +struct TNonplayer { + struct TCreature super_TCreature; // INHERITANCE? + enum STATE State; +}; + +struct TReportedStatement { + ulong StatementID; + ulong TimeStamp; + ulong CharacterID; + int Mode; + int Channel; + char Text[256]; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TReportedStatement init; + struct TReportedStatement *entry; +}; + + +struct TListener { + ulong StatementID; + ulong CharacterID; +}; + +struct fifo { + struct TListener *Entry; + int Size; + int Head; + int Tail; +}; + +struct TDelayedMail { + ulong CharacterID; + int DepotNumber; + uchar *Packet; + int PacketSize; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TDelayedMail init; + struct TDelayedMail *entry; +}; + +struct list_> { // Original name: list > + struct listnode_> *firstNode; + struct listnode_> *lastNode; +}; + +struct listnode_> { // Original name: listnode > + struct listnode_> *next; + struct listnode_> *prev; + struct storeunit data; +}; + +struct store { + struct list_> *Units; + union storeitem *firstFreeItem; +}; + +struct listIterator_> { // Original name: listIterator > + struct listnode_> *actNode; +}; + +struct vector_> { // Original name: vector > + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct priority_queue_entry init; + struct priority_queue_entry *entry; +}; + +struct TSpellData { + enum SpellShapeType Shape; + int ShapeParam1; + int ShapeParam2; + int ShapeParam3; + int ShapeParam4; + enum SpellImpactType Impact; + int ImpactParam1; + int ImpactParam2; + int ImpactParam3; + int ImpactParam4; + int Delay; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TSpellData init; + struct TSpellData *entry; +}; + +struct storeunit { + union storeitem item[256]; +}; + +struct listnode_> { // Original name: listnode > + struct listnode_> *next; + struct listnode_> *prev; + struct storeunit data; +}; + +struct TShortwayPoint { + int x; + int y; + int Waypoints; + int Waylength; + int Heuristic; + struct TShortwayPoint *Predecessor; + struct TShortwayPoint *NextToExpand; +}; + +struct matrix { + int xmin; + int ymin; + int dx; + int dy; + struct TShortwayPoint *entry; +}; + +struct TCronEntry { + struct Object Obj; + ulong RoundNr; + int Previous; + int Next; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TCronEntry init; + struct TCronEntry *entry; +}; + +struct TMonsterhome { + int Race; + int x; + int y; + int z; + int Radius; + int MaxMonsters; + int ActMonsters; + int RegenerationTime; + int Timer; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TMonsterhome init; + struct TMonsterhome *entry; +}; + +struct TStaticStringTableBlock { + int TotalTextLength; + char Text[65536]; +}; + +struct listnode { + struct listnode *next; + struct listnode *prev; + struct TStaticStringTableBlock data; +}; + +struct list { + struct listnode *firstNode; + struct listnode *lastNode; +}; + +struct vector_> { // Original name: vector > + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct priority_queue_entry init; + struct priority_queue_entry *entry; +}; + +struct listIterator { + struct listnode *actNode; +}; + +struct list_> { // Original name: list > + struct listnode_> *firstNode; + struct listnode_> *lastNode; +}; + +struct TObjectType { + char *Name; + char *Description; + uchar Flags[9]; + ulong Attributes[62]; + int AttributeOffsets[18]; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TObjectType init; + struct TObjectType *entry; +}; + +struct TCondition { + int Type; + ulong Text; + struct TNode *Expression; + int Property; + int Number; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TCondition init; + struct TCondition *entry; +}; + +struct priority_queue { // Original name: priority_queue + struct vector_> *Entry; + int Entries; +}; + +struct matrix3d { + int xmin; + int ymin; + int zmin; + int dx; + int dy; + int dz; + struct TSector **entry; +}; + +struct TSector { + struct Object MapCon[32][32]; + ulong TimeStamp; + uchar Status; + uchar MapFlags; +}; + +struct vector { // Original name: vector + int min; + int max; + int start; + int space; + int block; + bool initialized; + ulong init; + ulong *entry; +}; + +struct TChannel { + ulong Moderator; + char ModeratorName[30]; + struct vector Subscriber; + int Subscribers; + struct vector InvitedPlayer; + int InvitedPlayers; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TChannel init; + struct TChannel *entry; +}; + +struct THelpDepot { + ulong CharacterID; + struct Object Box; + int DepotNr; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct THelpDepot init; + struct THelpDepot *entry; +}; + +struct matrix { + int xmin; + int ymin; + int dx; + int dy; + int *entry; +}; + +struct listIterator_> { // Original name: listIterator > + struct listnode_> *actNode; +}; + +struct TPlayerData { + ulong CharacterID; + pid_t Locked; + int Sticky; + bool Dirty; + int Race; + struct TOutfit OriginalOutfit; + struct TOutfit CurrentOutfit; + time_t LastLoginTime; + time_t LastLogoutTime; + int startx; + int starty; + int startz; + int posx; + int posy; + int posz; + int Profession; + int PlayerkillerEnd; + int Actual[25]; + int Maximum[25]; + int Minimum[25]; + int DeltaAct[25]; + int MagicDeltaAct[25]; + int Cycle[25]; + int MaxCycle[25]; + int Count[25]; + int MaxCount[25]; + int AddLevel[25]; + int Experience[25]; + int FactorPercent[25]; + int NextLevel[25]; + int Delta[25]; + uchar SpellList[256]; + int QuestValues[500]; + int MurderTimestamps[20]; + uchar *Inventory; + int InventorySize; + uchar *Depot[9]; + int DepotSize[9]; + ulong AccountID; + int Sex; + char Name[30]; + uchar Rights[12]; + char Guild[31]; + char Rank[31]; + char Title[31]; + int Buddies; + ulong Buddy[100]; + char BuddyName[100][30]; + ulong EarliestYellRound; + ulong EarliestTradeChannelRound; + ulong EarliestSpellTime; + ulong EarliestMultiuseTime; + ulong TalkBufferFullTime; + ulong MutingEndRound; + ulong Addressees[20]; + ulong AddresseesTimes[20]; + int NumberOfMutings; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TPlayer *init; + struct TPlayer **entry; +}; + +struct TPlayer { + struct TCreature super_TCreature; + ulong AccountID; + char Guild[31]; + char Rank[31]; + char Title[31]; + char IPAddress[16]; + uchar Rights[12]; + struct Object Depot; + int DepotNr; + int DepotSpace; + enum RESULT ConstructError; + struct TPlayerData *PlayerData; + struct Object TradeObject; + ulong TradePartner; + bool TradeAccepted; + int OldState; + ulong Request; + int RequestTimestamp; + ulong RequestProcessingGamemaster; + int TutorActivities; + uchar SpellList[256]; + int QuestValues[500]; + struct Object OpenContainer[16]; + struct vector AttackedPlayers; + int NumberOfAttackedPlayers; + bool Aggressor; + struct vector FormerAttackedPlayers; + int NumberOfFormerAttackedPlayers; + bool FormerAggressor; + ulong FormerLogoutRound; + ulong PartyLeader; + ulong PartyLeavingRound; + ulong TalkBufferFullTime; + ulong MutingEndRound; + int NumberOfMutings; + ulong Addressees[20]; + ulong AddresseesTimes[20]; +}; + +struct TParty { + ulong Leader; + struct vector Member; + int Members; + struct vector InvitedPlayer; + int InvitedPlayers; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TParty init; + struct TParty *entry; +}; + +struct listIterator_> { // Original name: listIterator > + struct listnode_> *actNode; +}; + +struct TMark { + char Name[20]; + int x; + int y; + int z; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TMark init; + struct TMark *entry; +}; + +struct store { + struct list_> *Units; + union storeitem *firstFreeItem; +}; + +struct TMoveUseAction { + enum ActionType Action; + int Parameters[5]; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TMoveUseAction init; + struct TMoveUseAction *entry; +}; + +struct list { + struct listnode *firstNode; + struct listnode *lastNode; +}; + +struct TMoveUseRule { + int FirstCondition; + int LastCondition; + int FirstAction; + int LastAction; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TMoveUseRule init; + struct TMoveUseRule *entry; +}; + +struct TMoveUseCondition { + enum ModifierType Modifier; + enum ConditionType Condition; + int Parameters[5]; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TMoveUseCondition init; + struct TMoveUseCondition *entry; +}; + +struct TAction { + int Type; + ulong Text; + int Number; + struct TNode *Expression; + struct TNode *Expression2; + struct TNode *Expression3; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TAction init; + struct TAction *entry; +}; + +struct TBehaviour { + struct vector Condition; + struct vector Action; + int Conditions; + int Actions; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TBehaviour init; + struct TBehaviour *entry; +}; + +struct THouseArea { + ushort ID; + int SQMPrice; + int DepotNr; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct THouseArea init; + struct THouseArea *entry; +}; + +struct priority_queue { // Original name: priority_queue + struct vector_> *Entry; + int Entries; +}; + +struct listIterator_> { // Original name: listIterator > + struct listnode_> *actNode; +}; + + +struct TDepotInfo { + char Town[20]; + int Size; +}; + +struct vector { + int min; + int max; + int start; + int space; + int block; + bool initialized; + struct TDepotInfo init; + struct TDepotInfo *entry; +}; + +struct fifoIterator { + struct fifo *Fifo; + int Position; +}; + +struct fifo { + struct TStatement *Entry; + int Size; + int Head; + int Tail; +}; + +struct TStatement { + ulong StatementID; + ulong TimeStamp; + ulong CharacterID; + int Mode; + int Channel; + ulong Text; + bool Reported; +}; + +struct fifoIterator { + struct fifo *Fifo; + int Position; +}; + +struct TWriteStream { + int (**_vptr.TWriteStream)(...); +}; + +struct TReadStream { + int (**_vptr.TReadStream)(...); +}; + +struct TReadBuffer { + struct TReadStream super_TReadStream; + uchar *Data; + int Size; + int Position; +}; + +struct TWriteBuffer { + struct TWriteStream super_TWriteStream; + uchar *Data; + int Size; + int Position; +}; + +struct TDynamicWriteBuffer { + struct TWriteBuffer super_TWriteBuffer; +}; + +struct TDirectReplyData { + ulong CharacterID; + char Message[100]; +}; + +struct TWriterThreadReply { + enum TWriterThreadReplyType ReplyType; + void *Data; +}; + +struct TWriterThreadOrder { + enum TWriterThreadOrderType OrderType; + void *Data; +}; + +struct TPunishmentOrderData { + ulong GamemasterID; + char GamemasterName[30]; + char CriminalName[30]; + char CriminalIPAddress[16]; + int Reason; + int Action; + char Comment[200]; + int NumberOfStatements; + struct vector *ReportedStatements; + ulong StatementID; + bool IPBanishment; +}; + +struct TLogoutOrderData { + ulong CharacterID; + int Level; + int Profession; + time_t LastLoginTime; + int TutorActivities; + char Residence[30]; +}; + +struct TCharacterDeathOrderData { + ulong CharacterID; + int Level; + ulong Offender; + char Remark[30]; + bool Unjustified; + time_t Time; +}; + +struct TNameLockOrderData { + ulong GamemasterID; + char GamemasterName[30]; + char CharacterName[30]; + bool OldNameVisible; +}; + +struct TNotationOrderData { + ulong GamemasterID; + char GamemasterName[30]; + char CharacterName[30]; + char Comment[200]; +}; + +struct TProtocolThreadOrder { + char ProtocolName[20]; + char Text[256]; +}; + +struct TPlayerlistOrderData { + int NumberOfPlayers; + char *PlayerNames; + int *PlayerLevels; + int *PlayerProfessions; +}; + +struct TBuddyOrderData { + ulong AccountID; + ulong Buddy; +}; + +struct TKillStatisticsOrderData { + int NumberOfRaces; + char *RaceNames; + int *KilledPlayers; + int *KilledCreatures; +}; + +struct TMoveUseDatabase { + struct vector Rules; + int NumberOfRules; +}; + +struct TObject { + ulong ObjectID; + struct Object NextObject; + struct Object Container; + struct ObjectType Type; + ulong Attributes[4]; +}; + +struct TObjectBlock { + struct TObject Object[32768]; +}; + +struct TFindCreatures { + int startx; + int starty; + int endx; + int endy; + int blockx; + int blocky; + ulong ActID; + ulong SkipID; + int Mask; + bool finished; +}; + +typedef int (ThreadFunction)(void *); +struct TThreadStarter { + ThreadFunction *Function; + void *Argument; + bool Detach; +}; + +struct TReaderThreadOrder { + enum TReaderThreadOrderType OrderType; + int SectorX; + int SectorY; + int SectorZ; + ulong CharacterID; +}; + +struct TReaderThreadReply { + enum TReaderThreadReplyType ReplyType; + int SectorX; + int SectorY; + int SectorZ; + uchar *Data; + int Size; +}; + +struct TWriteBinaryFile { + struct TWriteStream super_TWriteStream; + undefined field1_0x1; + undefined field2_0x2; + undefined field3_0x3; + FILE *File; + char Filename[4096]; +}; + +struct TWriteScriptFile { + FILE *File; + char Filename[4096]; + int Line; +}; + +struct TReadBinaryFile { + struct TReadStream super_TReadStream; + undefined field1_0x1; + undefined field2_0x2; + undefined field3_0x3; + FILE *File; + char Filename[4096]; + int FileSize; +}; + +struct TReadScriptFile { + enum TOKEN Token; + FILE *File[3]; + char Filename[3][4096]; + int Line[3]; + char String[4000]; + int RecursionDepth; + uchar *Bytes; + int Number; + int CoordX; + int CoordY; + int CoordZ; + char Special; +}; + +struct TNPC { + struct TNonplayer super_TNonplayer; + ulong Interlocutor; + int Topic; + int Price; + int Amount; + int TypeID; + ulong Data; + ulong LastTalk; + struct vector QueuedPlayers; + struct vector QueuedAddresses; + int QueueLength; + struct TBehaviourDatabase *Behaviour; +}; + +struct TBehaviourDatabase { + struct vector Behaviour; + int Behaviours; +}; + +struct TMonster { + struct TNonplayer super_TNonplayer; + int Home; + ulong Master; + ulong Target; +}; + +struct TRaceData { + char Name[30]; + char Article[3]; + struct TOutfit Outfit; + struct ObjectType MaleCorpse; + struct ObjectType FemaleCorpse; + enum BloodType Blood; + int ExperiencePoints; + int FleeThreshold; + int Attack; + int Defend; + int Armor; + int Poison; + int SummonCost; + int LoseTarget; + int Strategy[4]; + bool KickBoxes; + bool KickCreatures; + bool SeeInvisible; + bool Unpushable; + bool DistanceFighting; + bool NoSummon; + bool NoIllusion; + bool NoConvince; + bool NoBurning; + bool NoPoison; + bool NoEnergy; + bool NoHit; + bool NoLifeDrain; + bool NoParalyze; + int Skills; + struct vector Skill; + int Talks; + struct vector Talk; + int Items; + struct vector Item; + int Spells; + struct vector Spell; +}; + +struct TQueryManagerConnection { + int BufferSize; + uchar *Buffer; + struct TReadBuffer ReadBuffer; + struct TWriteBuffer WriteBuffer; + int Socket; + bool QueryOk; + undefined field6_0x2d; + undefined field7_0x2e; + undefined field8_0x2f; +}; + +struct TQueryManagerSettings { + char Host[50]; + int Port; + char Password[30]; +}; + +struct TQueryManagerPoolConnection { + struct TQueryManagerConnectionPool *QueryManagerConnectionPool; + struct TQueryManagerConnection *QueryManagerConnection; +}; + +struct TQueryManagerConnectionPool { + int NumberOfConnections; + struct TQueryManagerConnection *QueryManagerConnection; + bool *QueryManagerConnectionFree; + struct Semaphore FreeQueryManagerConnections; + struct Semaphore QueryManagerConnectionMutex; +}; + +// NOTE(fusion): Probably bigint structures for RSA decoding. +struct vlong_flex_unit { + uint n; + uint *a; + uint z; +}; + +struct vlong { + int (**_vptr.vlong)(...); + struct vlong_value *value; + int negative; +}; + +struct vlong_value { + struct vlong_flex_unit super_vlong_flex_unit; + uint share; +}; + +struct vlong_montgomery { + struct vlong R; + struct vlong R1; + struct vlong m; + struct vlong n1; + struct vlong T; + struct vlong k; + uint N; +}; + +// NOTE(fusion): Oh yes. +struct TRSAPrivateKey { + int (**_vptr.TRSAPrivateKey)(...); + struct vlong m_PrimeP; + struct vlong m_PrimeQ; + struct vlong m_U; + struct vlong m_DP; + struct vlong m_DQ; +}; + +struct TShortway { + struct matrix *Map; + struct TShortwayPoint *FirstToExpand; + struct TCreature *cr; + int VisibleX; + int VisibleY; + int StartX; + int StartY; + int StartZ; + int MinWaypoints; +}; -- cgit v1.2.3