]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fx soldier uzi & shotgun attacks
authorMario <mario.mario@y7mail.com>
Sun, 14 Apr 2013 02:00:44 +0000 (12:00 +1000)
committerMario <mario.mario@y7mail.com>
Sun, 14 Apr 2013 02:00:44 +0000 (12:00 +1000)
monsters.cfg
qcsrc/common/deathtypes.qh
qcsrc/common/notifications.qh
qcsrc/server/monsters/monster/soldier.qc

index bff42f5b81179bfc847c85598792ee38bfe3a74b..04a2231bbc3cfed9095b89551cdc312facd0b8e0 100644 (file)
@@ -98,6 +98,12 @@ set g_monster_soldier_weapon_shotgun_chance 8 "Chance of Grunt weapon being shot
 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"
index d2ed41d026bc5f114a329c3d989c58c534f38dd6..0e088ea5c18a2e4b0ddd1c270fc396454a422cdc 100644 (file)
@@ -33,8 +33,8 @@
        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) \
index f136d2f9234e69145fbb19a7fa7cde20e8b933f8..368123fc74152e444852a6b1482f84918a1cd5b7 100644 (file)
@@ -245,7 +245,7 @@ void Send_Notification_WOVA(
        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"), "") \
@@ -586,7 +586,7 @@ void Send_Notification_WOVA(
        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) \
index 9be7211d23e6f80b6c12da67457f3b281e86fbf9..ac5f316127e95de61d0a697c66e18f51d57213a0 100644 (file)
@@ -21,6 +21,12 @@ float autocvar_g_monster_soldier_weapon_shotgun_chance;
 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;
@@ -89,11 +95,24 @@ void soldier_uzi_fire ()
                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);
@@ -120,7 +139,7 @@ float soldier_attack()
                {
                        self.currentammo -= 1;
                        self.attack_finished_single = time + 0.8;
-                       W_Shotgun_Attack();
+                       soldier_shotgun_fire();
                        return TRUE;
                }
                case WEP_UZI: