aboutsummaryrefslogtreecommitdiff
path: root/src/creature.hh
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-05-17 15:21:37 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-05-17 15:21:37 -0300
commit8ef2e0070d614624c0a779f7c2a42d6c61c46295 (patch)
treee8e5a90848c331764a3908d6c30404c6dca4d1a8 /src/creature.hh
parent717f5cd9dacf30fe6bf1561db9297e75fd27fdef (diff)
downloadgame-8ef2e0070d614624c0a779f7c2a42d6c61c46295.tar.gz
game-8ef2e0070d614624c0a779f7c2a42d6c61c46295.zip
TSkillProbe + some structs
Diffstat (limited to 'src/creature.hh')
-rw-r--r--src/creature.hh181
1 files changed, 152 insertions, 29 deletions
diff --git a/src/creature.hh b/src/creature.hh
index b471662..1175424 100644
--- a/src/creature.hh
+++ b/src/creature.hh
@@ -3,9 +3,7 @@
#include "main.hh"
-struct TSkillBase;
struct TCreature;
-struct TPlayer;
struct TSkill{
// REGULAR FUNCTIONS
@@ -33,44 +31,169 @@ struct TSkill{
virtual int GetExpForLevel(int Level); // VTABLE[ 5]
virtual void Advance(int Range); // VTABLE[ 6]
virtual void ChangeSkill(int FactorPercent, int Delta); // VTABLE[ 7]
- virtual int ProbeValue(int Max, bool Increase); // VTABLE[ 8]
- virtual bool Probe(int Diff, int Prob, bool Increase); // VTABLE[ 9]
- virtual bool Process(void); // VTABLE[10]
- virtual bool SetTimer(int Cycle, int Count, int MaxCount, int AdditionalValue); // VTABLE[11]
- virtual bool DelTimer(void); // VTABLE[12]
- virtual int TimerValue(void); // VTABLE[13]
- virtual bool Jump(int Range); // VTABLE[14]
- virtual void Event(int Range); // VTABLE[15]
- virtual void Reset(void); // VTABLE[16]
+ virtual int ProbeValue(int Max, bool Increase); // VTABLE[ 8]
+ virtual bool Probe(int Diff, int Prob, bool Increase); // VTABLE[ 9]
+ virtual bool Process(void); // VTABLE[10]
+ virtual bool SetTimer(int Cycle, int Count, int MaxCount, int AdditionalValue); // VTABLE[11]
+ virtual bool DelTimer(void); // VTABLE[12]
+ virtual int TimerValue(void); // VTABLE[13]
+ virtual bool Jump(int Range); // VTABLE[14]
+ virtual void Event(int Range); // VTABLE[15]
+ virtual void Reset(void); // VTABLE[16]
// DATA
// =========================================================================
//void *VTABLE; // IMPLICIT
- int DAct; // Delta Value - Probably from equipment.
- int MDAct; // Delta Magic Value - Probably from spells.
- uint16 SkNr;
- TCreature *Master;
- int Act; // Actual Value (?)
- int Max;
- int Min;
- int FactorPercent;
- int LastLevel;
- int NextLevel;
- int Delta;
- int Exp;
- int Cycle;
- int MaxCycle;
- int Count;
- int MaxCount;
- int AddLevel;
+ int DAct; // Delta Value - Probably from equipment.
+ int MDAct; // Delta Magic Value - Probably from spells.
+ uint16 SkNr;
+ TCreature *Master;
+ int Act; // Actual Value (?)
+ 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 TSkillLevel: TSkill {
~TSkillLevel(void) override;
void Increase(int Amount) override;
void Decrease(int Amount) override;
- int GetExpForLevel(int Level) override;
+ int GetExpForLevel(int Level) override;
bool Jump(int Range) override;
};
+struct TSkillProbe: TSkill {
+ ~TSkillProbe(void) override;
+ void Increase(int Amount) override;
+ void Decrease(int Amount) override;
+ int GetExpForLevel(int Level) override;
+ void ChangeSkill(int FactorPercent, int Delta) override;
+ int ProbeValue(int Max, bool Increase) override;
+ bool Probe(int Diff, int Prob, bool Increase) override;
+ bool SetTimer(int Cycle, int Count, int MaxCount, int AdditionalValue) override;
+ bool Jump(int Range) override;
+ void Event(int Range) override;
+};
+
+struct TSkillBase{
+ // REGULAR FUNCTIONS
+ // =========================================================================
+ // TODO
+
+ // DATA
+ // =========================================================================
+ TSkill *Skills[25];
+ TSkill *TimerList[25];
+ uint16 FirstFreeTimer;
+};
+
+// TODO(fusion): Maybe split this file?
+//==============================================================================
+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: TSkillBase {
+ // REGULAR FUNCTIONS
+ // =========================================================================
+ // TODO
+
+ // VIRTUAL FUNCTIONS
+ // =========================================================================
+ // TODO
+
+ // DATA
+ // =========================================================================
+ //void *VTABLE; // IMPLICIT
+ //TSkillBase super_TSkillBase; // IMPLICIT
+ 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;
+};
+
#endif //TIBIA_CREATURE_HH_