My Project
 
Loading...
Searching...
No Matches
scroll.h
Go to the documentation of this file.
1#pragma once
2
3#include "item.h"
4#include "typedefine.h"
5#include "itemstatushandler.h"
6
7class Scroll :public Item{
8private:
9 static const String TXT_BLINDED;
10 static String _scrolls[];
11 static std::vector<String> scrolls;
12
13 static String _runes[];
14 static std::vector<String> runes;
15
16 static int _images[];
17 static std::vector<int> images;
18
19 static ItemStatusHandler* handler;
20
21 String rune;
22public:
23 static const String AC_READ;
24
25 Scroll();
26
27 static void initLabels();
28 static void save(Bundle* bundle);
29 static void restore(Bundle* bundle);
30
31 virtual void actions(Hero* hero, std::vector<std::string>& actions);
32 virtual void execute(Hero* hero, const std::string action);
33
34 virtual bool isKnown();
35 void setKnown();
36
37 virtual Item* identify();
38 virtual std::string Name() {
39 return isKnown() ? name : "scroll \"" + rune + "\"";
40 }
41 virtual String info();
42 virtual bool isUpgradable() {
43 return false;
44 }
45 virtual boolean isIdentified() {
46 return isKnown();
47 }
48 static std::set<std::string> getKnown();
49 static std::set<std::string> getUnknown() {
50 return handler->unknown();
51 }
52 static boolean allKnown() {
53 return handler->known.size() == scrolls.size();
54 }
55 virtual int price() {
56 return 15 * quantity;
57 }
58protected:
59 static const float TIME_TO_READ;
60
61 virtual void doRead() = 0;
62
63 void readAnimation();
64};
65
66class InventoryScroll :public Scroll{
67protected:
68 static boolean identifiedByUse;
70 //WndBag.Mode mode = WndBag.Mode.ALL;
71
72 virtual void doRead();
73 virtual void onItemSelected(Item* item) = 0;
74private:
75 static const String TXT_WARNING;
76 static const String TXT_YES;
77 static const String TXT_NO;
78
79 void confirmCancelation();
80public:
82};
83
85public:
87
88 virtual String desc() {
89 return
90 std::string("Permanently reveals all of the secrets of a single item.");
91 }
92 virtual int price() {
93 return isKnown() ? 30 * quantity : InventoryScroll::price();
94 }
95
96 virtual std::string getClassName() { return "ScrollOfIdentify"; }
97 static Item* Create(){ return new ScrollOfIdentify(); }
98protected:
99 virtual void onItemSelected(Item* item);
100};
101
103public:
105
106 virtual String desc() {
107 return
108 std::string("When this scroll is read, an image of crystal clarity will be etched into your memory, ") +
109 std::string("alerting you to the precise layout of the level and revealing all hidden secrets. ") +
110 std::string("The locations of items and creatures will remain unknown.");
111 }
112 virtual int price() {
113 return isKnown() ? 25 * quantity : Scroll::price();
114 }
115 static void discover(int cell);
116 virtual std::string getClassName() { return "ScrollOfMagicMapping"; }
117 static Item* Create(){ return new ScrollOfMagicMapping(); }
118protected:
119 virtual void doRead();
120private:
121 static const String TXT_LAYOUT;
122};
123
125public:
127
128 virtual String desc() {
129 return
130 std::string("The raw magical power bound up in this parchment will, when released, ") +
131 std::string("recharge all of the reader's wands to full power.");
132 }
133
134 static void charge(Hero* hero);
135 virtual int price() {
136 return isKnown() ? 40 * quantity : Scroll::price();
137 }
138 virtual std::string getClassName() { return "ScrollOfRecharging"; }
139 static Item* Create(){ return new ScrollOfRecharging(); }
140protected:
141 virtual void doRead();
142};
143
145public:
147
148 virtual String desc() {
149 return
150 std::string("The incantation on this scroll will instantly strip from ") +
151 std::string("the reader's weapon, armor, rings and carried items any evil ") +
152 std::string("enchantments that might prevent the wearer from removing them.");
153 }
154
155 static boolean uncurse(Hero* hero, const std::vector<Item*>& items);
156 virtual int price() {
157 return isKnown() ? 30 * quantity : Scroll::price();
158 }
159 virtual std::string getClassName() { return "ScrollOfRemoveCurse"; }
160 static Item* Create(){ return new ScrollOfRemoveCurse(); }
161protected:
162 virtual void doRead();
163private:
164 static const String TXT_PROCCED;
165 static const String TXT_NOT_PROCCED;
166};
167
169public:
170 static const String TXT_TELEPORTED;
171
173
175
176 static void teleportHero(Hero* hero);
177
178 virtual String desc() {
179 return
180 std::string("The spell on this parchment instantly transports the reader ") +
181 std::string("to a random location on the dungeon level. It can be used ") +
182 std::string("to escape a dangerous situation, but the unlucky reader might ") +
183 std::string("find himself in an even more dangerous place.");
184 }
185 virtual int price() {
186 return isKnown() ? 40 * quantity : Scroll::price();
187 }
188 virtual std::string getClassName() { return "ScrollOfTeleportation"; }
189 static Item* Create(){ return new ScrollOfTeleportation(); }
190protected:
191 virtual void doRead();
192};
193
195public:
197
198 virtual String desc() {
199 return
200 std::string("When read aloud, this scroll will unleash a challenging roar ") +
201 std::string("that will awaken all monsters and alert them to the reader's location.");
202 }
203 virtual std::string getClassName() { return "ScrollOfChallenge"; }
204 static Item* Create(){ return new ScrollOfChallenge(); }
205protected:
206 virtual void doRead();
207};
208
209class ScrollOfTerror :public Scroll{
210public:
212
213 virtual String desc() {
214 return
215 std::string("A flash of red light will overwhelm all creatures in your field of view with terror, ") +
216 std::string("and they will turn and flee. Attacking a fleeing enemy will dispel the effect.");
217 }
218 virtual int price() {
219 return isKnown() ? 50 * quantity : Scroll::price();
220 }
221 virtual std::string getClassName() { return "ScrollOfTerror"; }
222 static Item* Create(){ return new ScrollOfTerror(); }
223protected:
224 virtual void doRead();
225};
226
228public:
230
231 virtual String desc() {
232 return
233 std::string("A soothing melody will put all creatures in your field of view into a deep sleep, ") +
234 std::string("giving you a chance to flee or make a surprise attack on them.");
235 }
236 virtual int price() {
237 return isKnown() ? 50 * quantity : Scroll::price();
238 }
239 virtual std::string getClassName() { return "ScrollOfLullaby"; }
240 static Item* Create(){ return new ScrollOfLullaby(); }
241protected:
242 virtual void doRead();
243};
244
246public:
248
249 virtual String desc() {
250 return
251 std::string("This scroll contains destructive energy, that can be psionically channeled to inflict a ") +
252 std::string("massive damage to all creatures within a field of view. An accompanying flash of light will ") +
253 std::string("temporarily blind everybody in the area of effect including the reader of the scroll.");
254 }
255 virtual int price() {
256 return isKnown() ? 80 * quantity : Scroll::price();
257 }
258 virtual std::string getClassName() { return "ScrollOfPsionicBlast"; }
259 static Item* Create(){ return new ScrollOfPsionicBlast(); }
260protected:
261 virtual void doRead();
262};
263
265private:
266 static const int NIMAGES = 3;
267public:
269 virtual String desc() {
270 return
271 "The incantation on this scroll will create illusionary twins of the reader, which will chase his enemies.";
272 }
273 virtual std::string getClassName() { return "ScrollOfMirrorImage"; }
274 static Item* Create(){ return new ScrollOfMirrorImage(); }
275protected:
276 virtual void doRead();
277};
278
280private:
281 static const String TXT_LOOKS_BETTER;
282public:
284
285 static void upgrade(Hero* hero);
286
287 virtual String desc() {
288 return
289 std::string("This scroll will upgrade a single item, improving its quality. A wand will ") +
290 std::string("increase in power and in number of charges; a weapon will inflict more damage ") +
291 std::string("or find its mark more frequently; a suit of armor will deflect additional blows; ") +
292 std::string("the effect of a ring on its wearer will intensify. Weapons and armor will also ") +
293 std::string("require less strength to use, and any curses on the item will be lifted.");
294 }
295 virtual std::string getClassName() { return "ScrollOfUpgrade"; }
296 static Item* Create(){ return new ScrollOfUpgrade(); }
297protected:
298 virtual void onItemSelected(Item* item);
299};
300
302private:
303 static const String TXT_GLOWS;
304
305protected:
306 virtual void onItemSelected(Item* item);
307public:
309
310 virtual String desc() {
311 return
312 std::string("This scroll is able to imbue a weapon or an armor ") +
313 std::string("with a random enchantment, granting it a special power.");
314 }
315 virtual std::string getClassName() { return "ScrollOfEnchantment"; }
316 static Item* Create(){ return new ScrollOfEnchantment(); }
317};
Definition hero.h:18
virtual void onItemSelected(Item *item)=0
String inventoryTitle
Definition scroll.h:69
static boolean identifiedByUse
Definition scroll.h:68
virtual void doRead()
Definition scroll.cpp:157
InventoryScroll()
Definition scroll.cpp:152
Definition item.h:15
virtual Item * upgrade()
Definition item.h:124
Item()
Definition item.cpp:65
virtual int price()
Definition item.h:94
std::string name
Definition item.h:48
int quantity
Definition item.h:62
Definition itemstatushandler.h:10
virtual String info()
Definition scroll.cpp:126
virtual bool isUpgradable()
Definition scroll.h:42
static const String AC_READ
Definition scroll.h:23
static const float TIME_TO_READ
Definition scroll.h:59
virtual Item * identify()
Definition scroll.cpp:120
void setKnown()
Definition scroll.cpp:111
static std::set< std::string > getUnknown()
Definition scroll.h:49
virtual void doRead()=0
virtual int price()
Definition scroll.h:55
static void restore(Bundle *bundle)
Definition scroll.cpp:73
virtual void execute(Hero *hero, const std::string action)
Definition scroll.cpp:84
virtual std::string Name()
Definition scroll.h:38
virtual bool isKnown()
Definition scroll.cpp:106
virtual void actions(Hero *hero, std::vector< std::string > &actions)
Definition scroll.cpp:78
virtual boolean isIdentified()
Definition scroll.h:45
void readAnimation()
Definition scroll.cpp:139
static void initLabels()
Definition scroll.cpp:63
static std::set< std::string > getKnown()
Definition scroll.cpp:134
Scroll()
Definition scroll.cpp:54
static void save(Bundle *bundle)
Definition scroll.cpp:68
static boolean allKnown()
Definition scroll.h:52
ScrollOfChallenge()
Definition scroll.cpp:399
virtual String desc()
Definition scroll.h:198
static Item * Create()
Definition scroll.h:204
virtual void doRead()
Definition scroll.cpp:404
virtual std::string getClassName()
Definition scroll.h:203
virtual String desc()
Definition scroll.h:310
virtual std::string getClassName()
Definition scroll.h:315
ScrollOfEnchantment()
Definition scroll.cpp:628
static Item * Create()
Definition scroll.h:316
virtual void onItemSelected(Item *item)
Definition scroll.cpp:606
ScrollOfIdentify()
Definition scroll.cpp:190
virtual String desc()
Definition scroll.h:88
virtual std::string getClassName()
Definition scroll.h:96
static Item * Create()
Definition scroll.h:97
virtual int price()
Definition scroll.h:92
virtual void onItemSelected(Item *item)
Definition scroll.cpp:197
virtual int price()
Definition scroll.h:236
virtual std::string getClassName()
Definition scroll.h:239
virtual void doRead()
Definition scroll.cpp:475
static Item * Create()
Definition scroll.h:240
virtual String desc()
Definition scroll.h:231
ScrollOfLullaby()
Definition scroll.cpp:470
static void discover(int cell)
Definition scroll.cpp:212
virtual String desc()
Definition scroll.h:106
virtual int price()
Definition scroll.h:112
static Item * Create()
Definition scroll.h:117
virtual void doRead()
Definition scroll.cpp:219
ScrollOfMagicMapping()
Definition scroll.cpp:207
virtual std::string getClassName()
Definition scroll.h:116
virtual std::string getClassName()
Definition scroll.h:273
static Item * Create()
Definition scroll.h:274
virtual void doRead()
Definition scroll.cpp:540
ScrollOfMirrorImage()
Definition scroll.cpp:535
virtual String desc()
Definition scroll.h:269
static Item * Create()
Definition scroll.h:259
virtual int price()
Definition scroll.h:255
virtual String desc()
Definition scroll.h:249
virtual std::string getClassName()
Definition scroll.h:258
ScrollOfPsionicBlast()
Definition scroll.cpp:508
virtual void doRead()
Definition scroll.cpp:513
static Item * Create()
Definition scroll.h:139
ScrollOfRecharging()
Definition scroll.cpp:265
virtual void doRead()
Definition scroll.cpp:275
virtual String desc()
Definition scroll.h:128
virtual std::string getClassName()
Definition scroll.h:138
virtual int price()
Definition scroll.h:135
static void charge(Hero *hero)
Definition scroll.cpp:270
virtual void doRead()
Definition scroll.cpp:318
static Item * Create()
Definition scroll.h:160
virtual int price()
Definition scroll.h:156
ScrollOfRemoveCurse()
Definition scroll.cpp:295
virtual String desc()
Definition scroll.h:148
virtual std::string getClassName()
Definition scroll.h:159
static boolean uncurse(Hero *hero, const std::vector< Item * > &items)
Definition scroll.cpp:300
virtual String desc()
Definition scroll.h:178
static const String TXT_NO_TELEPORT
Definition scroll.h:172
static const String TXT_TELEPORTED
Definition scroll.h:170
virtual void doRead()
Definition scroll.cpp:388
virtual std::string getClassName()
Definition scroll.h:188
static void teleportHero(Hero *hero)
Definition scroll.cpp:361
static Item * Create()
Definition scroll.h:189
virtual int price()
Definition scroll.h:185
ScrollOfTeleportation()
Definition scroll.cpp:356
ScrollOfTerror()
Definition scroll.cpp:433
virtual std::string getClassName()
Definition scroll.h:221
virtual int price()
Definition scroll.h:218
virtual void doRead()
Definition scroll.cpp:438
virtual String desc()
Definition scroll.h:213
static Item * Create()
Definition scroll.h:222
virtual void onItemSelected(Item *item)
Definition scroll.cpp:588
ScrollOfUpgrade()
Definition scroll.cpp:576
virtual std::string getClassName()
Definition scroll.h:295
virtual String desc()
Definition scroll.h:287
static Item * Create()
Definition scroll.h:296
std::string String
Definition typedefine.h:8