From 08780dad536eb5d0544eb2ea70e5443dc237976f Mon Sep 17 00:00:00 2001 From: fusion32 Date: Fri, 30 May 2025 20:12:36 -0300 Subject: more work on `crcombat.cc` --- src/magic.hh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/magic.hh (limited to 'src/magic.hh') diff --git a/src/magic.hh b/src/magic.hh new file mode 100644 index 0000000..d24edd8 --- /dev/null +++ b/src/magic.hh @@ -0,0 +1,90 @@ +#ifndef TIBIA_MAGIC_HH_ +#define TIBIA_MAGIC_HH_ 1 + +#include "common.hh" + +struct TCreature; + +struct TImpact{ + // VIRTUAL FUNCTIONS + // ========================================================================= + virtual void handleField(int a, int b, int c); // VTABLE[0] + virtual void handleCreature(TCreature *Victim); // VTABLE[1] + virtual bool isAggressive(void); // VTABLE[2] + + // DATA + // ========================================================================= + //void *VTABLE; // IMPLICIT +}; + +#if 0 +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; +}; +#endif + +struct TDamageImpact: TImpact{ + // REGULAR FUNCTIONS + // ========================================================================= + TDamageImpact(TCreature *Actor, int DamageType, int Power, bool AllowDefense); + + // VIRTUAL FUNCTIONS + // ========================================================================= + void handleCreature(TCreature *Victim) override; + + // DATA + // ========================================================================= + // TImpact super_TImpact; // IMPLICIT + TCreature *Actor; + int DamageType; + int Power; + bool AllowDefense; +}; + +void CheckMana(TCreature *Creature, int ManaPoints, int SoulPoints, int Delay); + +#endif //TIBIA_MAGIC_HH_ -- cgit v1.2.3