643 lines
12 KiB
C++
643 lines
12 KiB
C++
|
|
|
|
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 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 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 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 TPlayerIndexNode {
|
|
bool InternalNode;
|
|
};
|
|
|
|
struct TPlayerIndexInternalNode {
|
|
struct TPlayerIndexNode super_TPlayerIndexNode;
|
|
struct TPlayerIndexNode *Child[27];
|
|
};
|
|
|
|
struct TPlayerIndexEntry {
|
|
char Name[30];
|
|
ulong CharacterID;
|
|
};
|
|
|
|
struct TPlayerIndexLeafNode {
|
|
struct TPlayerIndexNode super_TPlayerIndexNode;
|
|
int Count;
|
|
struct TPlayerIndexEntry Entry[10];
|
|
};
|
|
|
|
struct TNode {
|
|
int Type;
|
|
int Data;
|
|
struct TNode *Left;
|
|
struct TNode *Right;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
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 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 TDelayedMail {
|
|
ulong CharacterID;
|
|
int DepotNumber;
|
|
uchar *Packet;
|
|
int PacketSize;
|
|
};
|
|
|
|
struct TShortwayPoint {
|
|
int x;
|
|
int y;
|
|
int Waypoints;
|
|
int Waylength;
|
|
int Heuristic;
|
|
struct TShortwayPoint *Predecessor;
|
|
struct TShortwayPoint *NextToExpand;
|
|
};
|
|
|
|
struct TMonsterhome {
|
|
int Race;
|
|
int x;
|
|
int y;
|
|
int z;
|
|
int Radius;
|
|
int MaxMonsters;
|
|
int ActMonsters;
|
|
int RegenerationTime;
|
|
int Timer;
|
|
};
|
|
|
|
struct TCondition {
|
|
int Type;
|
|
ulong Text;
|
|
struct TNode *Expression;
|
|
int Property;
|
|
int Number;
|
|
};
|
|
|
|
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 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 TMoveUseAction {
|
|
enum ActionType Action;
|
|
int Parameters[5];
|
|
};
|
|
|
|
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 TStatement {
|
|
ulong StatementID;
|
|
ulong TimeStamp;
|
|
ulong CharacterID;
|
|
int Mode;
|
|
int Channel;
|
|
ulong Text;
|
|
bool Reported;
|
|
};
|
|
|
|
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 TFindCreatures {
|
|
int startx;
|
|
int starty;
|
|
int endx;
|
|
int endy;
|
|
int blockx;
|
|
int blocky;
|
|
ulong ActID;
|
|
ulong SkipID;
|
|
int Mask;
|
|
bool finished;
|
|
};
|
|
|
|
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 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 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 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;
|
|
};
|