diff --git a/src/item.c b/src/item.c index 9580aa1c..6cb4d7a0 100644 --- a/src/item.c +++ b/src/item.c @@ -90,7 +90,7 @@ void process_items(void) { if(v == 1) { switch(item->type) { case Power: - player_set_power(&global.plr, global.plr.power + 3); + player_set_power(&global.plr, global.plr.power + POWER_VALUE); break; case Point: global.points += 100; diff --git a/src/item.h b/src/item.h index 62990401..a7c14998 100644 --- a/src/item.h +++ b/src/item.h @@ -46,4 +46,6 @@ void process_items(void); void spawn_item(complex pos, Type type); void spawn_items(complex pos, int point, int power, int bomb, int life); +#define POWER_VALUE 3 + #endif diff --git a/src/player.c b/src/player.c index 7b8c3192..ca546643 100644 --- a/src/player.c +++ b/src/player.c @@ -205,8 +205,13 @@ void player_realdeath(Player *plr) { plr->respawntime = global.frames; plr->moveflags = 0; - create_item(plr->pos, 6-15*I, Power); - create_item(plr->pos, -6-15*I, Power); + int drop = (plr->power / 3.0) / POWER_VALUE; + + for(int i = 0; i < drop; ++i) { + create_item(plr->pos, (10+7*frand()) * cexp(I*(1.25*M_PI+0.5*i*M_PI/drop)), Power); + } + + player_set_power(plr, plr->power / 2.0); plr->pos = VIEWPORT_W/2 + VIEWPORT_H*I+30.0I; plr->recovery = -(global.frames + DEATH_DELAY + 150);