Пример #1
0
void soldier_duck (edict_t *self, float eta)
{
	float r;

	// has to be done immediately otherwise he can get stuck
	monster_duck_down(self);

	if (skill->value == 0)
	{
		// PMM - stupid dodge
		self->monsterinfo.nextframe = FRAME_duck01;
		self->monsterinfo.currentmove = &soldier_move_duck;
		self->monsterinfo.duck_wait_time = level.time + eta + 1;
		return;
	}

	r = random();

	if (r > (skill->value * 0.3))
	{
		self->monsterinfo.nextframe = FRAME_duck01;
		self->monsterinfo.currentmove = &soldier_move_duck;
		self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));
	}
	else
	{
		self->monsterinfo.nextframe = FRAME_attak301;
		self->monsterinfo.currentmove = &soldier_move_attack3;
		self->monsterinfo.duck_wait_time = level.time + eta + 1;
	}
	return;
}
Пример #2
0
void medic_duck (edict_t *self, float eta)
{
//	don't dodge if you're healing
	if (self->monsterinfo.aiflags & AI_MEDIC)
		return;

	if ((self->monsterinfo.currentmove == &medic_move_attackHyperBlaster) ||
		(self->monsterinfo.currentmove == &medic_move_attackCable) ||
		(self->monsterinfo.currentmove == &medic_move_attackBlaster) ||
		(self->monsterinfo.currentmove == &medic_move_callReinforcements))
	{
		// he ignores skill
		self->monsterinfo.aiflags &= ~AI_DUCKED;
		return;
	}

	if (skill->value == 0)
		// PMM - stupid dodge
		self->monsterinfo.duck_wait_time = level.time + eta + 1;
	else
		self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));

	// has to be done immediately otherwise he can get stuck
	monster_duck_down(self);

	self->monsterinfo.nextframe = FRAME_duck1;
	self->monsterinfo.currentmove = &medic_move_duck;
	return;
}
Пример #3
0
void infantry_duck (edict_t *self, float eta)
{
	// if we're jumping, don't dodge
	if ((self->monsterinfo.currentmove == &infantry_move_jump) ||
		(self->monsterinfo.currentmove == &infantry_move_jump2))
	{
		return;
	}

	if ((self->monsterinfo.currentmove == &infantry_move_attack1) ||
		(self->monsterinfo.currentmove == &infantry_move_attack2))
	{
		// if we're shooting, and not on easy, don't dodge
		if (skill->value)
		{
			self->monsterinfo.aiflags &= ~AI_DUCKED;
			return;
		}
	}

	if (skill->value == 0)
		// PMM - stupid dodge
		self->monsterinfo.duck_wait_time = level.time + eta + 1;
	else
		self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));

	// has to be done immediately otherwise he can get stuck
	monster_duck_down(self);

	self->monsterinfo.nextframe = FRAME_duck01;
	self->monsterinfo.currentmove = &infantry_move_duck;
	return;
}
Пример #4
0
void brain_duck (edict_t *self, float eta)
{
	// has to be done immediately otherwise he can get stuck
	monster_duck_down(self);

	if (skill->value == 0)
		// PMM - stupid dodge
		self->monsterinfo.duck_wait_time = level.time + eta + 1;
	else
		self->monsterinfo.duck_wait_time = level.time + eta + (0.1 * (3 - skill->value));

	self->monsterinfo.currentmove = &brain_move_duck;
	self->monsterinfo.nextframe = FRAME_duck01;
	return;
}
Пример #5
0
/*
void soldier_duck_down (edict_t *self)
{
	if ((g_showlogic) && (g_showlogic->value))
		gi.dprintf ("duck down - %d!\n", self->s.frame);

	self->monsterinfo.aiflags |= AI_DUCKED;
//	self->maxs[2] -= 32;
	self->maxs[2] =  self->monsterinfo.base_height - 32;
	self->takedamage = DAMAGE_YES;
	if (self->monsterinfo.duck_wait_time < level.time)
	{
		if ((g_showlogic) && (g_showlogic->value))
			gi.dprintf ("soldier duck with no time!\n");
		self->monsterinfo.duck_wait_time = level.time + 1;
	}
	gi.linkentity (self);
}

void soldier_duck_up (edict_t *self)
{
	if ((g_showlogic) && (g_showlogic->value))
		gi.dprintf ("duck up - %d!\n", self->s.frame);
	self->monsterinfo.aiflags &= ~AI_DUCKED;
//	self->maxs[2] += 32;
	self->maxs[2] = self->monsterinfo.base_height;
	self->takedamage = DAMAGE_AIM;
	gi.linkentity (self);
}
*/
void soldier_fire3 (edict_t *self)
{
	monster_duck_down (self);
	soldier_fire (self, 2);
}