From: Lyberta Date: Fri, 16 Feb 2018 08:39:22 +0000 (+0300) Subject: Merge branch 'master' into Lyberta/StandaloneOverkillWeapons X-Git-Tag: xonotic-v0.8.5~2119^2~25 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3d19cbc8116b6bd8b5d46a042eb519a3ec77be8a;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into Lyberta/StandaloneOverkillWeapons --- 3d19cbc8116b6bd8b5d46a042eb519a3ec77be8a diff --cc qcsrc/client/view.qc index b022ce2d4,7dcbd83d2..0bde0788d --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@@ -1193,34 -1191,27 +1193,29 @@@ void HUD_Crosshair(entity this ring_scale = autocvar_crosshair_ring_size; - float weapon_clipload, weapon_clipsize; - weapon_clipload = STAT(WEAPON_CLIPLOAD); - weapon_clipsize = STAT(WEAPON_CLIPSIZE); - - float vortex_charge, vortex_chargepool; - vortex_charge = STAT(VORTEX_CHARGE); - vortex_chargepool = STAT(VORTEX_CHARGEPOOL); + entity wepent = viewmodels[0]; // TODO: unhardcode - float oknex_charge, oknex_chargepool; - oknex_charge = STAT(OVERKILL_NEX_CHARGE); - oknex_chargepool = STAT(OVERKILL_NEX_CHARGEPOOL); + int weapon_clipload = wepent.clip_load; + int weapon_clipsize = wepent.clip_size; - float arc_heat = STAT(ARC_HEAT); + float arc_heat = wepent.arc_heat_percent; + float vcharge = wepent.vortex_charge; + float vchargepool = wepent.vortex_chargepool_ammo; ++ float oknex_charge_ = wepent.oknex_charge; ++ float oknex_chargepool_ = wepent.oknex_chargepool_ammo; if(vortex_charge_movingavg == 0) // this should only happen if we have just loaded up the game - vortex_charge_movingavg = vortex_charge; - - entity wepent = viewmodels[0]; // TODO: unhardcode + vortex_charge_movingavg = vcharge; // handle the values - if (autocvar_crosshair_ring && wepent.activeweapon == WEP_VORTEX && vortex_charge && autocvar_crosshair_ring_vortex) // ring around crosshair representing velocity-dependent damage for the vortex + if (autocvar_crosshair_ring && wepent.activeweapon == WEP_VORTEX && vcharge && autocvar_crosshair_ring_vortex) // ring around crosshair representing velocity-dependent damage for the vortex { - if (vortex_chargepool || use_vortex_chargepool) { + if (vchargepool || use_vortex_chargepool) { use_vortex_chargepool = 1; - ring_inner_value = vortex_chargepool; + ring_inner_value = vchargepool; } else { - 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); + vortex_charge_movingavg = (1 - autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate) * vortex_charge_movingavg + autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate * vcharge; + ring_inner_value = bound(0, autocvar_crosshair_ring_vortex_currentcharge_scale * (vcharge - vortex_charge_movingavg), 1); } ring_inner_alpha = autocvar_crosshair_ring_vortex_inner_alpha; @@@ -1233,29 -1224,9 +1228,29 @@@ ring_rgb = wcross_color; ring_image = "gfx/crosshair_ring_nexgun.tga"; } + else if (autocvar_crosshair_ring && (wepent.activeweapon == WEP_OVERKILL_NEX) && oknex_charge && autocvar_crosshair_ring_vortex) + { + if (oknex_chargepool || use_vortex_chargepool) { + use_vortex_chargepool = 1; + ring_inner_value = oknex_chargepool; + } else { + vortex_charge_movingavg = (1 - autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate) * vortex_charge_movingavg + autocvar_crosshair_ring_vortex_currentcharge_movingavg_rate * oknex_charge; + ring_inner_value = bound(0, autocvar_crosshair_ring_vortex_currentcharge_scale * (oknex_charge - vortex_charge_movingavg), 1); + } + + 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 = oknex_charge; + ring_alpha = autocvar_crosshair_ring_vortex_alpha; + ring_rgb = wcross_color; + ring_image = "gfx/crosshair_ring_nexgun.tga"; + } else if (autocvar_crosshair_ring && wepent.activeweapon == WEP_MINE_LAYER && WEP_CVAR(minelayer, limit) && autocvar_crosshair_ring_minelayer) { - ring_value = bound(0, STAT(LAYED_MINES) / WEP_CVAR(minelayer, limit), 1); // if you later need to use the count of bullets in another place, then add a float for it. For now, no need to. + ring_value = bound(0, wepent.minelayer_mines / WEP_CVAR(minelayer, limit), 1); // if you later need to use the count of bullets in another place, then add a float for it. For now, no need to. ring_alpha = autocvar_crosshair_ring_minelayer_alpha; ring_rgb = wcross_color; ring_image = "gfx/crosshair_ring.tga"; diff --cc qcsrc/common/mutators/mutator/overkill/rpc.qc index 545a6b4f6,fc83febf1..7f80268d8 --- a/qcsrc/common/mutators/mutator/overkill/rpc.qc +++ b/qcsrc/common/mutators/mutator/overkill/rpc.qc @@@ -48,15 -48,15 +48,15 @@@ void W_RocketPropelledChainsaw_Think(en return; } - this.cnt = vlen(this.velocity); - this.wait = this.cnt * sys_frametime; - this.pos1 = normalize(this.velocity); + float myspeed = vlen(this.velocity); + float myspeed_accel = myspeed * sys_frametime; + vector mydir = normalize(this.velocity); - tracebox(this.origin, this.mins, this.maxs, this.origin + this.pos1 * (2 * this.wait), MOVE_NORMAL, this); + tracebox(this.origin, this.mins, this.maxs, this.origin + mydir * (2 * myspeed_accel), MOVE_NORMAL, this); if(IS_PLAYER(trace_ent)) - Damage (trace_ent, this, this.realowner, WEP_CVAR(rpc, damage2), this.projectiledeathtype, this.origin, normalize(this.origin - trace_ent.origin) * WEP_CVAR(rpc, force)); + Damage (trace_ent, this, this.realowner, WEP_CVAR_PRI(rpc, damage2), this.projectiledeathtype, this.origin, normalize(this.origin - other.origin) * WEP_CVAR_PRI(rpc, force)); - this.velocity = this.pos1 * (this.cnt + (WEP_CVAR_PRI(rpc, speedaccel) * sys_frametime)); - this.velocity = mydir * (myspeed + (WEP_CVAR(rpc, speedaccel) * sys_frametime)); ++ this.velocity = mydir * (myspeed + (WEP_CVAR_PRI(rpc, speedaccel) * sys_frametime)); UpdateCSQCProjectile(this); this.nextthink = time; diff --cc qcsrc/common/wepent.qh index dcd08d45f,dbd38fc10..d6db7745b --- a/qcsrc/common/wepent.qh +++ b/qcsrc/common/wepent.qh @@@ -4,8 -4,13 +4,15 @@@ REGISTER_NET_LINKED(ENT_CLIENT_WEPENT REGISTER_NET_TEMP(CLIENT_WEPENT) .float vortex_charge; + .float vortex_chargepool_ammo; +.float oknex_charge; ++.float oknex_chargepool_ammo; .int tuba_instrument; + .int minelayer_mines; + .float arc_heat_percent; + .int hagar_load; + .int clip_load; + .int clip_size; #ifdef SVQC diff --cc qcsrc/server/defs.qh index d52713c7c,577753a50..7a71ff1e7 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@@ -324,18 -324,15 +324,18 @@@ float client_cefc_accumulatortime .float weapon_load[Weapons_MAX]; .int ammo_none; // used by the reloading system, must always be 0 - .float clip_load = _STAT(WEAPON_CLIPLOAD); + .float clip_load; .float old_clip_load; - .float clip_size = _STAT(WEAPON_CLIPSIZE); + .float clip_size; - .float minelayer_mines = _STAT(LAYED_MINES); - .float vortex_charge = _STAT(VORTEX_CHARGE); + .int minelayer_mines; + .float vortex_charge; .float vortex_charge_rottime; - .float vortex_chargepool_ammo = _STAT(VORTEX_CHARGEPOOL); - .float oknex_charge = _STAT(OVERKILL_NEX_CHARGE); + .float vortex_chargepool_ammo; ++.float oknex_charge; +.float oknex_charge_rottime; - .float oknex_chargepool_ammo = _STAT(OVERKILL_NEX_CHARGEPOOL); - .float hagar_load = _STAT(HAGAR_LOAD); ++.float oknex_chargepool_ammo; + .int hagar_load; .int grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab