more improvements to UI and balance
This commit is contained in:
parent
07bffbdc2c
commit
26c4fd9e1c
|
@ -22,10 +22,11 @@ delay: 8s
|
|||
|
||||
wave: 10s 10*slime/1
|
||||
wave: 12s 4*slime/1 4*bat/2
|
||||
wave: 4s 2*fire_slime/4
|
||||
wave: 8s 2*fire_slime/4
|
||||
wave: 5s 4*slime/1
|
||||
|
||||
# "Boss" wave #2
|
||||
item: potion_hp
|
||||
wave: 6s 8*slime/1 8*bat/2 2*fire_slime/4
|
||||
delay: 5s
|
||||
delay: 8s
|
||||
wave: 8s 12*bat/2 4*fire_slime/4 1*gunslinger/8
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 588 B After Width: | Height: | Size: 7.7 KiB |
|
@ -115,7 +115,7 @@ entity_t *aoe_make_attack(uint16_t type, entity_t *origin, vec2 dir)
|
|||
|| type == AOE_SLASH
|
||||
|| type == AOE_IMPALE
|
||||
|| type == AOE_JUDGEMENT) {
|
||||
aoe->data.generic.strength = f->ATK;
|
||||
aoe->data.generic.strength = f->MAG;
|
||||
aoe->data.generic.dir = p->facing;
|
||||
}
|
||||
else if(type == AOE_PROJECTILE) {
|
||||
|
@ -132,7 +132,7 @@ entity_t *aoe_make_attack(uint16_t type, entity_t *origin, vec2 dir)
|
|||
aoe->repeat_delay = fix(0.2);
|
||||
}
|
||||
else if(type == AOE_BULLET) {
|
||||
aoe->data.bullet.strength = f->ATK;
|
||||
aoe->data.bullet.strength = f->MAG;
|
||||
aoe->data.bullet.dir = p->facing;
|
||||
aoe->data.bullet.v = fix(10.0);
|
||||
aoe->data.bullet.final_v = fix(4.5);
|
||||
|
@ -221,7 +221,7 @@ static bool attack_apply(game_t *game, aoe_t *aoe, entity_t *target)
|
|||
}
|
||||
else if(aoe->type == AOE_JUDGEMENT) {
|
||||
r = fix(0);
|
||||
damage = aoe->data.generic.strength * 5;
|
||||
damage = aoe->data.generic.strength * 3;
|
||||
}
|
||||
else if(aoe->type == AOE_BULLET) {
|
||||
/* TODO: Sideways knockback */
|
||||
|
|
|
@ -31,8 +31,8 @@ static enemy_t const slime_1 = {
|
|||
.friction = fix(0.6),
|
||||
.max_disruption_speed = fix(999.0),
|
||||
},
|
||||
.stats_base = { .HP=10, .ATK=8, .MAG=5, .DEF=4 },
|
||||
.stats_growth = { .HP=8, .ATK=4, .MAG=4, .DEF=3 },
|
||||
.stats_base = { .HP=10, .ATK=8, .MAG=5, .DEF=5 },
|
||||
.stats_growth = { .HP=8, .ATK=4, .MAG=4, .DEF=2 },
|
||||
|
||||
.shadow_size = 4,
|
||||
.xp = 2,
|
||||
|
@ -70,8 +70,8 @@ static enemy_t const fire_slime_4 = {
|
|||
.max_disruption_speed = fix(999.0),
|
||||
},
|
||||
/* Same as slime/1 */
|
||||
.stats_base = { .HP=10, .ATK=8, .MAG=5, .DEF=4 },
|
||||
.stats_growth = { .HP=8, .ATK=4, .MAG=4, .DEF=3 },
|
||||
.stats_base = { .HP=10, .ATK=8, .MAG=5, .DEF=5 },
|
||||
.stats_growth = { .HP=8, .ATK=4, .MAG=4, .DEF=2 },
|
||||
|
||||
.shadow_size = 4,
|
||||
.xp = 14,
|
||||
|
|
13
src/main.c
13
src/main.c
|
@ -461,8 +461,17 @@ int main(void)
|
|||
player_data.equipment[slot] = game.menu_cursor;
|
||||
|
||||
/* Update skills */
|
||||
player_compute_skills(player, player_data.equipment,
|
||||
player_f->skills);
|
||||
int sk[6];
|
||||
player_compute_skills(player, player_data.equipment, sk);
|
||||
/* Reet the cooldown for all skills that changed */
|
||||
for(int i = 0; i < 6; i++) {
|
||||
if(sk[i] < 0)
|
||||
player_f->actions_cooldown[i] = 0;
|
||||
else if(sk[i] != player_f->skills[i])
|
||||
player_f->actions_cooldown[i] =
|
||||
skill_cooldown(sk[i]);
|
||||
player_f->skills[i] = sk[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
12
src/render.c
12
src/render.c
|
@ -693,14 +693,14 @@ void render_game(game_t const *g, bool show_hitboxes)
|
|||
if(selected_item >= 0) {
|
||||
int w, h;
|
||||
dsize(item_name(selected_item), NULL, &w, &h);
|
||||
drect(x1+5, 99, x1+w+8, 98+h+4, RGB24(0x3d5050));
|
||||
dtext(x1+7, 100, C_WHITE, item_name(selected_item));
|
||||
drect(x1+5, 104, x1+w+8, 104+h+3, RGB24(0x3d5050));
|
||||
dtext(x1+7, 105, C_WHITE, item_name(selected_item));
|
||||
|
||||
char const *desc = item_description(selected_item);
|
||||
if(desc)
|
||||
dtext_multi(x1+7, 116, C_WHITE, desc);
|
||||
dtext_multi(x1+7, 123, C_WHITE, desc);
|
||||
|
||||
int dx = small_text(x1+7, 158, -1, "SHIFT", -1);
|
||||
int dx = small_text(x1+7, 156, -1, "SHIFT", -1);
|
||||
char const *use_str = "Use";
|
||||
if(item_is_equip(selected_item)) {
|
||||
use_str = "Equip";
|
||||
|
@ -708,7 +708,7 @@ void render_game(game_t const *g, bool show_hitboxes)
|
|||
if(slot >= 0 && player_data->equipment[slot] == g->menu_cursor)
|
||||
use_str = "Unequip";
|
||||
}
|
||||
dtext(x1+7+dx+4, 158, C_WHITE, use_str);
|
||||
dtext(x1+7+dx+4, 156, C_WHITE, use_str);
|
||||
}
|
||||
|
||||
/* What the growth is with the current equips */
|
||||
|
@ -747,7 +747,7 @@ void render_game(game_t const *g, bool show_hitboxes)
|
|||
if(s1 == s2) continue;
|
||||
int x = 31 + 48*i + 64*(i>=3);
|
||||
int y = HUD_Y - 33;
|
||||
skill_render(x+2, y+2, s2, 1, RGB24(0x3868a8));
|
||||
skill_render(x+2, y+2, s2, 3, C_WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
40
src/skills.c
40
src/skills.c
|
@ -109,24 +109,40 @@ bool skill_use(game_t *game, entity_t *e, int slot, vec2 dir)
|
|||
return true;
|
||||
}
|
||||
|
||||
void skill_render(int x, int y, int skill, int bg, int color)
|
||||
bool skill_render_get(int skill, image_t **img, int *left, int *top)
|
||||
{
|
||||
extern bopti_image_t img_skillicons;
|
||||
*img = &img_skillicons;
|
||||
*top = 0;
|
||||
|
||||
int base = 3;
|
||||
|
||||
int n = -1;
|
||||
if(skill == SKILL_DASH)
|
||||
n = 0;
|
||||
if(skill == AOE_SHOCK)
|
||||
n = 1;
|
||||
if(skill == AOE_JUDGEMENT)
|
||||
n = 2;
|
||||
if(skill == AOE_BULLET)
|
||||
n = 3;
|
||||
*left = 23 * (base + 0);
|
||||
else if(skill == AOE_SHOCK)
|
||||
*left = 23 * (base + 1);
|
||||
else if(skill == AOE_JUDGEMENT)
|
||||
*left = 23 * (base + 2);
|
||||
else if(skill == AOE_BULLET)
|
||||
*left = 23 * (base + 3);
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void skill_render(int x, int y, int skill, int bg, int color)
|
||||
{
|
||||
image_t *img;
|
||||
int left, top;
|
||||
bool exists = skill_render_get(skill, &img, &left, &top);
|
||||
|
||||
if(bg > 0)
|
||||
dsubimage(x, y, &img_skillicons, 23*(bg-1), 0, 23, 23, DIMAGE_NONE);
|
||||
if(n >= 0)
|
||||
dsubimage(x, y, &img_skillicons, 23*(n+2), 0, 23, 23, DIMAGE_NONE);
|
||||
dsubimage(x, y, img, 23*(bg-1), 0, 23, 23, DIMAGE_NONE);
|
||||
if(!exists)
|
||||
return;
|
||||
|
||||
dsubimage(x, y, img, left, top, 23, 23, DIMAGE_NONE);
|
||||
|
||||
/* Hacky color change */
|
||||
for(int dy = 0; dy < 23; dy++)
|
||||
|
|
|
@ -27,3 +27,6 @@ bool skill_use(game_t *g, entity_t *e, int slot, vec2 dir);
|
|||
|
||||
/* Render a skill's image */
|
||||
void skill_render(int x, int y, int skill, int bg, int color);
|
||||
|
||||
/* Reference to a skill's image */
|
||||
bool skill_render_get(int skill, image_t **img, int *left, int *top);
|
||||
|
|
Loading…
Reference in New Issue