enemy.unbombable, bombs hurt bosses

This commit is contained in:
laochailan 2012-07-28 19:45:51 +02:00
parent 5dac665402
commit c5eba2156d
3 changed files with 14 additions and 3 deletions

View file

@ -13,7 +13,7 @@
#include "projectile.h"
#include "list.h"
void create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rule, EnemyLogicRule logic_rule,
Enemy *create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rule, EnemyLogicRule logic_rule,
complex a1, complex a2, complex a3, complex a4) {
Enemy *e = (Enemy *)create_element((void **)enemies, sizeof(Enemy));
e->moving = 0;
@ -24,6 +24,7 @@ void create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rul
e->pos0 = pos;
e->hp = hp;
e->unbombable = 0;
e->logic_rule = logic_rule;
e->draw_rule = draw_rule;
@ -34,6 +35,8 @@ void create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rul
e->args[3] = a4;
e->logic_rule(e, EVENT_BIRTH);
return e;
}
void _delete_enemy(void **enemies, void* enemy) {

View file

@ -40,6 +40,7 @@ struct Enemy {
EnemyDrawRule draw_rule;
int hp;
int unbombable;
complex args[RULE_ARGC];
};
@ -49,7 +50,7 @@ struct Enemy {
#define create_enemy2c(p,h,d,l,a1,a2) create_enemy_p(&global.enemies,p,h,d,l,a1,a2,0,0)
#define create_enemy1c(p,h,d,l,a1) create_enemy_p(&global.enemies,p,h,d,l,a1,0,0,0)
void create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rule, EnemyLogicRule logic_rule,
Enemy *create_enemy_p(Enemy **enemies, complex pos, int hp, EnemyDrawRule draw_rule, EnemyLogicRule logic_rule,
complex a1, complex a2, complex a3, complex a4);
void delete_enemy(Enemy **enemies, Enemy* enemy);
void draw_enemies(Enemy *enemies);

View file

@ -155,12 +155,19 @@ void player_logic(Player* plr) {
if(global.frames - plr->recovery < 0) {
Enemy *en;
for(en = global.enemies; en; en = en->next)
en->hp -= 300;
if(!en->unbombable)
en->hp -= 300;
Projectile *p;
for(p = global.projs; p; p = p->next)
if(p->type >= FairyProj)
p->type = DeadProj;
if(global.boss && global.boss->current) {
AttackType at = global.boss->current->type;
if(at != AT_Move && at != AT_SurvivalSpell)
global.boss->dmg += 30;
}
}
}