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
28namespace MM {
29namespace Xeen {
30
31class XeenEngine;
32class Character;
33
34enum 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
62class Spells {
63private:
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();
154public:
155 Common::StringArray _spellNames;
156 int _lastCaster;
157public:
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
Definition: character.h:106
Definition: spells.h:62
int castSpell(Character *c, MagicSpell spellId)
void castItemSpell(int itemSpellId)
void addSpellCost(Character &c, int spellId)
int subSpellCost(Character &c, int spellId)
Definition: xeen.h:107
Definition: detection.h:27