ScummVM API documentation
spells.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef XEEN_SPELLS_H
23 #define XEEN_SPELLS_H
24 
25 #include "common/scummsys.h"
26 #include "common/str-array.h"
27 
28 namespace MM {
29 namespace Xeen {
30 
31 class XeenEngine;
32 class Character;
33 
34 enum MagicSpell {
35  MS_AcidSpray = 0, MS_Awaken = 1, MS_BeastMaster = 2, MS_Bless = 3,
36  MS_Clairvoyance = 4, MS_ColdRay = 5, MS_CreateFood = 6,
37  MS_CureDisease = 7, MS_CureParalysis = 8, MS_CurePoison = 9,
38  MS_CureWounds = 10, MS_DancingSword = 11, MS_DayOfProtection = 12,
39  MS_DayOfSorcery = 13, MS_DeadlySwarm = 14, MS_DetectMonster = 15,
40  MS_DivineIntervention = 16, MS_DragonSleep = 17, MS_ElementalStorm = 18,
41  MS_EnchantItem = 19, MS_EnergyBlast = 20, MS_Etheralize = 21,
42  MS_FantasticFreeze = 22, MS_FieryFlail = 23, MS_FingerOfDeath = 24,
43  MS_Fireball = 25, MS_FirstAid = 26, MS_FlyingFist = 27,
44  MS_FrostBite = 28, MS_GolemStopper = 29, MS_Heroism = 30,
45  MS_HolyBonus = 31, MS_HolyWord = 32, MS_Hynotize = 33,
46  MS_IdentifyMonster = 34, MS_Implosion = 35, MS_Incinerate = 36,
47  MS_Inferno = 37, MS_InsectSpray = 38, MS_ItemToGold = 39,
48  MS_Jump = 40, MS_Levitate = 41, MS_Light = 42, MS_LightningBolt = 43,
49  MS_LloydsBeacon = 44, MS_MagicArrow = 45, MS_MassDistortion = 46,
50  MS_MegaVolts = 47, MS_MoonRay = 48, MS_NaturesCure = 49, MS_Pain = 50,
51  MS_PoisonVolley = 51, MS_PowerCure = 52, MS_PowerShield = 53,
52  MS_PrismaticLight = 54, MS_ProtFromElements = 55, MS_RaiseDead = 56,
53  MS_RechargeItem = 57, MS_Resurrection = 58, MS_Revitalize = 59,
54  MS_Shrapmetal = 60, MS_Sleep = 61, MS_Sparks = 62, MS_StarBurst = 63,
55  MS_StoneToFlesh = 64, MS_SunRay = 65, MS_SuperShelter = 66,
56  MS_SuppressDisease = 67, MS_SuppressPoison = 68, MS_Teleport = 69,
57  MS_TimeDistortion = 70, MS_TownPortal = 71, MS_ToxicCloud = 72,
58  MS_TurnUndead = 73, MS_WalkOnWater = 74, MS_WizardEye = 75,
59  NO_SPELL = 76, TOTAL_SPELLS = 76
60 };
61 
62 class Spells {
63 private:
64  XeenEngine *_vm;
65 
66  void load();
67 
68  void executeSpell(MagicSpell spellId);
69 
73  void spellFailed();
74 
75  // Spell list
76  void acidSpray();
77  void awaken();
78  void beastMaster();
79  void bless();
80  void clairvoyance();
81  void coldRay();
82  void createFood();
83  void cureDisease();
84  void cureParalysis();
85  void curePoison();
86  void cureWounds();
87  void dancingSword();
88  void dayOfProtection();
89  void dayOfSorcery();
90  void deadlySwarm();
91  void detectMonster();
92  void divineIntervention();
93  void dragonSleep();
94  void elementalStorm();
95  void enchantItem();
96  void energyBlast();
97  void etherialize();
98  void fantasticFreeze();
99  void fieryFlail();
100  void fingerOfDeath();
101  void fireball();
102  void firstAid();
103  void flyingFist();
104  void frostbite();
105  void golemStopper();
106  void heroism();
107  void holyBonus();
108  void holyWord();
109  void hypnotize();
110  void identifyMonster();
111  void implosion();
112  void incinerate();
113  void inferno();
114  void insectSpray();
115  void itemToGold();
116  void jump();
117  void levitate();
118  void light();
119  void lightningBolt();
120  void lloydsBeacon();
121  void magicArrow();
122  void massDistortion();
123  void megaVolts();
124  void moonRay();
125  void naturesCure();
126  void pain();
127  void poisonVolley();
128  void powerCure();
129  void powerShield();
130  void prismaticLight();
131  void protectionFromElements();
132  void raiseDead();
133  void rechargeItem();
134  void resurrection();
135  void revitalize();
136  void shrapMetal();
137  void sleep();
138  void sparks();
139  void starBurst();
140  void stoneToFlesh();
141  void sunRay();
142  void superShelter();
143  void suppressDisease();
144  void suppressPoison();
145  void teleport();
146  void timeDistortion();
147  void townPortal();
148  void toxicCloud();
149  void turnUndead();
150  void walkOnWater();
151  void wizardEye();
152 
153  void frostbite2();
154 public:
155  Common::StringArray _spellNames;
156  int _lastCaster;
157 public:
158  Spells(XeenEngine *vm);
159 
160  int calcSpellCost(int spellId, int expenseFactor) const;
161 
162  int calcSpellPoints(int spellId, int expenseFactor) const;
163 
167  void castItemSpell(int itemSpellId);
168 
172  int castSpell(Character *c, MagicSpell spellId);
173 
178  int subSpellCost(Character &c, int spellId);
179 
184  void addSpellCost(Character &c, int spellId);
185 };
186 
187 } // End of namespace Xeen
188 } // End of namespace MM
189 
190 #endif
int subSpellCost(Character &c, int spellId)
void addSpellCost(Character &c, int spellId)
void castItemSpell(int itemSpellId)
int castSpell(Character *c, MagicSpell spellId)
Definition: xeen.h:93
Definition: character.h:106
Definition: detection.h:27
Definition: spells.h:62