From: Mario Date: Mon, 23 Dec 2013 05:04:42 +0000 (+1100) Subject: Rename nex to vortex X-Git-Tag: xonotic-v0.8.0~152^2~215 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=710bd999520e108b463017cb23793ca0709075f6 Rename nex to vortex --- diff --git a/bal-wep-xonotic.cfg b/bal-wep-xonotic.cfg index 1db24d7859..97d4123db3 100644 --- a/bal-wep-xonotic.cfg +++ b/bal-wep-xonotic.cfg @@ -313,47 +313,47 @@ set g_balance_crylink_weaponstart 0 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 diff --git a/balance-xonotic.cfg b/balance-xonotic.cfg index 296ca67e91..a2aa31f0a6 100644 --- a/balance-xonotic.cfg +++ b/balance-xonotic.cfg @@ -7,7 +7,7 @@ set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the 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" diff --git a/crosshairs.cfg b/crosshairs.cfg index c6a9e837b0..c4feef63e5 100644 --- a/crosshairs.cfg +++ b/crosshairs.cfg @@ -77,10 +77,10 @@ seta crosshair_crylink "" "crosshair to display when wielding the crylink" 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" @@ -133,15 +133,15 @@ seta crosshair_ring_inner 0 "allow inner rings to be drawn too" 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 diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index d5ea2b6995..d5e704180a 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -57,7 +57,7 @@ _cl_playerskin 0 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" @@ -356,9 +356,9 @@ set bot_ai_keyboard_threshold 0.57 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" @@ -1125,12 +1125,12 @@ sv_allowdownloads 0 // download protocol is evil 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" @@ -1368,7 +1368,7 @@ set g_weaponreplace_uzi "" 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 "" diff --git a/qcsrc/client/Defs.qc b/qcsrc/client/Defs.qc index a0091a9a90..24a5fbfc0b 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -251,7 +251,7 @@ float w_deathtype, w_issilent, w_random; vector w_org, w_backoff; float rifle_scope; -float nex_scope; +float vortex_scope; float minelayer_maxmines; @@ -262,7 +262,7 @@ float bgmtime; string weaponorder_byimpulse; string weaponorder_bypriority; -float nex_charge_movingavg; +float vortex_charge_movingavg; float serverflags; diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index b719fd9247..c5e214116f 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -128,7 +128,7 @@ void CSQC_Init(void) 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 @@ -969,7 +969,7 @@ void Ent_Init() g_balance_electro_secondary_bouncefactor = ReadCoord(); g_balance_electro_secondary_bouncestop = ReadCoord(); - nex_scope = !ReadByte(); + vortex_scope = !ReadByte(); rifle_scope = !ReadByte(); serverflags = ReadByte(); @@ -1210,8 +1210,8 @@ float CSQC_Parse_TempEntity() Net_ReadRace(); bHandled = true; break; - case TE_CSQC_NEXGUNBEAMPARTICLE: - Net_ReadNexgunBeamParticle(); + case TE_CSQC_VORTEXBEAMPARTICLE: + Net_ReadVortexBeamParticle(); bHandled = true; break; case TE_CSQC_TEAMNAGGER: diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index cd7a6b3f88..07c866fb6c 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -104,7 +104,7 @@ vector GetCurrentFov(float fov) 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()) { @@ -276,7 +276,7 @@ float TrueAimCheck() 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; @@ -364,7 +364,7 @@ float pickup_crosshair_time, pickup_crosshair_size; 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; @@ -804,11 +804,11 @@ void CSQC_UpdateView(float w, float h) // 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) @@ -836,10 +836,10 @@ void CSQC_UpdateView(float w, float h) 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); } } @@ -1368,32 +1368,32 @@ void CSQC_UpdateView(float w, float h) 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"; } diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 403792020a..1e5ad9d92e 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -60,7 +60,7 @@ float autocvar_cl_particles_quality; 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; @@ -123,14 +123,14 @@ float autocvar_crosshair_ring_minelayer; 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; diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 4526673486..20c7961ace 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -344,7 +344,7 @@ void Ent_DamageInfo(float isNew) 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); diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 129fbe3688..ae29a90f0d 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -434,7 +434,7 @@ float GetAmmoTypeForWep(float i) // WEAPONTODO 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; diff --git a/qcsrc/client/particles.qc b/qcsrc/client/particles.qc index 7a1c90e101..857e182f66 100644 --- a/qcsrc/client/particles.qc +++ b/qcsrc/client/particles.qc @@ -225,7 +225,7 @@ void Ent_RainOrSnow() self.draw = Draw_Snow; } -void Net_ReadNexgunBeamParticle() +void Net_ReadVortexBeamParticle() { vector shotorg, endpos; float charge; diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 980a8ab4a3..d7f69c7d96 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -1026,7 +1026,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) 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]; diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 41a9520dd8..580a59c2b8 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -30,13 +30,13 @@ const float AS_FLOAT = 8; 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; @@ -154,10 +154,10 @@ const float STAT_SHOTORG = 46; // compressShotOrigin 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; diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index b911facb58..f8e6313480 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -498,7 +498,7 @@ void Send_Notification_WOCOVA( 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"), "") \ @@ -783,7 +783,7 @@ void Send_Notification_WOCOVA( 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) \ diff --git a/qcsrc/common/weapons/all.qh b/qcsrc/common/weapons/all.qh index bbf2a599a5..f0133ec6ca 100644 --- a/qcsrc/common/weapons/all.qh +++ b/qcsrc/common/weapons/all.qh @@ -11,7 +11,7 @@ #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" diff --git a/qcsrc/common/weapons/w_nex.qc b/qcsrc/common/weapons/w_nex.qc deleted file mode 100644 index f6fe16dab6..0000000000 --- a/qcsrc/common/weapons/w_nex.qc +++ /dev/null @@ -1,318 +0,0 @@ -#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 diff --git a/qcsrc/common/weapons/w_vortex.qc b/qcsrc/common/weapons/w_vortex.qc new file mode 100644 index 0000000000..42a2d74801 --- /dev/null +++ b/qcsrc/common/weapons/w_vortex.qc @@ -0,0 +1,319 @@ +#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 diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 7b296f6efc..693b54e3e2 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -423,11 +423,11 @@ void PutClientInServer (void) 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) @@ -636,7 +636,7 @@ float ClientInit_SendEntity(entity to, float sf) 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 @@ -1700,8 +1700,8 @@ void SpectateCopy(entity spectatee) { 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; @@ -2255,17 +2255,17 @@ void PlayerPreThink (void) 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 @@ -2397,8 +2397,8 @@ void PlayerPreThink (void) 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(); @@ -2420,7 +2420,7 @@ void PlayerPreThink (void) } 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; diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 12cc888fee..6d10518655 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -1272,13 +1272,13 @@ void SV_PlayerPhysics() // 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) diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 90a73819a6..cb46da326e 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -533,9 +533,9 @@ float client_cefc_accumulatortime; .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 diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 5e066cdbbb..1d46a5397a 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -786,8 +786,8 @@ void spawnfunc_worldspawn (void) 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); diff --git a/qcsrc/server/mutators/mutator_minstagib.qc b/qcsrc/server/mutators/mutator_minstagib.qc index 1f230db11c..10f5d4959c 100644 --- a/qcsrc/server/mutators/mutator_minstagib.qc +++ b/qcsrc/server/mutators/mutator_minstagib.qc @@ -6,7 +6,7 @@ void spawnfunc_item_minst_cells (void) 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() @@ -293,7 +293,7 @@ MUTATOR_HOOKFUNCTION(minstagib_FilterItem) 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); diff --git a/qcsrc/server/mutators/mutator_nades.qc b/qcsrc/server/mutators/mutator_nades.qc index 84911bb9fc..6fc91049a6 100644 --- a/qcsrc/server/mutators/mutator_nades.qc +++ b/qcsrc/server/mutators/mutator_nades.qc @@ -104,7 +104,7 @@ void nade_damage(entity inflictor, entity attacker, float damage, float deathtyp 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; diff --git a/qcsrc/server/mutators/mutator_new_toys.qc b/qcsrc/server/mutators/mutator_new_toys.qc index 4a891e59f7..d540adee6e 100644 --- a/qcsrc/server/mutators/mutator_new_toys.qc +++ b/qcsrc/server/mutators/mutator_new_toys.qc @@ -1,6 +1,6 @@ /* -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 @@ -18,28 +18,28 @@ weaponreplace lists. 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! @@ -101,7 +101,7 @@ string nt_GetFullReplacement(string w) 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; } diff --git a/qcsrc/server/mutators/mutator_nix.qc b/qcsrc/server/mutators/mutator_nix.qc index f0f9901222..4aa7e44d5b 100644 --- a/qcsrc/server/mutators/mutator_nix.qc +++ b/qcsrc/server/mutators/mutator_nix.qc @@ -107,11 +107,11 @@ void NIX_GiveCurrentWeapon() 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) diff --git a/qcsrc/server/t_quake3.qc b/qcsrc/server/t_quake3.qc index d55c8cbd63..d85faaf10b 100644 --- a/qcsrc/server/t_quake3.qc +++ b/qcsrc/server/t_quake3.qc @@ -22,8 +22,8 @@ void spawnfunc_ammo_lightning() { spawnfunc_item_cells(); } 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 diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index c3331533bc..9a868dec28 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -3,7 +3,7 @@ float autocvar_g_vehicles_crush_force; 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; @@ -881,8 +881,9 @@ void vehicles_damage(entity inflictor, entity attacker, float damage, float deat { 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; diff --git a/qcsrc/server/weapons/tracing.qc b/qcsrc/server/weapons/tracing.qc index cf6aa9c466..33cb37efec 100644 --- a/qcsrc/server/weapons/tracing.qc +++ b/qcsrc/server/weapons/tracing.qc @@ -256,7 +256,7 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f //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) diff --git a/vehicles.cfg b/vehicles.cfg index 0b76d4ddaf..6e196ad24a 100644 --- a/vehicles.cfg +++ b/vehicles.cfg @@ -18,7 +18,7 @@ set cl_vehicles_hudscale 0.5 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