Makes monsters fall when the tile they are on falls
This is a case when phasing as a rogue in the crumbling rooms.
This commit is contained in:
parent
8e39ff8346
commit
8ab527ca6a
|
@ -598,15 +598,24 @@ monster_update(Monster *m, UpdateData *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
Position monsterRoomPos = position_to_room_coords(&m->sprite->pos);
|
Position monsterRoomPos = position_to_room_coords(&m->sprite->pos);
|
||||||
if (position_equals(&data->matrix->roomPos, &monsterRoomPos)
|
if (position_equals(&data->matrix->roomPos, &monsterRoomPos)) {
|
||||||
&& !m->stateIndicator.shownOnPlayerRoomEnter)
|
|
||||||
{
|
if (!m->stateIndicator.shownOnPlayerRoomEnter) {
|
||||||
m->stateIndicator.shownOnPlayerRoomEnter = true;
|
m->stateIndicator.shownOnPlayerRoomEnter = true;
|
||||||
monster_set_state_display_time(m);
|
monster_set_state_display_time(m);
|
||||||
} else {
|
} else {
|
||||||
m->stateIndicator.shownOnPlayerRoomEnter = false;
|
m->stateIndicator.shownOnPlayerRoomEnter = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m->sprite->state != SPRITE_STATE_FALLING &&
|
||||||
|
m->sprite->state != SPRITE_STATE_PLUMMETED) {
|
||||||
|
RoomSpace *space = roommatrix_get_space_for(data->matrix, &m->sprite->pos);
|
||||||
|
if (space && space->lethal) {
|
||||||
|
m->sprite->state = SPRITE_STATE_FALLING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m->state.current == STUNNED) {
|
if (m->state.current == STUNNED) {
|
||||||
Sprite *s = m->sprite;
|
Sprite *s = m->sprite;
|
||||||
if (s->angle > 30)
|
if (s->angle > 30)
|
||||||
|
@ -792,9 +801,7 @@ monster_push(Monster *m, Player *p, RoomMatrix *rm, Vector2d direction)
|
||||||
m->sprite->pos.y += TILE_DIMENSION * (int) direction.y;
|
m->sprite->pos.y += TILE_DIMENSION * (int) direction.y;
|
||||||
|
|
||||||
RoomSpace *space = roommatrix_get_space_for(rm, &m->sprite->pos);
|
RoomSpace *space = roommatrix_get_space_for(rm, &m->sprite->pos);
|
||||||
if (space->lethal) {
|
if (space->trap) {
|
||||||
m->sprite->state = SPRITE_STATE_FALLING;
|
|
||||||
} else if (space->trap) {
|
|
||||||
int dmg = space->trap->damage * 3;
|
int dmg = space->trap->damage * 3;
|
||||||
m->stats.hp -= dmg;
|
m->stats.hp -= dmg;
|
||||||
monster_hit(m, dmg);
|
monster_hit(m, dmg);
|
||||||
|
|
Loading…
Reference in New Issue