From 79958fa79a2736a21a988f3ba9dc913a6fc769a4 Mon Sep 17 00:00:00 2001 From: Steve Date: Thu, 15 Feb 2018 07:49:28 +0000 Subject: [PATCH] Fixed cannon dying. --- src/entities/cannons/cannon.c | 28 ++++++++++++++++++++++++++++ src/entities/cannons/cannon.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/src/entities/cannons/cannon.c b/src/entities/cannons/cannon.c index 72f374a..3cd5848 100644 --- a/src/entities/cannons/cannon.c +++ b/src/entities/cannons/cannon.c @@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. static void applyDamage(int damage); static void walk(void); static void die(void); +static void die2(void); static void animate(void); static int canFire(Entity *target); static void preFire(void); @@ -33,6 +34,8 @@ Entity *initCannon(void) u = createUnit(); + u->unitType = "Cannon"; + u->type = ET_ENEMY; u->sprite[FACING_LEFT] = getSprite("CannonLeft"); @@ -73,6 +76,31 @@ static void applyDamage(int damage) } static void die(void) +{ + Unit *u; + + u = (Unit*)self; + + u->flags |= EF_BOUNCES | EF_ALWAYS_PROCESS; + + u->action = die2; + + u->facing = FACING_DIE; + u->thinkTime = 0; + u->spriteTime = 0; + u->spriteFrame = 0; + + if (u->environment == ENV_AIR) + { + u->dy = -9; + } + + u->dx = (randF() - randF()) * 5; + + u->flags &= ~EF_HALT_AT_EDGE; +} + +static void die2(void) { Unit *u; int mx, my; diff --git a/src/entities/cannons/cannon.h b/src/entities/cannons/cannon.h index d11b5d0..7287e1b 100644 --- a/src/entities/cannons/cannon.h +++ b/src/entities/cannons/cannon.h @@ -30,6 +30,8 @@ extern void fireTriggers(char *targetName); extern void dropCarriedItem(void); extern void addScorchDecal(int x, int y); extern Unit *createUnit(void); +extern double randF(void); +extern void playSound(int snd, int ch); extern Dev dev; extern Entity *self;