set g_monster_soldier_weapon_machinegun_chance 4 "Chance of Grunt weapon being machine gun"
set g_monster_soldier_weapon_rocketlauncher_chance 2 "Chance of Grunt weapon being rocket launcher"
set g_monster_soldier_attack_uzi_bullets 3 "Number of machine gun bullets Grunt fires"
+set g_monster_soldier_attack_uzi_damage 10 "Grunt machine gun damage per bullet"
+set g_monster_soldier_attack_uzi_force 5 "Grunt machine gun knockback"
+set g_monster_soldier_attack_shotgun_damage 4 "Grunt shotgun per bullet damage"
+set g_monster_soldier_attack_shotgun_spread 0.2 "Grunt shotgun bullet spread"
+set g_monster_soldier_attack_shotgun_bullets 12 "Grunt shotgun bullets per shot"
+set g_monster_soldier_attack_shotgun_force 5 "Grunt shotgun knockback"
// Scrag
set g_monster_wizard 1 "Enable Scrags"
DEATHTYPE(DEATH_MONSTER_SHAMBLER_CLAW, DEATH_SELF_MON_SHAMBLER_CLAW, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_SHAMBLER_SMASH, DEATH_SELF_MON_SHAMBLER_SMASH, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_SHAMBLER_ZAP, DEATH_SELF_MON_SHAMBLER_ZAP, NO_MSG, NORMAL_POS) \
+ DEATHTYPE(DEATH_MONSTER_MARINE, DEATH_SELF_MON_MARINE, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_MARINE_SLAP, DEATH_SELF_MON_MARINE_SLAP, NO_MSG, NORMAL_POS) \
- DEATHTYPE(DEATH_MONSTER_MARINE_UZI, DEATH_SELF_MON_MARINE_UZI, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_SPIDER, DEATH_SELF_MON_SPIDER, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_TARBABY, DEATH_SELF_MON_TARBABY, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_SCRAG, DEATH_SELF_MON_SCRAG, NO_MSG, NORMAL_POS) \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Shambler%s%s\n"), "") \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Shambler%s%s\n"), "") \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MARINE_SLAP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was slapped to death by a Marine%s%s\n"), "") \
- MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MARINE_UZI, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was gunned down by a Marine%s%s\n"), "") \
+ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MARINE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was gunned down by a Marine%s%s\n"), "") \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was bitten by a Spider%s%s\n"), "") \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_TARBABY, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 came too close to an exploding Pumpkin%s%s\n"), "") \
MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SCRAG, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was cursed by a Scrag%s%s\n"), "") \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_SMASH, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, CENTER_DEATH_SELF_MONSTER) \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_ZAP, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, CENTER_DEATH_SELF_MONSTER) \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MARINE_SLAP, INFO_DEATH_SELF_MON_MARINE_SLAP, CENTER_DEATH_SELF_MONSTER) \
- MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MARINE_UZI, INFO_DEATH_SELF_MON_MARINE_UZI, CENTER_DEATH_SELF_MONSTER) \
+ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MARINE, INFO_DEATH_SELF_MON_MARINE, CENTER_DEATH_SELF_MONSTER) \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER, INFO_DEATH_SELF_MON_SPIDER, CENTER_DEATH_SELF_MONSTER) \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_TARBABY, INFO_DEATH_SELF_MON_TARBABY, CENTER_DEATH_SELF_MONSTER) \
MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SCRAG, INFO_DEATH_SELF_MON_SCRAG, CENTER_DEATH_SELF_MONSTER) \
float autocvar_g_monster_soldier_weapon_machinegun_chance;
float autocvar_g_monster_soldier_weapon_rocketlauncher_chance;
float autocvar_g_monster_soldier_attack_uzi_bullets;
+float autocvar_g_monster_soldier_attack_uzi_damage;
+float autocvar_g_monster_soldier_attack_uzi_force;
+float autocvar_g_monster_soldier_attack_shotgun_damage;
+float autocvar_g_monster_soldier_attack_shotgun_force;
+float autocvar_g_monster_soldier_attack_shotgun_spread;
+float autocvar_g_monster_soldier_attack_shotgun_bullets;
// animations
const float soldier_anim_die1 = 0;
self.delay = -1;
return;
}
- W_UZI_Attack(DEATH_MONSTER_MARINE_UZI);
+
+ W_SetupShot (self, autocvar_g_antilag_bullets && 18000 >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_monster_soldier_attack_uzi_damage);
+ fireBallisticBullet(w_shotorg, w_shotdir, 0.02, 18000, 5, autocvar_g_monster_soldier_attack_uzi_damage, autocvar_g_monster_soldier_attack_uzi_force, DEATH_MONSTER_MARINE, 0, 1, 115);
+ endFireBallisticBullet();
+
self.delay = time + 0.1;
self.monster_delayedattack = soldier_uzi_fire;
}
+void soldier_shotgun_fire()
+{
+ float sc;
+ W_SetupShot (self, autocvar_g_antilag_bullets && 18000 >= autocvar_g_antilag_bullets, 5, "weapons/shotgun_fire.wav", CH_WEAPON_A, autocvar_g_monster_soldier_attack_shotgun_damage * autocvar_g_monster_soldier_attack_shotgun_bullets);
+ for (sc = 0;sc < autocvar_g_monster_soldier_attack_shotgun_bullets;sc = sc + 1)
+ fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_monster_soldier_attack_shotgun_spread, 18000, 5, autocvar_g_monster_soldier_attack_shotgun_damage, autocvar_g_monster_soldier_attack_shotgun_force, DEATH_MONSTER_MARINE, 0, 1, 115);
+ endFireBallisticBullet();
+}
+
float soldier_attack()
{
monsters_setframe(soldier_anim_shoot);
{
self.currentammo -= 1;
self.attack_finished_single = time + 0.8;
- W_Shotgun_Attack();
+ soldier_shotgun_fire();
return TRUE;
}
case WEP_UZI: