aboutsummaryrefslogtreecommitdiff
path: root/src/magic.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/magic.hh')
-rw-r--r--src/magic.hh126
1 files changed, 107 insertions, 19 deletions
diff --git a/src/magic.hh b/src/magic.hh
index 0525ad2..e1dc354 100644
--- a/src/magic.hh
+++ b/src/magic.hh
@@ -4,6 +4,14 @@
#include "common.hh"
#include "creature.hh"
+enum : int {
+ FIELD_TYPE_FIRE = 1,
+ FIELD_TYPE_POISON = 2,
+ FIELD_TYPE_ENERGY = 3,
+ FIELD_TYPE_MAGICWALL = 4,
+ FIELD_TYPE_WILDGROWTH = 5,
+};
+
struct TImpact{
// VIRTUAL FUNCTIONS
// =========================================================================
@@ -89,25 +97,105 @@ struct TSummonImpact: TImpact {
int Maximum;
};
-struct TCircle {
- int x[32];
- int y[32];
- int Count;
-};
-
-struct TSpellList {
- uint8 Syllable[10];
- uint8 RuneGr;
- uint8 RuneNr;
- const char *Comment;
- uint16 Level;
- uint16 RuneLevel;
- uint16 Flags;
- int Mana;
- int SoulPoints;
- int Amount;
-};
+void ActorShapeSpell(TCreature *Actor, TImpact *Impact, int Effect);
+void VictimShapeSpell(TCreature *Actor, TCreature *Victim,
+ int Range, int Animation, TImpact *Impact, int Effect);
+void OriginShapeSpell(TCreature *Actor, int Radius, TImpact *Impact, int Effect);
+void CircleShapeSpell(TCreature *Actor, int DestX, int DestY, int DestZ,
+ int Range, int Animation, int Radius, TImpact *Impact, int Effect);
+void DestinationShapeSpell(TCreature *Actor, TCreature *Victim,
+ int Range, int Animation, int Radius, TImpact *Impact, int Effect);
+void AngleShapeSpell(TCreature *Actor, int Angle, int Range, TImpact *Impact, int Effect);
+void CheckSpellbook(TCreature *Actor, int SpellNr);
+void CheckAccount(TCreature *Actor, int SpellNr);
+void CheckLevel(TCreature *Actor, int SpellNr);
+void CheckRuneLevel(TCreature *Actor, int SpellNr);
+void CheckMagicItem(TCreature *Actor, ObjectType Type);
+void CheckRing(TCreature *Actor, int SpellNr);
+void CheckAffectedPlayers(TCreature *Actor, int x, int y, int z);
+void CheckMana(TCreature *Actor, int ManaPoints, int SoulPoints, int Delay);
+int ComputeDamage(TCreature *Actor, int SpellNr, int Damage, int Variation);
+bool IsAggressiveSpell(int SpellNr);
+void MassCombat(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints,
+ int Damage, int Effect, int Radius, int DamageType, int Animation);
+void AngleCombat(TCreature *Actor, int ManaPoints, int SoulPoints,
+ int Damage, int Effect, int Range, int Angle, int DamageType);
+void Combat(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints,
+ int Damage, int Effect, int Animation, int DamageType);
+int GetDirection(int dx, int dy); // TODO(fusion): Move this one elsewhere? Maybe `info.cc`.
+void KillAllMonsters(TCreature *Actor, int Effect, int Radius);
+void CreateField(int x, int y, int z, int FieldType, uint32 Owner, bool Peaceful);
+void CreateField(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints, int FieldType);
+void CreateField(TCreature *Actor, int ManaPoints, int SoulPoints, int FieldType);
+void MassCreateField(TCreature *Actor, Object Target,
+ int ManaPoints, int SoulPoints, int FieldType, int Radius);
+void CreateFieldWall(TCreature *Actor, Object Target,
+ int ManaPoints, int SoulPoints, int FieldType, int Width);
+void DeleteField(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints);
+void CleanupField(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints);
+void CleanupField(TCreature *Actor);
+void Teleport(TCreature *Actor, const char *Param);
+void TeleportToCreature(TCreature *Actor, const char *Name);
+void TeleportPlayerToMe(TCreature *Actor, const char *Name);
+void MagicRope(TCreature *Actor, int ManaPoints, int SoulPoints);
+void MagicClimbing(TCreature *Actor, int ManaPoints, int SoulPoints, const char *Param);
+void MagicClimbing(TCreature *Actor, const char *Param);
+void CreateThing(TCreature *Actor, const char *Param1, const char *Param2);
+void CreateMoney(TCreature *Actor, const char *Param);
+void CreateFood(TCreature *Actor, int ManaPoints, int SoulPoints);
+void CreateArrows(TCreature *Actor, int ManaPoints, int SoulPoints, int ArrowType, int Count);
+void SummonCreature(TCreature *Actor, int ManaPoints, int Race, bool God);
+void SummonCreature(TCreature *Actor, int ManaPoints, const char *RaceName, bool God);
+void StartMonsterraid(TCreature *Actor, const char *RaidName);
+void RaiseDead(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints);
+void MassRaiseDead(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints, int Radius);
+void Heal(TCreature *Actor, int ManaPoints, int SoulPoints, int Amount);
+void MassHeal(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints, int Amount, int Radius);
+void HealFriend(TCreature *Actor, const char *TargetName, int ManaPoints, int SoulPoints, int Amount);
+void RefreshMana(TCreature *Actor, int ManaPoints, int SoulPoints, int Amount);
+void MagicGoStrength(TCreature *Actor, TCreature *Target, int ManaPoints, int SoulPoints, int Percent, int Duration);
+void Shielding(TCreature *Actor, int ManaPoints, int SoulPoints, int Duration);
+void NegatePoison(TCreature *Actor, TCreature *Target, int ManaPoints, int SoulPoints);
+void Enlight(TCreature *Actor, int ManaPoints, int SoulPoints, int Radius, int Duration);
+void Invisibility(TCreature *Actor, int ManaPoints, int SoulPoints, int Duration);
+void CancelInvisibility(TCreature *Actor, Object Target, int ManaPoints, int SoulPoints, int Radius);
+void CreatureIllusion(TCreature *Actor, int ManaPoints, int SoulPoints, const char *RaceName, int Duration);
+void ObjectIllusion(TCreature *Actor, int ManaPoints, int SoulPoints, Object Target, int Duration);
+void ChangeData(TCreature *Actor, const char *Param);
+void EnchantObject(TCreature *Actor, int ManaPoints, int SoulPoints, ObjectType OldType, ObjectType NewType);
+void Convince(TCreature *Actor, TCreature *Target);
+void Challenge(TCreature *Actor, int ManaPoints, int SoulPoints, int Radius);
+void FindPerson(TCreature *Actor, int ManaPoints, int SoulPoints, const char *TargetName);
+void GetPosition(TCreature *Actor);
+void GetQuestValue(TCreature *Actor, const char *Param);
+void SetQuestValue(TCreature *Actor, const char *Param1, const char *Param2);
+void ClearQuestValues(TCreature *Actor);
+void CreateKnowledge(TCreature *Actor, const char *Param1, const char *Param2);
+void ChangeProfession(TCreature *Actor, const char *Param);
+void EditGuests(TCreature *Actor);
+void EditSubowners(TCreature *Actor);
+void EditNameDoor(TCreature *Actor);
+void KickGuest(TCreature *Actor, const char *GuestName);
+void Notation(TCreature *Actor, const char *Name, const char *Comment);
+void NameLock(TCreature *Actor, const char *Name);
+void BanishAccount(TCreature *Actor, const char *Name, int Duration, const char *Reason);
+void DeleteAccount(TCreature *Actor, const char *Name, const char *Reason);
+void BanishCharacter(TCreature *Actor, const char *Name, int Duration, const char *Reason);
+void DeleteCharacter(TCreature *Actor, const char *Name, const char *Reason);
+void IPBanishment(TCreature *Actor, const char *Name, const char *Reason);
+void SetNameRule(TCreature *Actor, const char *Name);
+void KickPlayer(TCreature *Actor, const char *Name);
+void HomeTeleport(TCreature *Actor, const char *Name);
+
+// TODO(fusion): These are unsafe like strcpy.
+void GetMagicItemDescription(Object Obj, char *SpellString, int *MagicLevel);
+void GetSpellbook(uint32 CharacterID, char *Buffer);
+
+int GetSpellLevel(int SpellNr);
+
+int CheckForSpell(uint32 CreatureID, const char *Text);
+void UseMagicItem(uint32 CreatureID, Object Obj, Object Dest);
+void DrinkPotion(uint32 CreatureID, Object Obj);
-void CheckMana(TCreature *Creature, int ManaPoints, int SoulPoints, int Delay);
#endif //TIBIA_MAGIC_HH_