Restored enemy behaviour.
This commit is contained in:
parent
20404fd6eb
commit
c22c09e78f
|
@ -25,7 +25,6 @@ static void die(void);
|
|||
static void die2(void);
|
||||
static void returnToStart(void);
|
||||
static void lookForPlayer(void);
|
||||
static void walk(void);
|
||||
static void animate(void);
|
||||
|
||||
void initEvilBlob(Unit *u)
|
||||
|
@ -38,7 +37,8 @@ void initEvilBlob(Unit *u)
|
|||
|
||||
superAnimate = u->animate;
|
||||
|
||||
u->walk = walk;
|
||||
u->action = lookForPlayer;
|
||||
u->walk = lookForPlayer;
|
||||
u->animate = animate;
|
||||
u->die = die;
|
||||
}
|
||||
|
@ -229,7 +229,7 @@ static void lookForPlayer(void)
|
|||
patrol();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
r = randF();
|
||||
if (u->isMissionTarget)
|
||||
{
|
||||
|
@ -258,11 +258,6 @@ static void lookForPlayer(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void walk(void)
|
||||
{
|
||||
self->action = lookForPlayer;
|
||||
}
|
||||
|
||||
static void die(void)
|
||||
{
|
||||
Unit *u;
|
||||
|
@ -273,6 +268,7 @@ static void die(void)
|
|||
|
||||
u->action = die2;
|
||||
|
||||
u->facing = FACING_DIE;
|
||||
u->thinkTime = 0;
|
||||
u->spriteTime = 0;
|
||||
u->spriteFrame = 0;
|
||||
|
|
|
@ -20,9 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "eyeDroid.h"
|
||||
|
||||
static void walk(void);
|
||||
static void die(void);
|
||||
static void tick(void);
|
||||
static void lookForPlayer(void);
|
||||
static void touch(Entity *other);
|
||||
static void (*superTick)(void);
|
||||
static void (*superTouch)(Entity *other);
|
||||
|
@ -34,7 +34,8 @@ void initEyeDroid(Unit *u)
|
|||
superTick = u->tick;
|
||||
superTouch = u->touch;
|
||||
|
||||
u->walk = walk;
|
||||
u->walk = lookForPlayer;
|
||||
u->action = lookForPlayer;
|
||||
u->tick = tick;
|
||||
u->touch = touch;
|
||||
u->die = die;
|
||||
|
@ -114,6 +115,7 @@ static void die(void)
|
|||
|
||||
u->dx = (randF() - randF()) * 3;
|
||||
|
||||
u->facing = FACING_DIE;
|
||||
u->spriteTime = 0;
|
||||
u->spriteFrame = 0;
|
||||
|
||||
|
@ -242,8 +244,3 @@ static void lookForPlayer(void)
|
|||
|
||||
u->thinkTime = rrnd(FPS / 2, FPS);
|
||||
}
|
||||
|
||||
static void walk(void)
|
||||
{
|
||||
self->action = lookForPlayer;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
static void tick(void);
|
||||
static void init(void);
|
||||
static void attack(void);
|
||||
static void applyDamage(int damage);
|
||||
static int canFire(Entity *target);
|
||||
static SDL_Rect *getCurrentSprite(void);
|
||||
static void preFire(void);
|
||||
|
@ -57,11 +58,11 @@ Unit *createUnit(void)
|
|||
|
||||
u->init = init;
|
||||
u->tick = tick;
|
||||
u->action = lookForPlayer;
|
||||
u->preFire = preFire;
|
||||
u->attack = attack;
|
||||
u->canFire = canFire;
|
||||
u->getCurrentSprite = getCurrentSprite;
|
||||
u->applyDamage = applyDamage;
|
||||
u->load = load;
|
||||
u->save = save;
|
||||
|
||||
|
@ -140,10 +141,41 @@ static void tick(void)
|
|||
}
|
||||
}
|
||||
|
||||
void unitReappear(void)
|
||||
static void reappear(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void applyDamage(int damage)
|
||||
{
|
||||
Unit *u;
|
||||
|
||||
u = (Unit*)self;
|
||||
|
||||
if (u->health < 0)
|
||||
{
|
||||
u->health = 0;
|
||||
u->alive = ALIVE_ALIVE;
|
||||
}
|
||||
|
||||
u->health -= damage;
|
||||
|
||||
if (u->health > 0)
|
||||
{
|
||||
u->thinkTime = 0;
|
||||
|
||||
u->facing = u->x < world.bob->x ? FACING_RIGHT : FACING_LEFT;
|
||||
|
||||
if (u->isMissionTarget && rand() % 100 < 10)
|
||||
{
|
||||
u->action = reappear;
|
||||
u->flags |= EF_GONE;
|
||||
u->thinkTime = rand() % FPS;
|
||||
addTeleportStars(self);
|
||||
playSound(SND_APPEAR, CH_ANY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void attack(void)
|
||||
{
|
||||
Unit *u;
|
||||
|
@ -215,12 +247,12 @@ static void preFire(void)
|
|||
}
|
||||
|
||||
u->attack();
|
||||
|
||||
|
||||
u->shotsToFire--;
|
||||
|
||||
if (u->shotsToFire == 0)
|
||||
{
|
||||
u->walk();
|
||||
u->action = u->walk;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,8 @@ extern void fireSpread(Entity *e, int n);
|
|||
extern void fireLaser(Entity *e);
|
||||
extern void fireShotgun(Entity *e);
|
||||
extern void fireMissile(Entity *e);
|
||||
extern void addTeleportStars(Entity *e);
|
||||
extern void playSound(int snd, int ch);
|
||||
|
||||
extern Entity *self;
|
||||
extern World world;
|
||||
|
|
Loading…
Reference in New Issue