From 4487f1a981f14f5a46a6636964562374de4bb0f9 Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 11 Mar 2018 04:03:07 +1000 Subject: [PATCH] Add a new nade type --- gfx/hud/default/nade_veil.tga | Bin 0 -> 65580 bytes gfx/hud/luma/nade_veil.tga | Bin 0 -> 65580 bytes mutators.cfg | 8 ++- qcsrc/common/mutators/mutator/nades/nades.inc | 9 +++ qcsrc/common/mutators/mutator/nades/nades.qc | 67 ++++++++++++++++-- qcsrc/common/mutators/mutator/nades/nades.qh | 4 ++ qcsrc/common/stats.qh | 2 + qcsrc/server/autocvars.qh | 2 + 8 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 gfx/hud/default/nade_veil.tga create mode 100644 gfx/hud/luma/nade_veil.tga diff --git a/gfx/hud/default/nade_veil.tga b/gfx/hud/default/nade_veil.tga new file mode 100644 index 0000000000000000000000000000000000000000..3134d1bd81e635b84096b31f312f80785e9ddd83 GIT binary patch literal 65580 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 J?(u=${vYDv=I#Ih literal 0 HcmV?d00001 diff --git a/gfx/hud/luma/nade_veil.tga b/gfx/hud/luma/nade_veil.tga new file mode 100644 index 0000000000000000000000000000000000000000..edb66b52ed5a082cf216b49d6567419f4bb6e06f GIT binary patch literal 65580 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 literal 0 HcmV?d00001 diff --git a/mutators.cfg b/mutators.cfg index ff5cf3223..32145dd04 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -198,7 +198,7 @@ set g_nades_nade_edgedamage 90 set g_nades_nade_radius 300 set g_nades_nade_force 650 set g_nades_nade_newton_style 0 "0 is absolute, 1 is relative (takes into account player speed), 2 is something in between" -set g_nades_nade_type 1 "Type of the off-hand grenade. 1:normal 2:napalm 3:ice 4:translocate 5:spawn 6:heal 7:pokenade 8:entrap" +set g_nades_nade_type 1 "Type of the off-hand grenade. 1:normal 2:napalm 3:ice 4:translocate 5:spawn 6:heal 7:pokenade 8:entrap 9:veil" seta cl_nade_timer 1 "show a visual timer for nades, 1 = only circle, 2 = circle with text" seta cl_nade_type 3 @@ -216,7 +216,7 @@ seta cl_pokenade_type "zombie" // set g_nades_bonus 0 "Enable bonus grenades" set g_nades_bonus_client_select 0 "Allow client side selection of bonus nade type" -set g_nades_bonus_type 2 "Type of the bonus grenade. 1:normal 2:napalm 3:ice 4:translocate 5:spawn 6:heal 7:pokenade 8:entrap" +set g_nades_bonus_type 2 "Type of the bonus grenade. 1:normal 2:napalm 3:ice 4:translocate 5:spawn 6:heal 7:pokenade 8:entrap 9:veil" set g_nades_bonus_onstrength 1 "Always give bonus grenades to players that have the strength powerup" set g_nades_bonus_max 3 "Maximum number of bonus grenades" set g_nades_bonus_only 0 "Disallow regular nades, only bonus nades can be used" @@ -274,6 +274,10 @@ set g_nades_entrap_speed 0.5 "Running speed while entrapped" set g_nades_entrap_time 10 "Life time of the orb" set g_nades_entrap_radius 500 +// Veil (9) +set g_nades_veil_time 8 "Life time of the orb" +set g_nades_veil_radius 300 + // ============ // camp check diff --git a/qcsrc/common/mutators/mutator/nades/nades.inc b/qcsrc/common/mutators/mutator/nades/nades.inc index bcdbe0cd9..0245cee64 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.inc +++ b/qcsrc/common/mutators/mutator/nades/nades.inc @@ -68,3 +68,12 @@ REGISTER_NADE(ENTRAP) { NADE_PROJECTILE(0, PROJECTILE_NADE_ENTRAP, EFFECT_NADE_TRAIL_YELLOW); NADE_PROJECTILE(1, PROJECTILE_NADE_ENTRAP_BURN, EFFECT_NADE_TRAIL_BURN_YELLOW); } + +REGISTER_NADE(VEIL) { + this.m_color = '0.65 0.85 0.65'; + this.m_name = _("Veil grenade"); + this.m_icon = "nade_veil"; + this.m_alpha = 0.45; + NADE_PROJECTILE(0, PROJECTILE_NADE_VEIL, EFFECT_NADE_TRAIL_NEUTRAL); + NADE_PROJECTILE(1, PROJECTILE_NADE_VEIL_BURN, EFFECT_NADE_TRAIL_BURN_NEUTRAL); +} diff --git a/qcsrc/common/mutators/mutator/nades/nades.qc b/qcsrc/common/mutators/mutator/nades/nades.qc index 24149ad7f..1ffce5dae 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qc +++ b/qcsrc/common/mutators/mutator/nades/nades.qc @@ -36,6 +36,7 @@ entity Nade_TrailEffect(int proj, int nade_team) REGISTER_MUTATOR(cl_nades, true); MUTATOR_HOOKFUNCTION(cl_nades, HUD_Draw_overlay) { + // TODO: make a common orb state! if (STAT(HEALING_ORB) > time) { M_ARGV(0, vector) = NADE_TYPE_HEAL.m_color; @@ -48,6 +49,12 @@ MUTATOR_HOOKFUNCTION(cl_nades, HUD_Draw_overlay) M_ARGV(1, float) = STAT(ENTRAP_ORB_ALPHA); return true; } + if (STAT(VEIL_ORB) > time) + { + M_ARGV(0, vector) = NADE_TYPE_VEIL.m_color; + M_ARGV(1, float) = STAT(VEIL_ORB_ALPHA); + return true; + } return false; } MUTATOR_HOOKFUNCTION(cl_nades, Ent_Projectile) @@ -96,6 +103,7 @@ MUTATOR_HOOKFUNCTION(cl_nades, EditProjectile) settouch(proj, func_null); proj.scale = 1.5; proj.avelocity = randomvec() * 720; + proj.alphamod = nade_type.m_alpha; if (nade_type == NADE_TYPE_TRANSLOCATE || nade_type == NADE_TYPE_SPAWN) proj.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; @@ -665,6 +673,35 @@ void nade_monster_boom(entity this) e.monster_skill = MONSTER_SKILL_INSANE; } +void nade_veil_touch(entity this, entity toucher) +{ + if ( IS_REAL_CLIENT(toucher) || IS_VEHICLE(toucher) || IS_MONSTER(toucher) ) + { + entity show_tint = (IS_VEHICLE(toucher)) ? toucher.owner : toucher; + + float tint_alpha = 0.75; + if(SAME_TEAM(toucher, this.realowner)) + { + tint_alpha = 0.45; + if(!STAT(VEIL_ORB, show_tint)) + { + toucher.nade_veil_prevalpha = toucher.alpha; + toucher.alpha = -1; + } + } + STAT(VEIL_ORB, show_tint) = time + 0.1; + STAT(VEIL_ORB_ALPHA, show_tint) = tint_alpha * (this.ltime - time) / this.orb_lifetime; + } +} + +void nade_veil_boom(entity this) +{ + entity orb = nades_spawn_orb(this.owner, this.realowner, this.origin, autocvar_g_nades_veil_time, autocvar_g_nades_veil_radius); + + settouch(orb, nade_veil_touch); + orb.colormod = NADE_TYPE_VEIL.m_color; +} + void nade_boom(entity this) { entity expef = NULL; @@ -705,6 +742,11 @@ void nade_boom(entity this) expef = EFFECT_SPAWN_YELLOW; break; + case NADE_TYPE_VEIL: + nade_blast = false; + expef = EFFECT_SPAWN_NEUTRAL; + break; + default: case NADE_TYPE_NORMAL: expef = EFFECT_NADE_EXPLODE(this.realowner.team); @@ -736,6 +778,7 @@ void nade_boom(entity this) case NADE_TYPE_HEAL: nade_heal_boom(this); break; case NADE_TYPE_MONSTER: nade_monster_boom(this); break; case NADE_TYPE_ENTRAP: nade_entrap_boom(this); break; + case NADE_TYPE_VEIL: nade_veil_boom(this); break; } IL_EACH(g_projectiles, it.classname == "grapplinghook" && it.aiment == this, @@ -1056,6 +1099,7 @@ void spawn_held_nade(entity player, entity nowner, float ntime, int ntype, strin n.projectiledeathtype = DEATH_NADE.m_id; n.weaponentity_fld = weaponentity; n.nade_lifetime = ntime; + n.alpha = Nades_from(STAT(NADE_BONUS_TYPE, n)).m_alpha; setmodel(fn, MDL_NADE_VIEW); setattachment(fn, player.(weaponentity), ""); @@ -1066,6 +1110,7 @@ void spawn_held_nade(entity player, entity nowner, float ntime, int ntype, strin setthink(fn, SUB_Remove); fn.nextthink = n.wait; fn.weaponentity_fld = weaponentity; + fn.alpha = Nades_from(STAT(NADE_BONUS_TYPE, n)).m_alpha; player.nade = n; player.fake_nade = fn; @@ -1271,6 +1316,15 @@ MUTATOR_HOOKFUNCTION(nades, PlayerPreThink) { STAT(NADE_BONUS, player) = STAT(NADE_BONUS_SCORE, player) = 0; } + + if(STAT(VEIL_ORB, player) && STAT(VEIL_ORB, player) <= time) + { + STAT(VEIL_ORB, player) = 0; + if(player.vehicle) + player.vehicle.alpha = player.vehicle.nade_veil_prevalpha; + else + player.alpha = player.nade_veil_prevalpha; + } } int n = 0; @@ -1331,6 +1385,12 @@ MUTATOR_HOOKFUNCTION(nades, MonsterMove) M_ARGV(1, float) *= autocvar_g_nades_entrap_speed; // run speed M_ARGV(2, float) *= autocvar_g_nades_entrap_speed; // walk speed } + + if (STAT(VEIL_ORB, mon) && STAT(VEIL_ORB, mon) <= time) + { + mon.alpha = mon.nade_veil_prevalpha; + STAT(VEIL_ORB, mon) = 0; + } } MUTATOR_HOOKFUNCTION(nades, PlayerSpawn) @@ -1404,10 +1464,7 @@ MUTATOR_HOOKFUNCTION(nades, Damage_Calculate) entity frag_target = M_ARGV(2, entity); float frag_deathtype = M_ARGV(3, float); - if(STAT(FROZEN, frag_target)) - if(autocvar_g_freezetag_revive_nade) - if(frag_attacker == frag_target) - if(frag_deathtype == DEATH_NADE.m_id) + if(autocvar_g_freezetag_revive_nade && STAT(FROZEN, frag_target) && frag_attacker == frag_target && frag_deathtype == DEATH_NADE.m_id) if(time - frag_inflictor.toss_time <= 0.1) { Unfreeze(frag_target); @@ -1469,6 +1526,8 @@ MUTATOR_HOOKFUNCTION(nades, SpectateCopy) STAT(HEALING_ORB_ALPHA, client) = STAT(HEALING_ORB_ALPHA, spectatee); STAT(ENTRAP_ORB, client) = STAT(ENTRAP_ORB, spectatee); STAT(ENTRAP_ORB_ALPHA, client) = STAT(ENTRAP_ORB_ALPHA, spectatee); + STAT(VEIL_ORB, client) = STAT(VEIL_ORB, spectatee); + STAT(VEIL_ORB_ALPHA, client) = STAT(VEIL_ORB_ALPHA, spectatee); } REPLICATE(cvar_cl_nade_type, int, "cl_nade_type"); diff --git a/qcsrc/common/mutators/mutator/nades/nades.qh b/qcsrc/common/mutators/mutator/nades/nades.qh index c5a1967e0..6f98840c1 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qh +++ b/qcsrc/common/mutators/mutator/nades/nades.qh @@ -18,6 +18,8 @@ const int PROJECTILE_NADE_MONSTER = 82; const int PROJECTILE_NADE_MONSTER_BURN = 83; const int PROJECTILE_NADE_ENTRAP = 84; const int PROJECTILE_NADE_ENTRAP_BURN = 85; +const int PROJECTILE_NADE_VEIL = 86; +const int PROJECTILE_NADE_VEIL_BURN = 87; REGISTRY(Nades, BITS(4)) #define Nades_from(i) _Nades_from(i, NADE_TYPE_Null) @@ -31,6 +33,7 @@ CLASS(Nade, Object) ATTRIB(Nade, m_color, vector, '0 0 0'); ATTRIB(Nade, m_name, string, _("Grenade")); ATTRIB(Nade, m_icon, string, "nade_normal"); + ATTRIB(Nade, m_alpha, float, 0); // 0 is actually the same as 1 ATTRIBARRAY(Nade, m_projectile, int, 2); ATTRIBARRAY(Nade, m_trail, entity, 2); METHOD(Nade, display, void(entity this, void(string name, string icon) returns)) { @@ -72,6 +75,7 @@ Nade Nade_FromProjectile(int proj) .string cvar_cl_pokenade_type; .float toss_time; .float nade_show_particles; +.float nade_veil_prevalpha; bool orb_send(entity this, entity to, int sf); diff --git a/qcsrc/common/stats.qh b/qcsrc/common/stats.qh index 648ef60e8..9b8f04041 100644 --- a/qcsrc/common/stats.qh +++ b/qcsrc/common/stats.qh @@ -120,6 +120,8 @@ REGISTER_STAT(ENTRAP_ORB, float) REGISTER_STAT(ENTRAP_ORB_ALPHA, float) REGISTER_STAT(ITEMSTIME, int, autocvar_sv_itemstime) REGISTER_STAT(KILL_TIME, float) +REGISTER_STAT(VEIL_ORB, float) +REGISTER_STAT(VEIL_ORB_ALPHA, float) #ifdef SVQC float autocvar_sv_showfps = 5; diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index a2f9ab49b..e9bacafa7 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -470,6 +470,8 @@ float autocvar_g_nades_entrap_strength = 0.01; float autocvar_g_nades_entrap_speed = 0.5; float autocvar_g_nades_entrap_radius = 500; float autocvar_g_nades_entrap_time = 10; +float autocvar_g_nades_veil_time = 8; +float autocvar_g_nades_veil_radius = 300; string autocvar_g_nades_pokenade_monster_type; float autocvar_g_nades_pokenade_monster_lifetime; bool autocvar_g_jump_grunt; -- 2.39.2