From 678e805357da23d7fcec1937b46060a7eac864cf Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 5 Nov 2024 21:57:08 +1000 Subject: [PATCH] Remove the Shockwave --- bal-wep-mario.cfg | 63 +- bal-wep-nexuiz25.cfg | 63 +- bal-wep-samual.cfg | 63 +- bal-wep-xdf.cfg | 63 +- bal-wep-xonotic.cfg | 63 +- gfx/hud/luma/weaponshockwave.tga | Bin 65554 -> 0 bytes models/weapons/g_shockwave_luma.iqm | Bin 476 -> 0 bytes models/weapons/g_shockwave_luma.iqm_0.skin | 1 - models/weapons/g_shockwave_luma.tga | Bin 262162 -> 0 bytes models/weapons/make-sprites.sh | 1 - notifications.cfg | 4 - qcsrc/common/models/all.inc | 5 - qcsrc/common/mutators/mutator/nades/nades.qc | 2 +- .../mutators/mutator/new_toys/sv_new_toys.qc | 2 - qcsrc/common/notifications/all.inc | 4 - qcsrc/common/weapons/all.inc | 3 +- qcsrc/common/weapons/weapon/_mod.inc | 1 - qcsrc/common/weapons/weapon/_mod.qh | 1 - qcsrc/common/weapons/weapon/shockwave.qc | 815 ------------------ qcsrc/common/weapons/weapon/shockwave.qh | 88 -- qcsrc/lib/warpzone/TODO | 1 - randomitems-xonotic.cfg | 3 - scripts/luma.shader | 11 - xonotic-client.cfg | 10 +- xonotic-server.cfg | 6 +- 25 files changed, 40 insertions(+), 1233 deletions(-) delete mode 100644 gfx/hud/luma/weaponshockwave.tga delete mode 100644 models/weapons/g_shockwave_luma.iqm delete mode 100644 models/weapons/g_shockwave_luma.iqm_0.skin delete mode 100644 models/weapons/g_shockwave_luma.tga delete mode 100644 qcsrc/common/weapons/weapon/shockwave.qc delete mode 100644 qcsrc/common/weapons/weapon/shockwave.qh diff --git a/bal-wep-mario.cfg b/bal-wep-mario.cfg index 6a2462d33..5953a5bb3 100644 --- a/bal-wep-mario.cfg +++ b/bal-wep-mario.cfg @@ -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/bal-wep-nexuiz25.cfg b/bal-wep-nexuiz25.cfg index bfd58cf17..9206fdd3d 100644 --- a/bal-wep-nexuiz25.cfg +++ b/bal-wep-nexuiz25.cfg @@ -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 diff --git a/bal-wep-samual.cfg b/bal-wep-samual.cfg index dd555810a..e2137cc28 100644 --- a/bal-wep-samual.cfg +++ b/bal-wep-samual.cfg @@ -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 diff --git a/bal-wep-xdf.cfg b/bal-wep-xdf.cfg index 0c33b8e0c..53d578621 100644 --- a/bal-wep-xdf.cfg +++ b/bal-wep-xdf.cfg @@ -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 diff --git a/bal-wep-xonotic.cfg b/bal-wep-xonotic.cfg index e24b172e8..5a32cda84 100644 --- a/bal-wep-xonotic.cfg +++ b/bal-wep-xonotic.cfg @@ -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 index c37b837bcb3438d2258a0f991b0dd81d746fb11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65554 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 diff --git a/models/weapons/g_shockwave_luma.iqm b/models/weapons/g_shockwave_luma.iqm deleted file mode 100644 index a5cc3e602ca2408ec41339f3e121591b50789068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmebD3vmq!40ZH&_4Rjg^ViqW#1EfLf)&M1rK-B`d zq=SH*#Jp69`7q5OJ3s(rJ`At}8O%WZ28dzSfy6*+WPk!NwJ>!yKrxVd5CDmR%*=sl zWY}_$fx*WKC}hIGu*LD;|NRa?HV|xaL=ry;5pS?(U}!Lg$b;Aikl0|k{UEs{ZnKR* xbp+W-+}oBw)d9_Eu*c+^ErrN~>;#z)0uXaye2_O_{ss9F#0TO3XaFe0006_NMPL8` diff --git a/models/weapons/g_shockwave_luma.iqm_0.skin b/models/weapons/g_shockwave_luma.iqm_0.skin deleted file mode 100644 index 5a243ffc5..000000000 --- a/models/weapons/g_shockwave_luma.iqm_0.skin +++ /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 index 74eb94ec7f6b85228cdcf0cce024d87ca81a5a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262162 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 #include #include -#include #include #include #include diff --git a/qcsrc/common/weapons/weapon/_mod.qh b/qcsrc/common/weapons/weapon/_mod.qh index 02d0ffa57..4767ccf8a 100644 --- a/qcsrc/common/weapons/weapon/_mod.qh +++ b/qcsrc/common/weapons/weapon/_mod.qh @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/qcsrc/common/weapons/weapon/shockwave.qc b/qcsrc/common/weapons/weapon/shockwave.qc deleted file mode 100644 index 605dbd7da..000000000 --- a/qcsrc/common/weapons/weapon/shockwave.qc +++ /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 index fede776cb..000000000 --- a/qcsrc/common/weapons/weapon/shockwave.qh +++ /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 diff --git a/qcsrc/lib/warpzone/TODO b/qcsrc/lib/warpzone/TODO index 927ab1298..f34e5868e 100644 --- a/qcsrc/lib/warpzone/TODO +++ b/qcsrc/lib/warpzone/TODO @@ -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) diff --git a/randomitems-xonotic.cfg b/randomitems-xonotic.cfg index 592cfc837..1ce445214 100644 --- a/randomitems-xonotic.cfg +++ b/randomitems-xonotic.cfg @@ -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." diff --git a/scripts/luma.shader b/scripts/luma.shader index c5c58d581..e35ac943c 100644 --- a/scripts/luma.shader +++ b/scripts/luma.shader @@ -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 diff --git a/xonotic-client.cfg b/xonotic-client.cfg index d3009cd34..c8a002f28 100644 --- a/xonotic-client.cfg +++ b/xonotic-client.cfg @@ -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" diff --git a/xonotic-server.cfg b/xonotic-server.cfg index 67f9be443..1ca06917c 100644 --- a/xonotic-server.cfg +++ b/xonotic-server.cfg @@ -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" -- 2.39.2