29 #ifndef M_FIGHTING_CREATURE_H
30 #define M_FIGHTING_CREATURE_H
40 #define M_DEATHFX_DURATION 1.5 //sec
41 #define M_DEATHFX_OFFSET (2*M_UNIT)
42 #define M_DEATHFX_ROTATION 360
56 unsigned _nSelectedAttack;
57 M_BOOL _bAttack_Quick;
62 virtual void _hit_actions(
unsigned nDamage);
76 fxParticleSystem _fxBlood;
78 virtual unsigned _next_state(
unsigned nCurrentState );
80 inline void _animate_attacks();
91 virtual void respawn();
99 inline void attackSelect(
unsigned nAttack) {
100 ASSERT(nAttack < ((rpgSheet_Fighter*)_pSheet)->properties()->vAttacks.size(),
101 "Attack %d not registered", nAttack);
102 _nSelectedAttack = nAttack;
106 ASSERT(_nSelectedAttack < ((rpgSheet_Fighter*)_pSheet)->properties()->vAttacks.size(),
107 "Attack %d not registered", _nSelectedAttack);
108 return ((rpgSheet_Fighter*)_pSheet)->modAttack( _nSelectedAttack );
111 virtual void attackInitiate(M_BOOL bQuick = M_FALSE);
114 inline M_BOOL attackIsCharged() {
return _bAttack; };
115 inline M_BOOL attackIsQuick() {
return (_bAttack && _bAttack_Quick); }
131 inline void attack(
laFightingCreature* pTarget ) { attack(_nSelectedAttack, pTarget); }
139 inline unsigned getHP() {
return ((rpgSheet_Fighter*)_pSheet)->properties()->nHP; }
140 inline unsigned getMaxHP() {
return ((rpgSheet_Fighter*)_pSheet)->properties()->nHP_Max; }
142 inline M_BOOL isAlive() {
return ((rpgSheet_Fighter*)_pSheet)->isAlive(); }
143 inline M_BOOL isImmune() {
return !(_ttHitImmunity.isElapsed()); }
147 virtual void move(
int direction){
149 if(direction && (direction != getMoveDirection())) attackStop();
152 virtual M_BOOL jump(){
154 return laMovingCreature::jump();
159 virtual void animate(laTimer &t);
163 virtual void _draw_positioned_rotated(
laRenderer *r);
164 virtual void _drawFx_positioned(
laRenderer *r);
Abstract RPG Properties Sheet.
Virtual interface for the Engine graphics renderer.
virtual void move(int direction)