set g_balance_crylink_weaponstartoverride -1
// }}}
// {{{ #9: Vortex
-set g_balance_nex_charge 1
-set g_balance_nex_charge_animlimit 0.5
-set g_balance_nex_charge_limit 1
-set g_balance_nex_charge_maxspeed 800
-set g_balance_nex_charge_mindmg 40
-set g_balance_nex_charge_minspeed 400
-set g_balance_nex_charge_rate 0.4
-set g_balance_nex_charge_rot_pause 0
-set g_balance_nex_charge_rot_rate 0
-set g_balance_nex_charge_shot_multiplier 0
-set g_balance_nex_charge_start 0.5
-set g_balance_nex_charge_velocity_rate 0
-set g_balance_nex_primary_ammo 6
-set g_balance_nex_primary_animtime 0.6
-set g_balance_nex_primary_damage 80
-set g_balance_nex_primary_damagefalloff_forcehalflife 0
-set g_balance_nex_primary_damagefalloff_halflife 0
-set g_balance_nex_primary_damagefalloff_maxdist 0
-set g_balance_nex_primary_damagefalloff_mindist 0
-set g_balance_nex_primary_force 400
-set g_balance_nex_primary_refire 1.5
-set g_balance_nex_reload_ammo 0
-set g_balance_nex_reload_time 2
-set g_balance_nex_secondary 0
-set g_balance_nex_secondary_ammo 2
-set g_balance_nex_secondary_animtime 0
-set g_balance_nex_secondary_chargepool 0
-set g_balance_nex_secondary_chargepool_pause_regen 1
-set g_balance_nex_secondary_chargepool_regen 0.15
-set g_balance_nex_secondary_damage 0
-set g_balance_nex_secondary_damagefalloff_forcehalflife 0
-set g_balance_nex_secondary_damagefalloff_halflife 0
-set g_balance_nex_secondary_damagefalloff_maxdist 0
-set g_balance_nex_secondary_damagefalloff_mindist 0
-set g_balance_nex_secondary_force 0
-set g_balance_nex_secondary_refire 0
-set g_balance_nex_switchdelay_drop 0.3
-set g_balance_nex_switchdelay_raise 0.25
-set g_balance_nex_weaponreplace ""
-set g_balance_nex_weaponstart 0
-set g_balance_nex_weaponstartoverride -1
+set g_balance_vortex_charge 1
+set g_balance_vortex_charge_animlimit 0.5
+set g_balance_vortex_charge_limit 1
+set g_balance_vortex_charge_maxspeed 800
+set g_balance_vortex_charge_mindmg 40
+set g_balance_vortex_charge_minspeed 400
+set g_balance_vortex_charge_rate 0.4
+set g_balance_vortex_charge_rot_pause 0
+set g_balance_vortex_charge_rot_rate 0
+set g_balance_vortex_charge_shot_multiplier 0
+set g_balance_vortex_charge_start 0.5
+set g_balance_vortex_charge_velocity_rate 0
+set g_balance_vortex_primary_ammo 6
+set g_balance_vortex_primary_animtime 0.6
+set g_balance_vortex_primary_damage 80
+set g_balance_vortex_primary_damagefalloff_forcehalflife 0
+set g_balance_vortex_primary_damagefalloff_halflife 0
+set g_balance_vortex_primary_damagefalloff_maxdist 0
+set g_balance_vortex_primary_damagefalloff_mindist 0
+set g_balance_vortex_primary_force 400
+set g_balance_vortex_primary_refire 1.5
+set g_balance_vortex_reload_ammo 0
+set g_balance_vortex_reload_time 2
+set g_balance_vortex_secondary 0
+set g_balance_vortex_secondary_ammo 2
+set g_balance_vortex_secondary_animtime 0
+set g_balance_vortex_secondary_chargepool 0
+set g_balance_vortex_secondary_chargepool_pause_regen 1
+set g_balance_vortex_secondary_chargepool_regen 0.15
+set g_balance_vortex_secondary_damage 0
+set g_balance_vortex_secondary_damagefalloff_forcehalflife 0
+set g_balance_vortex_secondary_damagefalloff_halflife 0
+set g_balance_vortex_secondary_damagefalloff_maxdist 0
+set g_balance_vortex_secondary_damagefalloff_mindist 0
+set g_balance_vortex_secondary_force 0
+set g_balance_vortex_secondary_refire 0
+set g_balance_vortex_switchdelay_drop 0.3
+set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_weaponreplace ""
+set g_balance_vortex_weaponstart 0
+set g_balance_vortex_weaponstartoverride -1
// }}}
// {{{ #10: Hagar
set g_balance_hagar_primary_ammo 1
set g_start_weapon_mortar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
-set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
+set g_start_weapon_vortex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_devastator -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
set g_start_weapon_vaporizer -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
seta crosshair_crylink_color "0.85 0.25 1" "crosshair color to display when wielding the crylink"
seta crosshair_crylink_alpha 0.85 "crosshair alpha value to display when wielding the crylink"
seta crosshair_crylink_size 0.4 "crosshair size when wielding the crylink"
-seta crosshair_nex "" "crosshair to display when wielding the nex gun"
-seta crosshair_nex_color "0 0.9 1" "crosshair color to display when wielding the nex gun"
-seta crosshair_nex_alpha 0.85 "crosshair alpha value to display when wielding the nex gun"
-seta crosshair_nex_size 0.65 "crosshair size when wielding the nex gun"
+seta crosshair_vortex "" "crosshair to display when wielding the nex gun"
+seta crosshair_vortex_color "0 0.9 1" "crosshair color to display when wielding the nex gun"
+seta crosshair_vortex_alpha 0.85 "crosshair alpha value to display when wielding the nex gun"
+seta crosshair_vortex_size 0.65 "crosshair size when wielding the nex gun"
seta crosshair_hagar "" "crosshair to display when wielding the hagar"
seta crosshair_hagar_color "0.85 0.5 0.35" "crosshair color to display when wielding the hagar"
seta crosshair_hagar_alpha 1 "crosshair alpha value to display when wielding the hagar"
seta crosshair_ring_size 2 "ring size"
seta crosshair_ring_alpha 0.2 "ring alpha"
-// nexgun ring
-seta crosshair_ring_nex 1 "draw a ring showing the current charge of the nexgun"
-seta crosshair_ring_nex_alpha 0.15
-seta crosshair_ring_nex_inner_alpha 0.15
-seta crosshair_ring_nex_inner_color_red 0.8
-seta crosshair_ring_nex_inner_color_green 0
-seta crosshair_ring_nex_inner_color_blue 0
-seta crosshair_ring_nex_currentcharge_scale 30
-seta crosshair_ring_nex_currentcharge_movingavg_rate 0.05
+// vortex ring
+seta crosshair_ring_vortex 1 "draw a ring showing the current charge of the vortex"
+seta crosshair_ring_vortex_alpha 0.15
+seta crosshair_ring_vortex_inner_alpha 0.15
+seta crosshair_ring_vortex_inner_color_red 0.8
+seta crosshair_ring_vortex_inner_color_green 0
+seta crosshair_ring_vortex_inner_color_blue 0
+seta crosshair_ring_vortex_currentcharge_scale 30
+seta crosshair_ring_vortex_currentcharge_movingavg_rate 0.05
// minelayer ring
seta crosshair_ring_minelayer 1
seta cl_reticle 1 "control for toggling whether ANY zoom reticles are shown"
seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
-seta cl_reticle_item_nex 1 "draw aiming reticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
+seta cl_reticle_item_vortex 1 "draw aiming reticle for the vortex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
seta cl_reticle_item_normal 1 "draw reticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
fov 90
seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out"
set bot_ai_aimskill_offset 0.3 "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 "minstanex nex rifle electro rocketlauncher grenadelauncher hagar hlac crylink laser uzi fireball seeker shotgun tuba minelayer" "Desired weapons for far distances ordered by priority"
-set bot_ai_custom_weapon_priority_mid "minstanex rocketlauncher nex fireball seeker grenadelauncher electro uzi crylink hlac hagar shotgun laser rifle tuba minelayer" "Desired weapons for middle distances ordered by priority"
-set bot_ai_custom_weapon_priority_close "minstanex shotgun nex uzi hlac tuba seeker hagar crylink grenadelauncher electro rocketlauncher laser fireball rifle minelayer" "Desired weapons for close distances ordered by priority"
+set bot_ai_custom_weapon_priority_far "minstanex vortex rifle electro rocketlauncher grenadelauncher hagar hlac crylink laser uzi fireball seeker shotgun tuba minelayer" "Desired weapons for far distances ordered by priority"
+set bot_ai_custom_weapon_priority_mid "minstanex rocketlauncher vortex fireball seeker grenadelauncher electro uzi crylink hlac hagar shotgun laser rifle tuba minelayer" "Desired weapons for middle distances ordered by priority"
+set bot_ai_custom_weapon_priority_close "minstanex shotgun vortex uzi hlac tuba seeker hagar crylink grenadelauncher electro rocketlauncher laser 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"
set g_jump_grunt 0 "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
-seta cl_weaponpriority "minstanex nex fireball grenadelauncher uzi hagar rifle electro rocketlauncher crylink minelayer shotgun hlac tuba laser porto seeker hook" "weapon priority list"
+seta cl_weaponpriority "minstanex vortex fireball grenadelauncher uzi hagar rifle electro rocketlauncher crylink minelayer shotgun hlac tuba laser 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 "rocketlauncher grenadelauncher hagar seeker fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun. Default value: explosives"
-seta cl_weaponpriority1 "minstanex nex crylink hlac electro laser" "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun. Default value: energy"
-seta cl_weaponpriority2 "minstanex nex rifle" "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun. Default value: hitscan exact"
-seta cl_weaponpriority3 "minstanex nex rifle uzi shotgun" "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun. Default value: hitscan all"
+seta cl_weaponpriority1 "minstanex vortex crylink hlac electro laser" "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun. Default value: energy"
+seta cl_weaponpriority2 "minstanex vortex rifle" "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun. Default value: hitscan exact"
+seta cl_weaponpriority3 "minstanex vortex rifle uzi shotgun" "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun. Default value: hitscan all"
seta cl_weaponpriority4 "grenadelauncher minelayer hlac hagar crylink seeker shotgun" "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun. Default value: spam weapons"
seta cl_weaponpriority5 "laser hook porto" "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun. Default value: weapons for moving"
seta cl_weaponpriority6 "" "use impulse 206 for prev gun from this list, 216 for best gun, 226 for next gun"
set g_weaponreplace_grenadelauncher ""
set g_weaponreplace_electro ""
set g_weaponreplace_crylink ""
-set g_weaponreplace_nex ""
+set g_weaponreplace_vortex ""
set g_weaponreplace_hagar ""
set g_weaponreplace_rocketlauncher ""
set g_weaponreplace_porto ""
vector w_org, w_backoff;
float rifle_scope;
-float nex_scope;
+float vortex_scope;
float minelayer_maxmines;
string weaponorder_byimpulse;
string weaponorder_bypriority;
-float nex_charge_movingavg;
+float vortex_charge_movingavg;
float serverflags;
if(autocvar_cl_reticle)
{
if(autocvar_cl_reticle_item_normal) { precache_pic("gfx/reticle_normal"); }
- if(autocvar_cl_reticle_item_nex) { precache_pic("gfx/reticle_nex"); }
+ if(autocvar_cl_reticle_item_vortex) { precache_pic("gfx/reticle_nex"); }
}
get_mi_min_max_texcoords(1); // try the CLEVER way first
g_balance_electro_secondary_bouncefactor = ReadCoord();
g_balance_electro_secondary_bouncestop = ReadCoord();
- nex_scope = !ReadByte();
+ vortex_scope = !ReadByte();
rifle_scope = !ReadByte();
serverflags = ReadByte();
Net_ReadRace();
bHandled = true;
break;
- case TE_CSQC_NEXGUNBEAMPARTICLE:
- Net_ReadNexgunBeamParticle();
+ case TE_CSQC_VORTEXBEAMPARTICLE:
+ Net_ReadVortexBeamParticle();
bHandled = true;
break;
case TE_CSQC_TEAMNAGGER:
zoomdir = button_zoom;
if(hud == HUD_NORMAL)
- if((activeweapon == WEP_NEX && nex_scope) || (activeweapon == WEP_RIFLE && rifle_scope)) // do NOT use switchweapon here
+ if((activeweapon == WEP_VORTEX && vortex_scope) || (activeweapon == WEP_RIFLE && rifle_scope)) // do NOT use switchweapon here
zoomdir += button_attack2;
if(spectatee_status > 0 || isdemo())
{
case WEP_HOOK: // no trueaim
case WEP_MORTAR: // toss curve
return SHOTTYPE_HITWORLD;
- case WEP_NEX:
+ case WEP_VORTEX:
case WEP_VAPORIZER:
mv = MOVE_NORMAL;
break;
float hit_time, typehit_time;
float nextsound_hit_time, nextsound_typehit_time;
float hitindication_crosshair_time, hitindication_crosshair_size;
-float use_nex_chargepool;
+float use_vortex_chargepool;
float myhealth, myhealth_prev;
float myhealth_flash;
// the view to go back to normal, so reticle_type would become 0 as we fade out)
if(spectatee_status || is_dead || hud != HUD_NORMAL)
reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators
- else if((activeweapon == WEP_NEX || activeweapon == WEP_RIFLE || activeweapon == WEP_VAPORIZER) && (button_zoom || zoomscript_caught))
+ else if((activeweapon == WEP_VORTEX || activeweapon == WEP_RIFLE || activeweapon == WEP_VAPORIZER) && (button_zoom || zoomscript_caught))
reticle_type = 2; // nex zoom
else if(button_zoom || zoomscript_caught)
reticle_type = 1; // normal zoom
- else if((activeweapon == WEP_NEX) && button_attack2)
+ else if((activeweapon == WEP_VORTEX) && button_attack2)
reticle_type = 2; // nex zoom
if(reticle_type && autocvar_cl_reticle)
if(reticle_type == 1 && f)
drawpic(reticle_pos, "gfx/reticle_normal", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_normal, DRAWFLAG_NORMAL);
}
- if(autocvar_cl_reticle_item_nex)
+ if(autocvar_cl_reticle_item_vortex)
{
if(reticle_type == 2 && f)
- drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_nex, DRAWFLAG_NORMAL);
+ drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_vortex, DRAWFLAG_NORMAL);
}
}
weapon_clipload = getstati(STAT_WEAPON_CLIPLOAD);
weapon_clipsize = getstati(STAT_WEAPON_CLIPSIZE);
- float nex_charge, nex_chargepool;
- nex_charge = getstatf(STAT_NEX_CHARGE);
- nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL);
+ float vortex_charge, vortex_chargepool;
+ vortex_charge = getstatf(STAT_VORTEX_CHARGE);
+ vortex_chargepool = getstatf(STAT_VORTEX_CHARGEPOOL);
- if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
- nex_charge_movingavg = nex_charge;
+ if(vortex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
+ vortex_charge_movingavg = vortex_charge;
// handle the values
- if (autocvar_crosshair_ring && activeweapon == WEP_NEX && nex_charge && autocvar_crosshair_ring_nex) // ring around crosshair representing velocity-dependent damage for the nex
+ if (autocvar_crosshair_ring && activeweapon == WEP_VORTEX && vortex_charge && autocvar_crosshair_ring_vortex) // ring around crosshair representing velocity-dependent damage for the vortex
{
- if (nex_chargepool || use_nex_chargepool) {
- use_nex_chargepool = 1;
- ring_inner_value = nex_chargepool;
+ if (vortex_chargepool || use_vortex_chargepool) {
+ use_vortex_chargepool = 1;
+ ring_inner_value = vortex_chargepool;
} else {
- nex_charge_movingavg = (1 - autocvar_crosshair_ring_nex_currentcharge_movingavg_rate) * nex_charge_movingavg + autocvar_crosshair_ring_nex_currentcharge_movingavg_rate * nex_charge;
- ring_inner_value = bound(0, autocvar_crosshair_ring_nex_currentcharge_scale * (nex_charge - nex_charge_movingavg), 1);
+ vortex_charge_movingavg = (1 - autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate) * vortex_charge_movingavg + autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate * vortex_charge;
+ ring_inner_value = bound(0, autocvar_crosshair_ring_vortex_currentcharge_scale * (vortex_charge - vortex_charge_movingavg), 1);
}
- ring_inner_alpha = autocvar_crosshair_ring_nex_inner_alpha;
- ring_inner_rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue;
+ ring_inner_alpha = autocvar_crosshair_ring_vortex_inner_alpha;
+ ring_inner_rgb = eX * autocvar_crosshair_ring_vortex_inner_color_red + eY * autocvar_crosshair_ring_vortex_inner_color_green + eZ * autocvar_crosshair_ring_vortex_inner_color_blue;
ring_inner_image = "gfx/crosshair_ring_inner.tga";
// draw the outer ring to show the current charge of the weapon
- ring_value = nex_charge;
- ring_alpha = autocvar_crosshair_ring_nex_alpha;
+ ring_value = vortex_charge;
+ ring_alpha = autocvar_crosshair_ring_vortex_alpha;
ring_rgb = wcross_color;
ring_image = "gfx/crosshair_ring_nexgun.tga";
}
float autocvar_cl_projectiles_sloppy;
float autocvar_cl_readpicture_force;
var float autocvar_cl_reticle = 1;
-float autocvar_cl_reticle_item_nex;
+float autocvar_cl_reticle_item_vortex;
float autocvar_cl_reticle_item_normal;
float autocvar_cl_reticle_stretch;
float autocvar_cl_spawn_event_particles;
float autocvar_crosshair_ring_minelayer_alpha;
float autocvar_crosshair_ring_hagar;
float autocvar_crosshair_ring_hagar_alpha;
-float autocvar_crosshair_ring_nex;
-float autocvar_crosshair_ring_nex_alpha;
-float autocvar_crosshair_ring_nex_currentcharge_movingavg_rate;
-float autocvar_crosshair_ring_nex_currentcharge_scale;
-float autocvar_crosshair_ring_nex_inner_alpha;
-float autocvar_crosshair_ring_nex_inner_color_blue;
-float autocvar_crosshair_ring_nex_inner_color_green;
-float autocvar_crosshair_ring_nex_inner_color_red;
+float autocvar_crosshair_ring_vortex;
+float autocvar_crosshair_ring_vortex_alpha;
+float autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate;
+float autocvar_crosshair_ring_vortex_currentcharge_scale;
+float autocvar_crosshair_ring_vortex_inner_alpha;
+float autocvar_crosshair_ring_vortex_inner_color_blue;
+float autocvar_crosshair_ring_vortex_inner_color_green;
+float autocvar_crosshair_ring_vortex_inner_color_red;
float autocvar_crosshair_ring_size;
float autocvar_crosshair_ring_reload;
float autocvar_crosshair_ring_reload_alpha;
w_random = prandom();
traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
- if(trace_fraction < 1 && hitwep != WEP_NEX && hitwep != WEP_VAPORIZER)
+ if(trace_fraction < 1 && hitwep != WEP_VORTEX && hitwep != WEP_VAPORIZER)
w_backoff = trace_plane_normal;
else
w_backoff = -1 * normalize(force);
case WEP_CRYLINK: return 3;
case WEP_HLAC: return 3;
case WEP_VAPORIZER: return 3;
- case WEP_NEX: return 3;
+ case WEP_VORTEX: return 3;
case WEP_RIFLE: return 1;
case WEP_HAGAR: return 2;
case WEP_DEVASTATOR: return 2;
self.draw = Draw_Snow;
}
-void Net_ReadNexgunBeamParticle()
+void Net_ReadVortexBeamParticle()
{
vector shotorg, endpos;
float charge;
self = get_weaponinfo(i);
if (!self.weapon)
continue;
- if ((i == WEP_NEX && g_minstagib) || i == WEP_PORTO || (i == WEP_VAPORIZER && !g_minstagib) || i == WEP_TUBA) // skip port-o-launch, nex || vaporizer and tuba
+ if ((i == WEP_VORTEX && g_minstagib) || i == WEP_PORTO || (i == WEP_VAPORIZER && !g_minstagib) || i == WEP_TUBA) // skip port-o-launch, vortex || vaporizer and tuba
continue;
weapon_stats = weapon_accuracy[i-WEP_FIRST];
const float TE_CSQC_PICTURE = 100;
const float TE_CSQC_RACE = 101;
-const float TE_CSQC_NEXGUNBEAMPARTICLE = 103;
+const float TE_CSQC_VORTEXBEAMPARTICLE = 103;
const float TE_CSQC_ARC = 104;
const float TE_CSQC_TEAMNAGGER = 105;
const float TE_CSQC_PINGPLREPORT = 106;
const float TE_CSQC_TARGET_MUSIC = 107;
const float TE_CSQC_WEAPONCOMPLAIN = 108;
-const float TE_CSQC_NEX_SCOPE = 109;
+const float TE_CSQC_VORTEX_SCOPE = 109;
const float TE_CSQC_MINELAYER_MAXMINES = 110;
const float TE_CSQC_HAGAR_MAXROCKETS = 111;
const float TE_CSQC_VEHICLESETUP = 112;
const float STAT_LEADLIMIT = 47;
const float STAT_WEAPON_CLIPLOAD = 48;
const float STAT_WEAPON_CLIPSIZE = 49;
-const float STAT_NEX_CHARGE = 50;
+const float STAT_VORTEX_CHARGE = 50;
const float STAT_LAST_PICKUP = 51;
const float STAT_HUD = 52;
-const float STAT_NEX_CHARGEPOOL = 53;
+const float STAT_VORTEX_CHARGEPOOL = 53;
const float STAT_HIT_TIME = 54;
const float STAT_TYPEHIT_TIME = 55;
const float STAT_LAYED_MINES = 56;
MSG_INFO_NOTIF(1, INFO_WEAPON_MORTAR_MURDER_EXPLODE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapongrenadelauncher", _("^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s"), "") \
MSG_INFO_NOTIF(1, INFO_WEAPON_MORTAR_SUICIDE_BOUNCE, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 didn't see their own Mortar grenade%s%s"), "") \
MSG_INFO_NOTIF(1, INFO_WEAPON_MORTAR_SUICIDE_EXPLODE, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 blew themself up with their own Mortar%s%s"), "") \
- MSG_INFO_NOTIF(1, INFO_WEAPON_NEX_MURDER, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponnex", _("^BG%s%s^K1 has been vaporized by ^BG%s^K1's Nex%s%s"), "") \
+ MSG_INFO_NOTIF(1, INFO_WEAPON_VORTEX_MURDER, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponnex", _("^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s"), "") \
MSG_INFO_NOTIF(1, INFO_WEAPON_RIFLE_MURDER, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s"), "") \
MSG_INFO_NOTIF(1, INFO_WEAPON_RIFLE_MURDER_HAIL, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s"), "") \
MSG_INFO_NOTIF(1, INFO_WEAPON_RIFLE_MURDER_HAIL_PIERCING, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s"), "") \
MSG_MULTI_NOTIF(1, WEAPON_MORTAR_MURDER_EXPLODE, NO_MSG, INFO_WEAPON_MORTAR_MURDER_EXPLODE, NO_MSG) \
MSG_MULTI_NOTIF(1, WEAPON_MORTAR_SUICIDE_BOUNCE, NO_MSG, INFO_WEAPON_MORTAR_SUICIDE_BOUNCE, CENTER_DEATH_SELF_GENERIC) \
MSG_MULTI_NOTIF(1, WEAPON_MORTAR_SUICIDE_EXPLODE, NO_MSG, INFO_WEAPON_MORTAR_SUICIDE_EXPLODE, CENTER_DEATH_SELF_GENERIC) \
- MSG_MULTI_NOTIF(1, WEAPON_NEX_MURDER, NO_MSG, INFO_WEAPON_NEX_MURDER, NO_MSG) \
+ MSG_MULTI_NOTIF(1, WEAPON_VORTEX_MURDER, NO_MSG, INFO_WEAPON_VORTEX_MURDER, NO_MSG) \
MSG_MULTI_NOTIF(1, WEAPON_RIFLE_MURDER, NO_MSG, INFO_WEAPON_RIFLE_MURDER, NO_MSG) \
MSG_MULTI_NOTIF(1, WEAPON_RIFLE_MURDER_HAIL, NO_MSG, INFO_WEAPON_RIFLE_MURDER_HAIL, NO_MSG) \
MSG_MULTI_NOTIF(1, WEAPON_RIFLE_MURDER_HAIL_PIERCING, NO_MSG, INFO_WEAPON_RIFLE_MURDER_HAIL_PIERCING, NO_MSG) \
#include "w_electro.qc"
#include "w_arc.qc"
#include "w_crylink.qc"
-#include "w_nex.qc"
+#include "w_vortex.qc"
#include "w_hagar.qc"
#include "w_devastator.qc"
+++ /dev/null
-#ifdef REGISTER_WEAPON
-REGISTER_WEAPON(
-/* WEP_##id */ NEX,
-/* function */ w_nex,
-/* ammotype */ ammo_cells,
-/* impulse */ 7,
-/* flags */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN,
-/* rating */ BOT_PICKUP_RATING_HIGH,
-/* color */ '0.5 1 1',
-/* model */ "nex",
-/* netname */ "nex",
-/* fullname */ _("Vortex")
-);
-
-#define NEX_SETTINGS(w_cvar,w_prop) NEX_SETTINGS_LIST(w_cvar, w_prop, NEX, nex)
-#define NEX_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
- w_cvar(id, sn, BOTH, ammo) \
- w_cvar(id, sn, BOTH, animtime) \
- w_cvar(id, sn, BOTH, damage) \
- w_cvar(id, sn, BOTH, force) \
- w_cvar(id, sn, BOTH, damagefalloff_mindist) \
- w_cvar(id, sn, BOTH, damagefalloff_maxdist) \
- w_cvar(id, sn, BOTH, damagefalloff_halflife) \
- w_cvar(id, sn, BOTH, damagefalloff_forcehalflife) \
- w_cvar(id, sn, BOTH, refire) \
- w_cvar(id, sn, NONE, charge) \
- w_cvar(id, sn, NONE, charge_mindmg) \
- w_cvar(id, sn, NONE, charge_shot_multiplier) \
- w_cvar(id, sn, NONE, charge_animlimit) \
- w_cvar(id, sn, NONE, charge_limit) \
- w_cvar(id, sn, NONE, charge_rate) \
- w_cvar(id, sn, NONE, charge_rot_rate) \
- w_cvar(id, sn, NONE, charge_rot_pause) \
- w_cvar(id, sn, NONE, charge_start) \
- w_cvar(id, sn, NONE, charge_minspeed) \
- w_cvar(id, sn, NONE, charge_maxspeed) \
- w_cvar(id, sn, NONE, charge_velocity_rate) \
- w_cvar(id, sn, NONE, secondary) \
- w_cvar(id, sn, SEC, chargepool) \
- w_cvar(id, sn, SEC, chargepool_regen) \
- w_cvar(id, sn, SEC, chargepool_pause_regen) \
- w_prop(id, sn, float, reloading_ammo, reload_ammo) \
- w_prop(id, sn, float, reloading_time, reload_time) \
- w_prop(id, sn, float, switchdelay_raise, switchdelay_raise) \
- w_prop(id, sn, float, switchdelay_drop, switchdelay_drop) \
- w_prop(id, sn, string, weaponreplace, weaponreplace) \
- w_prop(id, sn, float, weaponstart, weaponstart) \
- w_prop(id, sn, float, weaponstartoverride, weaponstartoverride)
-
-#ifdef SVQC
-NEX_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
-#endif
-#else
-#ifdef SVQC
-void spawnfunc_weapon_nex (void) { weapon_defaultspawnfunc(WEP_NEX); }
-
-void SendCSQCNexBeamParticle(float charge) {
- vector v;
- v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
- WriteByte(MSG_BROADCAST, SVC_TEMPENTITY);
- WriteByte(MSG_BROADCAST, TE_CSQC_NEXGUNBEAMPARTICLE);
- WriteCoord(MSG_BROADCAST, w_shotorg_x);
- WriteCoord(MSG_BROADCAST, w_shotorg_y);
- WriteCoord(MSG_BROADCAST, w_shotorg_z);
- WriteCoord(MSG_BROADCAST, v_x);
- WriteCoord(MSG_BROADCAST, v_y);
- WriteCoord(MSG_BROADCAST, v_z);
- WriteByte(MSG_BROADCAST, bound(0, 255 * charge, 255));
-}
-
-void W_Nex_Attack (float issecondary)
-{
- float mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, myammo, charge;
-
- mydmg = WEP_CVAR_BOTH(nex, !issecondary, damage);
- myforce = WEP_CVAR_BOTH(nex, !issecondary, force);
- mymindist = WEP_CVAR_BOTH(nex, !issecondary, damagefalloff_mindist);
- mymaxdist = WEP_CVAR_BOTH(nex, !issecondary, damagefalloff_maxdist);
- myhalflife = WEP_CVAR_BOTH(nex, !issecondary, damagefalloff_halflife);
- myforcehalflife = WEP_CVAR_BOTH(nex, !issecondary, damagefalloff_forcehalflife);
- myammo = WEP_CVAR_BOTH(nex, !issecondary, ammo);
-
- float flying;
- flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last
-
- if(WEP_CVAR(nex, charge))
- {
- charge = WEP_CVAR(nex, charge_mindmg) / mydmg + (1 - WEP_CVAR(nex, charge_mindmg) / mydmg) * self.nex_charge;
- self.nex_charge *= WEP_CVAR(nex, charge_shot_multiplier); // do this AFTER setting mydmg/myforce
- // O RLY? -- divVerent
- // YA RLY -- FruitieX
- }
- else
- charge = 1;
- mydmg *= charge;
- myforce *= charge;
-
- W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav", CH_WEAPON_A, mydmg);
- if(charge > WEP_CVAR(nex, charge_animlimit) && WEP_CVAR(nex, charge_animlimit)) // if the Nex is overcharged, we play an extra sound
- {
- sound (self, CH_WEAPON_B, "weapons/nexcharge.wav", VOL_BASE * (charge - 0.5 * WEP_CVAR(nex, charge_animlimit)) / (1 - 0.5 * WEP_CVAR(nex, charge_animlimit)), ATTN_NORM);
- }
-
- yoda = 0;
- FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_NEX);
-
- if(yoda && flying)
- Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA);
-
- //beam and muzzle flash done on client
- SendCSQCNexBeamParticle(charge);
-
- W_DecreaseAmmo(myammo);
-}
-
-void spawnfunc_weapon_nex (void); // defined in t_items.qc
-
-.float nex_chargepool_pauseregen_finished;
-float w_nex(float req)
-{
- float dt;
- float ammo_amount;
- switch(req)
- {
- case WR_AIM:
- {
- if(bot_aim(1000000, 0, 1, FALSE))
- self.BUTTON_ATCK = TRUE;
- else
- {
- if(WEP_CVAR(nex, charge))
- self.BUTTON_ATCK2 = TRUE;
- }
- return TRUE;
- }
- case WR_THINK:
- {
- if(WEP_CVAR(nex, charge) && self.nex_charge < WEP_CVAR(nex, charge_limit))
- self.nex_charge = min(1, self.nex_charge + WEP_CVAR(nex, charge_rate) * frametime / W_TICSPERFRAME);
-
- if(WEP_CVAR_SEC(nex, chargepool))
- if(self.nex_chargepool_ammo < 1)
- {
- if(self.nex_chargepool_pauseregen_finished < time)
- self.nex_chargepool_ammo = min(1, self.nex_chargepool_ammo + WEP_CVAR_SEC(nex, chargepool_regen) * frametime / W_TICSPERFRAME);
- self.pauseregen_finished = max(self.pauseregen_finished, time + WEP_CVAR_SEC(nex, chargepool_pause_regen));
- }
-
- if(autocvar_g_balance_nex_reload_ammo && self.clip_load < min(WEP_CVAR_PRI(nex, ammo), WEP_CVAR_SEC(nex, ammo))) // forced reload
- WEP_ACTION(self.weapon, WR_RELOAD);
- else
- {
- if (self.BUTTON_ATCK)
- {
- if (weapon_prepareattack(0, WEP_CVAR_PRI(nex, refire)))
- {
- W_Nex_Attack(0);
- weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(nex, animtime), w_ready);
- }
- }
- if ((WEP_CVAR(nex, charge) && !WEP_CVAR(nex, secondary)) ? (self.BUTTON_ZOOM | self.BUTTON_ZOOMSCRIPT) : self.BUTTON_ATCK2)
- {
- if(WEP_CVAR(nex, charge))
- {
- self.nex_charge_rottime = time + WEP_CVAR(nex, charge_rot_pause);
- dt = frametime / W_TICSPERFRAME;
-
- if(self.nex_charge < 1)
- {
- if(WEP_CVAR_SEC(nex, chargepool))
- {
- if(WEP_CVAR_SEC(nex, ammo))
- {
- // always deplete if secondary is held
- self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - WEP_CVAR_SEC(nex, ammo) * dt);
-
- dt = min(dt, (1 - self.nex_charge) / WEP_CVAR(nex, charge_rate));
- self.nex_chargepool_pauseregen_finished = time + WEP_CVAR_SEC(nex, chargepool_pause_regen);
- dt = min(dt, self.nex_chargepool_ammo);
- dt = max(0, dt);
-
- self.nex_charge += dt * WEP_CVAR(nex, charge_rate);
- }
- }
-
- else if(WEP_CVAR_SEC(nex, ammo))
- {
- if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed
- {
- dt = min(dt, (1 - self.nex_charge) / WEP_CVAR(nex, charge_rate));
- if(!(self.items & IT_UNLIMITED_WEAPON_AMMO))
- {
- // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
- if(autocvar_g_balance_nex_reload_ammo)
- {
- dt = min(dt, (self.clip_load - WEP_CVAR_PRI(nex, ammo)) / WEP_CVAR_SEC(nex, ammo));
- dt = max(0, dt);
- if(dt > 0)
- {
- self.clip_load = max(WEP_CVAR_SEC(nex, ammo), self.clip_load - WEP_CVAR_SEC(nex, ammo) * dt);
- }
- self.(weapon_load[WEP_NEX]) = self.clip_load;
- }
- else
- {
- dt = min(dt, (self.AMMO_VAL(WEP_NEX) - WEP_CVAR_PRI(nex, ammo)) / WEP_CVAR_SEC(nex, ammo));
- dt = max(0, dt);
- if(dt > 0)
- {
- self.AMMO_VAL(WEP_NEX) = max(WEP_CVAR_SEC(nex, ammo), self.AMMO_VAL(WEP_NEX) - WEP_CVAR_SEC(nex, ammo) * dt);
- }
- }
- }
- self.nex_charge += dt * WEP_CVAR(nex, charge_rate);
- }
- }
-
- else
- {
- dt = min(dt, (1 - self.nex_charge) / WEP_CVAR(nex, charge_rate));
- self.nex_charge += dt * WEP_CVAR(nex, charge_rate);
- }
- }
- }
- else if(WEP_CVAR(nex, secondary))
- {
- if (weapon_prepareattack(0, WEP_CVAR_SEC(nex, refire)))
- {
- W_Nex_Attack(1);
- weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_SEC(nex, animtime), w_ready);
- }
- }
- }
- }
-
- return TRUE;
- }
- case WR_INIT:
- {
- precache_model ("models/nexflash.md3");
- precache_model ("models/weapons/g_nex.md3");
- precache_model ("models/weapons/v_nex.md3");
- precache_model ("models/weapons/h_nex.iqm");
- precache_sound ("weapons/nexfire.wav");
- precache_sound ("weapons/nexcharge.wav");
- precache_sound ("weapons/nexwhoosh1.wav");
- precache_sound ("weapons/nexwhoosh2.wav");
- precache_sound ("weapons/nexwhoosh3.wav");
- NEX_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
- return TRUE;
- }
- case WR_CHECKAMMO1:
- {
- ammo_amount = self.AMMO_VAL(WEP_NEX) >= WEP_CVAR_PRI(nex, ammo);
- ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.(weapon_load[WEP_NEX]) >= WEP_CVAR_PRI(nex, ammo));
- return ammo_amount;
- }
- case WR_CHECKAMMO2:
- {
- if(WEP_CVAR(nex, secondary))
- {
- // don't allow charging if we don't have enough ammo
- ammo_amount = self.AMMO_VAL(WEP_NEX) >= WEP_CVAR_SEC(nex, ammo);
- ammo_amount += self.(weapon_load[WEP_NEX]) >= WEP_CVAR_SEC(nex, ammo);
- return ammo_amount;
- }
- else
- {
- return FALSE; // zoom is not a fire mode
- }
- }
- case WR_CONFIG:
- {
- NEX_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
- return TRUE;
- }
- case WR_RELOAD:
- {
- W_Reload(min(WEP_CVAR_PRI(nex, ammo), WEP_CVAR_SEC(nex, ammo)), "weapons/reload.wav");
- return TRUE;
- }
- case WR_SUICIDEMESSAGE:
- {
- return WEAPON_THINKING_WITH_PORTALS;
- }
- case WR_KILLMESSAGE:
- {
- return WEAPON_NEX_MURDER;
- }
- }
- return TRUE;
-}
-#endif
-#ifdef CSQC
-float w_nex(float req)
-{
- switch(req)
- {
- case WR_IMPACTEFFECT:
- {
- vector org2;
- org2 = w_org + w_backoff * 6;
- pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
- if(!w_issilent)
- sound(self, CH_SHOTS, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
-
- return TRUE;
- }
- case WR_INIT:
- {
- precache_sound("weapons/neximpact.wav");
- return TRUE;
- }
- }
- return TRUE;
-}
-#endif
-#endif
--- /dev/null
+#ifdef REGISTER_WEAPON
+REGISTER_WEAPON(
+/* WEP_##id */ VORTEX,
+/* function */ w_vortex,
+/* ammotype */ ammo_cells,
+/* impulse */ 7,
+/* flags */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN,
+/* rating */ BOT_PICKUP_RATING_HIGH,
+/* color */ '0.5 1 1',
+/* model */ "nex",
+/* netname */ "nex",
+/* fullname */ _("Vortex")
+);
+
+#define VORTEX_SETTINGS(w_cvar,w_prop) VORTEX_SETTINGS_LIST(w_cvar, w_prop, VORTEX, vortex)
+#define VORTEX_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+ w_cvar(id, sn, BOTH, ammo) \
+ w_cvar(id, sn, BOTH, animtime) \
+ w_cvar(id, sn, BOTH, damage) \
+ w_cvar(id, sn, BOTH, force) \
+ w_cvar(id, sn, BOTH, damagefalloff_mindist) \
+ w_cvar(id, sn, BOTH, damagefalloff_maxdist) \
+ w_cvar(id, sn, BOTH, damagefalloff_halflife) \
+ w_cvar(id, sn, BOTH, damagefalloff_forcehalflife) \
+ w_cvar(id, sn, BOTH, refire) \
+ w_cvar(id, sn, NONE, charge) \
+ w_cvar(id, sn, NONE, charge_mindmg) \
+ w_cvar(id, sn, NONE, charge_shot_multiplier) \
+ w_cvar(id, sn, NONE, charge_animlimit) \
+ w_cvar(id, sn, NONE, charge_limit) \
+ w_cvar(id, sn, NONE, charge_rate) \
+ w_cvar(id, sn, NONE, charge_rot_rate) \
+ w_cvar(id, sn, NONE, charge_rot_pause) \
+ w_cvar(id, sn, NONE, charge_start) \
+ w_cvar(id, sn, NONE, charge_minspeed) \
+ w_cvar(id, sn, NONE, charge_maxspeed) \
+ w_cvar(id, sn, NONE, charge_velocity_rate) \
+ w_cvar(id, sn, NONE, secondary) \
+ w_cvar(id, sn, SEC, chargepool) \
+ w_cvar(id, sn, SEC, chargepool_regen) \
+ w_cvar(id, sn, SEC, chargepool_pause_regen) \
+ w_prop(id, sn, float, reloading_ammo, reload_ammo) \
+ w_prop(id, sn, float, reloading_time, reload_time) \
+ w_prop(id, sn, float, switchdelay_raise, switchdelay_raise) \
+ w_prop(id, sn, float, switchdelay_drop, switchdelay_drop) \
+ w_prop(id, sn, string, weaponreplace, weaponreplace) \
+ w_prop(id, sn, float, weaponstart, weaponstart) \
+ w_prop(id, sn, float, weaponstartoverride, weaponstartoverride)
+
+#ifdef SVQC
+VORTEX_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
+#endif
+#else
+#ifdef SVQC
+void spawnfunc_weapon_vortex() { weapon_defaultspawnfunc(WEP_VORTEX); }
+void spawnfunc_weapon_nex() { spawnfunc_weapon_vortex(); }
+
+void SendCSQCVortexBeamParticle(float charge) {
+ vector v;
+ v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
+ WriteByte(MSG_BROADCAST, SVC_TEMPENTITY);
+ WriteByte(MSG_BROADCAST, TE_CSQC_VORTEXBEAMPARTICLE);
+ WriteCoord(MSG_BROADCAST, w_shotorg_x);
+ WriteCoord(MSG_BROADCAST, w_shotorg_y);
+ WriteCoord(MSG_BROADCAST, w_shotorg_z);
+ WriteCoord(MSG_BROADCAST, v_x);
+ WriteCoord(MSG_BROADCAST, v_y);
+ WriteCoord(MSG_BROADCAST, v_z);
+ WriteByte(MSG_BROADCAST, bound(0, 255 * charge, 255));
+}
+
+void W_Vortex_Attack (float issecondary)
+{
+ float mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, myammo, charge;
+
+ mydmg = WEP_CVAR_BOTH(vortex, !issecondary, damage);
+ myforce = WEP_CVAR_BOTH(vortex, !issecondary, force);
+ mymindist = WEP_CVAR_BOTH(vortex, !issecondary, damagefalloff_mindist);
+ mymaxdist = WEP_CVAR_BOTH(vortex, !issecondary, damagefalloff_maxdist);
+ myhalflife = WEP_CVAR_BOTH(vortex, !issecondary, damagefalloff_halflife);
+ myforcehalflife = WEP_CVAR_BOTH(vortex, !issecondary, damagefalloff_forcehalflife);
+ myammo = WEP_CVAR_BOTH(vortex, !issecondary, ammo);
+
+ float flying;
+ flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last
+
+ if(WEP_CVAR(vortex, charge))
+ {
+ charge = WEP_CVAR(vortex, charge_mindmg) / mydmg + (1 - WEP_CVAR(vortex, charge_mindmg) / mydmg) * self.vortex_charge;
+ self.vortex_charge *= WEP_CVAR(vortex, charge_shot_multiplier); // do this AFTER setting mydmg/myforce
+ // O RLY? -- divVerent
+ // YA RLY -- FruitieX
+ }
+ else
+ charge = 1;
+ mydmg *= charge;
+ myforce *= charge;
+
+ W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav", CH_WEAPON_A, mydmg);
+ if(charge > WEP_CVAR(vortex, charge_animlimit) && WEP_CVAR(vortex, charge_animlimit)) // if the Vortex is overcharged, we play an extra sound
+ {
+ sound (self, CH_WEAPON_B, "weapons/nexcharge.wav", VOL_BASE * (charge - 0.5 * WEP_CVAR(vortex, charge_animlimit)) / (1 - 0.5 * WEP_CVAR(vortex, charge_animlimit)), ATTN_NORM);
+ }
+
+ yoda = 0;
+ FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_VORTEX);
+
+ if(yoda && flying)
+ Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA);
+
+ //beam and muzzle flash done on client
+ SendCSQCVortexBeamParticle(charge);
+
+ W_DecreaseAmmo(myammo);
+}
+
+void spawnfunc_weapon_vortex (void); // defined in t_items.qc
+
+.float vortex_chargepool_pauseregen_finished;
+float w_vortex(float req)
+{
+ float dt;
+ float ammo_amount;
+ switch(req)
+ {
+ case WR_AIM:
+ {
+ if(bot_aim(1000000, 0, 1, FALSE))
+ self.BUTTON_ATCK = TRUE;
+ else
+ {
+ if(WEP_CVAR(vortex, charge))
+ self.BUTTON_ATCK2 = TRUE;
+ }
+ return TRUE;
+ }
+ case WR_THINK:
+ {
+ if(WEP_CVAR(vortex, charge) && self.vortex_charge < WEP_CVAR(vortex, charge_limit))
+ self.vortex_charge = min(1, self.vortex_charge + WEP_CVAR(vortex, charge_rate) * frametime / W_TICSPERFRAME);
+
+ if(WEP_CVAR_SEC(vortex, chargepool))
+ if(self.vortex_chargepool_ammo < 1)
+ {
+ if(self.vortex_chargepool_pauseregen_finished < time)
+ self.vortex_chargepool_ammo = min(1, self.vortex_chargepool_ammo + WEP_CVAR_SEC(vortex, chargepool_regen) * frametime / W_TICSPERFRAME);
+ self.pauseregen_finished = max(self.pauseregen_finished, time + WEP_CVAR_SEC(vortex, chargepool_pause_regen));
+ }
+
+ if(autocvar_g_balance_vortex_reload_ammo && self.clip_load < min(WEP_CVAR_PRI(vortex, ammo), WEP_CVAR_SEC(vortex, ammo))) // forced reload
+ WEP_ACTION(self.weapon, WR_RELOAD);
+ else
+ {
+ if (self.BUTTON_ATCK)
+ {
+ if (weapon_prepareattack(0, WEP_CVAR_PRI(vortex, refire)))
+ {
+ W_Vortex_Attack(0);
+ weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(vortex, animtime), w_ready);
+ }
+ }
+ if ((WEP_CVAR(vortex, charge) && !WEP_CVAR(vortex, secondary)) ? (self.BUTTON_ZOOM | self.BUTTON_ZOOMSCRIPT) : self.BUTTON_ATCK2)
+ {
+ if(WEP_CVAR(vortex, charge))
+ {
+ self.vortex_charge_rottime = time + WEP_CVAR(vortex, charge_rot_pause);
+ dt = frametime / W_TICSPERFRAME;
+
+ if(self.vortex_charge < 1)
+ {
+ if(WEP_CVAR_SEC(vortex, chargepool))
+ {
+ if(WEP_CVAR_SEC(vortex, ammo))
+ {
+ // always deplete if secondary is held
+ self.vortex_chargepool_ammo = max(0, self.vortex_chargepool_ammo - WEP_CVAR_SEC(vortex, ammo) * dt);
+
+ dt = min(dt, (1 - self.vortex_charge) / WEP_CVAR(vortex, charge_rate));
+ self.vortex_chargepool_pauseregen_finished = time + WEP_CVAR_SEC(vortex, chargepool_pause_regen);
+ dt = min(dt, self.vortex_chargepool_ammo);
+ dt = max(0, dt);
+
+ self.vortex_charge += dt * WEP_CVAR(vortex, charge_rate);
+ }
+ }
+
+ else if(WEP_CVAR_SEC(vortex, ammo))
+ {
+ if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed
+ {
+ dt = min(dt, (1 - self.vortex_charge) / WEP_CVAR(vortex, charge_rate));
+ if(!(self.items & IT_UNLIMITED_WEAPON_AMMO))
+ {
+ // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
+ if(autocvar_g_balance_vortex_reload_ammo)
+ {
+ dt = min(dt, (self.clip_load - WEP_CVAR_PRI(vortex, ammo)) / WEP_CVAR_SEC(vortex, ammo));
+ dt = max(0, dt);
+ if(dt > 0)
+ {
+ self.clip_load = max(WEP_CVAR_SEC(vortex, ammo), self.clip_load - WEP_CVAR_SEC(vortex, ammo) * dt);
+ }
+ self.(weapon_load[WEP_VORTEX]) = self.clip_load;
+ }
+ else
+ {
+ dt = min(dt, (self.AMMO_VAL(WEP_VORTEX) - WEP_CVAR_PRI(vortex, ammo)) / WEP_CVAR_SEC(vortex, ammo));
+ dt = max(0, dt);
+ if(dt > 0)
+ {
+ self.AMMO_VAL(WEP_VORTEX) = max(WEP_CVAR_SEC(vortex, ammo), self.AMMO_VAL(WEP_VORTEX) - WEP_CVAR_SEC(vortex, ammo) * dt);
+ }
+ }
+ }
+ self.vortex_charge += dt * WEP_CVAR(vortex, charge_rate);
+ }
+ }
+
+ else
+ {
+ dt = min(dt, (1 - self.vortex_charge) / WEP_CVAR(vortex, charge_rate));
+ self.vortex_charge += dt * WEP_CVAR(vortex, charge_rate);
+ }
+ }
+ }
+ else if(WEP_CVAR(vortex, secondary))
+ {
+ if (weapon_prepareattack(0, WEP_CVAR_SEC(vortex, refire)))
+ {
+ W_Vortex_Attack(1);
+ weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_SEC(vortex, animtime), w_ready);
+ }
+ }
+ }
+ }
+
+ return TRUE;
+ }
+ case WR_INIT:
+ {
+ precache_model ("models/nexflash.md3");
+ precache_model ("models/weapons/g_nex.md3");
+ precache_model ("models/weapons/v_nex.md3");
+ precache_model ("models/weapons/h_nex.iqm");
+ precache_sound ("weapons/nexfire.wav");
+ precache_sound ("weapons/nexcharge.wav");
+ precache_sound ("weapons/nexwhoosh1.wav");
+ precache_sound ("weapons/nexwhoosh2.wav");
+ precache_sound ("weapons/nexwhoosh3.wav");
+ VORTEX_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
+ return TRUE;
+ }
+ case WR_CHECKAMMO1:
+ {
+ ammo_amount = self.AMMO_VAL(WEP_VORTEX) >= WEP_CVAR_PRI(vortex, ammo);
+ ammo_amount += (autocvar_g_balance_vortex_reload_ammo && self.(weapon_load[WEP_VORTEX]) >= WEP_CVAR_PRI(vortex, ammo));
+ return ammo_amount;
+ }
+ case WR_CHECKAMMO2:
+ {
+ if(WEP_CVAR(vortex, secondary))
+ {
+ // don't allow charging if we don't have enough ammo
+ ammo_amount = self.AMMO_VAL(WEP_VORTEX) >= WEP_CVAR_SEC(vortex, ammo);
+ ammo_amount += self.(weapon_load[WEP_VORTEX]) >= WEP_CVAR_SEC(vortex, ammo);
+ return ammo_amount;
+ }
+ else
+ {
+ return FALSE; // zoom is not a fire mode
+ }
+ }
+ case WR_CONFIG:
+ {
+ VORTEX_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
+ return TRUE;
+ }
+ case WR_RELOAD:
+ {
+ W_Reload(min(WEP_CVAR_PRI(vortex, ammo), WEP_CVAR_SEC(vortex, ammo)), "weapons/reload.wav");
+ return TRUE;
+ }
+ case WR_SUICIDEMESSAGE:
+ {
+ return WEAPON_THINKING_WITH_PORTALS;
+ }
+ case WR_KILLMESSAGE:
+ {
+ return WEAPON_VORTEX_MURDER;
+ }
+ }
+ return TRUE;
+}
+#endif
+#ifdef CSQC
+float w_vortex(float req)
+{
+ switch(req)
+ {
+ case WR_IMPACTEFFECT:
+ {
+ vector org2;
+ org2 = w_org + w_backoff * 6;
+ pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
+ if(!w_issilent)
+ sound(self, CH_SHOTS, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
+
+ return TRUE;
+ }
+ case WR_INIT:
+ {
+ precache_sound("weapons/neximpact.wav");
+ return TRUE;
+ }
+ }
+ return TRUE;
+}
+#endif
+#endif
self.effects |= EF_TELEPORT_BIT | EF_RESTARTANIM_BIT;
self.air_finished = time + 12;
self.dmg = 2;
- if(WEP_CVAR(nex, charge))
+ if(WEP_CVAR(vortex, charge))
{
- if(WEP_CVAR_SEC(nex, chargepool))
- self.nex_chargepool_ammo = 1;
- self.nex_charge = WEP_CVAR(nex, charge_start);
+ if(WEP_CVAR_SEC(vortex, chargepool))
+ self.vortex_chargepool_ammo = 1;
+ self.vortex_charge = WEP_CVAR(vortex, charge_start);
}
if(warmup_stage)
WriteCoord(MSG_ENTITY, self.bouncestop); // g_balance_mortar_bouncestop
WriteCoord(MSG_ENTITY, self.ebouncefactor); // g_balance_mortar_bouncefactor
WriteCoord(MSG_ENTITY, self.ebouncestop); // g_balance_mortar_bouncestop
- WriteByte(MSG_ENTITY, WEP_CVAR(nex, secondary)); // client has to know if it should zoom or not // WEAPONTODO
+ WriteByte(MSG_ENTITY, WEP_CVAR(vortex, secondary)); // client has to know if it should zoom or not // WEAPONTODO
WriteByte(MSG_ENTITY, WEP_CVAR(rifle, secondary)); // client has to know if it should zoom or not // WEAPONTODO
WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not
WriteByte(MSG_ENTITY, WEP_CVAR(minelayer, limit)); // minelayer max mines // WEAPONTODO
self.switchweapon = spectatee.switchweapon;
self.switchingweapon = spectatee.switchingweapon;
self.weapon = spectatee.weapon;
- self.nex_charge = spectatee.nex_charge;
- self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo;
+ self.vortex_charge = spectatee.vortex_charge;
+ self.vortex_chargepool_ammo = spectatee.vortex_chargepool_ammo;
self.hagar_load = spectatee.hagar_load;
self.minelayer_mines = spectatee.minelayer_mines;
self.punchangle = spectatee.punchangle;
if(frametime)
{
- if(self.weapon == WEP_NEX && WEP_CVAR(nex, charge))
+ if(self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge))
{
- self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.nex_charge / WEP_CVAR(nex, charge_animlimit));
- self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.nex_charge / WEP_CVAR(nex, charge_animlimit));
- self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.nex_charge / WEP_CVAR(nex, charge_animlimit));
+ self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit));
+ self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit));
+ self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit));
- if(self.nex_charge > WEP_CVAR(nex, charge_animlimit))
+ if(self.vortex_charge > WEP_CVAR(vortex, charge_animlimit))
{
- self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.nex_charge - WEP_CVAR(nex, charge_animlimit)) / (1 - WEP_CVAR(nex, charge_animlimit));
- self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.nex_charge - WEP_CVAR(nex, charge_animlimit)) / (1 - WEP_CVAR(nex, charge_animlimit));
- self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.nex_charge - WEP_CVAR(nex, charge_animlimit)) / (1 - WEP_CVAR(nex, charge_animlimit));
+ self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit));
+ self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit));
+ self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit));
}
}
else
player_regen();
// rot nex charge to the charge limit
- if(WEP_CVAR(nex, charge_rot_rate) && self.nex_charge > WEP_CVAR(nex, charge_limit) && self.nex_charge_rottime < time)
- self.nex_charge = bound(WEP_CVAR(nex, charge_limit), self.nex_charge - WEP_CVAR(nex, charge_rot_rate) * frametime / W_TICSPERFRAME, 1);
+ if(WEP_CVAR(vortex, charge_rot_rate) && self.vortex_charge > WEP_CVAR(vortex, charge_limit) && self.vortex_charge_rottime < time)
+ self.vortex_charge = bound(WEP_CVAR(vortex, charge_limit), self.vortex_charge - WEP_CVAR(vortex, charge_rot_rate) * frametime / W_TICSPERFRAME, 1);
if(frametime)
player_anim();
}
if(!zoomstate_set)
- SetZoomState(self.BUTTON_ZOOM || self.BUTTON_ZOOMSCRIPT || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_RIFLE && WEP_CVAR(rifle, secondary) == 0)); // WEAPONTODO
+ SetZoomState(self.BUTTON_ZOOM || self.BUTTON_ZOOMSCRIPT || (self.BUTTON_ATCK2 && self.weapon == WEP_VORTEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_RIFLE && WEP_CVAR(rifle, secondary) == 0)); // WEAPONTODO
float oldspectatee_status;
oldspectatee_status = self.spectatee_status;
// WEAPONTODO
float xyspeed;
xyspeed = vlen('1 0 0' * self.velocity_x + '0 1 0' * self.velocity_y);
- if(self.weapon == WEP_NEX && WEP_CVAR(nex, charge) && WEP_CVAR(nex, charge_velocity_rate) && xyspeed > WEP_CVAR(nex, charge_minspeed))
+ if(self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed))
{
// add a maximum of charge_velocity_rate when going fast (f = 1), gradually increasing from minspeed (f = 0) to maxspeed
- xyspeed = min(xyspeed, WEP_CVAR(nex, charge_maxspeed));
- f = (xyspeed - WEP_CVAR(nex, charge_minspeed)) / (WEP_CVAR(nex, charge_maxspeed) - WEP_CVAR(nex, charge_minspeed));
+ xyspeed = min(xyspeed, WEP_CVAR(vortex, charge_maxspeed));
+ f = (xyspeed - WEP_CVAR(vortex, charge_minspeed)) / (WEP_CVAR(vortex, charge_maxspeed) - WEP_CVAR(vortex, charge_minspeed));
// add the extra charge
- self.nex_charge = min(1, self.nex_charge + WEP_CVAR(nex, charge_velocity_rate) * f * frametime);
+ self.vortex_charge = min(1, self.vortex_charge + WEP_CVAR(vortex, charge_velocity_rate) * f * frametime);
}
:end
if(self.flags & FL_ONGROUND)
.entity lastrocket;
.float minelayer_mines;
-.float nex_charge;
-.float nex_charge_rottime;
-.float nex_chargepool_ammo;
+.float vortex_charge;
+.float vortex_charge_rottime;
+.float vortex_chargepool_ammo;
.float hagar_load;
.float grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time);
addstat(STAT_LAYED_MINES, AS_INT, minelayer_mines);
- addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
- addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_chargepool_ammo);
+ addstat(STAT_VORTEX_CHARGE, AS_FLOAT, vortex_charge);
+ addstat(STAT_VORTEX_CHARGEPOOL, AS_FLOAT, vortex_chargepool_ammo);
addstat(STAT_HAGAR_LOAD, AS_INT, hagar_load);
StartItem ("models/items/a_cells.md3",
"misc/itempickup.wav", 45, 0,
- "MinstaNex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
+ "Vaporizer Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
}
void minstagib_health_mega()
return FALSE;
}
- if(self.weapon == WEP_DEVASTATOR || self.weapon == WEP_NEX)
+ if(self.weapon == WEP_DEVASTATOR || self.weapon == WEP_VORTEX)
{
entity e = spawn();
setorigin(e, self.origin);
if(DEATH_ISWEAPON(deathtype, WEP_BLASTER))
return;
- if(DEATH_ISWEAPON(deathtype, WEP_NEX) || DEATH_ISWEAPON(deathtype, WEP_VAPORIZER))
+ if(DEATH_ISWEAPON(deathtype, WEP_VORTEX) || DEATH_ISWEAPON(deathtype, WEP_VAPORIZER))
{
force *= 6;
damage = self.max_health * 0.55;
/*
-CORE laser nex lg rl cry gl elec hagar fireb hook
+CORE laser vortex lg rl cry gl elec hagar fireb hook
vaporizer porto
tuba
Entity:
{
-"classname" "weapon_nex"
+"classname" "weapon_vortex"
"new_toys" "rifle"
}
--> This will spawn as Rifle in this mutator ONLY, and as Nex otherwise.
+-> This will spawn as Rifle in this mutator ONLY, and as Vortex otherwise.
{
-"classname" "weapon_nex"
-"new_toys" "nex rifle"
+"classname" "weapon_vortext"
+"new_toys" "vortex rifle"
}
--> This will spawn as either Nex or Rifle in this mutator ONLY, and as Nex otherwise.
+-> This will spawn as either Vortex or Rifle in this mutator ONLY, and as Vortex otherwise.
{
-"classname" "weapon_nex"
-"new_toys" "nex"
+"classname" "weapon_vortex"
+"new_toys" "vortex"
}
--> This is always a Nex.
+-> This is always a Vortex.
If the map specifies no "new_toys" argument
There will be two default replacements selectable: "replace all" and "replace random".
-In "replace all" mode, e.g. Nex will have the default replacement "rifle".
-In "replace random" mode, Nex will have the default replacement "nex rifle".
+In "replace all" mode, e.g. Vortex will have the default replacement "rifle".
+In "replace random" mode, Vortex will have the default replacement "vortex rifle".
This mutator's replacements run BEFORE regular weaponreplace!
case "hagar": return "seeker";
case "rocketlauncher": return "minelayer";
case "uzi": return "hlac";
- case "nex": return "rifle";
+ case "vortex": return "rifle";
case "shockwave": return "shotgun";
default: return string_null;
}
self.(weapon_load[nix_weapon]) = e.reloading_ammo;
// nex too
- if(WEP_CVAR(nex, charge))
+ if(WEP_CVAR(vortex, charge))
{
- if(WEP_CVAR_SEC(nex, chargepool))
- self.nex_chargepool_ammo = 1;
- self.nex_charge = WEP_CVAR(nex, charge_start);
+ if(WEP_CVAR_SEC(vortex, chargepool))
+ self.vortex_chargepool_ammo = 1;
+ self.vortex_charge = WEP_CVAR(vortex, charge_start);
}
}
if(self.nix_lastinfotime != dt)
void spawnfunc_weapon_plasmagun() { spawnfunc_weapon_hagar(); }
void spawnfunc_ammo_cells() { spawnfunc_item_rockets(); }
-// Rail -> Nex
-void spawnfunc_weapon_railgun() { spawnfunc_weapon_nex(); }
+// Rail -> Vortex
+void spawnfunc_weapon_railgun() { spawnfunc_weapon_vortex(); }
void spawnfunc_ammo_slugs() { spawnfunc_item_cells(); }
// BFG -> Crylink
float autocvar_g_vehicles_delayspawn;
float autocvar_g_vehicles_delayspawn_jitter;
-var float autocvar_g_vehicles_nex_damagerate = 0.5;
+var float autocvar_g_vehicles_vortex_damagerate = 0.5;
var float autocvar_g_vehicles_uzi_damagerate = 0.5;
var float autocvar_g_vehicles_rifle_damagerate = 0.75;
var float autocvar_g_vehicles_vaporizer_damagerate = 0.001;
{
self.dmg_time = time;
- if(DEATH_ISWEAPON(deathtype, WEP_NEX))
- damage *= autocvar_g_vehicles_nex_damagerate;
+ // WEAPONTODO
+ if(DEATH_ISWEAPON(deathtype, WEP_VORTEX))
+ damage *= autocvar_g_vehicles_vortex_damagerate;
if(DEATH_ISWEAPON(deathtype, WEP_UZI))
damage *= autocvar_g_vehicles_uzi_damagerate;
//explosion = spawn();
// Find all non-hit players the beam passed close by
- if(deathtype == WEP_VAPORIZER || deathtype == WEP_NEX)
+ if(deathtype == WEP_VAPORIZER || deathtype == WEP_VORTEX)
{
FOR_EACH_REALCLIENT(msg_entity)
if(msg_entity != self)
set g_vehicles_delayspawn 1
set g_vehicles_delayspawn_jitter 10
-set g_vehicles_nex_damagerate 0.5
+set g_vehicles_vortex_damagerate 0.5
set g_vehicles_uzi_damagerate 0.65
set g_vehicles_rifle_damagerate 1
set g_vehicles_vaporizer_damagerate 0.007