/* * QUAKED monster_widow (1 .5 0) (-40 -40 0) (40 40 144) Ambush Trigger_Spawn Sight */ void SP_monster_widow(edict_t *self) { if (!self) { return; } /* ace - monsters spawned with FL_RMONSTER will get converted * * to a random spawn spot for the randomizer system. Class * * and tier will be tallied, origin, angles, spawnflags, etc.. * * will also be recorded. This entity will be freed after. */ /* if (self->flags & FL_RMONSTER) { SP_monster_rspawnspot (self); return; } */ if (deathmatch->value) { G_FreeEdict(self); return; } sound_pain1 = gi.soundindex("widow/bw1pain1.wav"); sound_pain2 = gi.soundindex("widow/bw1pain2.wav"); sound_pain3 = gi.soundindex("widow/bw1pain3.wav"); sound_search1 = gi.soundindex("bosshovr/bhvunqv1.wav"); sound_rail = gi.soundindex("gladiator/railgun.wav"); self->movetype = MOVETYPE_STEP; self->solid = SOLID_BBOX; self->s.modelindex = gi.modelindex("models/monsters/blackwidow/tris.md2"); VectorSet(self->mins, -40, -40, 0); VectorSet(self->maxs, 40, 40, 144); self->health = 2000 + 1000 * (skill->value); if (coop->value) { self->health += 500 * (skill->value); } self->gib_health = -5000; self->mass = 1500; if (skill->value == 3) { self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD; self->monsterinfo.power_armor_power = 500; } self->yaw_speed = 30; self->flags |= FL_IMMUNE_LASER; self->monsterinfo.aiflags |= AI_IGNORE_SHOTS; self->pain = widow_pain; self->die = widow_die; self->monsterinfo.melee = widow_melee; self->monsterinfo.stand = widow_stand; self->monsterinfo.walk = widow_walk; self->monsterinfo.run = widow_run; self->monsterinfo.attack = widow_attack; self->monsterinfo.search = widow_search; self->monsterinfo.checkattack = Widow_CheckAttack; self->monsterinfo.sight = widow_sight; self->monsterinfo.blocked = widow_blocked; gi.linkentity(self); self->monsterinfo.currentmove = &widow_move_stand; self->monsterinfo.scale = MODEL_SCALE; WidowPrecache(); WidowCalcSlots(self); widow_damage_multiplier = 1; walkmonster_start(self); }
/*QUAKED monster_widow (1 .5 0) (-40 -40 0) (40 40 144) Ambush Trigger_Spawn Sight */ void SP_monster_widow (edict_t *self) { if (deathmatch->value) { G_FreeEdict (self); return; } sound_pain1 = gi.soundindex ("widow/bw1pain1.wav"); sound_pain2 = gi.soundindex ("widow/bw1pain2.wav"); sound_pain3 = gi.soundindex ("widow/bw1pain3.wav"); sound_search1 = gi.soundindex ("bosshovr/bhvunqv1.wav"); sound_rail = gi.soundindex ("gladiator/railgun.wav"); self->movetype = MOVETYPE_STEP; self->solid = SOLID_BBOX; self->s.modelindex = gi.modelindex ("models/monsters/blackwidow/tris.md2"); VectorSet (self->mins, -40, -40, 0); VectorSet (self->maxs, 40, 40, 144); self->health = 2000 + 1000*(skill->value); if (coop->value) self->health += 500*(skill->value); self->gib_health = -5000; self->mass = 1500; if (skill->value == 3) { self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD; self->monsterinfo.power_armor_power = 500; } self->yaw_speed = 30; self->flags |= FL_IMMUNE_LASER; self->monsterinfo.aiflags |= AI_IGNORE_SHOTS; self->pain = widow_pain; self->die = widow_die; self->monsterinfo.melee = widow_melee; self->monsterinfo.stand = widow_stand; self->monsterinfo.walk = widow_walk; self->monsterinfo.run = widow_run; self->monsterinfo.attack = widow_attack; self->monsterinfo.search = widow_search; self->monsterinfo.checkattack = Widow_CheckAttack; self->monsterinfo.sight = widow_sight; self->monsterinfo.blocked = widow_blocked; gi.linkentity (self); self->monsterinfo.currentmove = &widow_move_stand; self->monsterinfo.scale = MODEL_SCALE; WidowPrecache(); WidowCalcSlots(self); widow_damage_multiplier = 1; walkmonster_start (self); }
/*QUAKED monster_widow (1 .5 0) (-40 -40 0) (40 40 144) Ambush Trigger_Spawn Sight GoodGuy */ void SP_monster_widow (edict_t *self) { if (deathmatch->value) { G_FreeEdict (self); return; } sound_pain1 = gi.soundindex ("widow/bw1pain1.wav"); sound_pain2 = gi.soundindex ("widow/bw1pain2.wav"); sound_pain3 = gi.soundindex ("widow/bw1pain3.wav"); sound_search1 = gi.soundindex ("bosshovr/bhvunqv1.wav"); // sound_sight = gi.soundindex ("widow/sight.wav"); sound_rail = gi.soundindex ("gladiator/railgun.wav"); // self->s.sound = gi.soundindex ("bosshovr/bhvengn1.wav"); self->movetype = MOVETYPE_STEP; self->solid = SOLID_BBOX; // Lazarus: special purpose skins if ( self->style ) { PatchMonsterModel("models/monsters/blackwidow/tris.md2"); self->s.skinnum = self->style * 2; // self->style = 0; //clear for custom bloodtype flag } self->s.modelindex = gi.modelindex ("models/monsters/blackwidow/tris.md2"); VectorSet (self->mins, -40, -40, 0); VectorSet (self->maxs, 40, 40, 144); if(!self->health) self->health = 2000 + 1000*(skill->value); if (coop->value) self->health += 500*(skill->value); // self->health = 1; if(!self->gib_health) self->gib_health = -5000; if(!self->mass) self->mass = 1500; /* if (skill->value == 2) { self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD; self->monsterinfo.power_armor_power = 250; } else */if (skill->value == 3) { self->monsterinfo.power_armor_type = POWER_ARMOR_SHIELD; self->monsterinfo.power_armor_power = 500; } self->yaw_speed = 30; self->flags |= FL_IMMUNE_LASER; self->monsterinfo.aiflags |= AI_IGNORE_SHOTS; self->pain = widow_pain; self->die = widow_die; self->monsterinfo.melee = widow_melee; self->monsterinfo.stand = widow_stand; self->monsterinfo.walk = widow_walk; self->monsterinfo.run = widow_run; self->monsterinfo.attack = widow_attack; self->monsterinfo.search = widow_search; self->monsterinfo.checkattack = Widow_CheckAttack; self->monsterinfo.sight = widow_sight; self->monsterinfo.blocked = widow_blocked; if (!self->blood_type) self->blood_type = 3; //sparks and blood // 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 = "Black Widow"; gi.linkentity (self); self->monsterinfo.currentmove = &widow_move_stand; self->monsterinfo.scale = MODEL_SCALE; WidowPrecache(); WidowCalcSlots(self); widow_damage_multiplier = 1; walkmonster_start (self); }