From 4260676b1d3e4e8b7236414efb4623a91ac418a1 Mon Sep 17 00:00:00 2001 From: LegendaryGuard Date: Sun, 9 Jul 2023 21:41:50 +0000 Subject: [PATCH] New features: Ammo and Darkness nades. Improve nades. Fix turrets target and when Tesla turret owner's friend attacks against owner --- effectinfo.txt | 560 ++++++++++++++++++ gfx/hud/default/nade_ammo.tga | Bin 0 -> 65580 bytes gfx/hud/default/nade_dark.tga | Bin 0 -> 65580 bytes gfx/hud/luma/nade_ammo.tga | Bin 0 -> 65580 bytes gfx/hud/luma/nade_dark.tga | Bin 0 -> 65580 bytes mutators.cfg | 51 +- qcsrc/common/effects/all.inc | 4 + qcsrc/common/effects/effectinfo.inc | 37 ++ qcsrc/common/effects/effectinfo_nades.inc | 9 + .../common/mutators/mutator/nades/effects.inc | 10 + qcsrc/common/mutators/mutator/nades/nades.inc | 20 + qcsrc/common/mutators/mutator/nades/nades.qc | 450 +++++++++++--- qcsrc/common/mutators/mutator/nades/nades.qh | 30 +- qcsrc/common/stats.qh | 1 + qcsrc/common/turrets/sv_turrets.qc | 3 +- qcsrc/common/turrets/turret/tesla_weapon.qc | 3 +- sound/misc/blind.ogg | Bin 0 -> 9539 bytes 17 files changed, 1066 insertions(+), 112 deletions(-) create mode 100644 gfx/hud/default/nade_ammo.tga create mode 100644 gfx/hud/default/nade_dark.tga create mode 100644 gfx/hud/luma/nade_ammo.tga create mode 100644 gfx/hud/luma/nade_dark.tga create mode 100644 sound/misc/blind.ogg diff --git a/effectinfo.txt b/effectinfo.txt index 81b71a579..cf05552d7 100644 --- a/effectinfo.txt +++ b/effectinfo.txt @@ -2506,6 +2506,29 @@ effect poisonfield size 1 1 tex 0 8 velocityjitter 5 5 5 +effect darkfield + type smoke + airfriction 1 + alpha 256 256 50 + bounce 1.500000 + color 0x600089 0x000000 + count 10 + gravity -0.010000 + originjitter 333 333 0 + sizeincrease 10 + size 1 1 + tex 0 8 + velocityjitter 5 5 30 +effect darkfield + type smoke + alpha 256 256 50 + color 0x600089 0x000000 + count 5 + gravity -0.001000 + originjitter 333 333 0 + sizeincrease 10 + size 1 1 + tex 48 55 effect icefield type smoke airfriction 1 @@ -6825,6 +6848,93 @@ effect nade_neutral trailspacing 16 underwater velocityjitter 16 16 16 +effect nade_green + type smoke + alpha 100 100 250 + color 0x40ff9b 0x40ff9b + sizeincrease -1 + size 3 3 + tex 65 65 + trailspacing 1 +effect nade_green + type smoke + alpha 30 30 150 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -10 + size 15 25 + tex 65 65 + trailspacing 8 +effect nade_green + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0x40ff9b 0x40ff9b + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 +effect nade_brown + type smoke + alpha 100 100 250 + color 0xa85400 0xa85400 + sizeincrease -1 + size 3 3 + tex 65 65 + trailspacing 1 +effect nade_brown + type smoke + alpha 30 30 150 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -10 + size 15 25 + tex 65 65 + trailspacing 8 +effect nade_brown + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0xa85400 0xa85400 + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 +effect nade_purple + type smoke + alpha 100 100 250 + color 0x540054 0x540054 + sizeincrease -1 + size 3 3 + tex 65 65 + trailspacing 1 +effect nade_purple + type smoke + alpha 30 30 150 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -10 + size 15 25 + tex 65 65 + trailspacing 8 +effect nade_purple + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0x540054 0x540054 + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 effect nade_red_burn type smoke alpha 100 100 250 @@ -7025,6 +7135,126 @@ effect nade_neutral_burn tex 71 73 trailspacing 16 velocityjitter 10 10 10 +effect nade_green_burn + type smoke + alpha 100 100 250 + color 0x40ff9b 0xff3c00 + sizeincrease -1 + size 5 5 + tex 65 65 + trailspacing 1 +effect nade_green_burn + type smoke + alpha 200 200 1000 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -30 + size 45 25 + tex 65 65 + trailspacing 64 +effect nade_green_burn + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0x40ff9b 0xff3c00 + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 +effect nade_green_burn + type smoke + alpha 300 900 1500 + color 0x40ff9b 0xff3c00 + originjitter 2 2 2 + rotate -180 180 20 -20 + sizeincrease -40 + size 15 25 + tex 71 73 + trailspacing 16 + velocityjitter 10 10 10 +effect nade_brown_burn + type smoke + alpha 100 100 250 + color 0xa85400 0xff3c00 + sizeincrease -1 + size 5 5 + tex 65 65 + trailspacing 1 +effect nade_brown_burn + type smoke + alpha 200 200 1000 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -30 + size 45 25 + tex 65 65 + trailspacing 64 +effect nade_brown_burn + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0xa85400 0xff3c00 + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 +effect nade_brown_burn + type smoke + alpha 300 900 1500 + color 0xa85400 0xff3c00 + originjitter 2 2 2 + rotate -180 180 20 -20 + sizeincrease -40 + size 15 25 + tex 71 73 + trailspacing 16 + velocityjitter 10 10 10 +effect nade_purple_burn + type smoke + alpha 100 100 250 + color 0x540054 0xff3c00 + sizeincrease -1 + size 5 5 + tex 65 65 + trailspacing 1 +effect nade_purple_burn + type smoke + alpha 200 200 1000 + color 0xff0000 0xffa2a2 + notunderwater + sizeincrease -30 + size 45 25 + tex 65 65 + trailspacing 64 +effect nade_purple_burn + type bubble + alpha 256 256 256 + bounce 1.500000 + color 0x540054 0xff3c00 + gravity -0.125000 + liquidfriction 4 + size 1 1 + tex 62 62 + trailspacing 16 + underwater + velocityjitter 16 16 16 +effect nade_purple_burn + type smoke + alpha 300 900 1500 + color 0x540054 0xff3c00 + originjitter 2 2 2 + rotate -180 180 20 -20 + sizeincrease -40 + size 15 25 + tex 71 73 + trailspacing 16 + velocityjitter 10 10 10 effect nade_blue_explode type decal alpha 256 256 0 @@ -7575,6 +7805,336 @@ effect nade_neutral_explode size 20 40 tex 71 73 velocityjitter 324 324 324 +effect nade_green_explode + type decal + alpha 256 256 0 + countabsolute 1 + lightcolor 100 20 20 + lightradiusfade 1500 + lightradius 300 + originjitter 26 26 26 + size 88 88 + tex 8 16 +effect nade_green_explode + type smoke + alpha 80 80 650 + color 0xff0000 0xffa2a2 + countabsolute 1 + sizeincrease 1800 + size 32 32 + tex 33 33 + velocitymultiplier 44 +effect nade_green_explode + type smoke + airfriction 30 + alpha 400 656 2000 + color 0x40ff9b 0xa647d3 + count 16 + notunderwater + originjitter 50 50 50 + rotate -180 180 -9 9 + sizeincrease 555 + size 20 24 + tex 48 55 + velocityjitter 320 320 320 +effect nade_green_explode + type spark + airfriction -9 + alpha 1500 3000 13000 + color 0x40ff9b 0xff4200 + count 8 + sizeincrease 40 + size 60 90 + stretchfactor 80 + tex 48 55 + velocityjitter 30 30 30 +effect nade_green_explode + type smoke + airfriction 0.040000 + alpha 128 328 390 + blend alpha + color 0x222222 0x000000 + count 32 + gravity 0.400000 + originjitter 50 50 10 + rotate -180 180 2 -2 + sizeincrease 50 + size 60 30 + tex 0 7 + velocityjitter 200 200 200 + velocityoffset 0 0 180 +effect nade_green_explode + type bubble + alpha 128 256 64 + bounce 1.500000 + color 0x404040 0x808080 + count 32 + gravity -0.125000 + liquidfriction 0.250000 + originjitter 16 16 16 + size 3 6 + tex 62 62 + underwater + velocityjitter 196 196 196 +effect nade_green_explode + type spark + airfriction 1 + alpha 644 956 484 + bounce 1.600000 + color 0xff0000 0xffa2a2 + count 8 + gravity 1 + liquidfriction 0.800000 + notunderwater + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_green_explode + type spark + airfriction 0.700000 + alpha 644 956 684 + color 0xff0000 0xffa2a2 + count 16 + gravity 0.500000 + liquidfriction 0.800000 + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_green_explode + type smoke + alpha 644 956 2500 + color 0xff0000 0xffa2a2 + count 8 + notunderwater + originjitter 64 64 64 + rotate -180 180 -100 100 + size 20 40 + tex 71 73 + velocityjitter 324 324 324 +effect nade_brown_explode + type decal + alpha 256 256 0 + countabsolute 1 + lightcolor 100 20 20 + lightradiusfade 1500 + lightradius 300 + originjitter 26 26 26 + size 88 88 + tex 8 16 +effect nade_brown_explode + type smoke + alpha 80 80 650 + color 0xff0000 0xffa2a2 + countabsolute 1 + sizeincrease 1800 + size 32 32 + tex 33 33 + velocitymultiplier 44 +effect nade_brown_explode + type smoke + airfriction 30 + alpha 400 656 2000 + color 0xa85400 0xa647d3 + count 16 + notunderwater + originjitter 50 50 50 + rotate -180 180 -9 9 + sizeincrease 555 + size 20 24 + tex 48 55 + velocityjitter 320 320 320 +effect nade_brown_explode + type spark + airfriction -9 + alpha 1500 3000 13000 + color 0xa85400 0xff4200 + count 8 + sizeincrease 40 + size 60 90 + stretchfactor 80 + tex 48 55 + velocityjitter 30 30 30 +effect nade_brown_explode + type smoke + airfriction 0.040000 + alpha 128 328 390 + blend alpha + color 0x222222 0x000000 + count 32 + gravity 0.400000 + originjitter 50 50 10 + rotate -180 180 2 -2 + sizeincrease 50 + size 60 30 + tex 0 7 + velocityjitter 200 200 200 + velocityoffset 0 0 180 +effect nade_brown_explode + type bubble + alpha 128 256 64 + bounce 1.500000 + color 0x404040 0x808080 + count 32 + gravity -0.125000 + liquidfriction 0.250000 + originjitter 16 16 16 + size 3 6 + tex 62 62 + underwater + velocityjitter 196 196 196 +effect nade_brown_explode + type spark + airfriction 1 + alpha 644 956 484 + bounce 1.600000 + color 0xff0000 0xffa2a2 + count 8 + gravity 1 + liquidfriction 0.800000 + notunderwater + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_brown_explode + type spark + airfriction 0.700000 + alpha 644 956 684 + color 0xff0000 0xffa2a2 + count 16 + gravity 0.500000 + liquidfriction 0.800000 + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_brown_explode + type smoke + alpha 644 956 2500 + color 0xff0000 0xffa2a2 + count 8 + notunderwater + originjitter 64 64 64 + rotate -180 180 -100 100 + size 20 40 + tex 71 73 + velocityjitter 324 324 324 +effect nade_purple_explode + type decal + alpha 256 256 0 + countabsolute 1 + lightcolor 100 20 20 + lightradiusfade 1500 + lightradius 300 + originjitter 26 26 26 + size 88 88 + tex 8 16 +effect nade_purple_explode + type smoke + alpha 80 80 650 + color 0xff0000 0xffa2a2 + countabsolute 1 + sizeincrease 1800 + size 32 32 + tex 33 33 + velocitymultiplier 44 +effect nade_purple_explode + type smoke + airfriction 30 + alpha 400 656 2000 + color 0x540054 0xa647d3 + count 16 + notunderwater + originjitter 50 50 50 + rotate -180 180 -9 9 + sizeincrease 555 + size 20 24 + tex 48 55 + velocityjitter 320 320 320 +effect nade_purple_explode + type spark + airfriction -9 + alpha 1500 3000 13000 + color 0x540054 0xff4200 + count 8 + sizeincrease 40 + size 60 90 + stretchfactor 80 + tex 48 55 + velocityjitter 30 30 30 +effect nade_purple_explode + type smoke + airfriction 0.040000 + alpha 128 328 390 + blend alpha + color 0x222222 0x000000 + count 32 + gravity 0.400000 + originjitter 50 50 10 + rotate -180 180 2 -2 + sizeincrease 50 + size 60 30 + tex 0 7 + velocityjitter 200 200 200 + velocityoffset 0 0 180 +effect nade_purple_explode + type bubble + alpha 128 256 64 + bounce 1.500000 + color 0x404040 0x808080 + count 32 + gravity -0.125000 + liquidfriction 0.250000 + originjitter 16 16 16 + size 3 6 + tex 62 62 + underwater + velocityjitter 196 196 196 +effect nade_purple_explode + type spark + airfriction 1 + alpha 644 956 484 + bounce 1.600000 + color 0xff0000 0xffa2a2 + count 8 + gravity 1 + liquidfriction 0.800000 + notunderwater + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_purple_explode + type spark + airfriction 0.700000 + alpha 644 956 684 + color 0xff0000 0xffa2a2 + count 16 + gravity 0.500000 + liquidfriction 0.800000 + originjitter 16 16 16 + size 1 2 + tex 40 40 + velocityjitter 424 424 624 + velocityoffset 0 0 80 +effect nade_purple_explode + type smoke + alpha 644 956 2500 + color 0xff0000 0xffa2a2 + count 8 + notunderwater + originjitter 64 64 64 + rotate -180 180 -100 100 + size 20 40 + tex 71 73 + velocityjitter 324 324 324 effect shockwave_attack type spark airfriction 1 diff --git a/gfx/hud/default/nade_ammo.tga b/gfx/hud/default/nade_ammo.tga new file mode 100644 index 0000000000000000000000000000000000000000..31cf048fd545702177694be723446a3bd23e0f52 GIT binary patch literal 65580 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 Y-#os{F#boJLdtGCWFvvKKNde&Ocx}W>| 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 literal 0 HcmV?d00001 diff --git a/gfx/hud/luma/nade_ammo.tga b/gfx/hud/luma/nade_ammo.tga new file mode 100644 index 0000000000000000000000000000000000000000..3f0a8f0f6aaa1bdc5af429a06ffa1e2f07b774ce GIT binary patch literal 65580 zcmeI52Y8$1)%PDQ$96UlvWH_!wk)qCKn7W4@4ZPJk2tX%J8?YYz3s5~Do_e#Q#O>n z!$_c|(7r8g;e|qhvce8zIp6PpOLCMDTKawsZ6Us{bIDq_r00LmxzD~W%Weh#>a03z zPxSi(Wf0q?L^8o37hpGO@gRc#r>3?td zOxBv-YIu&%bx(%`yI9?eyIS3gx?0CT$CmkTb>C0ChS%x!dY|6kaU<*GK{=6D z7y3N$M8qPO6|q!$!eKeRcFX2E@I8M7pnMNM@xb+zoOPH2<|~muu6y`wuK!Xn z&j9aS@YyJ=z-^N->}DNX(%tG+c8t|eRDLXUoHd|A)WaGis)VWn#QlNL03Pel>&)xR zjw;eB1Rr!nCq%%H(g}V(kiB5*63Pevnk(|-StWpdN1N4Ql3(V-XMz0!a8E@Kuk+*H zwGhlpz`Pu}1*buky{(w)zF-W#jRUOMra@M0bCea=GT4f5j<$TQF_y2z&8^!?;5MPf zV_1q9d_6$(h)c>`ZJ4A>D6I z@;}e(5}JIxFJA9womkd$TXBuimb)1Pe(bNj(_J=jyau-8Zrb31{Ow?m4vknLzYXk{vBz_5C2QSEj)L#cUiiR+Zi%*H>IYd-HT|uD=!D+rgJaMK9ShhOayw%SMDo4G1KO|9 z1Kp15f$zr0e%TKjsr^2H{Zg>c!H(aAO~>Bex4aj!*UuU(+?%3>ht1m<@9;GyITFA- zq4@+bAMQ$Q9_31E8SPAI84HaE*HgHi08I=_X_?d^rDbx5lt!p|a#(W9Bp0OTpi_A5 zcy7n){aOb;7{R(Hvi?v$Cz;Rl@wu^lehlAZ5c^I)t6xQLt4CQ6bQ8KDkNtps%FhG* z4(wLNDExlnce@flzE}CLkL+i&f6hYgg*`T2C!_DN>(IG_kh$pk!N|PFimQ*eymiTr zxY`r!-ntR?_`1lzJCbS_I1_6Z`l)6yw~GSz7x3JC zUNbN7`dJQN%?zyrO@dCbduztQ=M$ZR-R~iDo(b= zZa&2xS2o4rEt~0xFPmrgl`VvpI((a#Lo1VBq!=Xp(>qbFPqQ$v-q58w%D?XmS^)AK6|+3t{j4G7|%Ww zV@1~vvIbx$_QEddjNd3dpuHey6NZfo^1$D}59BR4CMp>Sc3AWh68IIV3`Hr}PrH;6bD;?gA=?-r}mNUK} z#}!|Y=kyh9fHpaOn+l!2!eXezi9%Uyngx#qEj zQ|+<&^Btbt6%J2!hSQyu3l+HBStTw{R)s4zs|Kof#jb6HT3p_BtuAlQY0&A=nE^U0 z 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 Nn#IY^>1}S?{|8o9Ui<(6 literal 0 HcmV?d00001 diff --git a/mutators.cfg b/mutators.cfg index 24dc379dd..c6ea8e9c8 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -189,7 +189,7 @@ set g_random_gravity_negative 1000 "negative gravity multiplier" set g_nades 0 "enable off-hand grenades - use the 'dropweapon' (second press throws) or '+hook' (release throws) binds" set g_nades_spread 0.04 "random spread offset of throw direction" set g_nades_throw_offset "0 -25 0" "nade throwing offset" -set g_nades_spawn 1 "give nades right away when player spawns rather than delaying entire refire" +set g_nades_onspawn 1 "give nades right away when player spawns rather than delaying entire refire" set g_nades_client_select 0 "allow client side selection of nade type" set g_nades_pickup 0 "allow picking up thrown nades (not your own)" set g_nades_pickup_time 2 "time until picked up nade explodes" @@ -204,11 +204,11 @@ 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 "nade velocity: 0 is absolute, 1 is relative (takes into account player velocity), 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 9:veil" +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, 10:ammo, 11:darkness" seta cl_nade_timer 1 "show a visual timer for nades, 1 = only circle, 2 = circle with text" -seta cl_nade_type 3 -seta cl_pokenade_type "zombie" +seta cl_nade_type 3 "selected type of the off-hand grenade. 1:normal 2:napalm 3:ice 4:translocate 5:spawn 6:heal 7:pokenade 8:entrap 9:veil 10:ammo 11:darkness" +seta cl_pokenade_type "zombie" "monster to spawn" // ------------ // Nade bonus @@ -222,7 +222,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 9:veil" +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 10:ammo 11:darkness" 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" @@ -238,52 +238,77 @@ set g_nades_bonus_score_time -1 "Bonus nade score given per second (negative t set g_nades_bonus_score_time_flagcarrier 2 "Bonus nade score given per second as flag carrier (negative to have the score decay)" // Napalm (2) +set g_nades_napalm 0 "Napalm nade: spreads fire balls around the fountain and burns for a while" set g_nades_napalm_blast 1 "Whether the napalm grenades also give damage with the usual grenade explosion" set g_nades_napalm_burntime 0.5 "Time that the fire from napalm will stick to the player" set g_nades_napalm_selfdamage 1 "Whether the player that tossed the nade can be harmed by its fire" // Napalm fireballs set g_nades_napalm_ball_count 6 "Number of fireballs emitted during the explosion" set g_nades_napalm_ball_spread 500 "Maximum force which the fireballs will have on explosion" -set g_nades_napalm_ball_damageforcescale 4 -set g_nades_napalm_ball_damage 40 -set g_nades_napalm_ball_lifetime 7 +set g_nades_napalm_ball_damageforcescale 4 "How affected fireballs are by damage" +set g_nades_napalm_ball_damage 40 "Damage caused by the fireball" +set g_nades_napalm_ball_lifetime 7 "How long the fireball will last" set g_nades_napalm_ball_radius 100 "Distance from the fireball within which you may get burned" // Napalm Fire fountain set g_nades_napalm_fountain_lifetime 3 "Time period during which extra fire mines are ejected" set g_nades_napalm_fountain_delay 0.5 "Delay between emissions by the fountain" set g_nades_napalm_fountain_damage 50 "Damage caused by the center of the fountain" set g_nades_napalm_fountain_edgedamage 20 "Damage caused by the edge of the fountain" -set g_nades_napalm_fountain_radius 130 +set g_nades_napalm_fountain_radius 130 "Distance from the fountain" // Ice (3) +set g_nades_ice 1 "Ice nade: freezes and reduces health" set g_nades_ice_freeze_time 3 "How long the ice field will last" set g_nades_ice_health 0 "How much health the player will have after being unfrozen" set g_nades_ice_explode 0 "Whether the ice nade should explode again once the ice field dissipated" -set g_nades_ice_teamcheck 0 "Don't freeze teammates" +set g_nades_ice_teamcheck 2 "0: friendly fire, 1: nade owner isn't affected, 2: don't freeze teammates" + +// Translocate (4) +set g_nades_translocate 1 "Translocate nade: teleports into explosion nade location" +set g_nades_translocate_destroy_damage 25 "Damage caused when translocate nade is destroyed by some attacker" // Spawn (5) +set g_nades_spawn 1 "Spawn nade: respawns into nade explosion location after being fragged" set g_nades_spawn_count 3 "Number of times player will spawn at their spawn nade explosion location" +set g_nades_spawn_health_respawn 0 "How much health the player will have when being respawned, if 0, normal health respawn" +set g_nades_spawn_destroy_damage 25 "Damage caused when spawn nade is destroyed by some attacker" // Heal (6) +set g_nades_heal 1 "Heal nade: spawns a orb to recover health inside, enemies take the reverse effect when being inside orb" set g_nades_heal_time 5 "How long the healing field will last" set g_nades_heal_rate 30 "Health given per second" set g_nades_heal_friend 1 "Multiplier of health given to team mates" set g_nades_heal_foe -2 "Multiplier of health given to enemies" // Pokenade (7) +set g_nades_pokenade 0 "Pokenade: spawns a monster into the explosion nade location" set g_nades_pokenade_monster_lifetime 150 "How long pokenade monster will survive" set g_nades_pokenade_monster_type "zombie" "Monster to spawn" // Entrap (8) +set g_nades_entrap 0 "Entrap nade: spawns a orb to slow down movements inside" set g_nades_entrap_strength 0.01 "Strength of the orb's movement slowing powers" 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 +set g_nades_entrap_radius 500 "Distance from the entrap orb" // Veil (9) +set g_nades_veil 0 "Veil nade: spawns a orb to turn invisible inside" set g_nades_veil_time 8 "Life time of the orb" -set g_nades_veil_radius 200 - +set g_nades_veil_radius 200 "Distance from the veil orb" + +// Ammo (10) +set g_nades_ammo 0 "Ammo nade: spawns a orb to recover ammo inside, enemies take the reverse effect when being inside orb" +set g_nades_ammo_time 4 "Life time of the orb" +set g_nades_ammo_rate 30 "Ammo given per second" +set g_nades_ammo_friend 1 "Multiplier of ammo given to team mates" +set g_nades_ammo_foe -2 "Multiplier of ammo given to enemies" + +// Darkness (11) +set g_nades_dark 0 "Darkness nade: blinds enemies" +set g_nades_dark_time 4 "How long the dark field will last" +set g_nades_dark_explode 0 "Whether the darkness nade should explode again once the dark field dissipated" +set g_nades_dark_teamcheck 2 "0: friendly fire, 1: nade owner isn't affected, 2: don't blind teammates" // ============ // camp check diff --git a/qcsrc/common/effects/all.inc b/qcsrc/common/effects/all.inc index d7654f06a..1bd7ad9ed 100644 --- a/qcsrc/common/effects/all.inc +++ b/qcsrc/common/effects/all.inc @@ -161,6 +161,9 @@ EFFECT(0, SPAWN_BLUE, "spawn_event_blue") EFFECT(0, SPAWN_YELLOW, "spawn_event_yellow") EFFECT(0, SPAWN_PINK, "spawn_event_pink") EFFECT(0, SPAWN_NEUTRAL, "spawn_event_neutral") +EFFECT(0, SPAWN_GREEN, "spawn_event_green") +EFFECT(0, SPAWN_BROWN, "spawn_event_brown") +EFFECT(0, SPAWN_PURPLE, "spawn_event_purple") entity EFFECT_SPAWN(int teamid) { switch (teamid) { @@ -172,6 +175,7 @@ entity EFFECT_SPAWN(int teamid) } } +EFFECT(0, DARKFIELD, "darkfield") EFFECT(0, ICEORGLASS, "iceorglass") EFFECT(0, ICEFIELD, "icefield") EFFECT(0, FIREFIELD, "firefield") diff --git a/qcsrc/common/effects/effectinfo.inc b/qcsrc/common/effects/effectinfo.inc index e6909e4cd..7e8a06365 100644 --- a/qcsrc/common/effects/effectinfo.inc +++ b/qcsrc/common/effects/effectinfo.inc @@ -4026,6 +4026,43 @@ SUB(poisonfield) { MY(velocityjitter) = '5.0 5.0 5.0'; } +// cover small area in dark fog, spawn it once per second +DEF(darkfield); +SUB(darkfield) { + MY(airfriction) = 1; + MY(alpha_min) = 256; + MY(alpha_max) = 256; + MY(alpha_fade) = 50; + MY(bounce) = 1.500000; + MY(color_min) = "0x600089"; + MY(color_max) = "0x000000"; + MY(count) = 10; + MY(gravity) = -0.010000; + MY(originjitter) = '333.0 333.0 0.0'; + MY(sizeincrease) = 10; + MY(size_min) = 1; + MY(size_max) = 1; + MY(tex_max) = 8; + MY(type) = "smoke"; + MY(velocityjitter) = '5.0 5.0 30.0'; +} +SUB(darkfield) { + MY(alpha_min) = 256; + MY(alpha_max) = 256; + MY(alpha_fade) = 50; + MY(color_min) = "0x600089"; + MY(color_max) = "0x000000"; + MY(count) = 5; + MY(gravity) = -0.001000; + MY(originjitter) = '333.0 333.0 0.0'; + MY(sizeincrease) = 10; + MY(size_min) = 1; + MY(size_max) = 1; + MY(tex_min) = 48; + MY(tex_max) = 55; + MY(type) = "smoke"; +} + // cover small area in icy mist, spawn it once per second DEF(icefield); SUB(icefield) { diff --git a/qcsrc/common/effects/effectinfo_nades.inc b/qcsrc/common/effects/effectinfo_nades.inc index 9c655579a..b8af3fbf2 100644 --- a/qcsrc/common/effects/effectinfo_nades.inc +++ b/qcsrc/common/effects/effectinfo_nades.inc @@ -54,6 +54,9 @@ nade(red, "0xff0000", "0xff3c00", "0xff0000", "0xffa2a2") nade(yellow, "0xFFFF0F", "0xFFFF0F", "0xFFFF0F", "0xFFFF0F") nade(pink, "0xFF0FFF", "0xFF0FFF", "0xFF0FFF", "0xFF0FFF") nade(neutral, "0xFFFFFF", "0xFFFFFF", "0xFFFFFF", "0xFFFFFF") +nade(green, "0x40ff9b", "0x40ff9b", "0x40ff9b", "0xffa2a2") +nade(brown, "0xa85400", "0xa85400", "0xa85400", "0xffa2a2") +nade(purple, "0x540054", "0x540054", "0x540054", "0xffa2a2") #undef nade #define nade_burn(name, colormin1, colormax1, colormin2, colormax2) \ @@ -132,6 +135,9 @@ nade_burn(blue, "0x006cff", "0x0600ff", "0x0600ff", "0x9794ff") nade_burn(yellow, "0xFFFF0F", "0xFFFF0F", "0xFFFF0F", "0xFFFF0F") nade_burn(pink, "0xFF0FFF", "0xFF0FFF", "0xFF0FFF", "0xFF0FFF") nade_burn(neutral, "0xFFFFFF", "0xFFFFFF", "0xFFFFFF", "0xFFFFFF") +nade_burn(green, "0x40ff9b", "0x40ff9b", "0x40ff9b", "0xffa2a2") +nade_burn(brown, "0xa85400", "0xa85400", "0xa85400", "0xffa2a2") +nade_burn(purple, "0x540054", "0x540054", "0x540054", "0xffa2a2") #undef nade_burn #define nade_explode(name, colorlight, colormin1, colormax1, colormin2, colormax2, colormin3, colormax3) \ @@ -313,4 +319,7 @@ nade_explode(red, '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xff0000", " nade_explode(yellow, '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFFFF0F", "0xFFFF0F", "0xff0000", "0xffa2a2") nade_explode(pink, '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFF0FFF", "0xFF0FFF", "0xff0000", "0xffa2a2") nade_explode(neutral, '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFFFFFF", "0xFFFFFF", "0xff0000", "0xffa2a2") +nade_explode(green, '100.0 20.0 20.0', "0x40ff9b", "0xffa2a2", "0x40ff9b", "0x40ff9b", "0xff0000", "0xffa2a2") +nade_explode(brown, '100.0 20.0 20.0', "0xa85400", "0xffa2a2", "0xa85400", "0xa85400", "0xff0000", "0xffa2a2") +nade_explode(purple, '100.0 20.0 20.0', "0x540054", "0xffa2a2", "0x540054", "0x540054", "0xff0000", "0xffa2a2") #undef nade_explode diff --git a/qcsrc/common/mutators/mutator/nades/effects.inc b/qcsrc/common/mutators/mutator/nades/effects.inc index 83cf74247..343acf991 100644 --- a/qcsrc/common/mutators/mutator/nades/effects.inc +++ b/qcsrc/common/mutators/mutator/nades/effects.inc @@ -5,6 +5,10 @@ EFFECT(0, NADE_EXPLODE_BLUE, "nade_blue_explode") EFFECT(0, NADE_EXPLODE_YELLOW, "nade_yellow_explode") EFFECT(0, NADE_EXPLODE_PINK, "nade_pink_explode") EFFECT(0, NADE_EXPLODE_NEUTRAL, "nade_neutral_explode") +EFFECT(0, NADE_EXPLODE_GREEN, "nade_green_explode") +EFFECT(0, NADE_EXPLODE_BROWN, "nade_brown_explode") +EFFECT(0, NADE_EXPLODE_PURPLE, "nade_purple_explode") + entity EFFECT_NADE_EXPLODE(int teamid) { switch (teamid) { @@ -21,6 +25,9 @@ EFFECT(1, NADE_TRAIL_BLUE, "nade_blue") EFFECT(1, NADE_TRAIL_YELLOW, "nade_yellow") EFFECT(1, NADE_TRAIL_PINK, "nade_pink") EFFECT(1, NADE_TRAIL_NEUTRAL, "nade_neutral") +EFFECT(1, NADE_TRAIL_GREEN, "nade_green") +EFFECT(1, NADE_TRAIL_BROWN, "nade_brown") +EFFECT(1, NADE_TRAIL_PURPLE, "nade_purple") entity EFFECT_NADE_TRAIL(int teamid) { switch (teamid) { @@ -37,6 +44,9 @@ EFFECT(1, NADE_TRAIL_BURN_BLUE, "nade_blue_burn") EFFECT(1, NADE_TRAIL_BURN_YELLOW, "nade_yellow_burn") EFFECT(1, NADE_TRAIL_BURN_PINK, "nade_pink_burn") EFFECT(1, NADE_TRAIL_BURN_NEUTRAL, "nade_neutral_burn") +EFFECT(1, NADE_TRAIL_BURN_GREEN, "nade_green_burn") +EFFECT(1, NADE_TRAIL_BURN_BROWN, "nade_brown_burn") +EFFECT(1, NADE_TRAIL_BURN_PURPLE, "nade_purple_burn") entity EFFECT_NADE_TRAIL_BURN(int teamid) { switch (teamid) { diff --git a/qcsrc/common/mutators/mutator/nades/nades.inc b/qcsrc/common/mutators/mutator/nades/nades.inc index 3270e719f..c667b0043 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.inc +++ b/qcsrc/common/mutators/mutator/nades/nades.inc @@ -93,3 +93,23 @@ REGISTER_NADE(VEIL) { NADE_PROJECTILE(1, PROJECTILE_NADE_VEIL_BURN, EFFECT_NADE_TRAIL_BURN_NEUTRAL); #endif } + +REGISTER_NADE(AMMO) { + this.m_color = '0.66 0.33 0'; + this.m_name = _("Ammo grenade"); + this.m_icon = "nade_ammo"; +#ifdef GAMEQC + NADE_PROJECTILE(0, PROJECTILE_NADE_AMMO, EFFECT_NADE_TRAIL_BROWN); + NADE_PROJECTILE(1, PROJECTILE_NADE_AMMO_BURN, EFFECT_NADE_TRAIL_BURN_BROWN); +#endif +} + +REGISTER_NADE(DARK) { + this.m_color = '0.23 0 0.23'; + this.m_name = _("Dark grenade"); + this.m_icon = "nade_dark"; +#ifdef GAMEQC + NADE_PROJECTILE(0, PROJECTILE_NADE_DARK, EFFECT_NADE_TRAIL_PURPLE); + NADE_PROJECTILE(1, PROJECTILE_NADE_DARK_BURN, EFFECT_NADE_TRAIL_BURN_PURPLE); +#endif +} \ No newline at end of file diff --git a/qcsrc/common/mutators/mutator/nades/nades.qc b/qcsrc/common/mutators/mutator/nades/nades.qc index 1707e168b..8fa8a2779 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qc +++ b/qcsrc/common/mutators/mutator/nades/nades.qc @@ -39,8 +39,45 @@ entity Nade_TrailEffect(int proj, int nade_team) } #endif +REGISTER_NET_TEMP(TE_CSQC_DARKBLINKING); #ifdef CSQC +#include +#include + +float dark_appeartime; +float dark_fadetime; +bool darkblink; + +void HUD_DarkBlinking() +{ + vector bottomright = vec2(vid_conwidth, vid_conheight); + drawfill('0 0 0', bottomright, NADE_TYPE_DARK.m_color, 0.986, DRAWFLAG_NORMAL); +} + REGISTER_MUTATOR(cl_nades, true); +MUTATOR_HOOKFUNCTION(cl_nades, HUD_Draw_overlay) +{ + if (STAT(NADE_DARK_TIME) > time) + { + M_ARGV(0, vector) = NADE_TYPE_DARK.m_color; + HUD_DarkBlinking(); + return true; + } + return false; +} + +NET_HANDLE(TE_CSQC_DARKBLINKING, bool isNew) +{ + return = true; + + if(darkblink) return; + + localcmd("play2 sound/misc/blind\n"); + darkblink = true; + dark_appeartime = time; + dark_fadetime = STAT(NADE_DARK_TIME); +} + MUTATOR_HOOKFUNCTION(cl_nades, Ent_Projectile) { entity proj = M_ARGV(0, entity); @@ -151,6 +188,7 @@ void DrawAmmoNades(vector myPos, vector mySize, bool draw_expanding, float expan #include #include #include +#include .float nade_time_primed; .float nade_lifetime; @@ -189,6 +227,14 @@ void nade_spawn(entity _nade) CSQCProjectile(_nade, true, REGISTRY_GET(Nades, STAT(NADE_BONUS_TYPE, _nade)).m_projectile[false], true); } +void normal_nade_boom(entity this) +{ + RadiusDamage(this, this.realowner, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, + autocvar_g_nades_nade_radius, this, NULL, autocvar_g_nades_nade_force, this.projectiledeathtype, DMG_NOWEP, this.enemy); + Damage_DamageInfo(this.origin, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, + autocvar_g_nades_nade_radius, '1 1 1' * autocvar_g_nades_nade_force, this.projectiledeathtype, 0, this); +} + void napalm_damage(entity this, float dist, float damage, float edgedamage, float burntime) { entity e; @@ -393,33 +439,30 @@ void nade_ice_think(entity this) Send_Effect(expef, this.origin + '0 0 1', '0 0 0', 1); sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM); - RadiusDamage(this, this.realowner, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, - autocvar_g_nades_nade_radius, this, NULL, autocvar_g_nades_nade_force, this.projectiledeathtype, DMG_NOWEP, this.enemy); - Damage_DamageInfo(this.origin, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, - autocvar_g_nades_nade_radius, '1 1 1' * autocvar_g_nades_nade_force, this.projectiledeathtype, 0, this); + normal_nade_boom(this); } delete(this); return; } - this.nextthink = time+0.1; + this.nextthink = time + 0.1; // gaussian float randomr; randomr = random(); - randomr = exp(-5*randomr*randomr)*autocvar_g_nades_nade_radius; + randomr = exp(-5 * randomr * randomr) * autocvar_g_nades_nade_radius; float randomw; - randomw = random()*M_PI*2; + randomw = random() * M_PI * 2; vector randomp; - randomp.x = randomr*cos(randomw); - randomp.y = randomr*sin(randomw); + randomp.x = randomr * cos(randomw); + randomp.y = randomr * sin(randomw); randomp.z = 1; Send_Effect(EFFECT_ELECTRO_MUZZLEFLASH, this.origin + randomp, '0 0 0', 1); if(time >= this.nade_special_time) { - this.nade_special_time = time+0.7; + this.nade_special_time = time + 0.7; Send_Effect(EFFECT_ELECTRO_IMPACT, this.origin, '0 0 0', 1); Send_Effect(EFFECT_ICEFIELD, this.origin, '0 0 0', 1); @@ -428,13 +471,24 @@ void nade_ice_think(entity this) float current_freeze_time = this.ltime - time - 0.1; +#define ICE_NADE_RADIUS_TEAMCHECK(checked) \ + if (checked) \ + if (!it.revival_time || ((time - it.revival_time) >= 1.5)) \ + if (!STAT(FROZEN, it)) \ + nade_ice_freeze(this, it, current_freeze_time); \ + break; + FOREACH_ENTITY_RADIUS(this.origin, autocvar_g_nades_nade_radius, it != this && it.takedamage && !IS_DEAD(it) && GetResource(it, RES_HEALTH) > 0 && current_freeze_time > 0, { - if(!autocvar_g_nades_ice_teamcheck || (DIFF_TEAM(it, this.realowner) || it == this.realowner)) - if(!it.revival_time || ((time - it.revival_time) >= 1.5)) - if(!STAT(FROZEN, it)) - nade_ice_freeze(this, it, current_freeze_time); + switch (autocvar_g_nades_ice_teamcheck) + { + // 1: nade owner isn't affected; 2: no teammate is affected; any other number than 1 and 2: friendly fire + case 1: ICE_NADE_RADIUS_TEAMCHECK(it != this.realowner); + case 2: ICE_NADE_RADIUS_TEAMCHECK(DIFF_TEAM(it, this.realowner) && it != this.realowner); + default: ICE_NADE_RADIUS_TEAMCHECK(!autocvar_g_nades_ice_teamcheck || (DIFF_TEAM(it, this.realowner) || it == this.realowner)); + } }); +#undef ICE_NADE_RADIUS_TEAMCHECK } void nade_ice_boom(entity this) @@ -453,7 +507,7 @@ void nade_ice_boom(entity this) fountain.projectiledeathtype = DEATH_NADE_ICE.m_id; fountain.bot_dodge = false; setsize(fountain, '-16 -16 -16', '16 16 16'); - fountain.nade_special_time = time+0.3; + fountain.nade_special_time = time + 0.3; fountain.angles = this.angles; if ( autocvar_g_nades_ice_explode ) @@ -479,6 +533,14 @@ void nade_translocate_boom(entity this) if(this.realowner.vehicle) return; + setsize(this, PL_MIN_CONST-'16 16 16', PL_MAX_CONST+'16 16 16'); + + if(!move_out_of_solid(this)) + { + sprint(this.realowner, "^1Couldn't move the translocator out of solid! origin: ", vtos(this.origin), "\n"); + return; + } + vector locout = this.origin + '0 0 1' * (1 - this.realowner.mins.z - 24); tracebox(locout, this.realowner.mins, this.realowner.maxs, locout, MOVE_NOMONSTERS, this.realowner); locout = trace_endpos; @@ -597,18 +659,15 @@ void nade_heal_touch(entity this, entity toucher) { float maxhealth; float health_factor; - if(IS_PLAYER(toucher) || IS_MONSTER(toucher)) + + if(IS_PLAYER(toucher) || IS_MONSTER(toucher) || IS_VEHICLE(toucher)) if(!IS_DEAD(toucher)) if(!STAT(FROZEN, toucher)) { health_factor = autocvar_g_nades_heal_rate*frametime/2; if ( toucher != this.realowner ) - { - if ( SAME_TEAM(toucher,this) ) - health_factor *= autocvar_g_nades_heal_friend; - else - health_factor *= autocvar_g_nades_heal_foe; - } + health_factor *= (SAME_TEAM(toucher,this)) ? autocvar_g_nades_heal_friend : autocvar_g_nades_heal_foe; + if ( health_factor > 0 ) { maxhealth = (IS_MONSTER(toucher)) ? toucher.max_health : g_pickup_healthmega_max; @@ -616,17 +675,13 @@ void nade_heal_touch(entity this, entity toucher) if (hp < maxhealth) { if (this.nade_show_particles) - { Send_Effect(EFFECT_HEALING, toucher.origin, '0 0 0', 1); - } + GiveResourceWithLimit(toucher, RES_HEALTH, health_factor, maxhealth); } } else if ( health_factor < 0 ) - { Damage(toucher,this,this.realowner,-health_factor,DEATH_NADE_HEAL.m_id,DMG_NOWEP,toucher.origin,'0 0 0'); - } - } } @@ -681,61 +736,227 @@ void nade_veil_boom(entity this) orb.colormod = NADE_TYPE_VEIL.m_color; } +void nade_ammo_touch(entity this, entity toucher) +{ + float maxammo = 999; + float ammo_factor; + float amshells = GetResource(toucher, RES_SHELLS); + float ambullets = GetResource(toucher, RES_BULLETS); + float amrockets = GetResource(toucher, RES_ROCKETS); + float amcells = GetResource(toucher, RES_CELLS); + float amplasma = GetResource(toucher, RES_PLASMA); + if(IS_PLAYER(toucher) || IS_MONSTER(toucher)) + if(!IS_DEAD(toucher)) + if(!STAT(FROZEN, toucher)) + { + ammo_factor = autocvar_g_nades_ammo_rate*frametime/2; + if ( toucher != this.realowner ) + ammo_factor *= (SAME_TEAM(toucher, this)) ? autocvar_g_nades_ammo_friend : autocvar_g_nades_ammo_foe; + +#define CHECK_AMMO_RESOURCE_LIMIT(amresource, res_resource) \ + if (amresource < maxammo) \ + GiveResourceWithLimit(toucher, res_resource, ammo_factor, maxammo); + +#define DROP_AMMO_RESOURCE(amresource, res_resource) \ + if (amresource > 0) \ + SetResource(toucher, res_resource, amresource + ammo_factor); + + if ( ammo_factor > 0 ) + { + CHECK_AMMO_RESOURCE_LIMIT(amshells, RES_SHELLS); + CHECK_AMMO_RESOURCE_LIMIT(ambullets, RES_BULLETS); + CHECK_AMMO_RESOURCE_LIMIT(amrockets, RES_ROCKETS); + CHECK_AMMO_RESOURCE_LIMIT(amcells, RES_CELLS); + CHECK_AMMO_RESOURCE_LIMIT(amplasma, RES_PLASMA); + + if (this.nade_show_particles) + Send_Effect(EFFECT_HEALING, toucher.origin, '0 0 0', 1); + } + else if ( ammo_factor < 0 ) + { + //Foe drops ammo points + DROP_AMMO_RESOURCE(amshells, RES_SHELLS); + DROP_AMMO_RESOURCE(ambullets, RES_BULLETS); + DROP_AMMO_RESOURCE(amrockets, RES_ROCKETS); + DROP_AMMO_RESOURCE(amcells, RES_CELLS); + DROP_AMMO_RESOURCE(amplasma, RES_PLASMA); + + return; + } + } +#undef CHECK_AMMO_RESOURCE_LIMIT +#undef DROP_AMMO_RESOURCE + + if ( IS_REAL_CLIENT(toucher) || (IS_VEHICLE(toucher) && toucher.owner) ) + { + entity show_tint = (IS_VEHICLE(toucher) && toucher.owner) ? toucher.owner : toucher; + show_tint.nade_ammo_time = time + 0.1; + } +} + +void nade_ammo_boom(entity this) +{ + entity orb = nades_spawn_orb(this.owner, this.realowner, this.origin, autocvar_g_nades_ammo_time, autocvar_g_nades_nade_radius); + + settouch(orb, nade_ammo_touch); + orb.colormod = '0.66 0.33 0'; +} + +void DarkBlinking(entity e) +{ + if(e == NULL) return; + + int accepted = VerifyClientEntity(e, true, false); + + if(accepted > 0) + { + msg_entity = e; + WriteHeader(MSG_ONE, TE_CSQC_DARKBLINKING); + } +} + +void nade_dark_think(entity this) +{ + if(round_handler_IsActive()) + if(!round_handler_IsRoundStarted()) + { + delete(this); + return; + } + + if(time >= this.ltime) + { + if ( autocvar_g_nades_dark_explode ) + { + entity expef = EFFECT_NADE_EXPLODE(this.realowner.team); + Send_Effect(expef, this.origin + '0 0 1', '0 0 0', 1); + sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM); + + normal_nade_boom(this); + } + else + Send_Effect(EFFECT_SPAWN_PURPLE, this.origin + '0 0 1', '0 0 0', 1); + + delete(this); + return; + } + + this.nextthink = time + 0.1; + + // gaussian + float randomr; + randomr = random(); + randomr = exp(-5 * randomr * randomr) * autocvar_g_nades_nade_radius; + float randomw; + randomw = random() * M_PI * 2; + vector randomp; + randomp.x = randomr * cos(randomw); + randomp.y = randomr * sin(randomw); + randomp.z = 1; + Send_Effect(EFFECT_DARKFIELD, this.origin + randomp, '0 0 0', 1); + + if(time >= this.nade_special_time) + { + this.nade_special_time = time + 0.7; + Send_Effect(EFFECT_DARKFIELD, this.origin, '0 0 0', 1); + } + + float current_dark_time = this.ltime - time - 0.1; + +#define DARK_NADE_RADIUS_TEAMCHECK(checked) \ + if (checked) \ + if ( IS_REAL_CLIENT(it) ) \ + { \ + STAT(NADE_DARK_TIME, it) = time + 0.1; \ + DarkBlinking(it); \ + } \ + break; + + FOREACH_ENTITY_RADIUS(this.origin, autocvar_g_nades_nade_radius, it != this && it.takedamage && !IS_DEAD(it) && GetResource(it, RES_HEALTH) > 0 && current_dark_time > 0, + { + switch (autocvar_g_nades_dark_teamcheck) + { + // 1: nade owner isn't affected; 2: no teammate is affected; any other number than 1 and 2: friendly fire + case 1: DARK_NADE_RADIUS_TEAMCHECK(it != this.realowner); + case 2: DARK_NADE_RADIUS_TEAMCHECK(DIFF_TEAM(it, this.realowner) && it != this.realowner); + default: DARK_NADE_RADIUS_TEAMCHECK(!autocvar_g_nades_dark_teamcheck || (DIFF_TEAM(it, this.realowner) && it != this.realowner)); + } + }); +#undef DARK_NADE_RADIUS_TEAMCHECK +} + +void nade_dark_boom(entity this) +{ + entity fountain = new(nade_dark_fountain); + fountain.owner = this.owner; + fountain.realowner = this.realowner; + fountain.origin = this.origin; + setorigin(fountain, fountain.origin); + setthink(fountain, nade_dark_think); + fountain.nextthink = time; + fountain.ltime = time + autocvar_g_nades_dark_time; + fountain.pushltime = fountain.wait = fountain.ltime; + fountain.team = this.team; + set_movetype(fountain, MOVETYPE_TOSS); + fountain.projectiledeathtype = DEATH_NADE.m_id; + fountain.bot_dodge = false; + setsize(fountain, '-16 -16 -16', '16 16 16'); + fountain.nade_special_time = time + 0.3; + fountain.angles = this.angles; + + if ( autocvar_g_nades_dark_explode ) + { + setmodel(fountain, MDL_PROJECTILE_GRENADE); + entity timer = new(nade_timer); + setmodel(timer, MDL_NADE_TIMER); + setattachment(timer, fountain, ""); + timer.colormap = this.colormap; + timer.glowmod = this.glowmod; + setthink(timer, nade_timer_think); + timer.nextthink = time; + timer.wait = fountain.ltime; + timer.owner = fountain; + timer.skin = 10; + } + else + setmodel(fountain, MDL_Null); +} + void nade_boom(entity this) { entity expef = NULL; bool nade_blast = true; - switch ( REGISTRY_GET(Nades, STAT(NADE_BONUS_TYPE, this)) ) - { - case NADE_TYPE_NAPALM: - nade_blast = autocvar_g_nades_napalm_blast; - expef = EFFECT_EXPLOSION_MEDIUM; - break; - case NADE_TYPE_ICE: - nade_blast = false; - expef = EFFECT_ELECTRO_COMBO; // hookbomb_explode electro_combo bigplasma_impact - break; - case NADE_TYPE_TRANSLOCATE: - nade_blast = false; - break; - case NADE_TYPE_MONSTER: - if(!autocvar_g_monsters) - { - expef = EFFECT_NADE_EXPLODE(this.realowner.team); - break; // fall back to a standard nade explosion - } - case NADE_TYPE_SPAWN: - nade_blast = false; - switch(this.realowner.team) - { - case NUM_TEAM_1: expef = EFFECT_SPAWN_RED; break; - case NUM_TEAM_2: expef = EFFECT_SPAWN_BLUE; break; - case NUM_TEAM_3: expef = EFFECT_SPAWN_YELLOW; break; - case NUM_TEAM_4: expef = EFFECT_SPAWN_PINK; break; - default: expef = EFFECT_SPAWN_NEUTRAL; break; - } - break; - case NADE_TYPE_HEAL: - nade_blast = false; - expef = EFFECT_SPAWN_RED; - break; - - case NADE_TYPE_ENTRAP: - nade_blast = false; - expef = EFFECT_SPAWN_YELLOW; - break; +#define GET_NADE_TYPE_SPAWN_EFFECT(team_owner) \ + ((team_owner) == NUM_TEAM_1 ? EFFECT_SPAWN_RED : \ + ((team_owner) == NUM_TEAM_2 ? EFFECT_SPAWN_BLUE : \ + ((team_owner) == NUM_TEAM_3 ? EFFECT_SPAWN_YELLOW : \ + ((team_owner) == NUM_TEAM_4 ? EFFECT_SPAWN_PINK : \ + EFFECT_SPAWN_NEUTRAL)))) - case NADE_TYPE_VEIL: - nade_blast = false; - expef = EFFECT_SPAWN_NEUTRAL; - break; +#define SET_NADE_EFFECT(nade_type, blast, exp_effect) \ + case nade_type: \ + nade_blast = blast; \ + expef = exp_effect; \ + break; - default: - case NADE_TYPE_NORMAL: - expef = EFFECT_NADE_EXPLODE(this.realowner.team); - break; + switch ( REGISTRY_GET(Nades, STAT(NADE_BONUS_TYPE, this)) ) + { + SET_NADE_EFFECT(NADE_TYPE_NAPALM, autocvar_g_nades_napalm_blast, EFFECT_EXPLOSION_MEDIUM); + SET_NADE_EFFECT(NADE_TYPE_ICE, false, EFFECT_ELECTRO_COMBO /* hookbomb_explode electro_combo bigplasma_impact */); + SET_NADE_EFFECT(NADE_TYPE_TRANSLOCATE, false, NULL); + SET_NADE_EFFECT(NADE_TYPE_MONSTER, true, (!autocvar_g_monsters) ? EFFECT_NADE_EXPLODE(this.realowner.team) : NULL); + SET_NADE_EFFECT(NADE_TYPE_SPAWN, false, GET_NADE_TYPE_SPAWN_EFFECT(this.realowner.team)); + SET_NADE_EFFECT(NADE_TYPE_HEAL, false, EFFECT_SPAWN_RED); + SET_NADE_EFFECT(NADE_TYPE_ENTRAP, false, EFFECT_SPAWN_YELLOW); + SET_NADE_EFFECT(NADE_TYPE_VEIL, false, EFFECT_SPAWN_NEUTRAL); + SET_NADE_EFFECT(NADE_TYPE_AMMO, false, EFFECT_SPAWN_BROWN); + SET_NADE_EFFECT(NADE_TYPE_DARK, false, EFFECT_EXPLOSION_MEDIUM); + SET_NADE_EFFECT(NADE_TYPE_NORMAL, true, EFFECT_NADE_EXPLODE(this.realowner.team)); + default: expef = EFFECT_NADE_EXPLODE(this.realowner.team); break; } +#undef GET_NADE_TYPE_SPAWN_EFFECT +#undef SET_NADE_EFFECT if(expef) Send_Effect(expef, findbetterlocation(this.origin, 8), '0 0 0', 1); @@ -746,23 +967,21 @@ void nade_boom(entity this) this.event_damage = func_null; // prevent somehow calling damage in the next call if(nade_blast) - { - RadiusDamage(this, this.realowner, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, - autocvar_g_nades_nade_radius, this, NULL, autocvar_g_nades_nade_force, this.projectiledeathtype, DMG_NOWEP, this.enemy); - Damage_DamageInfo(this.origin, autocvar_g_nades_nade_damage, autocvar_g_nades_nade_edgedamage, autocvar_g_nades_nade_radius, '1 1 1' * autocvar_g_nades_nade_force, this.projectiledeathtype, 0, this); - } + normal_nade_boom(this); if(this.takedamage) switch ( REGISTRY_GET(Nades, STAT(NADE_BONUS_TYPE, this)) ) { - case NADE_TYPE_NAPALM: nade_napalm_boom(this); break; - case NADE_TYPE_ICE: nade_ice_boom(this); break; - case NADE_TYPE_TRANSLOCATE: nade_translocate_boom(this); break; - case NADE_TYPE_SPAWN: nade_spawn_boom(this); break; - 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; + case NADE_TYPE_NAPALM: nade_napalm_boom(this); break; + case NADE_TYPE_ICE: nade_ice_boom(this); break; + case NADE_TYPE_TRANSLOCATE: nade_translocate_boom(this); break; + case NADE_TYPE_SPAWN: nade_spawn_boom(this); break; + 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; + case NADE_TYPE_AMMO: nade_ammo_boom(this); break; + case NADE_TYPE_DARK: nade_dark_boom(this); break; } IL_EACH(g_projectiles, it.classname == "grapplinghook" && it.aiment == this, @@ -903,12 +1122,25 @@ void nade_damage(entity this, entity inflictor, entity attacker, float damage, i hp -= damage; SetResource(this, RES_HEALTH, hp); - - if ( STAT(NADE_BONUS_TYPE, this) != NADE_TYPE_HEAL.m_id || IS_PLAYER(attacker) ) + if(STAT(NADE_BONUS_TYPE, this) != NADE_TYPE_TRANSLOCATE.m_id && STAT(NADE_BONUS_TYPE, this) != NADE_TYPE_SPAWN.m_id) + if(STAT(NADE_BONUS_TYPE, this) != NADE_TYPE_HEAL.m_id || IS_PLAYER(attacker)) this.realowner = attacker; if(hp <= 0) + { + if(autocvar_g_nades_spawn_destroy_damage > 0 && STAT(NADE_BONUS_TYPE, this) == NADE_TYPE_SPAWN.m_id) + Damage(this.realowner, attacker, attacker, autocvar_g_nades_spawn_destroy_damage, DEATH_TOUCHEXPLODE.m_id, DMG_NOWEP, this.realowner.origin, '0 0 0'); + + if(autocvar_g_nades_translocate_destroy_damage > 0 && STAT(NADE_BONUS_TYPE, this) == NADE_TYPE_TRANSLOCATE.m_id) + { + Damage(this.realowner, attacker, attacker, autocvar_g_nades_translocate_destroy_damage, DEATH_TOUCHEXPLODE.m_id, DMG_NOWEP, this.realowner.origin, '0 0 0'); + W_PrepareExplosionByDamage(this, this.realowner, nade_boom); // Don't change the owner + + return; + } + W_PrepareExplosionByDamage(this, attacker, nade_boom); + } else nade_burn_spawn(this); } @@ -1135,8 +1367,8 @@ void nade_prime(entity this) } else { - ntype = ((autocvar_g_nades_client_select) ? CS_CVAR(this).cvar_cl_nade_type : autocvar_g_nades_nade_type); - pntype = ((autocvar_g_nades_client_select) ? CS_CVAR(this).cvar_cl_pokenade_type : autocvar_g_nades_pokenade_monster_type); + ntype = ((autocvar_g_nades_client_select) ? CS_CVAR(this).cvar_cl_nade_type : autocvar_g_nades_nade_type); + pntype = ((autocvar_g_nades_client_select) ? CS_CVAR(this).cvar_cl_pokenade_type : autocvar_g_nades_pokenade_monster_type); } spawn_held_nade(this, this, autocvar_g_nades_nade_lifetime, ntype, pntype); @@ -1190,6 +1422,30 @@ void nades_Clear(entity player) STAT(NADE_TIMER, player) = 0; } +int nades_CheckTypes(entity player, int cl_ntype) +{ +#define CL_NADE_TYPE_CHECK(cl_ntype, cvar) \ + case cl_ntype.m_id: \ + if (!cvar) return NADE_TYPE_NORMAL.m_id; \ + break; + + switch (cl_ntype) + { + CL_NADE_TYPE_CHECK(NADE_TYPE_NAPALM, autocvar_g_nades_napalm); + CL_NADE_TYPE_CHECK(NADE_TYPE_ICE, autocvar_g_nades_ice); + CL_NADE_TYPE_CHECK(NADE_TYPE_TRANSLOCATE, autocvar_g_nades_translocate); + CL_NADE_TYPE_CHECK(NADE_TYPE_SPAWN, autocvar_g_nades_spawn); + CL_NADE_TYPE_CHECK(NADE_TYPE_HEAL, autocvar_g_nades_heal); + CL_NADE_TYPE_CHECK(NADE_TYPE_MONSTER, autocvar_g_nades_pokenade); + CL_NADE_TYPE_CHECK(NADE_TYPE_ENTRAP, autocvar_g_nades_entrap); + CL_NADE_TYPE_CHECK(NADE_TYPE_VEIL, autocvar_g_nades_veil); + CL_NADE_TYPE_CHECK(NADE_TYPE_AMMO, autocvar_g_nades_ammo); + CL_NADE_TYPE_CHECK(NADE_TYPE_DARK, autocvar_g_nades_dark); + } + return cl_ntype; +#undef CL_NADE_TYPE_CHECK +} + MUTATOR_HOOKFUNCTION(nades, VehicleEnter) { entity player = M_ARGV(0, entity); @@ -1297,7 +1553,7 @@ MUTATOR_HOOKFUNCTION(nades, PlayerPreThink) if(autocvar_g_nades_bonus_client_select) { - STAT(NADE_BONUS_TYPE, player) = CS_CVAR(player).cvar_cl_nade_type; + STAT(NADE_BONUS_TYPE, player) = nades_CheckTypes(player, CS_CVAR(player).cvar_cl_nade_type); player.pokenade_type = CS_CVAR(player).cvar_cl_pokenade_type; } else @@ -1415,10 +1671,9 @@ MUTATOR_HOOKFUNCTION(nades, PlayerSpawn) { entity player = M_ARGV(0, entity); - if(autocvar_g_nades_spawn) - player.nade_refire = time + autocvar_g_spawnshieldtime; - else - player.nade_refire = time + autocvar_g_nades_nade_refire; + player.nade_refire = (autocvar_g_nades_onspawn) + ? time + autocvar_g_nades_nade_refire + : time + autocvar_g_spawnshieldtime; if(autocvar_g_nades_bonus_client_select) STAT(NADE_BONUS_TYPE, player) = CS_CVAR(player).cvar_cl_nade_type; @@ -1437,6 +1692,9 @@ MUTATOR_HOOKFUNCTION(nades, PlayerSpawn) delete(player.nade_spawnloc); player.nade_spawnloc = NULL; } + + if(autocvar_g_nades_spawn_health_respawn > 0) + SetResource(player, RES_HEALTH, autocvar_g_nades_spawn_health_respawn); } } diff --git a/qcsrc/common/mutators/mutator/nades/nades.qh b/qcsrc/common/mutators/mutator/nades/nades.qh index a129c826a..a3a282754 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qh +++ b/qcsrc/common/mutators/mutator/nades/nades.qh @@ -6,8 +6,10 @@ bool autocvar_g_nades; bool autocvar_g_nades_override_dropweapon = true; vector autocvar_g_nades_throw_offset; -bool autocvar_g_nades_spawn; +bool autocvar_g_nades_onspawn; int autocvar_g_nades_spawn_count; +float autocvar_g_nades_spawn_health_respawn; +float autocvar_g_nades_spawn_destroy_damage = 25; bool autocvar_g_nades_client_select; bool autocvar_g_nades_pickup = true; float autocvar_g_nades_pickup_time = 2; @@ -21,6 +23,7 @@ float autocvar_g_nades_nade_edgedamage; float autocvar_g_nades_nade_radius; float autocvar_g_nades_nade_force; int autocvar_g_nades_nade_newton_style; +bool autocvar_g_nades_napalm; int autocvar_g_nades_napalm_ball_count; float autocvar_g_nades_napalm_ball_spread; float autocvar_g_nades_napalm_ball_damage; @@ -50,20 +53,37 @@ int autocvar_g_nades_bonus_score_low; int autocvar_g_nades_bonus_score_high; int autocvar_g_nades_bonus_score_medium; int autocvar_g_nades_bonus_score_spree; +bool autocvar_g_nades_ice = true; float autocvar_g_nades_ice_freeze_time; float autocvar_g_nades_ice_health; bool autocvar_g_nades_ice_explode; bool autocvar_g_nades_ice_teamcheck; +bool autocvar_g_nades_translocate = true; +float autocvar_g_nades_translocate_destroy_damage = 25; +bool autocvar_g_nades_spawn = true; +bool autocvar_g_nades_heal = true; float autocvar_g_nades_heal_time; float autocvar_g_nades_heal_rate; float autocvar_g_nades_heal_friend; float autocvar_g_nades_heal_foe; +bool autocvar_g_nades_entrap; 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; +bool autocvar_g_nades_veil; float autocvar_g_nades_veil_time = 8; float autocvar_g_nades_veil_radius = 300; +bool autocvar_g_nades_ammo; +float autocvar_g_nades_ammo_time; +float autocvar_g_nades_ammo_rate; +float autocvar_g_nades_ammo_friend; +float autocvar_g_nades_ammo_foe; +bool autocvar_g_nades_dark; +bool autocvar_g_nades_dark_explode; +bool autocvar_g_nades_dark_teamcheck; +float autocvar_g_nades_dark_time; +bool autocvar_g_nades_pokenade; string autocvar_g_nades_pokenade_monster_type; float autocvar_g_nades_pokenade_monster_lifetime; #endif @@ -86,6 +106,10 @@ 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; +const int PROJECTILE_NADE_AMMO = 88; +const int PROJECTILE_NADE_AMMO_BURN = 89; +const int PROJECTILE_NADE_DARK = 90; +const int PROJECTILE_NADE_DARK_BURN = 91; REGISTRY(Nades, BITS(4)) REGISTER_REGISTRY(Nades) @@ -142,11 +166,15 @@ REPLICATE_INIT(string, cvar_cl_pokenade_type); .float nade_special_time; .string pokenade_type; .entity nade_damage_target; +.float cvar_cl_nade_type; +.string cvar_cl_pokenade_type; .float toss_time; .float nade_show_particles; .float nade_veil_time; .float nade_veil_prevalpha; .float nade_entrap_time; +.float nade_ammo_time; +.float nade_dark_time; bool orb_send(entity this, entity to, int sf); diff --git a/qcsrc/common/stats.qh b/qcsrc/common/stats.qh index 96a136cad..18808001b 100644 --- a/qcsrc/common/stats.qh +++ b/qcsrc/common/stats.qh @@ -125,6 +125,7 @@ REGISTER_STAT(MONSTERS_KILLED, int) REGISTER_STAT(NADE_BONUS, float) REGISTER_STAT(NADE_BONUS_TYPE, int) REGISTER_STAT(NADE_BONUS_SCORE, float) +REGISTER_STAT(NADE_DARK_TIME, float) REGISTER_STAT(PLASMA, int) REGISTER_STAT(FROZEN, int) REGISTER_STAT(REVIVE_PROGRESS, float) diff --git a/qcsrc/common/turrets/sv_turrets.qc b/qcsrc/common/turrets/sv_turrets.qc index 1cca9b1ca..a42005f32 100644 --- a/qcsrc/common/turrets/sv_turrets.qc +++ b/qcsrc/common/turrets/sv_turrets.qc @@ -695,7 +695,8 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl if(!e_target) return -2; - if(e_target.owner == e_turret) + // Don't attack against owner + if(e_target.owner == e_turret || e_target == e_turret.realowner) return -0.5; if(!checkpvs(e_target.origin, e_turret)) diff --git a/qcsrc/common/turrets/turret/tesla_weapon.qc b/qcsrc/common/turrets/turret/tesla_weapon.qc index b62201eb9..f6102801d 100644 --- a/qcsrc/common/turrets/turret/tesla_weapon.qc +++ b/qcsrc/common/turrets/turret/tesla_weapon.qc @@ -73,7 +73,8 @@ entity toast(entity actor, entity from, float range, float damage) if (etarget) { te_csqc_lightningarc(from.origin, etarget.origin); - Damage(etarget, actor, actor, damage, DEATH_TURRET_TESLA.m_id, DMG_NOWEP, etarget.origin, '0 0 0'); + if (etarget != actor.realowner) + Damage(etarget, actor, actor, damage, DEATH_TURRET_TESLA.m_id, DMG_NOWEP, etarget.origin, '0 0 0'); etarget.railgunhit = true; IL_PUSH(g_railgunhit, etarget); } diff --git a/sound/misc/blind.ogg b/sound/misc/blind.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6a0bc6db607bcce49106d0550affd88b602e021d GIT binary patch literal 9539 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 literal 0 HcmV?d00001 -- 2.39.2