My Project
 
Loading...
Searching...
No Matches
mob.h
Go to the documentation of this file.
1#pragma once
2
3#include "char.h"
4#include "wndbag.h"
5#include "bpt.h"
6
7class Hero;
8
9class Mob :public Char{
10public:
11 class AiState
12 {
13 public:
14 AiState(Mob* m) :owner(m){}
16 virtual bool act(bool enemyInFOV, bool justAlerted) = 0;
17 virtual std::string status() = 0;
18 };
19
20 Mob();
21
22 virtual void storeInBundle(Bundle* bundle);
23 virtual void restoreFromBundle(Bundle* bundle);
24 virtual CharSprite* Sprite() = 0;
25
26 virtual void add(Buff* buff);
27 virtual void remove(Buff* buff);
28 virtual void move(int step);
29 virtual void onAttackComplete();
30 virtual int defenseSkill(Char* enemy);
31 virtual int defenseProc(Char* enemy, int damage);
32 void aggro(Char* ch);
33 virtual void notice();
34 virtual void beckon(int cell);
35 virtual void damage(int dmg, const std::string& src);
36 void yell(const std::string& str);
37 virtual std::string description() { return BPT::getText("lang.Mob_description"); }
38 virtual void destroy();
39
40 int exp();
41
42 virtual void die(const std::string& str);
43
44 bool hostile;
45
52protected:
53 static const String TXT_ECHO;
54 static const String TXT_NOTICE1;
55 static const String TXT_RAGE;
56 static const String TXT_EXP;
57
58 int target;
59
61
62 int EXP;
63 int maxLvl;
64
67 bool alerted;
68
69 static const float TIME_TO_WAKE_UP;
70
72
73 virtual bool act();
75 bool moveSprite(int from, int to);
76 virtual bool canAttack(Char* enemy);
77 virtual bool getCloser(int target);
78 virtual bool getFurther(int target);
79 virtual float attackDelay() { return 1.0f; }
80 virtual bool doAttack(Char* enemy);
81
82 class Fleeing :public AiState{
83 public:
85
86 static const std::string TAG;
87 virtual bool act(bool enemyInFOV, bool justAlerted);
88 virtual std::string status();
89 protected:
90 void nowhereToRun() {}
91 };
92private:
93 static const String TXT_DIED;
94
95 static const std::string STATE;
96 static const std::string TARGET;
97
98 class Sleeping :public AiState{
99 public:
100 Sleeping(Mob* m) :AiState(m){}
101 static const std::string TAG;
102
103 virtual bool act(bool enemyInFOV, bool justAlerted);
104 virtual std::string status();
105 };
106 class Wandering :public AiState{
107 public:
108 static const std::string TAG;
109 Wandering(Mob* m) :AiState(m){}
110
111 virtual bool act(bool enemyInFOV, bool justAlerted);
112 virtual std::string status();
113 };
114 class Hunting :public AiState{
115 public:
116 static const std::string TAG;
117
118 Hunting(Mob* m) :AiState(m){}
119
120 virtual bool act(bool enemyInFOV, bool justAlerted);
121 virtual std::string status();
122 };
123 class Passive :public AiState{
124 public:
125 static const std::string TAG;
126 Passive(Mob* m) :AiState(m){}
127
128 virtual bool act(bool enemyInFOV, bool justAlerted);
129 virtual std::string status();
130 };
131};
132
134
135typedef Mob* (*CreateMob)();
136
137class NPC :public Mob{
138public:
139 NPC();
140
141 virtual void beckon(int cell) { }
142 virtual void interact() = 0;
143protected:
144 void throwItem();
145};
146
147class Shopkeeper :public NPC{
148public:
149 Shopkeeper();
151
152 virtual CharSprite* Sprite();
153
154 virtual void damage(int dmg, const std::string& src) {
155 flee();
156 }
157
158 virtual void add(Buff* buff){ flee(); }
159
160 virtual boolean reset() {
161 return true;
162 }
163 virtual String description() {
164 return BPT::getText("lang.Shopkeeper_description");
165 }
166 static WndBag* sell();
167
168 virtual void interact(){ sell(); }
169protected:
170 virtual boolean act();
171
172 void flee();
173
174private:
176};
177
178class MirrorImage :public NPC{
179public:
180 int tier;
181
182private:
183 int attack;
184 int damage;
185
186 static const String TIER;
187 static const String ATTACK;
188 static const String DAMAGE;
189public:
190 virtual CharSprite* Sprite();
191 MirrorImage();
192
193 virtual void storeInBundle(Bundle* bundle);
194 virtual void restoreFromBundle(Bundle* bundle);
195 void duplicate(Hero* hero);
196 virtual int attackSkill(Char* target) {
197 return attack;
198 }
199 virtual int damageRoll() {
200 return damage;
201 }
202 virtual int attackProc(Char* enemy, int damage);
203 virtual String description() {
204 return BPT::getText("lang.MirrorImage_description");
205 //"This illusion bears a close resemblance to you, " +
206 //"but it's paler and twitches a little.";
207 }
208 virtual void interact();
210protected:
211 Char* chooseEnemy();
212};
static std::string getText(const std::string &key)
Definition bpt.cpp:26
Definition buff.h:10
Definition char.h:9
Char()
Definition char.cpp:34
Buff * buff(const std::string &c)
Definition char.cpp:413
Definition charsprite.h:13
Definition hero.h:18
virtual String description()
Definition mob.h:203
int tier
Definition mob.h:180
virtual CharSprite * Sprite()
Definition mob.cpp:642
CLASSNAME(MirrorImage)
virtual void interact()
Definition mob.cpp:700
void duplicate(Hero *hero)
Definition mob.cpp:665
MirrorImage()
Definition mob.cpp:634
virtual void storeInBundle(Bundle *bundle)
Definition mob.cpp:649
virtual int attackProc(Char *enemy, int damage)
Definition mob.cpp:672
virtual int attackSkill(Char *target)
Definition mob.h:196
virtual int damageRoll()
Definition mob.h:199
Char * chooseEnemy()
Definition mob.cpp:682
virtual void restoreFromBundle(Bundle *bundle)
Definition mob.cpp:657
Definition mob.h:12
virtual std::string status()=0
Mob * owner
Definition mob.h:15
virtual bool act(bool enemyInFOV, bool justAlerted)=0
AiState(Mob *m)
Definition mob.h:14
Fleeing(Mob *m)
Definition mob.h:84
void nowhereToRun()
Definition mob.h:90
virtual std::string status()
Definition mob.cpp:412
static const std::string TAG
Definition mob.h:86
Definition mob.h:9
virtual void beckon(int cell)
Definition mob.cpp:165
int target
Definition mob.h:58
void yell(const std::string &str)
Definition mob.cpp:176
virtual bool getFurther(int target)
Definition mob.cpp:341
static const String TXT_EXP
Definition mob.h:56
Char * enemy
Definition mob.h:65
static const String TXT_NOTICE1
Definition mob.h:54
static const String TXT_ECHO
Definition mob.h:53
AiState * HUNTING
Definition mob.h:47
virtual void damage(int dmg, const std::string &src)
Definition mob.cpp:375
bool alerted
Definition mob.h:67
virtual void notice()
Definition mob.cpp:160
virtual void die(const std::string &str)
Definition mob.cpp:218
virtual void destroy()
Definition mob.cpp:181
virtual float attackDelay()
Definition mob.h:79
int EXP
Definition mob.h:62
static const String TXT_RAGE
Definition mob.h:55
bool moveSprite(int from, int to)
Definition mob.cpp:301
bool hostile
Definition mob.h:44
AiState * PASSIVE
Definition mob.h:50
Char * chooseEnemy()
Definition mob.cpp:268
virtual bool canAttack(Char *enemy)
Definition mob.cpp:315
virtual bool doAttack(Char *enemy)
Definition mob.cpp:357
AiState * WANDERING
Definition mob.h:48
AiState * FLEEING
Definition mob.h:49
virtual bool act()
Definition mob.cpp:243
virtual void remove(Buff *buff)
Definition mob.cpp:120
virtual int defenseSkill(Char *enemy)
Definition mob.cpp:145
Mob()
Definition mob.cpp:17
virtual int defenseProc(Char *enemy, int damage)
Definition mob.cpp:150
virtual void move(int step)
Definition mob.cpp:129
AiState * SLEEPEING
Definition mob.h:46
int maxLvl
Definition mob.h:63
float lootChance
Definition mob.h:71
virtual void add(Buff *buff)
Definition mob.cpp:96
AiState * state
Definition mob.h:51
virtual CharSprite * Sprite()=0
virtual void onAttackComplete()
Definition mob.cpp:139
int _defenseSkill
Definition mob.h:60
virtual bool getCloser(int target)
Definition mob.cpp:320
int exp()
Definition mob.cpp:213
virtual std::string description()
Definition mob.h:37
void aggro(Char *ch)
static const float TIME_TO_WAKE_UP
Definition mob.h:69
virtual void restoreFromBundle(Bundle *bundle)
Definition mob.cpp:67
bool enemySeen
Definition mob.h:66
virtual void storeInBundle(Bundle *bundle)
Definition mob.cpp:40
NPC()
Definition mob.cpp:548
void throwItem()
Definition mob.cpp:557
virtual void beckon(int cell)
Definition mob.h:141
virtual void interact()=0
virtual void add(Buff *buff)
Definition mob.h:158
virtual void interact()
Definition mob.h:168
virtual CharSprite * Sprite()
Definition mob.cpp:577
virtual boolean act()
Definition mob.cpp:582
Shopkeeper()
Definition mob.cpp:571
virtual void damage(int dmg, const std::string &src)
Definition mob.h:154
virtual String description()
Definition mob.h:163
CLASSNAME(Shopkeeper)
virtual boolean reset()
Definition mob.h:160
static WndBag * sell()
Definition mob.cpp:614
void flee()
Definition mob.cpp:591
Definition wndbag.h:23
Definition wndbag.h:8
WndBag::Listener * itemSelector
Definition mob.cpp:632
#define FACTORY(name)
Definition typedefine.h:89
std::string String
Definition typedefine.h:8