aboutsummaryrefslogtreecommitdiff
path: root/src/magic.hh
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-06-01 13:05:16 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-06-01 13:05:16 -0300
commit9c74d168961619d754ca9f51aa86686185d3f92e (patch)
tree8aa7858e27762feddef83e60e999d57dd173a7dd /src/magic.hh
parent8b118611b69401fbf5a25dcee13834a47d27270e (diff)
downloadgame-9c74d168961619d754ca9f51aa86686185d3f92e.tar.gz
game-9c74d168961619d754ca9f51aa86686185d3f92e.zip
impl TImpact structs
Diffstat (limited to 'src/magic.hh')
-rw-r--r--src/magic.hh81
1 files changed, 43 insertions, 38 deletions
diff --git a/src/magic.hh b/src/magic.hh
index 91b7c0a..0525ad2 100644
--- a/src/magic.hh
+++ b/src/magic.hh
@@ -7,7 +7,7 @@
struct TImpact{
// VIRTUAL FUNCTIONS
// =========================================================================
- virtual void handleField(int a, int b, int c); // VTABLE[0]
+ virtual void handleField(int x, int y, int z); // VTABLE[0]
virtual void handleCreature(TCreature *Victim); // VTABLE[1]
virtual bool isAggressive(void); // VTABLE[2]
@@ -16,72 +16,77 @@ struct TImpact{
//void *VTABLE; // IMPLICIT
};
-#if 0
-struct TSummonImpact {
- TImpact super_TImpact; // INHERITANCE?
+struct TDamageImpact: TImpact {
+ TDamageImpact(TCreature *Actor, int DamageType, int Power, bool AllowDefense);
+ void handleCreature(TCreature *Victim) override;
+
TCreature *Actor;
- int Race;
- int Maximum;
+ int DamageType;
+ int Power;
+ bool AllowDefense;
};
-struct TSpeedImpact {
- TImpact super_TImpact; // INHERITANCE?
+struct TFieldImpact: TImpact {
+ TFieldImpact(TCreature *Actor, int FieldType);
+ void handleField(int x, int y, int z) override;
+
TCreature *Actor;
- int Percent;
- int Duration;
+ int FieldType;
};
-struct THealingImpact {
- TImpact super_TImpact; // INHERITANCE?
+struct THealingImpact: TImpact {
+ THealingImpact(TCreature *Actor, int Power);
+ void handleCreature(TCreature *Victim) override;
+ bool isAggressive(void) override;
+
TCreature *Actor;
int Power;
};
-struct TOutfitImpact {
- TImpact super_TImpact; // INHERITANCE?
+struct TSpeedImpact: TImpact {
+ TSpeedImpact(TCreature *Actor, int Percent, int Duration);
+ void handleCreature(TCreature *Victim) override;
+
TCreature *Actor;
- TOutfit Outfit;
+ int Percent;
int Duration;
};
-struct TFieldImpact {
- TImpact super_TImpact; // INHERITANCE?
- TCreature *Actor;
- int FieldType;
-};
+struct TDrunkenImpact: TImpact {
+ TDrunkenImpact(TCreature *Actor, int Power, int Duration);
+ void handleCreature(TCreature *Victim) override;
-struct TDrunkenImpact {
- TImpact super_TImpact; // INHERITANCE?
TCreature *Actor;
int Power;
int Duration;
};
-struct TStrengthImpact {
- TImpact super_TImpact; // INHERITANCE?
+struct TStrengthImpact: TImpact {
+ TStrengthImpact(TCreature *Actor, int Skills, int Percent, int Duration);
+ void handleCreature(TCreature *Victim) override;
+
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
- // =========================================================================
+struct TOutfitImpact: TImpact {
+ TOutfitImpact(TCreature *Actor, TOutfit Outfit, int Duration);
void handleCreature(TCreature *Victim) override;
- // DATA
- // =========================================================================
- // TImpact super_TImpact; // IMPLICIT
TCreature *Actor;
- int DamageType;
- int Power;
- bool AllowDefense;
+ TOutfit Outfit;
+ int Duration;
+};
+
+struct TSummonImpact: TImpact {
+ TSummonImpact(TCreature *Actor, int Race, int Maximum);
+ void handleField(int x, int y, int z) override;
+
+ TCreature *Actor;
+ int Race;
+ int Maximum;
};
struct TCircle {