game/reference/types.hh

1337 lines
28 KiB
C++

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<TToDoEntry> 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;
};
};
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<TPlayerIndexInternalNode> {
union storeitem<TPlayerIndexInternalNode> *next;
struct TPlayerIndexInternalNode data;
};
struct storeunit<TPlayerIndexInternalNode,100> {
union storeitem<TPlayerIndexInternalNode> item[100];
};
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> { // Original name: listnode<storeunit<TPlayerIndexInternalNode, 100> >
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> *next;
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> *prev;
struct storeunit<TPlayerIndexInternalNode,100> data;
};
struct TPlayerIndexEntry {
char Name[30];
ulong CharacterID;
};
struct TPlayerIndexLeafNode {
struct TPlayerIndexNode super_TPlayerIndexNode;
int Count;
struct TPlayerIndexEntry Entry[10];
};
union storeitem<TPlayerIndexLeafNode> {
union storeitem<TPlayerIndexLeafNode> *next;
struct TPlayerIndexLeafNode data;
};
struct storeunit<TPlayerIndexLeafNode,100> {
union storeitem<TPlayerIndexLeafNode> item[100];
};
struct TNode {
int Type;
int Data;
struct TNode *Left;
struct TNode *Right;
};
union storeitem<TNode> {
union storeitem<TNode> *next;
struct TNode data;
};
struct store<TPlayerIndexInternalNode,100> {
struct list<storeunit<TPlayerIndexInternalNode,_100>_> *Units;
union storeitem<TPlayerIndexInternalNode> *firstFreeItem;
};
struct list<storeunit<TPlayerIndexInternalNode,_100>_> { // Original name: list<storeunit<TPlayerIndexInternalNode, 100> >
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> *firstNode;
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> *lastNode;
};
struct THouseGuest {
char Name[60];
};
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<THouseGuest> Subowner;
int Subowners;
struct vector<THouseGuest> Guest;
int Guests;
int Help;
};
struct TWaitinglistEntry {
struct TWaitinglistEntry *Next;
char Name[30];
ulong NextTry;
bool FreeAccount;
bool Newbie;
bool Sleeping;
};
union storeitem<TWaitinglistEntry> {
union storeitem<TWaitinglistEntry> *next;
struct TWaitinglistEntry data;
};
struct storeunit<TWaitinglistEntry,100> {
union storeitem<TWaitinglistEntry> item[100];
};
struct listnode<storeunit<TWaitinglistEntry,_100>_> { // Original name: listnode<storeunit<TWaitinglistEntry, 100> >
struct listnode<storeunit<TWaitinglistEntry,_100>_> *next;
struct listnode<storeunit<TWaitinglistEntry,_100>_> *prev;
struct storeunit<TWaitinglistEntry,100> data;
};
struct ObjectType {
int TypeID;
};
struct TItemData {
struct ObjectType Type;
int Maximum;
int Probability;
};
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<TItemData> ExtraItem;
};
struct TSkillData {
int Nr;
int Actual;
int Minimum;
int Maximum;
int NextLevel;
int FactorPercent;
int AddLevel;
};
struct store<TWaitinglistEntry,100> {
struct list<storeunit<TWaitinglistEntry,_100>_> *Units;
union storeitem<TWaitinglistEntry> *firstFreeItem;
};
struct list<storeunit<TWaitinglistEntry,_100>_> { // Original name: list<storeunit<TWaitinglistEntry, 100> >
struct listnode<storeunit<TWaitinglistEntry,_100>_> *firstNode;
struct listnode<storeunit<TWaitinglistEntry,_100>_> *lastNode;
};
struct TDynamicStringTableBlock {
int FreeEntries;
int TotalTextLength;
bool Dirty;
uchar EntryType[256];
ushort StringOffset[256];
char Text[32768];
};
struct listnode<TDynamicStringTableBlock> {
struct listnode<TDynamicStringTableBlock> *next;
struct listnode<TDynamicStringTableBlock> *prev;
struct TDynamicStringTableBlock data;
};
struct listIterator<TDynamicStringTableBlock> {
struct listnode<TDynamicStringTableBlock> *actNode;
};
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 TListener {
ulong StatementID;
ulong CharacterID;
};
struct fifo<TListener> {
struct TListener *Entry;
int Size;
int Head;
int Tail;
};
struct TDelayedMail {
ulong CharacterID;
int DepotNumber;
uchar *Packet;
int PacketSize;
};
struct list<storeunit<TPlayerIndexLeafNode,_100>_> { // Original name: list<storeunit<TPlayerIndexLeafNode, 100> >
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> *firstNode;
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> *lastNode;
};
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> { // Original name: listnode<storeunit<TPlayerIndexLeafNode, 100> >
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> *next;
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> *prev;
struct storeunit<TPlayerIndexLeafNode,100> data;
};
struct store<TPlayerIndexLeafNode,100> {
struct list<storeunit<TPlayerIndexLeafNode,_100>_> *Units;
union storeitem<TPlayerIndexLeafNode> *firstFreeItem;
};
struct listIterator<storeunit<TWaitinglistEntry,_100>_> { // Original name: listIterator<storeunit<TWaitinglistEntry, 100> >
struct listnode<storeunit<TWaitinglistEntry,_100>_> *actNode;
};
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 storeunit<TNode,256> {
union storeitem<TNode> item[256];
};
struct listnode<storeunit<TNode,_256>_> { // Original name: listnode<storeunit<TNode, 256> >
struct listnode<storeunit<TNode,_256>_> *next;
struct listnode<storeunit<TNode,_256>_> *prev;
struct storeunit<TNode,256> data;
};
struct TShortwayPoint {
int x;
int y;
int Waypoints;
int Waylength;
int Heuristic;
struct TShortwayPoint *Predecessor;
struct TShortwayPoint *NextToExpand;
};
struct TCronEntry {
struct Object Obj;
ulong RoundNr;
int Previous;
int Next;
};
struct TMonsterhome {
int Race;
int x;
int y;
int z;
int Radius;
int MaxMonsters;
int ActMonsters;
int RegenerationTime;
int Timer;
};
struct TStaticStringTableBlock {
int TotalTextLength;
char Text[65536];
};
struct listnode<TStaticStringTableBlock> {
struct listnode<TStaticStringTableBlock> *next;
struct listnode<TStaticStringTableBlock> *prev;
struct TStaticStringTableBlock data;
};
struct list<TStaticStringTableBlock> {
struct listnode<TStaticStringTableBlock> *firstNode;
struct listnode<TStaticStringTableBlock> *lastNode;
};
struct listIterator<TStaticStringTableBlock> {
struct listnode<TStaticStringTableBlock> *actNode;
};
struct list<storeunit<TNode,_256>_> { // Original name: list<storeunit<TNode, 256> >
struct listnode<storeunit<TNode,_256>_> *firstNode;
struct listnode<storeunit<TNode,_256>_> *lastNode;
};
struct TObjectType {
char *Name;
char *Description;
uchar Flags[9];
ulong Attributes[62];
int AttributeOffsets[18];
};
struct TCondition {
int Type;
ulong Text;
struct TNode *Expression;
int Property;
int Number;
};
struct TSector {
struct Object MapCon[32][32];
ulong TimeStamp;
uchar Status;
uchar MapFlags;
};
struct TChannel {
ulong Moderator;
char ModeratorName[30];
struct vector<long_unsigned_int> Subscriber;
int Subscribers;
struct vector<long_unsigned_int> InvitedPlayer;
int InvitedPlayers;
};
struct THelpDepot {
ulong CharacterID;
struct Object Box;
int DepotNr;
};
struct listIterator<storeunit<TPlayerIndexLeafNode,_100>_> { // Original name: listIterator<storeunit<TPlayerIndexLeafNode, 100> >
struct listnode<storeunit<TPlayerIndexLeafNode,_100>_> *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 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<long_unsigned_int> AttackedPlayers;
int NumberOfAttackedPlayers;
bool Aggressor;
struct vector<long_unsigned_int> 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<long_unsigned_int> Member;
int Members;
struct vector<long_unsigned_int> InvitedPlayer;
int InvitedPlayers;
};
struct listIterator<storeunit<TNode,_256>_> { // Original name: listIterator<storeunit<TNode, 256> >
struct listnode<storeunit<TNode,_256>_> *actNode;
};
struct TMark {
char Name[20];
int x;
int y;
int z;
};
struct store<TNode,256> {
struct list<storeunit<TNode,_256>_> *Units;
union storeitem<TNode> *firstFreeItem;
};
struct TMoveUseAction {
enum ActionType Action;
int Parameters[5];
};
struct list<TDynamicStringTableBlock> {
struct listnode<TDynamicStringTableBlock> *firstNode;
struct listnode<TDynamicStringTableBlock> *lastNode;
};
struct TMoveUseRule {
int FirstCondition;
int LastCondition;
int FirstAction;
int LastAction;
};
struct TMoveUseCondition {
enum ModifierType Modifier;
enum ConditionType Condition;
int Parameters[5];
};
struct TAction {
int Type;
ulong Text;
int Number;
struct TNode *Expression;
struct TNode *Expression2;
struct TNode *Expression3;
};
struct TBehaviour {
struct vector<TCondition> Condition;
struct vector<TAction> Action;
int Conditions;
int Actions;
};
struct THouseArea {
ushort ID;
int SQMPrice;
int DepotNr;
};
struct listIterator<storeunit<TPlayerIndexInternalNode,_100>_> { // Original name: listIterator<storeunit<TPlayerIndexInternalNode, 100> >
struct listnode<storeunit<TPlayerIndexInternalNode,_100>_> *actNode;
};
struct TDepotInfo {
char Town[20];
int Size;
};
struct fifoIterator<TStatement> {
struct fifo<TStatement> *Fifo;
int Position;
};
struct fifo<TStatement> {
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<TListener> {
struct fifo<TListener> *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<TReportedStatement> *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<TMoveUseRule> 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<long_unsigned_int> QueuedPlayers;
struct vector<long_unsigned_int> QueuedAddresses;
int QueueLength;
struct TBehaviourDatabase *Behaviour;
};
struct TBehaviourDatabase {
struct vector<TBehaviour> 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<TSkillData> Skill;
int Talks;
struct vector<long_unsigned_int> Talk;
int Items;
struct vector<TItemData> Item;
int Spells;
struct vector<TSpellData> 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<TShortwayPoint> *Map;
struct TShortwayPoint *FirstToExpand;
struct TCreature *cr;
int VisibleX;
int VisibleY;
int StartX;
int StartY;
int StartZ;
int MinWaypoints;
};