]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Remove the Shockwave
authorMario <mario.mario@y7mail.com>
Tue, 5 Nov 2024 11:57:08 +0000 (21:57 +1000)
committerMario <mario.mario@y7mail.com>
Tue, 5 Nov 2024 11:57:08 +0000 (21:57 +1000)
25 files changed:
bal-wep-mario.cfg
bal-wep-nexuiz25.cfg
bal-wep-samual.cfg
bal-wep-xdf.cfg
bal-wep-xonotic.cfg
gfx/hud/luma/weaponshockwave.tga [deleted file]
models/weapons/g_shockwave_luma.iqm [deleted file]
models/weapons/g_shockwave_luma.iqm_0.skin [deleted file]
models/weapons/g_shockwave_luma.tga [deleted file]
models/weapons/make-sprites.sh
notifications.cfg
qcsrc/common/models/all.inc
qcsrc/common/mutators/mutator/nades/nades.qc
qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc
qcsrc/common/notifications/all.inc
qcsrc/common/weapons/all.inc
qcsrc/common/weapons/weapon/_mod.inc
qcsrc/common/weapons/weapon/_mod.qh
qcsrc/common/weapons/weapon/shockwave.qc [deleted file]
qcsrc/common/weapons/weapon/shockwave.qh [deleted file]
qcsrc/lib/warpzone/TODO
randomitems-xonotic.cfg
scripts/luma.shader
xonotic-client.cfg
xonotic-server.cfg

index 6a2462d33534da2164a367b58bb07c358fd72c1d..5953a5bb39a8f1db8b5558691776e8d78765697b 100644 (file)
@@ -689,58 +689,7 @@ set g_balance_seeker_weaponstart 0
 set g_balance_seeker_weaponstartoverride -1
 set g_balance_seeker_weaponthrowable 1
 // }}}
-// {{{ #19: Shockwave
-set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 40
-set g_balance_shockwave_blast_distance 1000
-set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 15
-set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 1
-set g_balance_shockwave_blast_jump_damage 20
-set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 100
-set g_balance_shockwave_blast_jump_force_velocitybias 1
-set g_balance_shockwave_blast_jump_force_zscale 1
-set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_jump_multiplier_distance 0.5
-set g_balance_shockwave_blast_jump_multiplier_min 0
-set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.45
-set g_balance_shockwave_blast_multiplier_distance 0.2
-set g_balance_shockwave_blast_multiplier_min 0
-set g_balance_shockwave_blast_refire 0.75
-set g_balance_shockwave_blast_splash_damage 15
-set g_balance_shockwave_blast_splash_edgedamage 0
-set g_balance_shockwave_blast_splash_force 100
-set g_balance_shockwave_blast_splash_force_forwardbias 50
-set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_splash_multiplier_distance 0.5
-set g_balance_shockwave_blast_splash_multiplier_min 0
-set g_balance_shockwave_blast_splash_radius 70
-set g_balance_shockwave_blast_spread_max 120
-set g_balance_shockwave_blast_spread_min 25
-set g_balance_shockwave_melee_animtime 1.3
-set g_balance_shockwave_melee_damage 80
-set g_balance_shockwave_melee_delay 0.25
-set g_balance_shockwave_melee_force 200
-set g_balance_shockwave_melee_multihit 1
-set g_balance_shockwave_melee_no_doubleslap 1
-set g_balance_shockwave_melee_nonplayerdamage 40
-set g_balance_shockwave_melee_range 120
-set g_balance_shockwave_melee_refire 1.25
-set g_balance_shockwave_melee_swing_side 120
-set g_balance_shockwave_melee_swing_up 30
-set g_balance_shockwave_melee_time 0.15
-set g_balance_shockwave_melee_traces 10
-set g_balance_shockwave_switchdelay_drop 0.2
-set g_balance_shockwave_switchdelay_raise 0.2
-set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 0
-set g_balance_shockwave_weaponstartoverride -1
-set g_balance_shockwave_weaponthrowable 0
-// }}}
-// {{{ #20: Arc
+// {{{ #19: Arc
 set g_balance_arc_beam_ammo 6
 set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
@@ -796,7 +745,7 @@ set g_balance_arc_weaponstart 0
 set g_balance_arc_weaponstartoverride -1
 set g_balance_arc_weaponthrowable 1
 // }}}
-// {{{ #21: Overkill Heavy Machine Gun (MUTATOR WEAPON)
+// {{{ #20: Overkill Heavy Machine Gun (MUTATOR WEAPON)
 set g_balance_okhmg_primary_ammo 1
 set g_balance_okhmg_primary_damage 30
 set g_balance_okhmg_primary_force 10
@@ -815,7 +764,7 @@ set g_balance_okhmg_weaponstart 0
 set g_balance_okhmg_weaponstartoverride 0
 set g_balance_okhmg_weaponthrowable 0
 // }}}
-// {{{ #22: Overkill MachineGun (MUTATOR WEAPON)
+// {{{ #21: Overkill MachineGun (MUTATOR WEAPON)
 set g_balance_okmachinegun_damagefalloff_forcehalflife 0
 set g_balance_okmachinegun_damagefalloff_halflife 0
 set g_balance_okmachinegun_damagefalloff_maxdist 0
@@ -838,7 +787,7 @@ set g_balance_okmachinegun_weaponstart 0
 set g_balance_okmachinegun_weaponstartoverride -1
 set g_balance_okmachinegun_weaponthrowable 1
 // }}}
-// {{{ #23: Overkill Nex (MUTATOR WEAPON)
+// {{{ #22: Overkill Nex (MUTATOR WEAPON)
 set g_balance_oknex_charge 0
 set g_balance_oknex_charge_animlimit 0.5
 set g_balance_oknex_charge_limit 1
@@ -878,7 +827,7 @@ set g_balance_oknex_weaponstart 0
 set g_balance_oknex_weaponstartoverride -1
 set g_balance_oknex_weaponthrowable 1
 // }}}
-// {{{ #24: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
+// {{{ #23: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
 set g_balance_okrpc_primary_ammo 10
 set g_balance_okrpc_primary_animtime 1
 set g_balance_okrpc_primary_damage 150
@@ -902,7 +851,7 @@ set g_balance_okrpc_weaponstart 0
 set g_balance_okrpc_weaponstartoverride 0
 set g_balance_okrpc_weaponthrowable 0
 // }}}
-// {{{ #25: Overkill Shotgun (MUTATOR WEAPON)
+// {{{ #24: Overkill Shotgun (MUTATOR WEAPON)
 set g_balance_okshotgun_primary_ammo 3
 set g_balance_okshotgun_primary_animtime 0.65
 set g_balance_okshotgun_primary_bot_range 512
index bfd58cf1769c09ee0e7069aa86ee3a171b8974b1..9206fdd3d505935b3499ccb2269603fd4b0c7335 100644 (file)
@@ -689,58 +689,7 @@ set g_balance_seeker_weaponstart 0
 set g_balance_seeker_weaponstartoverride -1
 set g_balance_seeker_weaponthrowable 1
 // }}}
-// {{{ #19: Shockwave
-set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
-set g_balance_shockwave_blast_distance 1000
-set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
-set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
-set g_balance_shockwave_blast_jump_damage 20
-set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
-set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_jump_multiplier_distance 0.5
-set g_balance_shockwave_blast_jump_multiplier_min 0
-set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
-set g_balance_shockwave_blast_multiplier_min 0
-set g_balance_shockwave_blast_refire 0.75
-set g_balance_shockwave_blast_splash_damage 15
-set g_balance_shockwave_blast_splash_edgedamage 0
-set g_balance_shockwave_blast_splash_force 100
-set g_balance_shockwave_blast_splash_force_forwardbias 50
-set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_splash_multiplier_distance 0.5
-set g_balance_shockwave_blast_splash_multiplier_min 0
-set g_balance_shockwave_blast_splash_radius 70
-set g_balance_shockwave_blast_spread_max 120
-set g_balance_shockwave_blast_spread_min 25
-set g_balance_shockwave_melee_animtime 1.3
-set g_balance_shockwave_melee_damage 80
-set g_balance_shockwave_melee_delay 0.25
-set g_balance_shockwave_melee_force 200
-set g_balance_shockwave_melee_multihit 1
-set g_balance_shockwave_melee_no_doubleslap 1
-set g_balance_shockwave_melee_nonplayerdamage 40
-set g_balance_shockwave_melee_range 120
-set g_balance_shockwave_melee_refire 1.25
-set g_balance_shockwave_melee_swing_side 120
-set g_balance_shockwave_melee_swing_up 30
-set g_balance_shockwave_melee_time 0.15
-set g_balance_shockwave_melee_traces 10
-set g_balance_shockwave_switchdelay_drop 0.15
-set g_balance_shockwave_switchdelay_raise 0.15
-set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 0
-set g_balance_shockwave_weaponstartoverride -1
-set g_balance_shockwave_weaponthrowable 0
-// }}}
-// {{{ #20: Arc
+// {{{ #19: Arc
 set g_balance_arc_beam_ammo 4
 set g_balance_arc_beam_animtime 0.2
 set g_balance_arc_beam_botaimlifetime 0
@@ -796,7 +745,7 @@ set g_balance_arc_weaponstart 0
 set g_balance_arc_weaponstartoverride -1
 set g_balance_arc_weaponthrowable 1
 // }}}
-// {{{ #21: Overkill Heavy Machine Gun (MUTATOR WEAPON)
+// {{{ #20: Overkill Heavy Machine Gun (MUTATOR WEAPON)
 set g_balance_okhmg_primary_ammo 1
 set g_balance_okhmg_primary_damage 30
 set g_balance_okhmg_primary_force 10
@@ -815,7 +764,7 @@ set g_balance_okhmg_weaponstart 0
 set g_balance_okhmg_weaponstartoverride 0
 set g_balance_okhmg_weaponthrowable 0
 // }}}
-// {{{ #22: Overkill MachineGun (MUTATOR WEAPON)
+// {{{ #21: Overkill MachineGun (MUTATOR WEAPON)
 set g_balance_okmachinegun_damagefalloff_forcehalflife 0
 set g_balance_okmachinegun_damagefalloff_halflife 0
 set g_balance_okmachinegun_damagefalloff_maxdist 0
@@ -838,7 +787,7 @@ set g_balance_okmachinegun_weaponstart 0
 set g_balance_okmachinegun_weaponstartoverride -1
 set g_balance_okmachinegun_weaponthrowable 1
 // }}}
-// {{{ #23: Overkill Nex (MUTATOR WEAPON)
+// {{{ #22: Overkill Nex (MUTATOR WEAPON)
 set g_balance_oknex_charge 0
 set g_balance_oknex_charge_animlimit 0.5
 set g_balance_oknex_charge_limit 1
@@ -878,7 +827,7 @@ set g_balance_oknex_weaponstart 0
 set g_balance_oknex_weaponstartoverride -1
 set g_balance_oknex_weaponthrowable 1
 // }}}
-// {{{ #24: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
+// {{{ #23: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
 set g_balance_okrpc_primary_ammo 10
 set g_balance_okrpc_primary_animtime 1
 set g_balance_okrpc_primary_damage 150
@@ -902,7 +851,7 @@ set g_balance_okrpc_weaponstart 0
 set g_balance_okrpc_weaponstartoverride 0
 set g_balance_okrpc_weaponthrowable 0
 // }}}
-// {{{ #25: Overkill Shotgun (MUTATOR WEAPON)
+// {{{ #24: Overkill Shotgun (MUTATOR WEAPON)
 set g_balance_okshotgun_primary_ammo 3
 set g_balance_okshotgun_primary_animtime 0.65
 set g_balance_okshotgun_primary_bot_range 512
index dd555810a2f35eb65a07cc666995696d5bb2f882..e2137cc283ac2fd4e80581079af4c50a75af0e57 100644 (file)
@@ -689,58 +689,7 @@ set g_balance_seeker_weaponstart 0
 set g_balance_seeker_weaponstartoverride -1
 set g_balance_seeker_weaponthrowable 1
 // }}}
-// {{{ #19: Shockwave
-set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
-set g_balance_shockwave_blast_distance 1000
-set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
-set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
-set g_balance_shockwave_blast_jump_damage 20
-set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
-set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_jump_multiplier_distance 0.5
-set g_balance_shockwave_blast_jump_multiplier_min 0
-set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
-set g_balance_shockwave_blast_multiplier_min 0
-set g_balance_shockwave_blast_refire 0.75
-set g_balance_shockwave_blast_splash_damage 15
-set g_balance_shockwave_blast_splash_edgedamage 0
-set g_balance_shockwave_blast_splash_force 100
-set g_balance_shockwave_blast_splash_force_forwardbias 50
-set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_splash_multiplier_distance 0.5
-set g_balance_shockwave_blast_splash_multiplier_min 0
-set g_balance_shockwave_blast_splash_radius 70
-set g_balance_shockwave_blast_spread_max 120
-set g_balance_shockwave_blast_spread_min 25
-set g_balance_shockwave_melee_animtime 1.3
-set g_balance_shockwave_melee_damage 80
-set g_balance_shockwave_melee_delay 0.25
-set g_balance_shockwave_melee_force 200
-set g_balance_shockwave_melee_multihit 1
-set g_balance_shockwave_melee_no_doubleslap 1
-set g_balance_shockwave_melee_nonplayerdamage 40
-set g_balance_shockwave_melee_range 120
-set g_balance_shockwave_melee_refire 1.25
-set g_balance_shockwave_melee_swing_side 120
-set g_balance_shockwave_melee_swing_up 30
-set g_balance_shockwave_melee_time 0.15
-set g_balance_shockwave_melee_traces 10
-set g_balance_shockwave_switchdelay_drop 0.2
-set g_balance_shockwave_switchdelay_raise 0.2
-set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 1
-set g_balance_shockwave_weaponstartoverride -1
-set g_balance_shockwave_weaponthrowable 0
-// }}}
-// {{{ #20: Arc
+// {{{ #19: Arc
 set g_balance_arc_beam_ammo 0
 set g_balance_arc_beam_animtime 0.2
 set g_balance_arc_beam_botaimlifetime 0
@@ -796,7 +745,7 @@ set g_balance_arc_weaponstart 0
 set g_balance_arc_weaponstartoverride -1
 set g_balance_arc_weaponthrowable 1
 // }}}
-// {{{ #21: Overkill Heavy Machine Gun (MUTATOR WEAPON)
+// {{{ #20: Overkill Heavy Machine Gun (MUTATOR WEAPON)
 set g_balance_okhmg_primary_ammo 1
 set g_balance_okhmg_primary_damage 30
 set g_balance_okhmg_primary_force 10
@@ -815,7 +764,7 @@ set g_balance_okhmg_weaponstart 0
 set g_balance_okhmg_weaponstartoverride 0
 set g_balance_okhmg_weaponthrowable 0
 // }}}
-// {{{ #22: Overkill MachineGun (MUTATOR WEAPON)
+// {{{ #21: Overkill MachineGun (MUTATOR WEAPON)
 set g_balance_okmachinegun_damagefalloff_forcehalflife 0
 set g_balance_okmachinegun_damagefalloff_halflife 0
 set g_balance_okmachinegun_damagefalloff_maxdist 0
@@ -838,7 +787,7 @@ set g_balance_okmachinegun_weaponstart 0
 set g_balance_okmachinegun_weaponstartoverride -1
 set g_balance_okmachinegun_weaponthrowable 1
 // }}}
-// {{{ #23: Overkill Nex (MUTATOR WEAPON)
+// {{{ #22: Overkill Nex (MUTATOR WEAPON)
 set g_balance_oknex_charge 0
 set g_balance_oknex_charge_animlimit 0.5
 set g_balance_oknex_charge_limit 1
@@ -878,7 +827,7 @@ set g_balance_oknex_weaponstart 0
 set g_balance_oknex_weaponstartoverride -1
 set g_balance_oknex_weaponthrowable 1
 // }}}
-// {{{ #24: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
+// {{{ #23: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
 set g_balance_okrpc_primary_ammo 10
 set g_balance_okrpc_primary_animtime 1
 set g_balance_okrpc_primary_damage 150
@@ -902,7 +851,7 @@ set g_balance_okrpc_weaponstart 0
 set g_balance_okrpc_weaponstartoverride 0
 set g_balance_okrpc_weaponthrowable 0
 // }}}
-// {{{ #25: Overkill Shotgun (MUTATOR WEAPON)
+// {{{ #24: Overkill Shotgun (MUTATOR WEAPON)
 set g_balance_okshotgun_primary_ammo 3
 set g_balance_okshotgun_primary_animtime 0.65
 set g_balance_okshotgun_primary_bot_range 512
index 0c33b8e0c39f4bb59bad4e6209316064cb3cfa3c..53d5786214180a1901f59ae534b1df1435038369 100644 (file)
@@ -689,58 +689,7 @@ set g_balance_seeker_weaponstart 0
 set g_balance_seeker_weaponstartoverride -1
 set g_balance_seeker_weaponthrowable 1
 // }}}
-// {{{ #19: Shockwave
-set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 40
-set g_balance_shockwave_blast_distance 1000
-set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 15
-set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 1
-set g_balance_shockwave_blast_jump_damage 20
-set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 100
-set g_balance_shockwave_blast_jump_force_velocitybias 1
-set g_balance_shockwave_blast_jump_force_zscale 1
-set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_jump_multiplier_distance 0.5
-set g_balance_shockwave_blast_jump_multiplier_min 0
-set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.45
-set g_balance_shockwave_blast_multiplier_distance 0.2
-set g_balance_shockwave_blast_multiplier_min 0
-set g_balance_shockwave_blast_refire 0.75
-set g_balance_shockwave_blast_splash_damage 15
-set g_balance_shockwave_blast_splash_edgedamage 0
-set g_balance_shockwave_blast_splash_force 100
-set g_balance_shockwave_blast_splash_force_forwardbias 50
-set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_splash_multiplier_distance 0.5
-set g_balance_shockwave_blast_splash_multiplier_min 0
-set g_balance_shockwave_blast_splash_radius 70
-set g_balance_shockwave_blast_spread_max 120
-set g_balance_shockwave_blast_spread_min 25
-set g_balance_shockwave_melee_animtime 1.3
-set g_balance_shockwave_melee_damage 80
-set g_balance_shockwave_melee_delay 0.25
-set g_balance_shockwave_melee_force 200
-set g_balance_shockwave_melee_multihit 1
-set g_balance_shockwave_melee_no_doubleslap 1
-set g_balance_shockwave_melee_nonplayerdamage 40
-set g_balance_shockwave_melee_range 120
-set g_balance_shockwave_melee_refire 1.25
-set g_balance_shockwave_melee_swing_side 120
-set g_balance_shockwave_melee_swing_up 30
-set g_balance_shockwave_melee_time 0.15
-set g_balance_shockwave_melee_traces 10
-set g_balance_shockwave_switchdelay_drop 0
-set g_balance_shockwave_switchdelay_raise 0
-set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 0
-set g_balance_shockwave_weaponstartoverride -1
-set g_balance_shockwave_weaponthrowable 0
-// }}}
-// {{{ #20: Arc
+// {{{ #19: Arc
 set g_balance_arc_beam_ammo 6
 set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
@@ -796,7 +745,7 @@ set g_balance_arc_weaponstart 0
 set g_balance_arc_weaponstartoverride -1
 set g_balance_arc_weaponthrowable 1
 // }}}
-// {{{ #21: Overkill Heavy Machine Gun (MUTATOR WEAPON)
+// {{{ #20: Overkill Heavy Machine Gun (MUTATOR WEAPON)
 set g_balance_okhmg_primary_ammo 1
 set g_balance_okhmg_primary_damage 30
 set g_balance_okhmg_primary_force 10
@@ -815,7 +764,7 @@ set g_balance_okhmg_weaponstart 0
 set g_balance_okhmg_weaponstartoverride 0
 set g_balance_okhmg_weaponthrowable 0
 // }}}
-// {{{ #22: Overkill MachineGun (MUTATOR WEAPON)
+// {{{ #21: Overkill MachineGun (MUTATOR WEAPON)
 set g_balance_okmachinegun_damagefalloff_forcehalflife 0
 set g_balance_okmachinegun_damagefalloff_halflife 0
 set g_balance_okmachinegun_damagefalloff_maxdist 0
@@ -838,7 +787,7 @@ set g_balance_okmachinegun_weaponstart 0
 set g_balance_okmachinegun_weaponstartoverride -1
 set g_balance_okmachinegun_weaponthrowable 1
 // }}}
-// {{{ #23: Overkill Nex (MUTATOR WEAPON)
+// {{{ #22: Overkill Nex (MUTATOR WEAPON)
 set g_balance_oknex_charge 0
 set g_balance_oknex_charge_animlimit 0.5
 set g_balance_oknex_charge_limit 1
@@ -878,7 +827,7 @@ set g_balance_oknex_weaponstart 0
 set g_balance_oknex_weaponstartoverride -1
 set g_balance_oknex_weaponthrowable 1
 // }}}
-// {{{ #24: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
+// {{{ #23: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
 set g_balance_okrpc_primary_ammo 10
 set g_balance_okrpc_primary_animtime 1
 set g_balance_okrpc_primary_damage 150
@@ -902,7 +851,7 @@ set g_balance_okrpc_weaponstart 0
 set g_balance_okrpc_weaponstartoverride 0
 set g_balance_okrpc_weaponthrowable 0
 // }}}
-// {{{ #25: Overkill Shotgun (MUTATOR WEAPON)
+// {{{ #24: Overkill Shotgun (MUTATOR WEAPON)
 set g_balance_okshotgun_primary_ammo 3
 set g_balance_okshotgun_primary_animtime 0.65
 set g_balance_okshotgun_primary_bot_range 512
index e24b172e8436914fec7e855fc89663871998b158..5a32cda848e240f40fd263fe9a0c33471be6c3a2 100644 (file)
@@ -689,58 +689,7 @@ set g_balance_seeker_weaponstart 0
 set g_balance_seeker_weaponstartoverride -1
 set g_balance_seeker_weaponthrowable 1
 // }}}
-// {{{ #19: Shockwave
-set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 40
-set g_balance_shockwave_blast_distance 1000
-set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 15
-set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 1
-set g_balance_shockwave_blast_jump_damage 20
-set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 100
-set g_balance_shockwave_blast_jump_force_velocitybias 1
-set g_balance_shockwave_blast_jump_force_zscale 1
-set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_jump_multiplier_distance 0.5
-set g_balance_shockwave_blast_jump_multiplier_min 0
-set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.45
-set g_balance_shockwave_blast_multiplier_distance 0.2
-set g_balance_shockwave_blast_multiplier_min 0
-set g_balance_shockwave_blast_refire 0.75
-set g_balance_shockwave_blast_splash_damage 15
-set g_balance_shockwave_blast_splash_edgedamage 0
-set g_balance_shockwave_blast_splash_force 100
-set g_balance_shockwave_blast_splash_force_forwardbias 50
-set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_splash_multiplier_distance 0.5
-set g_balance_shockwave_blast_splash_multiplier_min 0
-set g_balance_shockwave_blast_splash_radius 70
-set g_balance_shockwave_blast_spread_max 120
-set g_balance_shockwave_blast_spread_min 25
-set g_balance_shockwave_melee_animtime 1.3
-set g_balance_shockwave_melee_damage 80
-set g_balance_shockwave_melee_delay 0.25
-set g_balance_shockwave_melee_force 200
-set g_balance_shockwave_melee_multihit 1
-set g_balance_shockwave_melee_no_doubleslap 1
-set g_balance_shockwave_melee_nonplayerdamage 40
-set g_balance_shockwave_melee_range 120
-set g_balance_shockwave_melee_refire 1.25
-set g_balance_shockwave_melee_swing_side 120
-set g_balance_shockwave_melee_swing_up 30
-set g_balance_shockwave_melee_time 0.15
-set g_balance_shockwave_melee_traces 10
-set g_balance_shockwave_switchdelay_drop 0.2
-set g_balance_shockwave_switchdelay_raise 0.2
-set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 0
-set g_balance_shockwave_weaponstartoverride -1
-set g_balance_shockwave_weaponthrowable 0
-// }}}
-// {{{ #20: Arc
+// {{{ #19: Arc
 set g_balance_arc_beam_ammo 6
 set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
@@ -796,7 +745,7 @@ set g_balance_arc_weaponstart 0
 set g_balance_arc_weaponstartoverride -1
 set g_balance_arc_weaponthrowable 1
 // }}}
-// {{{ #21: Overkill Heavy Machine Gun (MUTATOR WEAPON)
+// {{{ #20: Overkill Heavy Machine Gun (MUTATOR WEAPON)
 set g_balance_okhmg_primary_ammo 1
 set g_balance_okhmg_primary_damage 30
 set g_balance_okhmg_primary_force 10
@@ -815,7 +764,7 @@ set g_balance_okhmg_weaponstart 0
 set g_balance_okhmg_weaponstartoverride 0
 set g_balance_okhmg_weaponthrowable 0
 // }}}
-// {{{ #22: Overkill MachineGun (MUTATOR WEAPON)
+// {{{ #21: Overkill MachineGun (MUTATOR WEAPON)
 set g_balance_okmachinegun_damagefalloff_forcehalflife 0
 set g_balance_okmachinegun_damagefalloff_halflife 0
 set g_balance_okmachinegun_damagefalloff_maxdist 0
@@ -838,7 +787,7 @@ set g_balance_okmachinegun_weaponstart 0
 set g_balance_okmachinegun_weaponstartoverride -1
 set g_balance_okmachinegun_weaponthrowable 1
 // }}}
-// {{{ #23: Overkill Nex (MUTATOR WEAPON)
+// {{{ #22: Overkill Nex (MUTATOR WEAPON)
 set g_balance_oknex_charge 0
 set g_balance_oknex_charge_animlimit 0.5
 set g_balance_oknex_charge_limit 1
@@ -878,7 +827,7 @@ set g_balance_oknex_weaponstart 0
 set g_balance_oknex_weaponstartoverride -1
 set g_balance_oknex_weaponthrowable 1
 // }}}
-// {{{ #24: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
+// {{{ #23: Overkill Rocket Propelled Chainsaw (MUTATOR WEAPON)
 set g_balance_okrpc_primary_ammo 10
 set g_balance_okrpc_primary_animtime 1
 set g_balance_okrpc_primary_damage 150
@@ -902,7 +851,7 @@ set g_balance_okrpc_weaponstart 0
 set g_balance_okrpc_weaponstartoverride 0
 set g_balance_okrpc_weaponthrowable 0
 // }}}
-// {{{ #25: Overkill Shotgun (MUTATOR WEAPON)
+// {{{ #24: Overkill Shotgun (MUTATOR WEAPON)
 set g_balance_okshotgun_primary_ammo 3
 set g_balance_okshotgun_primary_animtime 0.65
 set g_balance_okshotgun_primary_bot_range 512
diff --git a/gfx/hud/luma/weaponshockwave.tga b/gfx/hud/luma/weaponshockwave.tga
deleted file mode 100644 (file)
index c37b837..0000000
Binary files a/gfx/hud/luma/weaponshockwave.tga and /dev/null differ
diff --git a/models/weapons/g_shockwave_luma.iqm b/models/weapons/g_shockwave_luma.iqm
deleted file mode 100644 (file)
index a5cc3e6..0000000
Binary files a/models/weapons/g_shockwave_luma.iqm and /dev/null differ
diff --git a/models/weapons/g_shockwave_luma.iqm_0.skin b/models/weapons/g_shockwave_luma.iqm_0.skin
deleted file mode 100644 (file)
index 5a243ff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Plane,g_shockwave_luma
diff --git a/models/weapons/g_shockwave_luma.tga b/models/weapons/g_shockwave_luma.tga
deleted file mode 100644 (file)
index 74eb94e..0000000
Binary files a/models/weapons/g_shockwave_luma.tga and /dev/null differ
index 3b8c437211993706720d03d9e4a718c393b4a9d8..41650e123032963696a593db7bc39276e4920f27 100755 (executable)
@@ -75,7 +75,6 @@ sprite gl                     "Mortar"                        ff0000 # Red
 sprite porto           "Port-O-Launch"         808080 # Gray
 sprite campingrifle    "Rifle"                         80ff00 # Chartreuse
 sprite seeker          "T.A.G.\nSeeker"        80ff00 # Chartreuse
-#sprite shockwave      "Shockwave"                     804000 # Cinnamon
 sprite shotgun         "Shotgun"                       804000 # Cinnamon
 sprite tuba                    "Tuba"                          00ff00 # Green
 sprite minstanex       "Vaporizer"                     80ffff # Anakiwa
index 413836892c2f0b39df5f3bec1c5bc13523988390..a21984c634a3cabd1e10ffed15f051f5004ee8d7 100644 (file)
@@ -352,8 +352,6 @@ seta notification_INFO_WEAPON_RIFLE_MURDER_PIERCING "1" "0 = off, 1 = print to c
 seta notification_INFO_WEAPON_SEEKER_MURDER_SPRAY "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SEEKER_MURDER_TAG "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SEEKER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_SHOCKWAVE_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_SHOCKWAVE_MURDER_SLAP "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SHOTGUN_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SHOTGUN_MURDER_SLAP "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_THINKING_WITH_PORTALS "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -736,8 +734,6 @@ seta notification_WEAPON_RIFLE_MURDER_PIERCING "1" "Enable this multiple notific
 seta notification_WEAPON_SEEKER_MURDER_SPRAY "1" "Enable this multiple notification"
 seta notification_WEAPON_SEEKER_MURDER_TAG "1" "Enable this multiple notification"
 seta notification_WEAPON_SEEKER_SUICIDE "1" "Enable this multiple notification"
-seta notification_WEAPON_SHOCKWAVE_MURDER "1" "Enable this multiple notification"
-seta notification_WEAPON_SHOCKWAVE_MURDER_SLAP "1" "Enable this multiple notification"
 seta notification_WEAPON_SHOTGUN_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_SHOTGUN_MURDER_SLAP "1" "Enable this multiple notification"
 seta notification_WEAPON_THINKING_WITH_PORTALS "1" "Enable this multiple notification"
index b8fc08f388144d328b101b1c60e5557a92027187..5a706ed9779ef57d392d5a9a2c7ec13e0d62f27a 100644 (file)
@@ -241,11 +241,6 @@ MODEL(SEEKER_VIEW,                      W_Model("h_seeker.iqm"));
 MODEL(SEEKER_WORLD,                     W_Model("v_seeker.md3"));
 MODEL(SEEKER_ITEM,                      W_Model("g_seeker.md3"));
 
-MODEL(SHOCKWAVE_MUZZLEFLASH,            "models/uziflash.md3");
-MODEL(SHOCKWAVE_VIEW,                   W_Model("h_shotgun.iqm"));
-MODEL(SHOCKWAVE_WORLD,                  W_Model("v_shotgun.md3"));
-MODEL(SHOCKWAVE_ITEM,                   W_Model("g_shotgun.md3"));
-
 MODEL(ARC_MUZZLEFLASH,                  "models/flash.md3");
 MODEL(ARC_VIEW,                         W_Model("h_arc.iqm"));
 MODEL(ARC_WORLD,                        W_Model("v_arc.md3"));
index 323c14d987d4eefccb8c2ca9069cc2d395309475..f47cf2cd529f13d13a43b1985aa29e53f266b6e7 100644 (file)
@@ -1058,7 +1058,7 @@ void nade_damage(entity this, entity inflictor, entity attacker, float damage, i
        }
        else if(DEATH_ISWEAPON(deathtype, WEP_MACHINEGUN) || DEATH_ISWEAPON(deathtype, WEP_OVERKILL_MACHINEGUN))
                damage = this.max_health * 0.1;
-       else if(DEATH_ISWEAPON(deathtype, WEP_SHOCKWAVE) || DEATH_ISWEAPON(deathtype, WEP_SHOTGUN) || DEATH_ISWEAPON(deathtype, WEP_OVERKILL_SHOTGUN)) // WEAPONTODO
+       else if(DEATH_ISWEAPON(deathtype, WEP_SHOTGUN) || DEATH_ISWEAPON(deathtype, WEP_OVERKILL_SHOTGUN)) // WEAPONTODO
        {
                if(!(deathtype & HITTYPE_SECONDARY))
                        damage = this.max_health * 1.15;
index e2a5ea41a7717ebdc74828261f2ffdf752c83699..3bb13a9f5a4f26dca09dfbaf75598247c58242f9 100644 (file)
@@ -122,7 +122,6 @@ bool nt_IsNewToy(int w)
                case WEP_MINE_LAYER.m_id:
                case WEP_HLAC.m_id:
                case WEP_RIFLE.m_id:
-               case WEP_SHOCKWAVE.m_id:
                case WEP_ARC.m_id:
                        return true;
                default:
@@ -138,7 +137,6 @@ string nt_GetFullReplacement(string w)
                case "devastator": return "minelayer";
                case "machinegun": return "hlac";
                case "vortex": return "rifle";
-               //case "shotgun": return "shockwave";
                default: return string_null;
        }
 }
index fd61b5686605f7b77be8960736ba330a2d0e82e6..836fef289551cffc3ecabd6652813d3cd8c5db97 100644 (file)
@@ -524,8 +524,6 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input !=
     MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_SPRAY,              N_CONSOLE,  3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",       "weaponseeker",             _("^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s"), "")
     MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_TAG,                N_CONSOLE,  3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",       "weaponseeker",             _("^BG%s%s^K1 was tagged by ^BG%s^K1's Seeker%s%s"), "")
     MSG_INFO_NOTIF(WEAPON_SEEKER_SUICIDE,                   N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",                      "weaponseeker",             _("^BG%s^K1 played with tiny Seeker rockets%s%s"), "")
-    MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER,                 N_CONSOLE,  3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",       "weaponshockwave",          _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s"), "")
-    MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP,            N_CONSOLE,  3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1",       "notify_melee_shotgun",     _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s"), "")
     MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER,                   N_CONSOLE,  3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1",       "weaponshotgun",            _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s"), "")
     MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP,              N_CONSOLE,  3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1",       "notify_melee_shotgun",     _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s"), "")
     MSG_INFO_NOTIF(WEAPON_THINKING_WITH_PORTALS,            N_CONSOLE,  2, 1, "s1 s2loc spree_lost", "s1",                      "notify_selfkill",          _("^BG%s^K1 is now thinking with portals%s%s"), "")
@@ -1008,8 +1006,6 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input !=
     MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_SPRAY,         N_ENABLE,  NULL,           INFO_WEAPON_SEEKER_MURDER_SPRAY,        NULL)
     MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_TAG,           N_ENABLE,  NULL,           INFO_WEAPON_SEEKER_MURDER_TAG,          NULL)
     MSG_MULTI_NOTIF(WEAPON_SEEKER_SUICIDE,              N_ENABLE,  NULL,           INFO_WEAPON_SEEKER_SUICIDE,             CENTER_DEATH_SELF_GENERIC)
-    MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER,            N_ENABLE,  NULL,           INFO_WEAPON_SHOCKWAVE_MURDER,           NULL)
-    MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP,       N_ENABLE,  NULL,           INFO_WEAPON_SHOCKWAVE_MURDER_SLAP,      NULL)
     MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER,              N_ENABLE,  NULL,           INFO_WEAPON_SHOTGUN_MURDER,             NULL)
     MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP,         N_ENABLE,  NULL,           INFO_WEAPON_SHOTGUN_MURDER_SLAP,        NULL)
     MSG_MULTI_NOTIF(WEAPON_THINKING_WITH_PORTALS,       N_ENABLE,  NULL,           INFO_WEAPON_THINKING_WITH_PORTALS,      CENTER_DEATH_SELF_GENERIC)
index 15e61025b7f03da9ede755c321a619d2865ccf3b..7b83f03f4358573059fb4d0aa2ec026fa1cad78c 100644 (file)
@@ -23,9 +23,8 @@
 #include "weapon/rifle.qh"
 #include "weapon/fireball.qh"
 #include "weapon/seeker.qh"
-#include "weapon/shockwave.qh"
 #include "weapon/arc.qh"
 
 // Weapon registry is sorted to allocate the weapons included above first, update the value below to the number of listed weapons
 // TODO: remove eventually in a way that does not cause https://gitlab.com/xonotic/xonotic-data.pk3dir/-/issues/2714
-#define WEP_HARDCODED_IMPULSES 20
+#define WEP_HARDCODED_IMPULSES 19
index 20d390c0947a993eb93366e52cff26a3d991b374..9a099a5c7815c4301c5e6e9e3aeccd26c40cd76f 100644 (file)
@@ -14,7 +14,6 @@
 #include <common/weapons/weapon/porto.qc>
 #include <common/weapons/weapon/rifle.qc>
 #include <common/weapons/weapon/seeker.qc>
-#include <common/weapons/weapon/shockwave.qc>
 #include <common/weapons/weapon/shotgun.qc>
 #include <common/weapons/weapon/tuba.qc>
 #include <common/weapons/weapon/vaporizer.qc>
index 02d0ffa57d5d82bac473b052d43022d09ed0c857..4767ccf8a89a682f45f49d2e2de7e0f21675e81a 100644 (file)
@@ -14,7 +14,6 @@
 #include <common/weapons/weapon/porto.qh>
 #include <common/weapons/weapon/rifle.qh>
 #include <common/weapons/weapon/seeker.qh>
-#include <common/weapons/weapon/shockwave.qh>
 #include <common/weapons/weapon/shotgun.qh>
 #include <common/weapons/weapon/tuba.qh>
 #include <common/weapons/weapon/vaporizer.qh>
diff --git a/qcsrc/common/weapons/weapon/shockwave.qc b/qcsrc/common/weapons/weapon/shockwave.qc
deleted file mode 100644 (file)
index 605dbd7..0000000
+++ /dev/null
@@ -1,815 +0,0 @@
-#include "shockwave.qh"
-
-#ifdef GAMEQC
-REGISTER_NET_TEMP(TE_CSQC_SHOCKWAVEPARTICLE)
-#endif
-
-#ifdef SVQC
-
-const float MAX_SHOCKWAVE_HITS = 10;
-//#define DEBUG_SHOCKWAVE
-
-.float swing_prev;
-.entity swing_alreadyhit;
-.float shockwave_blasttime;
-entity shockwave_hit[MAX_SHOCKWAVE_HITS];
-float shockwave_hit_damage[MAX_SHOCKWAVE_HITS];
-vector shockwave_hit_force[MAX_SHOCKWAVE_HITS];
-
-// MELEE ATTACK MODE
-void W_Shockwave_Melee_Think(entity this)
-{
-       // declarations
-       float i, f, swing, swing_factor, swing_damage, meleetime, is_player;
-       entity target_victim;
-       vector targpos;
-
-       // check to see if we can still continue, otherwise give up now
-       if(IS_DEAD(this.realowner) && WEP_CVAR(WEP_SHOCKWAVE, melee_no_doubleslap))
-       {
-               delete(this);
-               return;
-       }
-
-       // set start time of melee
-       if(!this.cnt)
-       {
-               this.cnt = time;
-               W_PlayStrengthSound(this.realowner);
-       }
-
-       // update values for v_* vectors
-       makevectors(this.realowner.v_angle);
-
-       // calculate swing percentage based on time
-       meleetime = WEP_CVAR(WEP_SHOCKWAVE, melee_time) * W_WeaponRateFactor(this.realowner);
-       swing = bound(0, (this.cnt + meleetime - time) / meleetime, 10);
-       f = ((1 - swing) * WEP_CVAR(WEP_SHOCKWAVE, melee_traces));
-
-       // perform the traces needed for this frame
-       for(i=this.swing_prev; i < f; ++i)
-       {
-               swing_factor = ((1 - (i / WEP_CVAR(WEP_SHOCKWAVE, melee_traces))) * 2 - 1);
-
-               targpos = (this.realowner.origin + this.realowner.view_ofs
-                       + (v_forward * WEP_CVAR(WEP_SHOCKWAVE, melee_range))
-                       + (v_up * swing_factor * WEP_CVAR(WEP_SHOCKWAVE, melee_swing_up))
-                       + (v_right * swing_factor * WEP_CVAR(WEP_SHOCKWAVE, melee_swing_side)));
-
-               WarpZone_traceline_antilag(
-                       this.realowner,
-                       (this.realowner.origin + this.realowner.view_ofs),
-                       targpos,
-                       false,
-                       this.realowner,
-                       ANTILAG_LATENCY(this.realowner)
-               );
-
-               // draw lightning beams for debugging
-#ifdef DEBUG_SHOCKWAVE
-               te_lightning2(NULL, targpos, this.realowner.origin + this.realowner.view_ofs + v_forward * 5 - v_up * 5);
-               te_customflash(targpos, 40,  2, '1 1 1');
-#endif
-
-               is_player = (IS_PLAYER(trace_ent) || trace_ent.classname == "body" || IS_MONSTER(trace_ent));
-
-               if((trace_fraction < 1) // if trace is good, apply the damage and remove this if necessary
-               && (trace_ent.takedamage == DAMAGE_AIM)
-               && (trace_ent != this.swing_alreadyhit)
-               && (is_player || WEP_CVAR(WEP_SHOCKWAVE, melee_nonplayerdamage)))
-               {
-                       target_victim = trace_ent; // so it persists through other calls
-
-                       if(is_player) // this allows us to be able to nerf the non-player damage done in e.g. assault or onslaught
-                               swing_damage = (WEP_CVAR(WEP_SHOCKWAVE, melee_damage) * min(1, swing_factor + 1));
-                       else
-                               swing_damage = (WEP_CVAR(WEP_SHOCKWAVE, melee_nonplayerdamage) * min(1, swing_factor + 1));
-
-                       // trigger damage with this calculated info
-                       Damage(
-                               target_victim,
-                               this.realowner,
-                               this.realowner,
-                               swing_damage,
-                               (WEP_SHOCKWAVE.m_id | HITTYPE_SECONDARY),
-                               this.weaponentity_fld,
-                               (this.realowner.origin + this.realowner.view_ofs),
-                               (v_forward * WEP_CVAR(WEP_SHOCKWAVE, melee_force))
-                       );
-
-                       // handle accuracy
-                       if(accuracy_isgooddamage(this.realowner, target_victim))
-                               { accuracy_add(this.realowner, WEP_SHOCKWAVE, 0, swing_damage); }
-
-                       #ifdef DEBUG_SHOCKWAVE
-                       LOG_INFOF(
-                               "MELEE: %s hitting %s with %f damage (factor: %f) at %f time.",
-                               this.realowner.netname,
-                               target_victim.netname,
-                               swing_damage,
-                               swing_factor,
-                               time
-                       );
-                       #endif
-
-                       // allow multiple hits with one swing, but not against the same player twice
-                       if(WEP_CVAR(WEP_SHOCKWAVE, melee_multihit))
-                       {
-                               this.swing_alreadyhit = target_victim;
-                               continue; // move along to next trace
-                       }
-                       else
-                       {
-                               delete(this);
-                               return;
-                       }
-               }
-       }
-
-       if(time >= this.cnt + meleetime)
-       {
-               // melee is finished
-               delete(this);
-               return;
-       }
-       else
-       {
-               // set up next frame
-               this.swing_prev = i;
-               this.nextthink = time;
-       }
-}
-
-void W_Shockwave_Melee(Weapon thiswep, entity actor, .entity weaponentity, int fire)
-{
-       sound(actor, CH_WEAPON_A, SND_SHOTGUN_MELEE, VOL_BASE, ATTN_NORM);
-       weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR(WEP_SHOCKWAVE, melee_animtime), w_ready);
-
-       entity meleetemp = new_pure(meleetemp);
-       meleetemp.owner = meleetemp.realowner = actor;
-       setthink(meleetemp, W_Shockwave_Melee_Think);
-       meleetemp.nextthink = time + WEP_CVAR(WEP_SHOCKWAVE, melee_delay) * W_WeaponRateFactor(actor);
-       meleetemp.weaponentity_fld = weaponentity;
-       W_SetupShot_Range(actor, weaponentity, true, 0, SND_Null, 0, WEP_CVAR(WEP_SHOCKWAVE, melee_damage), WEP_CVAR(WEP_SHOCKWAVE, melee_range), thiswep.m_id | HITTYPE_SECONDARY);
-}
-
-// SHOCKWAVE ATTACK MODE
-float W_Shockwave_Attack_CheckSpread(
-       vector targetorg,
-       vector nearest_on_line,
-       vector sw_shotorg,
-       vector attack_endpos)
-{
-       float spreadlimit;
-       float distance_of_attack = vlen(sw_shotorg - attack_endpos);
-       float distance_from_line = vlen(targetorg - nearest_on_line);
-
-       spreadlimit = (distance_of_attack ? min(1, (vlen(sw_shotorg - nearest_on_line) / distance_of_attack)) : 1);
-       spreadlimit =
-               (
-                       (WEP_CVAR(WEP_SHOCKWAVE, blast_spread_min) * (1 - spreadlimit))
-                       +
-                       (WEP_CVAR(WEP_SHOCKWAVE, blast_spread_max) * spreadlimit)
-               );
-
-       if(
-               (spreadlimit && (distance_from_line <= spreadlimit))
-               &&
-               ((vlen(normalize(targetorg - sw_shotorg) - normalize(attack_endpos - sw_shotorg)) * RAD2DEG) <= 90)
-       )
-               { return bound(0, (distance_from_line / spreadlimit), 1); }
-       else
-               { return false; }
-}
-
-float W_Shockwave_Attack_IsVisible(
-       entity actor,
-       entity head,
-       vector nearest_on_line,
-       vector sw_shotorg,
-       vector attack_endpos)
-{
-       vector nearest_to_attacker = head.WarpZone_findradius_nearest;
-       vector center = (head.origin + (head.mins + head.maxs) * 0.5);
-       vector corner;
-       float i;
-
-       // STEP ONE: Check if the nearest point is clear
-       if(W_Shockwave_Attack_CheckSpread(nearest_to_attacker, nearest_on_line, sw_shotorg, attack_endpos))
-       {
-               WarpZone_TraceLine(sw_shotorg, nearest_to_attacker, MOVE_NOMONSTERS, actor);
-               if(trace_fraction == 1) { return true; } // yes, the nearest point is clear and we can allow the damage
-       }
-
-       // STEP TWO: Check if shotorg to center point is clear
-       if(W_Shockwave_Attack_CheckSpread(center, nearest_on_line, sw_shotorg, attack_endpos))
-       {
-               WarpZone_TraceLine(sw_shotorg, center, MOVE_NOMONSTERS, actor);
-               if(trace_fraction == 1) { return true; } // yes, the center point is clear and we can allow the damage
-       }
-
-       // STEP THREE: Check each corner to see if they are clear
-       for(i=1; i<=8; ++i)
-       {
-               corner = get_corner_position(head, i);
-               if(W_Shockwave_Attack_CheckSpread(corner, nearest_on_line, sw_shotorg, attack_endpos))
-               {
-                       WarpZone_TraceLine(sw_shotorg, corner, MOVE_NOMONSTERS, actor);
-                       if(trace_fraction == 1) { return true; } // yes, this corner is clear and we can allow the damage
-               }
-       }
-
-       return false;
-}
-
-float W_Shockwave_Attack_CheckHit(
-       float queue,
-       entity head,
-       vector final_force,
-       float final_damage)
-{
-       if(!head) { return false; }
-       float i;
-
-       for(i = 0; i <= queue; ++i)
-       {
-               if(shockwave_hit[i] == head)
-               {
-                       if(vlen2(final_force) > vlen2(shockwave_hit_force[i])) { shockwave_hit_force[i] = final_force; }
-                       if(final_damage > shockwave_hit_damage[i]) { shockwave_hit_damage[i] = final_damage; }
-                       return false;
-               }
-       }
-
-       shockwave_hit[queue] = head;
-       shockwave_hit_force[queue] = final_force;
-       shockwave_hit_damage[queue] = final_damage;
-       return true;
-}
-
-void W_Shockwave_Send(entity actor)
-{
-       WriteHeader(MSG_BROADCAST, TE_CSQC_SHOCKWAVEPARTICLE);
-       WriteVector(MSG_BROADCAST, w_shotorg);
-       WriteVector(MSG_BROADCAST, w_shotdir);
-       WriteShort(MSG_BROADCAST, WEP_CVAR(WEP_SHOCKWAVE, blast_distance));
-       WriteByte(MSG_BROADCAST, bound(0, WEP_CVAR(WEP_SHOCKWAVE, blast_spread_max), 255));
-       WriteByte(MSG_BROADCAST, bound(0, WEP_CVAR(WEP_SHOCKWAVE, blast_spread_min), 255));
-       WriteByte(MSG_BROADCAST, etof(actor));
-}
-
-void W_Shockwave_Attack(Weapon thiswep, entity actor, .entity weaponentity)
-{
-       // declarations
-       float multiplier, multiplier_from_accuracy, multiplier_from_distance;
-       float final_damage;
-       vector final_force, center, vel;
-       entity head;
-
-       float i, queue = 0;
-
-       // set up the shot direction
-       W_SetupShot(actor, weaponentity, true, 3, SND_LASERGUN_FIRE, CH_WEAPON_B, WEP_CVAR(WEP_SHOCKWAVE, blast_damage), thiswep.m_id);
-       vector attack_endpos = (w_shotorg + (w_shotdir * WEP_CVAR(WEP_SHOCKWAVE, blast_distance)));
-       WarpZone_TraceLine(w_shotorg, attack_endpos, MOVE_NOMONSTERS, actor);
-       vector attack_hitpos = trace_endpos;
-       float distance_to_end = vlen(w_shotorg - attack_endpos);
-       float distance_to_hit = vlen(w_shotorg - attack_hitpos);
-       //entity transform = WarpZone_trace_transform;
-
-       // do the firing effect now
-       W_Shockwave_Send(actor);
-       Damage_DamageInfo(
-               attack_hitpos,
-               WEP_CVAR(WEP_SHOCKWAVE, blast_splash_damage),
-               WEP_CVAR(WEP_SHOCKWAVE, blast_splash_edgedamage),
-               WEP_CVAR(WEP_SHOCKWAVE, blast_splash_radius),
-               w_shotdir * WEP_CVAR(WEP_SHOCKWAVE, blast_splash_force),
-               thiswep.m_id,
-               0,
-               actor
-       );
-
-       // splash damage/jumping trace
-       head = WarpZone_FindRadius(
-               attack_hitpos,
-               max(
-                       WEP_CVAR(WEP_SHOCKWAVE, blast_splash_radius),
-                       WEP_CVAR(WEP_SHOCKWAVE, blast_jump_radius)
-               ),
-               false
-       );
-
-       float lag = ((IS_REAL_CLIENT(actor)) ? ANTILAG_LATENCY(actor) : 0);
-       bool noantilag = ((IS_CLIENT(actor)) ? CS_CVAR(actor).cvar_cl_noantilag : false);
-       if(lag < 0.001)
-               lag = 0;
-       if(autocvar_g_antilag == 0 || noantilag)
-               lag = 0; // only do hitscan, but no antilag
-       if(lag)
-               antilag_takeback_all(actor, lag);
-
-       while(head)
-       {
-               if(head.takedamage)
-               {
-                       float distance_to_head = vlen(attack_hitpos - head.WarpZone_findradius_nearest);
-
-                       if((head == actor) && (distance_to_head <= WEP_CVAR(WEP_SHOCKWAVE, blast_jump_radius)))
-                       {
-                               // ========================
-                               //  BLAST JUMP CALCULATION
-                               // ========================
-
-                               // calculate importance of distance and accuracy for this attack
-                               multiplier_from_accuracy = (1 -
-                                       (distance_to_head ?
-                                               min(1, (distance_to_head / WEP_CVAR(WEP_SHOCKWAVE, blast_jump_radius)))
-                                               :
-                                               0
-                                       )
-                               );
-                               multiplier_from_distance = (1 -
-                                       (distance_to_hit ?
-                                               min(1, (distance_to_hit / distance_to_end))
-                                               :
-                                               0
-                                       )
-                               );
-                               multiplier =
-                                       max(
-                                               WEP_CVAR(WEP_SHOCKWAVE, blast_jump_multiplier_min),
-                                               (
-                                                       (multiplier_from_accuracy * WEP_CVAR(WEP_SHOCKWAVE, blast_jump_multiplier_accuracy))
-                                                       +
-                                                       (multiplier_from_distance * WEP_CVAR(WEP_SHOCKWAVE, blast_jump_multiplier_distance))
-                                               )
-                                       );
-
-                               // calculate damage from multiplier: 1 = "highest" damage, 0 = "lowest" edgedamage
-                               final_damage =
-                                       (
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_jump_damage) * multiplier)
-                                               +
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_jump_edgedamage) * (1 - multiplier))
-                                       );
-
-                               // figure out the direction of force
-                               vel = normalize(vec2(head.velocity));
-                               vel *=
-                                       (
-                                               bound(0, (vlen(vel) / autocvar_sv_maxspeed), 1)
-                                               *
-                                               WEP_CVAR(WEP_SHOCKWAVE, blast_jump_force_velocitybias)
-                                       );
-
-                               if (autocvar_g_player_damageplayercenter)
-                               {
-                                       vector shot_origin = CENTER_OR_VIEWOFS(actor);
-                                       shot_origin.z += actor.(weaponentity).movedir.z;
-                                       //if (head == actor) // was checked for already, is true
-                                               final_force = normalize((shot_origin - attack_hitpos) + vel);
-                                       //else // use target's bbox centerpoint
-                                               //final_force = normalize(((head.origin + ((head.mins + head.maxs) * 0.5)) - attack_hitpos) + vel);
-                               }
-                               else
-                               {
-                                       // if it's a player, use the view origin as reference
-                                       final_force = normalize((CENTER_OR_VIEWOFS(head) - attack_hitpos) + vel);
-                               }
-
-                               // now multiply the direction by force units
-                               final_force *= (WEP_CVAR(WEP_SHOCKWAVE, blast_jump_force) * multiplier);
-                               final_force.z *= WEP_CVAR(WEP_SHOCKWAVE, blast_jump_force_zscale);
-
-                               // trigger damage with this calculated info
-                               Damage(
-                                       head,
-                                       actor,
-                                       actor,
-                                       final_damage,
-                                       thiswep.m_id,
-                                       weaponentity,
-                                       head.origin,
-                                       final_force
-                               );
-
-                               #ifdef DEBUG_SHOCKWAVE
-                               LOG_INFOF(
-                                       "SELF HIT: multiplier = %f, damage = %f, force = %f... "
-                                       "multiplier_from_accuracy = %f, multiplier_from_distance = %f.",
-                                       multiplier,
-                                       final_damage,
-                                       vlen(final_force),
-                                       multiplier_from_accuracy,
-                                       multiplier_from_distance
-                               );
-                               #endif
-                       }
-                       else if(distance_to_head <= WEP_CVAR(WEP_SHOCKWAVE, blast_splash_radius))
-                       {
-                               // ==========================
-                               //  BLAST SPLASH CALCULATION
-                               // ==========================
-
-                               // calculate importance of distance and accuracy for this attack
-                               multiplier_from_accuracy = (1 -
-                                       (distance_to_head ?
-                                               min(1, (distance_to_head / WEP_CVAR(WEP_SHOCKWAVE, blast_splash_radius)))
-                                               :
-                                               0
-                                       )
-                               );
-                               multiplier_from_distance = (1 -
-                                       (distance_to_hit ?
-                                               min(1, (distance_to_hit / distance_to_end))
-                                               :
-                                               0
-                                       )
-                               );
-                               multiplier =
-                                       max(
-                                               WEP_CVAR(WEP_SHOCKWAVE, blast_splash_multiplier_min),
-                                               (
-                                                       (multiplier_from_accuracy * WEP_CVAR(WEP_SHOCKWAVE, blast_splash_multiplier_accuracy))
-                                                       +
-                                                       (multiplier_from_distance * WEP_CVAR(WEP_SHOCKWAVE, blast_splash_multiplier_distance))
-                                               )
-                                       );
-
-                               // calculate damage from multiplier: 1 = "highest" damage, 0 = "lowest" edgedamage
-                               final_damage =
-                                       (
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_splash_damage) * multiplier)
-                                               +
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_splash_edgedamage) * (1 - multiplier))
-                                       );
-
-                               // figure out the direction of force
-                               final_force = (w_shotdir * WEP_CVAR(WEP_SHOCKWAVE, blast_splash_force_forwardbias));
-                               if (autocvar_g_player_damageplayercenter)
-                               {
-                                       //if (head == actor) // was checked for already, is false
-                                               //final_force = normalize(CENTER_OR_VIEWOFS(actor) + '0 0 actor.(weaponentity).movedir.z' - (attack_hitpos - final_force));
-                                       //else // use target's bbox centerpoint
-                                               final_force = normalize((head.origin + ((head.mins + head.maxs) * 0.5)) - (attack_hitpos - final_force));
-                               }
-                               else
-                               {
-                                       // if it's a player, use the view origin as reference
-                                       final_force = normalize(CENTER_OR_VIEWOFS(head) - (attack_hitpos - final_force));
-                               }
-                               //te_lightning2(NULL, attack_hitpos, (attack_hitpos + (final_force * 200)));
-
-                               // now multiply the direction by force units
-                               final_force *= (WEP_CVAR(WEP_SHOCKWAVE, blast_splash_force) * multiplier);
-                               final_force.z *= WEP_CVAR(WEP_SHOCKWAVE, blast_force_zscale);
-
-                               // queue damage with this calculated info
-                               if(W_Shockwave_Attack_CheckHit(queue, head, final_force, final_damage)) { queue = min(queue + 1, MAX_SHOCKWAVE_HITS); }
-
-                               #ifdef DEBUG_SHOCKWAVE
-                               LOG_INFOF(
-                                       "SPLASH HIT: multiplier = %f, damage = %f, force = %f... "
-                                       "multiplier_from_accuracy = %f, multiplier_from_distance = %f.",
-                                       multiplier,
-                                       final_damage,
-                                       vlen(final_force),
-                                       multiplier_from_accuracy,
-                                       multiplier_from_distance
-                               );
-                               #endif
-                       }
-               }
-               head = head.chain;
-       }
-
-       // cone damage trace
-       head = WarpZone_FindRadius(w_shotorg, WEP_CVAR(WEP_SHOCKWAVE, blast_distance), false);
-       while(head)
-       {
-               if((head != actor) && head.takedamage)
-               {
-                       // ========================
-                       //  BLAST CONE CALCULATION
-                       // ========================
-
-                       if (autocvar_g_player_damageplayercenter)
-                       {
-                               //if (head == actor) // was checked for already, is false
-                                       //center = CENTER_OR_VIEWOFS(actor) + '0 0 actor.(weaponentity).movedir.z';
-                               //else // use target's bbox centerpoint
-                                       center = head.origin + ((head.mins + head.maxs) * 0.5);
-                       }
-                       else
-                       {
-                               // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in damage.qc)
-                               center = CENTER_OR_VIEWOFS(head);
-                       }
-
-                       // find the closest point on the enemy to the center of the attack
-                       float h; // hypotenuse, which is the distance between attacker to head
-                       float a; // adjacent side, which is the distance between attacker and the point on w_shotdir that is closest to head.origin
-
-                       h = vlen(center - actor.origin);
-                       a = h * (normalize(center - actor.origin) * w_shotdir);
-                       // WEAPONTODO: replace with simpler method
-
-                       vector nearest_on_line = (w_shotorg + a * w_shotdir);
-                       vector nearest_to_attacker = NearestPointOnBoundingBox(center + head.mins, center + head.maxs, nearest_on_line);
-
-                       if((vdist(head.WarpZone_findradius_dist, <=, WEP_CVAR(WEP_SHOCKWAVE, blast_distance)))
-                               && (W_Shockwave_Attack_IsVisible(actor, head, nearest_on_line, w_shotorg, attack_endpos)))
-                       {
-                               // calculate importance of distance and accuracy for this attack
-                               multiplier_from_accuracy = (1 -
-                                       W_Shockwave_Attack_CheckSpread(
-                                               nearest_to_attacker,
-                                               nearest_on_line,
-                                               w_shotorg,
-                                               attack_endpos
-                                       )
-                               );
-                               multiplier_from_distance = (1 -
-                                       (distance_to_hit ?
-                                               min(1, (vlen(head.WarpZone_findradius_dist) / distance_to_end))
-                                               :
-                                               0
-                                       )
-                               );
-                               multiplier =
-                                       max(
-                                               WEP_CVAR(WEP_SHOCKWAVE, blast_multiplier_min),
-                                               (
-                                                       (multiplier_from_accuracy * WEP_CVAR(WEP_SHOCKWAVE, blast_multiplier_accuracy))
-                                                       +
-                                                       (multiplier_from_distance * WEP_CVAR(WEP_SHOCKWAVE, blast_multiplier_distance))
-                                               )
-                                       );
-
-                               // calculate damage from multiplier: 1 = "highest" damage, 0 = "lowest" edgedamage
-                               final_damage =
-                                       (
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_damage) * multiplier)
-                                               +
-                                               (WEP_CVAR(WEP_SHOCKWAVE, blast_edgedamage) * (1 - multiplier))
-                                       );
-
-                               // figure out the direction of force
-                               final_force = (w_shotdir * WEP_CVAR(WEP_SHOCKWAVE, blast_force_forwardbias));
-                               final_force = normalize(center - (nearest_on_line - final_force));
-                               //te_lightning2(NULL, nearest_on_line, (attack_hitpos + (final_force * 200)));
-
-                               // now multiply the direction by force units
-                               final_force *= (WEP_CVAR(WEP_SHOCKWAVE, blast_force) * multiplier);
-                               final_force.z *= WEP_CVAR(WEP_SHOCKWAVE, blast_force_zscale);
-
-                               // queue damage with this calculated info
-                               if(W_Shockwave_Attack_CheckHit(queue, head, final_force, final_damage)) { queue = min(queue + 1, MAX_SHOCKWAVE_HITS); }
-
-                               #ifdef DEBUG_SHOCKWAVE
-                               LOG_INFOF(
-                                       "BLAST HIT: multiplier = %f, damage = %f, force = %f... "
-                                       "multiplier_from_accuracy = %f, multiplier_from_distance = %f.",
-                                       multiplier,
-                                       final_damage,
-                                       vlen(final_force),
-                                       multiplier_from_accuracy,
-                                       multiplier_from_distance
-                               );
-                               #endif
-                       }
-               }
-               head = head.chain;
-       }
-
-       for(i = 1; i <= queue; ++i)
-       {
-               head = shockwave_hit[i-1];
-               final_force = shockwave_hit_force[i-1];
-               final_damage = shockwave_hit_damage[i-1];
-
-               Damage(
-                       head,
-                       actor,
-                       actor,
-                       final_damage,
-                       thiswep.m_id,
-                       weaponentity,
-                       head.origin,
-                       final_force
-               );
-
-               if(accuracy_isgooddamage(actor, head))
-                       accuracy_add(actor, thiswep, 0, final_damage);
-
-               #ifdef DEBUG_SHOCKWAVE
-               LOG_INFOF(
-                       "SHOCKWAVE by %s: damage = %f, force = %f.",
-                       actor.netname,
-                       final_damage,
-                       vlen(final_force)
-               );
-               #endif
-
-               shockwave_hit[i-1] = NULL;
-               shockwave_hit_force[i-1] = '0 0 0';
-               shockwave_hit_damage[i-1] = 0;
-       }
-
-       if(lag)
-               antilag_restore_all(actor);
-}
-
-METHOD(Shockwave, wr_aim, void(entity thiswep, entity actor, .entity weaponentity))
-{
-       if(vdist(actor.origin - actor.enemy.origin, <=, WEP_CVAR(WEP_SHOCKWAVE, melee_range)))
-               { PHYS_INPUT_BUTTON_ATCK2(actor) = bot_aim(actor, weaponentity, 1000000, 0, 0.001, false, false); }
-       else
-               { PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, 1000000, 0, 0.001, false, false); }
-}
-
-METHOD(Shockwave, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
-{
-       if(fire & 1)
-       {
-               if(time >= actor.(weaponentity).shockwave_blasttime) // handle refire separately so the secondary can be fired straight after a primary
-               {
-                       if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR(WEP_SHOCKWAVE, blast_animtime)))
-                       {
-                               W_Shockwave_Attack(thiswep, actor, weaponentity);
-                               actor.(weaponentity).shockwave_blasttime = time + WEP_CVAR(WEP_SHOCKWAVE, blast_refire) * W_WeaponRateFactor(actor);
-                               weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR(WEP_SHOCKWAVE, blast_animtime), w_ready);
-                       }
-               }
-       }
-       else if(fire & 2)
-       {
-               //if(actor.clip_load >= 0) // we are not currently reloading
-               if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR(WEP_SHOCKWAVE, melee_refire)))
-               {
-                       // attempt forcing playback of the anim by switching to another anim (that we never play) here...
-                       weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, 0, W_Shockwave_Melee);
-               }
-       }
-}
-
-METHOD(Shockwave, wr_checkammo1, bool(entity thiswep, entity actor, .entity weaponentity))
-{
-       return true; // infinite ammo
-}
-
-METHOD(Shockwave, wr_checkammo2, bool(entity thiswep, entity actor, .entity weaponentity))
-{
-       // shockwave has infinite ammo
-       return true;
-}
-
-METHOD(Shockwave, wr_suicidemessage, Notification(entity thiswep))
-{
-       return WEAPON_THINKING_WITH_PORTALS;
-}
-
-METHOD(Shockwave, wr_killmessage, Notification(entity thiswep))
-{
-       if(w_deathtype & HITTYPE_SECONDARY)
-               return WEAPON_SHOCKWAVE_MURDER_SLAP;
-       else
-               return WEAPON_SHOCKWAVE_MURDER;
-}
-
-#endif
-#ifdef CSQC
-// WEAPONTODO: add client side settings for these
-const float SW_MAXALPHA = 0.5;
-const float SW_FADETIME = 0.4;
-const float SW_DISTTOMIN = 200;
-void Draw_Shockwave(entity this)
-{
-       // fading/removal control
-       float a = bound(0, (SW_MAXALPHA - ((time - this.sw_time) / SW_FADETIME)), SW_MAXALPHA);
-       if(a < ALPHA_MIN_VISIBLE) { delete(this); }
-
-       // WEAPONTODO: save this only once when creating the entity
-       vector sw_color = entcs_GetColor(this.sv_entnum - 1); // Team_ColorRGB(entcs_GetTeam(this.sv_entnum));
-
-       // WEAPONTODO: trace to find what we actually hit
-       vector endpos = (this.sw_shotorg + (this.sw_shotdir * this.sw_distance));
-
-       vector _forward, right, up;
-       VECTOR_VECTORS(this.sw_shotdir, _forward, right, up);
-
-       // WEAPONTODO: combine and simplify these calculations
-       vector min_end = ((this.sw_shotorg + (this.sw_shotdir * SW_DISTTOMIN)) + (up * this.sw_spread_min));
-       vector max_end = (endpos + (up * this.sw_spread_max));
-       float spread_to_min = vlen(normalize(min_end - this.sw_shotorg) - this.sw_shotdir);
-       float spread_to_max = vlen(normalize(max_end - min_end) - this.sw_shotdir);
-
-       vector first_min_end = '0 0 0', prev_min_end = '0 0 0', new_min_end = '0 0 0';
-       vector first_max_end = '0 0 0', prev_max_end = '0 0 0', new_max_end = '0 0 0';
-       float new_max_dist, new_min_dist;
-
-       vector deviation, angle = '0 0 0';
-       float counter, divisions = 20;
-       for(counter = 0; counter < divisions; ++counter)
-       {
-               // perfect circle effect lines
-               makevectors('0 360 0' * (counter / divisions));
-               angle.y = v_forward.x;
-               angle.z = v_forward.y;
-
-               // first do the spread_to_min effect
-               deviation = angle * spread_to_min;
-               deviation = ((this.sw_shotdir + (right * deviation.y) + (up * deviation.z)));
-               new_min_dist = SW_DISTTOMIN;
-               new_min_end = (this.sw_shotorg + (deviation * new_min_dist));
-               //te_lightning2(NULL, new_min_end, this.sw_shotorg);
-
-               // then calculate spread_to_max effect
-               deviation = angle * spread_to_max;
-               deviation = ((this.sw_shotdir + (right * deviation.y) + (up * deviation.z)));
-               new_max_dist = vlen(new_min_end - endpos);
-               new_max_end = (new_min_end + (deviation * new_max_dist));
-               //te_lightning2(NULL, new_end, prev_min_end);
-
-
-               if(counter == 0)
-               {
-                       first_min_end = new_min_end;
-                       first_max_end = new_max_end;
-               }
-
-               if(counter >= 1)
-               {
-                       // draw from shot origin to min spread radius
-                       R_BeginPolygon("", DRAWFLAG_NORMAL, false);
-                       R_PolygonVertex(prev_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(new_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(this.sw_shotorg, '0 0 0', sw_color, a);
-                       R_EndPolygon();
-
-                       // draw from min spread radius to max spread radius
-                       R_BeginPolygon("", DRAWFLAG_NORMAL, false);
-                       R_PolygonVertex(new_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(prev_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(prev_max_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(new_max_end, '0 0 0', sw_color, a);
-                       R_EndPolygon();
-               }
-
-               prev_min_end = new_min_end;
-               prev_max_end = new_max_end;
-
-               // last division only
-               if((counter + 1) == divisions)
-               {
-                       // draw from shot origin to min spread radius
-                       R_BeginPolygon("", DRAWFLAG_NORMAL, false);
-                       R_PolygonVertex(prev_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(first_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(this.sw_shotorg, '0 0 0', sw_color, a);
-                       R_EndPolygon();
-
-                       // draw from min spread radius to max spread radius
-                       R_BeginPolygon("", DRAWFLAG_NORMAL, false);
-                       R_PolygonVertex(first_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(prev_min_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(prev_max_end, '0 0 0', sw_color, a);
-                       R_PolygonVertex(first_max_end, '0 0 0', sw_color, a);
-                       R_EndPolygon();
-               }
-       }
-}
-
-NET_HANDLE(TE_CSQC_SHOCKWAVEPARTICLE, bool isNew)
-{
-       Net_ReadShockwaveParticle();
-       return true;
-}
-
-void Net_ReadShockwaveParticle()
-{
-       entity shockwave = new(shockwave_cone);
-       shockwave.draw = Draw_Shockwave;
-       IL_PUSH(g_drawables, shockwave);
-
-       shockwave.sw_shotorg = ReadVector();
-       shockwave.sw_shotdir = ReadVector();
-
-       shockwave.sw_distance = ReadShort();
-       shockwave.sw_spread_max = ReadByte();
-       shockwave.sw_spread_min = ReadByte();
-
-       shockwave.sv_entnum = ReadByte();
-
-       shockwave.sw_time = time;
-}
-
-METHOD(Shockwave, wr_impacteffect, void(entity thiswep, entity actor))
-{
-       // handled by Net_ReadShockwaveParticle
-       //vector org2 = w_org + w_backoff * 2;
-       //pointparticles(EFFECT_BLASTER_IMPACT, org2, w_backoff * 1000, 1);
-}
-
-#endif
diff --git a/qcsrc/common/weapons/weapon/shockwave.qh b/qcsrc/common/weapons/weapon/shockwave.qh
deleted file mode 100644 (file)
index fede776..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#pragma once
-
-CLASS(Shockwave, Weapon)
-/* spawnfunc */ ATTRIB(Shockwave, m_canonical_spawnfunc, string, "weapon_shockwave");
-/* ammotype  */ //ATTRIB(Shockwave, ammo_type, Resource, RES_NONE);
-/* impulse   */ ATTRIB(Shockwave, impulse, int, 2);
-/* flags     */ ATTRIB(Shockwave, spawnflags, int, WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_HIDDEN | WEP_TYPE_HITSCAN | WEP_FLAG_CANCLIMB | WEP_TYPE_MELEE_SEC);
-/* rating    */ ATTRIB(Shockwave, bot_pickupbasevalue, float, 3000);
-/* color     */ ATTRIB(Shockwave, wpcolor, vector, '0.5 0.25 0');
-/* modelname */ ATTRIB(Shockwave, mdl, string, "shotgun");
-#ifdef GAMEQC
-/* model     */ ATTRIB(Shockwave, m_model, Model, MDL_SHOCKWAVE_ITEM);
-#endif
-/* crosshair */ ATTRIB(Shockwave, w_crosshair, string, "gfx/crosshairshotgun");
-/* crosshair */ ATTRIB(Shockwave, w_crosshair_size, float, 0.7);
-/* wepimg    */ ATTRIB(Shockwave, model2, string, "weaponshockwave");
-/* refname   */ ATTRIB(Shockwave, netname, string, "shockwave");
-/* wepname   */ ATTRIB(Shockwave, m_name, string, _("Shockwave"));
-
-#define X(BEGIN, P, END, class, prefix) \
-       BEGIN(class) \
-               P(class, prefix, blast_animtime, float, NONE) \
-               P(class, prefix, blast_damage, float, NONE) \
-               P(class, prefix, blast_distance, float, NONE) \
-               P(class, prefix, blast_edgedamage, float, NONE) \
-               P(class, prefix, blast_force, float, NONE) \
-               P(class, prefix, blast_force_forwardbias, float, NONE) \
-               P(class, prefix, blast_force_zscale, float, NONE) \
-               P(class, prefix, blast_jump_damage, float, NONE) \
-               P(class, prefix, blast_jump_edgedamage, float, NONE) \
-               P(class, prefix, blast_jump_force, float, NONE) \
-               P(class, prefix, blast_jump_force_velocitybias, float, NONE) \
-               P(class, prefix, blast_jump_force_zscale, float, NONE) \
-               P(class, prefix, blast_jump_multiplier_accuracy, float, NONE) \
-               P(class, prefix, blast_jump_multiplier_distance, float, NONE) \
-               P(class, prefix, blast_jump_multiplier_min, float, NONE) \
-               P(class, prefix, blast_jump_radius, float, NONE) \
-               P(class, prefix, blast_multiplier_accuracy, float, NONE) \
-               P(class, prefix, blast_multiplier_distance, float, NONE) \
-               P(class, prefix, blast_multiplier_min, float, NONE) \
-               P(class, prefix, blast_refire, float, NONE) \
-               P(class, prefix, blast_splash_damage, float, NONE) \
-               P(class, prefix, blast_splash_edgedamage, float, NONE) \
-               P(class, prefix, blast_splash_force, float, NONE) \
-               P(class, prefix, blast_splash_force_forwardbias, float, NONE) \
-               P(class, prefix, blast_splash_multiplier_accuracy, float, NONE) \
-               P(class, prefix, blast_splash_multiplier_distance, float, NONE) \
-               P(class, prefix, blast_splash_multiplier_min, float, NONE) \
-               P(class, prefix, blast_splash_radius, float, NONE) \
-               P(class, prefix, blast_spread_max, float, NONE) \
-               P(class, prefix, blast_spread_min, float, NONE) \
-               P(class, prefix, melee_animtime, float, NONE) \
-               P(class, prefix, melee_damage, float, NONE) \
-               P(class, prefix, melee_delay, float, NONE) \
-               P(class, prefix, melee_force, float, NONE) \
-               P(class, prefix, melee_multihit, float, NONE) \
-               P(class, prefix, melee_no_doubleslap, float, NONE) \
-               P(class, prefix, melee_nonplayerdamage, float, NONE) \
-               P(class, prefix, melee_range, float, NONE) \
-               P(class, prefix, melee_refire, float, NONE) \
-               P(class, prefix, melee_swing_side, float, NONE) \
-               P(class, prefix, melee_swing_up, float, NONE) \
-               P(class, prefix, melee_time, float, NONE) \
-               P(class, prefix, melee_traces, float, NONE) \
-               P(class, prefix, switchdelay_raise, float, NONE) \
-               P(class, prefix, switchdelay_drop, float, NONE) \
-               P(class, prefix, weaponreplace, string, NONE) \
-               P(class, prefix, weaponstart, float, NONE) \
-               P(class, prefix, weaponstartoverride, float, NONE) \
-               P(class, prefix, weaponthrowable, float, NONE) \
-       END()
-       W_PROPS(X, Shockwave, shockwave)
-#undef X
-
-ENDCLASS(Shockwave)
-REGISTER_WEAPON(SHOCKWAVE, NEW(Shockwave));
-
-SPAWNFUNC_WEAPON(weapon_shockwave, WEP_SHOCKWAVE)
-
-#ifdef CSQC
-void Net_ReadShockwaveParticle();
-.vector sw_shotorg;
-.vector sw_shotdir;
-.float sw_distance;
-.float sw_spread_max;
-.float sw_spread_min;
-.float sw_time;
-#endif
index 927ab1298c8e7520d132fcda44f6c718274f2786..f34e5868e7b357a0213a60f330331c3dd35e3be4 100644 (file)
@@ -20,5 +20,4 @@ Weapon support:
 - fireball: YES (BFG effect cannot work through warpzones by design, so it's not available through warpzones)
 - hook: YES
 
-- shockwave: NO (does not support warpzones currently)
 - tuba: NO (sound)
index 592cfc837cf3ba74930702286ff99d43bd8c585b..1ce445214849a9b41a06070b274e9b551f4d59c1 100644 (file)
@@ -24,7 +24,6 @@ set g_random_items_replace_weapon_crylink "random" "Classnames to replace crylin
 set g_random_items_replace_weapon_vortex "random" "Classnames to replace vortex with."
 set g_random_items_replace_weapon_hagar "random" "Classnames to replace hagar with."
 set g_random_items_replace_weapon_devastator "random" "Classnames to replace devastator with."
-set g_random_items_replace_weapon_shockwave "random" "Classnames to replace shockwave with."
 set g_random_items_replace_weapon_arc "random" "Classnames to replace arc with."
 set g_random_items_replace_weapon_hook "random" "Classnames to replace hook with."
 set g_random_items_replace_weapon_tuba "random" "Classnames to replace tuba with."
@@ -75,7 +74,6 @@ set g_random_items_weapon_crylink_probability 1 "Probability of random crylink s
 set g_random_items_weapon_vortex_probability 1 "Probability of random vortex spawning in the map."
 set g_random_items_weapon_hagar_probability 1 "Probability of random hagar spawning in the map."
 set g_random_items_weapon_devastator_probability 1 "Probability of random devastator spawning in the map."
-set g_random_items_weapon_shockwave_probability 0 "Probability of random shockwave spawning in the map."
 set g_random_items_weapon_arc_probability 0 "Probability of random arc spawning in the map."
 set g_random_items_weapon_hook_probability 0 "Probability of random hook spawning in the map."
 set g_random_items_weapon_tuba_probability 0 "Probability of random tuba spawning in the map."
@@ -136,7 +134,6 @@ set g_random_loot_weapon_crylink_probability 1 "Probability of random crylink sp
 set g_random_loot_weapon_vortex_probability 1 "Probability of random vortex spawning as loot."
 set g_random_loot_weapon_hagar_probability 1 "Probability of random hagar spawning as loot."
 set g_random_loot_weapon_devastator_probability 1 "Probability of random devastator spawning as loot."
-set g_random_loot_weapon_shockwave_probability 0 "Probability of random shockwave spawning as loot."
 set g_random_loot_weapon_arc_probability 0 "Probability of random arc spawning as loot."
 set g_random_loot_weapon_hook_probability 0 "Probability of random hook spawning as loot."
 set g_random_loot_weapon_tuba_probability 0 "Probability of random tuba spawning as loot."
index c5c58d581df6e61126ba3f52812f9c4d8becac6e..e35ac943cd211952eb697774223c0f5512121bce 100644 (file)
@@ -369,17 +369,6 @@ g_seeker_luma
        }
 }
 
-g_shockwave_luma
-{
-       deformVertexes autosprite
-       cull none
-       nopicmip
-       {
-               map models/weapons/g_shockwave_luma
-               blendfunc blend
-       }
-}
-
 g_shotgun_luma
 {
        deformVertexes autosprite
index d3009cd34dc5a336b7a74bea388ac18017fbece8..c8a002f2863a8dcc6d2ba51ac7743fb9850a73c6 100644 (file)
@@ -671,14 +671,14 @@ gl_texturecompression_lightcubemaps 0
 gl_texturecompression_q3bsplightmaps 0
 gl_texturecompression_sky 1
 
-seta cl_weaponpriority "vaporizer okhmg okrpc oknex vortex fireball mortar okmachinegun machinegun hagar rifle arc electro devastator crylink minelayer okshotgun shotgun shockwave hlac tuba blaster porto seeker hook" "weapon priority list"
+seta cl_weaponpriority "vaporizer okhmg okrpc oknex vortex fireball mortar okmachinegun machinegun hagar rifle arc electro devastator crylink minelayer okshotgun shotgun hlac tuba blaster porto seeker hook" "weapon priority list"
 seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list (the special value 2 uses the weapon ID list for cycling)"
 seta cl_weaponpriority0 "okrpc devastator mortar hagar seeker fireball"                   "use weapon_priority_0_prev for prev gun from this list, weapon_priority_0_best for best gun, weapon_priority_0_next for next gun.  Default value: explosives"
-seta cl_weaponpriority1 "vaporizer oknex vortex crylink hlac arc electro blaster shockwave"   "use weapon_priority_1_prev for prev gun from this list, weapon_priority_1_best for best gun, weapon_priority_1_next for next gun.  Default value: energy"
+seta cl_weaponpriority1 "vaporizer oknex vortex crylink hlac arc electro blaster"   "use weapon_priority_1_prev for prev gun from this list, weapon_priority_1_best for best gun, weapon_priority_1_next for next gun.  Default value: energy"
 seta cl_weaponpriority2 "vaporizer oknex vortex rifle"                                        "use weapon_priority_2_prev for prev gun from this list, weapon_priority_2_best for best gun, weapon_priority_2_next for next gun.  Default value: hitscan exact"
-seta cl_weaponpriority3 "vaporizer okhmg oknex vortex rifle okmachinegun machinegun okshotgun shotgun shockwave"       "use weapon_priority_3_prev for prev gun from this list, weapon_priority_3_best for best gun, weapon_priority_3_next for next gun.  Default value: hitscan all"
-seta cl_weaponpriority4 "mortar minelayer hlac hagar crylink seeker okshotgun shotgun shockwave"  "use weapon_priority_4_prev for prev gun from this list, weapon_priority_4_best for best gun, weapon_priority_4_next for next gun.  Default value: spam weapons"
-seta cl_weaponpriority5 "blaster shockwave hook porto"                                  "use weapon_priority_5_prev for prev gun from this list, weapon_priority_5_best for best gun, weapon_priority_5_next for next gun.  Default value: weapons for moving"
+seta cl_weaponpriority3 "vaporizer okhmg oknex vortex rifle okmachinegun machinegun okshotgun shotgun"       "use weapon_priority_3_prev for prev gun from this list, weapon_priority_3_best for best gun, weapon_priority_3_next for next gun.  Default value: hitscan all"
+seta cl_weaponpriority4 "mortar minelayer hlac hagar crylink seeker okshotgun shotgun"  "use weapon_priority_4_prev for prev gun from this list, weapon_priority_4_best for best gun, weapon_priority_4_next for next gun.  Default value: spam weapons"
+seta cl_weaponpriority5 "blaster hook porto"                                  "use weapon_priority_5_prev for prev gun from this list, weapon_priority_5_best for best gun, weapon_priority_5_next for next gun.  Default value: weapons for moving"
 seta cl_weaponpriority6 ""                                                              "use weapon_priority_6_prev for prev gun from this list, weapon_priority_6_best for best gun, weapon_priority_6_next for next gun"
 seta cl_weaponpriority7 ""                                                              "use weapon_priority_7_prev for prev gun from this list, weapon_priority_7_best for best gun, weapon_priority_7_next for next gun"
 seta cl_weaponpriority8 ""                                                              "use weapon_priority_8_prev for prev gun from this list, weapon_priority_8_best for best gun, weapon_priority_8_next for next gun"
index 67f9be443c87211ac1b3b13e850ed5ee47e9332a..1ca06917c9934fa6ca9c055bf818ff19e10e678a 100644 (file)
@@ -148,9 +148,9 @@ set bot_ai_keyboard_threshold 0.57
 set bot_ai_aimskill_offset 1.8 "Amount of error induced to the bots aim"
 set bot_ai_aimskill_think 1 "Aiming velocity. Use values below 1 for slower aiming"
 set bot_ai_custom_weapon_priority_distances "300 850" "Define close and far distances in any order. Based on the distance to the enemy bots will choose different weapons"
-set bot_ai_custom_weapon_priority_far   "vaporizer oknex vortex rifle electro devastator mortar hagar hlac crylink blaster okmachinegun machinegun fireball seeker okshotgun shotgun shockwave tuba minelayer" "Desired weapons for far distances ordered by priority"
-set bot_ai_custom_weapon_priority_mid   "vaporizer devastator oknex vortex fireball seeker mortar electro okmachinegun machinegun arc crylink hlac hagar okshotgun shotgun shockwave blaster rifle tuba minelayer" "Desired weapons for middle distances ordered by priority"
-set bot_ai_custom_weapon_priority_close "vaporizer oknex vortex okshotgun shotgun shockwave okmachinegun machinegun arc hlac tuba seeker hagar crylink mortar electro devastator blaster fireball rifle minelayer" "Desired weapons for close distances ordered by priority"
+set bot_ai_custom_weapon_priority_far   "vaporizer oknex vortex rifle electro devastator mortar hagar hlac crylink blaster okmachinegun machinegun fireball seeker okshotgun shotgun tuba minelayer" "Desired weapons for far distances ordered by priority"
+set bot_ai_custom_weapon_priority_mid   "vaporizer devastator oknex vortex fireball seeker mortar electro okmachinegun machinegun arc crylink hlac hagar okshotgun shotgun blaster rifle tuba minelayer" "Desired weapons for middle distances ordered by priority"
+set bot_ai_custom_weapon_priority_close "vaporizer oknex vortex okshotgun shotgun okmachinegun machinegun arc hlac tuba seeker hagar crylink mortar electro devastator blaster fireball rifle minelayer" "Desired weapons for close distances ordered by priority"
 set bot_ai_weapon_combo 1 "Enable bots to do weapon combos"
 set bot_ai_weapon_combo_threshold 0.4 "Try to make a combo N seconds after the last attack"
 set bot_ai_friends_aware_pickup_radius "500" "Bots will not pickup items if a team mate is this distance near the item"