コード例 #1
0
ファイル: boss31.c プロジェクト: Nekrofage/Quake2RPi
/*
 * QUAKED monster_jorg (1 .5 0) (-80 -80 0) (90 90 140) Ambush Trigger_Spawn Sight
 */
void
SP_monster_jorg(edict_t *self)
{
	if (!self)
	{
		return;
	}

	if (deathmatch->value)
	{
		G_FreeEdict(self);
		return;
	}

	sound_pain1 = gi.soundindex("boss3/bs3pain1.wav");
	sound_pain2 = gi.soundindex("boss3/bs3pain2.wav");
	sound_pain3 = gi.soundindex("boss3/bs3pain3.wav");
	sound_death = gi.soundindex("boss3/bs3deth1.wav");
	sound_attack1 = gi.soundindex("boss3/bs3atck1.wav");
	sound_attack2 = gi.soundindex("boss3/bs3atck2.wav");
	sound_search1 = gi.soundindex("boss3/bs3srch1.wav");
	sound_search2 = gi.soundindex("boss3/bs3srch2.wav");
	sound_search3 = gi.soundindex("boss3/bs3srch3.wav");
	sound_idle = gi.soundindex("boss3/bs3idle1.wav");
	sound_step_left = gi.soundindex("boss3/step1.wav");
	sound_step_right = gi.soundindex("boss3/step2.wav");
	sound_firegun = gi.soundindex("boss3/xfire.wav");
	sound_death_hit = gi.soundindex("boss3/d_hit.wav");

	MakronPrecache();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex("models/monsters/boss3/rider/tris.md2");
	self->s.modelindex2 = gi.modelindex("models/monsters/boss3/jorg/tris.md2");
	VectorSet(self->mins, -80, -80, 0);
	VectorSet(self->maxs, 80, 80, 140);

	self->health = 3000;
	self->gib_health = -2000;
	self->mass = 1000;

	self->pain = jorg_pain;
	self->die = jorg_die;
	self->monsterinfo.stand = jorg_stand;
	self->monsterinfo.walk = jorg_walk;
	self->monsterinfo.run = jorg_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = jorg_attack;
	self->monsterinfo.search = jorg_search;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = NULL;
	self->monsterinfo.checkattack = Jorg_CheckAttack;
	gi.linkentity(self);

	self->monsterinfo.currentmove = &jorg_move_stand;
	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
}
コード例 #2
0
ファイル: m_boss32.c プロジェクト: Chromozon/Quake2_Giex-G10
/*QUAKED monster_makron (1 .5 0) (-30 -30 0) (30 30 90) Ambush Trigger_Spawn Sight
*/
void SP_monster_makron (edict_t *self)
{
	MakronPrecache ();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
	VectorSet (self->mins, -30, -30, 0);
	VectorSet (self->maxs, 30, 30, 90);

	self->mass = 500;
	if (deathmatch->value)
		self->health = 1700 + 490 * skill->value;
	else
		self->health = 2500 + 360 * skill->value;
	self->max_health = self->health;
	self->monsterinfo.level = 3450 + 2670 * skill->value;
	self->monsterinfo.skill = skill->value;
	self->gib_health = -300 - 30 * skill->value;
	strcpy(self->monsterinfo.name, "Makron");

	self->pain = makron_pain;
	self->die = makron_die;
	self->monsterinfo.stand = makron_stand;
	self->monsterinfo.walk = makron_walk;
	self->monsterinfo.run = makron_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = makron_attack;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = makron_sight;
	self->monsterinfo.checkattack = Makron_CheckAttack;

	self->monsterinfo.cts_any = 1;
	self->monsterinfo.cts_class1 = 0.20;
	self->monsterinfo.cts_class2 = 0.40;
	self->monsterinfo.cts_class3 = 0.70;

	self->monsterinfo.item_any = 0.95;
	self->monsterinfo.itemmult_class1 = 2.0;
	self->monsterinfo.itemmult_class2 = 0.9;
	self->monsterinfo.itemmult_class3 = 0.7;
	self->monsterinfo.itemmult_class4 = 0.5;

	self->monsterinfo.aggressive = false;
	self->monsterinfo.prefered_range = 250;

	gi.linkentity (self);

//	self->monsterinfo.currentmove = &makron_move_stand;
	self->monsterinfo.currentmove = &makron_move_sight;
	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
}
コード例 #3
0
ファイル: m_boss32.c プロジェクト: basecq/q2dos
/*
 * QUAKED monster_makron (1 .5 0) (-30 -30 0) (30 30 90) Ambush Trigger_Spawn Sight
 */
void
SP_monster_makron(edict_t *self)
{
	if (!self)
	{
		return;
	}

	if (deathmatch->value)
	{
		G_FreeEdict(self);
		return;
	}

	MakronPrecache();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex("models/monsters/boss3/rider/tris.md2");
	VectorSet(self->mins, -30, -30, 0);
	VectorSet(self->maxs, 30, 30, 90);

	self->health = 3000;
	self->gib_health = -2000;
	self->mass = 500;

	self->pain = makron_pain;
	self->die = makron_die;
	self->monsterinfo.stand = makron_stand;
	self->monsterinfo.walk = makron_walk;
	self->monsterinfo.run = makron_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = makron_attack;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = makron_sight;
	self->monsterinfo.checkattack = Makron_CheckAttack;

	gi.linkentity(self);

	self->monsterinfo.currentmove = &makron_move_sight;
	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
}
コード例 #4
0
ファイル: drone_makron.c プロジェクト: emmamai/vortex-indy
/*QUAKED monster_makron (1 .5 0) (-30 -30 0) (30 30 90) Ambush Trigger_Spawn Sight
*/
void init_drone_makron (edict_t *self)
{
	MakronPrecache ();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
	VectorSet (self->mins, -30, -30, 0);
	VectorSet (self->maxs, 30, 30, 90);

	self->health = self->max_health = 5000 * self->monsterinfo.level;
	self->monsterinfo.power_armor_power = 5000 * self->monsterinfo.level;
	self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD;
	self->monsterinfo.max_armor = self->monsterinfo.power_armor_power;
	self->gib_health = -2000;
	self->mass = 500;
	self->mtype = M_MAKRON;
	self->monsterinfo.control_cost = 101;
	self->monsterinfo.cost = 300;
	self->monsterinfo.jumpup = 64;
	self->monsterinfo.jumpdn = 512;

	//self->pain = makron_pain;
	self->die = makron_die;
	self->monsterinfo.stand = makron_stand;
	self->monsterinfo.walk = makron_walk;
	self->monsterinfo.run = makron_run;
	//self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = makron_attack;
	//self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = makron_sight;
	//self->monsterinfo.checkattack = Makron_CheckAttack;

	gi.linkentity (self);
	
//	self->monsterinfo.currentmove = &makron_move_stand;
	self->monsterinfo.currentmove = &makron_move_sight;
	self->monsterinfo.scale = MODEL_SCALE;
	self->nextthink = level.time + FRAMETIME;

	//walkmonster_start(self);
}
コード例 #5
0
ファイル: m_boss31.c プロジェクト: ZwS/qudos
void SP_monster_jorg_precache(void)
{
	sound_pain1 = gi.soundindex ("boss3/bs3pain1.wav");
	sound_pain2 = gi.soundindex ("boss3/bs3pain2.wav");
	sound_pain3 = gi.soundindex ("boss3/bs3pain3.wav");
	sound_death = gi.soundindex ("boss3/bs3deth1.wav");
	sound_attack1 = gi.soundindex ("boss3/bs3atck1.wav");
	sound_attack2 = gi.soundindex ("boss3/bs3atck2.wav");
	sound_search1 = gi.soundindex ("boss3/bs3srch1.wav");
	sound_search2 = gi.soundindex ("boss3/bs3srch2.wav");
	sound_search3 = gi.soundindex ("boss3/bs3srch3.wav");
	sound_idle = gi.soundindex ("boss3/bs3idle1.wav");
	sound_step_left = gi.soundindex ("boss3/step1.wav");
	sound_step_right = gi.soundindex ("boss3/step2.wav");
	sound_firegun = gi.soundindex ("boss3/xfire.wav");
	sound_death_hit = gi.soundindex ("boss3/d_hit.wav");

	MakronPrecache ();

}
コード例 #6
0
ファイル: m_boss32.c プロジェクト: PBrookfield/mpgamex86
void SP_monster_makron_put (edict_t *self)
{
	if (deathmatch->value)
	{
		G_FreeEdict (self);
		return;
	}

	MakronPrecache ();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;

	// Lazarus: special purpose skins
	if ( self->style )
	{
		PatchMonsterModel("models/monsters/boss3/rider/tris.md2");
		self->s.skinnum = self->style * 2;
	//	self->style = 0; //clear for custom bloodtype flag
	}

	self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
	VectorSet (self->mins, -30, -30, 0);
	VectorSet (self->maxs, 30, 30, 90);

	if(!self->health)
		self->health = 3000 + 1000 * (skill->value);
	if (coop->value)
		self->health += 500 * (skill->value);
	if(!self->gib_health)
		self->gib_health = -800;
	if(!self->mass)
		self->mass = 500;

	self->pain = makron_pain;
	self->die = makron_die;
	self->monsterinfo.stand = makron_stand;
	self->monsterinfo.walk = makron_walk;
	self->monsterinfo.run = makron_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = makron_attack;
	self->monsterinfo.melee = NULL;
	//Knightmare- don't jump flag
	if (self->fogclip & 1)
		self->monsterinfo.sight = NULL;
	else
		self->monsterinfo.sight = makron_sight;
	self->monsterinfo.checkattack = Makron_CheckAttack;
	self->monsterinfo.blocked = Makron_blocked;		//PGM

	if (!self->blood_type)
		self->blood_type = 2; //sparks
	else
		self->fogclip |= 2; //custom bloodtype flag

	// Lazarus
	if(self->powerarmor)
	{
		if (self->powerarmortype == 1)
			self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;
		else
			self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD;
		self->monsterinfo.power_armor_power = self->powerarmor;
	}

	self->common_name = "Makron";

	gi.linkentity (self);
	//Knightmare- nojump flag
	if (self->fogclip & 1)
		self->monsterinfo.currentmove = &makron_move_stand;
	else
		self->monsterinfo.currentmove = &makron_move_sight;

	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
	//PMM
	//self->monsterinfo.aiflags |= AI_IGNORE_SHOTS;
	//PMM
}
コード例 #7
0
ファイル: m_boss32.c プロジェクト: Nephatrine/nephq2-game
/*QUAKED monster_makron (1 .5 0) (-30 -30 0) (30 30 90) Ambush Trigger_Spawn Sight
*/
void SP_monster_makron (edict_t *self)
{
	if (deathmatch->value)
	{
		G_FreeEdict (self);
		return;
	}

	MakronPrecache ();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
	VectorSet (self->mins, -30, -30, 0);
	VectorSet (self->maxs, 30, 30, 90);

	// Lazarus: mapper-configurable health
	if(!self->health)
		self->health = 3000;

	// Lazarus: get around Killed's prevention of health dropping below -999
//	if(!self->gib_health)
//		self->gib_health = -2000;
	self->gib_health = -900;
	if(!self->mass)
		self->mass = 500;

	self->pain = makron_pain;
	self->die = makron_die;
	self->monsterinfo.stand = makron_stand;
	self->monsterinfo.walk = makron_walk;
	self->monsterinfo.run = makron_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = makron_attack;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = makron_sight;
	self->monsterinfo.checkattack = Makron_CheckAttack;

	// Knightmare- added sparks and blood type
	if (!self->blood_type)
		self->blood_type = 2; //sparks
	else
		self->fogclip |= 2; //custom bloodtype flag

	// Lazarus
	if(self->powerarmor) {
		self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD;
		self->monsterinfo.power_armor_power = self->powerarmor;
	}

	gi.linkentity (self);
	
	self->monsterinfo.currentmove = &makron_move_sight;
	if(self->health < 0)
	{
		mmove_t	*deathmoves[] = {&makron_move_death2,
			                     &makron_move_death3,
								 NULL};
		M_SetDeath(self,(mmove_t **)&deathmoves);
	}
	self->monsterinfo.scale = MODEL_SCALE;
	walkmonster_start(self);
}
コード例 #8
0
ファイル: m_boss31.c プロジェクト: Chromozon/Quake2_Giex-G10
/*QUAKED monster_jorg (1 .5 0) (-80 -80 0) (90 90 140) Ambush Trigger_Spawn Sight
*/
void SP_monster_jorg (edict_t *self)
{
	sound_pain1 = gi.soundindex ("boss3/bs3pain1.wav");
//	sound_pain2 = gi.soundindex ("boss3/bs3pain2.wav");
//	sound_pain3 = gi.soundindex ("boss3/bs3pain3.wav");
	sound_death = gi.soundindex ("boss3/bs3deth1.wav");
//	sound_attack1 = gi.soundindex ("boss3/bs3atck1.wav");
//	sound_attack2 = gi.soundindex ("boss3/bs3atck2.wav");
	sound_search = gi.soundindex ("boss3/bs3srch1.wav");
//	sound_search2 = gi.soundindex ("boss3/bs3srch2.wav");
//	sound_search3 = gi.soundindex ("boss3/bs3srch3.wav");
	sound_idle = gi.soundindex ("boss3/bs3idle1.wav");
	sound_step_left = gi.soundindex ("boss3/step1.wav");
	sound_step_right = gi.soundindex ("boss3/step2.wav");
//	sound_firegun = gi.soundindex ("boss3/xfire.wav");
	sound_death_hit = gi.soundindex ("boss3/d_hit.wav");

	MakronPrecache ();

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss3/rider/tris.md2");
	self->s.modelindex2 = gi.modelindex ("models/monsters/boss3/jorg/tris.md2");
	VectorSet (self->mins, -80, -80, 0);
	VectorSet (self->maxs, 80, 80, 140);

	self->mass = 1000;
	if (deathmatch->value)
		self->health = 1800 + 525 * skill->value;
	else
		self->health = 2250 + 350 * skill->value;
	self->max_health = self->health;
	self->monsterinfo.level = 3730 + 2450 * skill->value;
	self->monsterinfo.skill = skill->value;
	self->gib_health = -2000;
	strcpy(self->monsterinfo.name, "Jorg");

	self->pain = jorg_pain;
	self->die = jorg_die;
	self->monsterinfo.stand = jorg_stand;
	self->monsterinfo.walk = jorg_walk;
	self->monsterinfo.run = jorg_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = jorg_attack;
	self->monsterinfo.search = jorg_search;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = NULL;
	self->monsterinfo.checkattack = Jorg_CheckAttack;
	self->monsterinfo.aggressive = false;
	self->monsterinfo.prefered_range = 280;

	gi.linkentity (self);

	if (deathmatch->value) {
		self->monsterinfo.cts_any = 1;
		self->monsterinfo.cts_class1 = 0.18;
		self->monsterinfo.cts_class2 = 0.35;
		self->monsterinfo.cts_class3 = 0.65;

		self->monsterinfo.item_any = 0.9;
		self->monsterinfo.itemmult_class1 = 2.0;
		self->monsterinfo.itemmult_class2 = 0.9;
		self->monsterinfo.itemmult_class3 = 0.7;
		self->monsterinfo.itemmult_class4 = 0.5;
	} else {
		self->monsterinfo.cts_any = -10;
		self->monsterinfo.cts_class1 = 0;
		self->monsterinfo.cts_class2 = 0;
		self->monsterinfo.cts_class3 = 0;
	}

	self->monsterinfo.currentmove = &jorg_move_stand;
	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
}