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; };