Added swapSelf() to handle current entity handling.
This commit is contained in:
parent
c3ca4a39e2
commit
d10356c42c
|
@ -55,11 +55,15 @@ void addExplosion(float x, float y, int radius, Entity *owner)
|
|||
{
|
||||
if (e->flags & EF_BOMB_SHIELD)
|
||||
{
|
||||
swapSelf(e);
|
||||
e->applyDamage(2);
|
||||
swapSelf(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
swapSelf(e);
|
||||
e->applyDamage((int) power);
|
||||
swapSelf(e);
|
||||
}
|
||||
|
||||
if (e->type == ET_BOB)
|
||||
|
|
|
@ -26,3 +26,6 @@ extern void addExplosionEffect(int x, int y, int dx, int dy);
|
|||
extern void playSound(int snd, int ch);
|
||||
extern Entity **getAllEntsWithin(int x, int y, int w, int h, Entity *ignore);
|
||||
extern int getDistance(int x1, int y1, int x2, int y2);
|
||||
extern void swapSelf(Entity *e);
|
||||
|
||||
extern Entity *self;
|
||||
|
|
|
@ -97,7 +97,9 @@ static void touch(Entity *other)
|
|||
}
|
||||
else if (other != b->owner && (!(other->flags & EF_IGNORE_BULLETS)) && b->owner->type != other->type)
|
||||
{
|
||||
swapSelf(other);
|
||||
other->applyDamage(b->damage);
|
||||
swapSelf(other);
|
||||
|
||||
if (other->flags & EF_EXPLODES)
|
||||
{
|
||||
|
|
|
@ -25,6 +25,7 @@ extern void initEntity(Entity *e);
|
|||
extern void addSmallFleshChunk(float x, float y);
|
||||
extern void addSparkParticles(float x, float y);
|
||||
extern Bullet *createBaseBullet(Unit *owner);
|
||||
extern void swapSelf(Entity *e);
|
||||
|
||||
extern Camera camera;
|
||||
extern Entity *self;
|
||||
|
|
|
@ -87,7 +87,9 @@ static void touch(Entity *other)
|
|||
|
||||
if (!(other->flags & EF_BOMB_SHIELD))
|
||||
{
|
||||
swapSelf(other);
|
||||
other->applyDamage(25);
|
||||
swapSelf(other);
|
||||
}
|
||||
|
||||
explode();
|
||||
|
|
|
@ -26,6 +26,7 @@ extern void addSmallFleshChunk(float x, float y);
|
|||
extern void addSparkParticles(float x, float y);
|
||||
extern void addExplosion(float x, float y, int radius, Entity *owner);
|
||||
extern void addScorchDecal(int x, int y);
|
||||
extern void swapSelf(Entity *e);
|
||||
|
||||
extern Entity *self;
|
||||
extern Game game;
|
||||
|
|
|
@ -68,7 +68,9 @@ static void touch(Entity *other)
|
|||
playSound(SND_FLESH_HIT, CH_ANY);
|
||||
}
|
||||
|
||||
swapSelf(other);
|
||||
other->applyDamage(2);
|
||||
swapSelf(other);
|
||||
|
||||
if (b->owner->type == world.bob->type)
|
||||
{
|
||||
|
|
|
@ -26,6 +26,7 @@ extern void initLaser(Bullet *b);
|
|||
extern void addSmallFleshChunk(float x, float y);
|
||||
extern void addSparkParticles(float x, float y);
|
||||
extern void stunBob(void);
|
||||
extern void swapSelf(Entity *e);
|
||||
|
||||
extern Entity *self;
|
||||
extern Game game;
|
||||
|
|
|
@ -119,12 +119,16 @@ static void touch(Entity *other)
|
|||
|
||||
if (t->offTime != 0)
|
||||
{
|
||||
swapSelf(other);
|
||||
other->applyDamage((int) (other->healthMax / 4));
|
||||
swapSelf(other);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* instant kill */
|
||||
swapSelf(other);
|
||||
other->applyDamage((int) other->health);
|
||||
swapSelf(other);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ extern int rrnd(int low, int high);
|
|||
extern void stunBob(void);
|
||||
extern void addSparkParticles(float x, float y);
|
||||
extern void addSmallFleshChunk(float x, float y);
|
||||
extern void swapSelf(Entity *e);
|
||||
|
||||
extern Entity *self;
|
||||
extern World world;
|
||||
|
|
|
@ -982,3 +982,19 @@ static void addTouched(Entity *e)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void swapSelf(Entity *e)
|
||||
{
|
||||
static Entity *oldSelf = NULL;
|
||||
|
||||
if (!oldSelf)
|
||||
{
|
||||
oldSelf = self;
|
||||
self = e;
|
||||
}
|
||||
else
|
||||
{
|
||||
self = oldSelf;
|
||||
oldSelf = NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue