mirror of https://github.com/yquake2/rogue.git
Fix mguard freeze bug and improvements to frame handling
This commit is contained in:
parent
f7b99b07c3
commit
0642b6aa18
|
@ -607,12 +607,20 @@ M_MoveFrame(edict_t *self)
|
||||||
if ((self->monsterinfo.nextframe) &&
|
if ((self->monsterinfo.nextframe) &&
|
||||||
(self->monsterinfo.nextframe >= move->firstframe) &&
|
(self->monsterinfo.nextframe >= move->firstframe) &&
|
||||||
(self->monsterinfo.nextframe <= move->lastframe))
|
(self->monsterinfo.nextframe <= move->lastframe))
|
||||||
|
{
|
||||||
|
if (self->s.frame != self->monsterinfo.nextframe)
|
||||||
{
|
{
|
||||||
self->s.frame = self->monsterinfo.nextframe;
|
self->s.frame = self->monsterinfo.nextframe;
|
||||||
|
self->monsterinfo.aiflags &= ~AI_HOLD_FRAME;
|
||||||
|
}
|
||||||
|
|
||||||
self->monsterinfo.nextframe = 0;
|
self->monsterinfo.nextframe = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* prevent nextframe from leaking into a future move */
|
||||||
|
self->monsterinfo.nextframe = 0;
|
||||||
|
|
||||||
if (self->s.frame == move->lastframe)
|
if (self->s.frame == move->lastframe)
|
||||||
{
|
{
|
||||||
if (move->endfunc)
|
if (move->endfunc)
|
||||||
|
|
|
@ -1668,7 +1668,6 @@ soldier_duck(edict_t *self, float eta)
|
||||||
|
|
||||||
if (skill->value == 0)
|
if (skill->value == 0)
|
||||||
{
|
{
|
||||||
self->monsterinfo.nextframe = FRAME_duck01;
|
|
||||||
self->monsterinfo.currentmove = &soldier_move_duck;
|
self->monsterinfo.currentmove = &soldier_move_duck;
|
||||||
self->monsterinfo.duck_wait_time = level.time + eta + 1;
|
self->monsterinfo.duck_wait_time = level.time + eta + 1;
|
||||||
return;
|
return;
|
||||||
|
@ -1678,18 +1677,14 @@ soldier_duck(edict_t *self, float eta)
|
||||||
|
|
||||||
if (r > (skill->value * 0.3))
|
if (r > (skill->value * 0.3))
|
||||||
{
|
{
|
||||||
self->monsterinfo.nextframe = FRAME_duck01;
|
|
||||||
self->monsterinfo.currentmove = &soldier_move_duck;
|
self->monsterinfo.currentmove = &soldier_move_duck;
|
||||||
self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));
|
self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->monsterinfo.nextframe = FRAME_attak301;
|
|
||||||
self->monsterinfo.currentmove = &soldier_move_attack3;
|
self->monsterinfo.currentmove = &soldier_move_attack3;
|
||||||
self->monsterinfo.duck_wait_time = level.time + eta + 1;
|
self->monsterinfo.duck_wait_time = level.time + eta + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mframe_t soldier_frames_blind[] = {
|
mframe_t soldier_frames_blind[] = {
|
||||||
|
|
Loading…
Reference in New Issue