From: Mario Date: Fri, 16 Aug 2013 00:27:19 +0000 (+1000) Subject: Merge branch 'master' into Mario/monsters X-Git-Tag: xonotic-v0.8.0~241^2^2~162 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=d820bc6acfe936141e2fc15d0d3bbcf98ad278ab;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into Mario/monsters --- d820bc6acfe936141e2fc15d0d3bbcf98ad278ab diff --cc defaultXonotic.cfg index c5275cc95,392ba9f90..096ee4ab5 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@@ -1579,8 -1509,8 +1517,9 @@@ exec turrets.cf exec vehicles.cfg exec crosshairs.cfg exec gamemodes.cfg + exec mutators.cfg exec notifications.cfg +exec monsters.cfg // load console command aliases and settings exec commands.cfg diff --cc effectinfo.txt index 05e881c5d,d069d5f0f..782521447 --- a/effectinfo.txt +++ b/effectinfo.txt @@@ -7978,42 -7978,975 +7978,974 @@@ alpha 190 190 18 sizeincrease -80 color 0xFFFFFF 0xFFFFFF - // waypoint_link_red - red waypoint linking effect - effect waypoint_link_red - countabsolute 1 - type beam - tex 200 200 - + // nade effects + effect nade_blue + trailspacing 1 + type smoke + color 0x006cff 0x0600ff + tex 65 65 + size 3 3 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_blue + notunderwater + trailspacing 8 + type smoke + color 0x0600ff 0x9794ff + tex 65 65 + size 15 25 + sizeincrease -10 + alpha 30 30 150 + // bubbles + effect nade_blue + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0x006cff 0x0600ff size 1 1 - alpha 256 256 64 - color 0xFF0F0F 0xFF0F0F - sizeincrease 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 - // waypoint_link_blue - blue waypoint linking effect - effect waypoint_link_blue - countabsolute 1 - type beam - tex 200 200 + effect nade_red + trailspacing 1 + type smoke + color 0xff0000 0xff3c00 + tex 65 65 + size 3 3 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_red + notunderwater + trailspacing 8 + type smoke + color 0xff0000 0xffa2a2 + tex 65 65 + size 15 25 + sizeincrease -10 + alpha 30 30 150 + // bubbles + effect nade_red + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xff0000 0xff3c00 size 1 1 - alpha 256 256 64 - color 0x0F0FFF 0x0F0FFF - sizeincrease 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 - // waypoint_link_yellow - yellow waypoint linking effect - effect waypoint_link_yellow - countabsolute 1 - type beam - tex 200 200 - size 1 1 - alpha 256 256 64 + effect nade_yellow + trailspacing 1 + type smoke color 0xFFFF0F 0xFFFF0F - sizeincrease 1 + tex 65 65 + size 3 3 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_yellow + notunderwater + trailspacing 8 + type smoke + color 0xFFFF0F 0xFFFF0F + tex 65 65 + size 15 25 + sizeincrease -10 + alpha 30 30 150 + // bubbles + effect nade_yellow + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFFFF0F 0xFFFF0F + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 - // waypoint_link_pink - pink waypoint linking effect - effect waypoint_link_pink - countabsolute 1 - type beam - tex 200 200 + effect nade_pink + trailspacing 1 + type smoke + color 0xFF0FFF 0xFF0FFF + tex 65 65 + size 3 3 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_pink + notunderwater + trailspacing 8 + type smoke + color 0xFF0FFF 0xFF0FFF + tex 65 65 + size 15 25 + sizeincrease -10 + alpha 30 30 150 + // bubbles + effect nade_pink + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFF0FFF 0xFF0FFF size 1 1 - alpha 256 256 64 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + + effect nade + trailspacing 1 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 65 65 + size 3 3 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade + notunderwater + trailspacing 8 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 65 65 + size 15 25 + sizeincrease -10 + alpha 30 30 150 + // bubbles + effect nade + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFFFFFF 0xFFFFFF + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + + effect nade_red_burn + trailspacing 1 + type smoke + color 0xff0000 0xff3c00 + tex 65 65 + size 5 5 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_red_burn + notunderwater + trailspacing 64 + type smoke + color 0xff0000 0xffa2a2 + tex 65 65 + size 45 25 + sizeincrease -30 + alpha 200 200 1000 + // bubbles + effect nade_red_burn + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xff0000 0xff3c00 + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + effect nade_red_burn + trailspacing 16 + type smoke + color 0xff0000 0xff3c00 + tex 71 73 + size 15 25 + sizeincrease -40 + rotate -180 180 20 -20 + originjitter 2 2 2 + velocityjitter 10 10 10 + alpha 300 900 1500 + + effect nade_blue_burn + trailspacing 1 + type smoke + color 0x006cff 0x0600ff + tex 65 65 + size 5 5 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_blue_burn + notunderwater + trailspacing 64 + type smoke + color 0x0600ff 0x9794ff + tex 65 65 + size 45 25 + sizeincrease -30 + alpha 200 200 1000 + // bubbles + effect nade_blue_burn + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0x006cff 0x0600ff + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + effect nade_blue_burn + trailspacing 16 + type smoke + color 0x006cff 0x0600ff + tex 33 33 + size 25 25 + sizeincrease -30 + + effect nade_yellow_burn + trailspacing 1 + type smoke + color 0xFFFF0F 0xFFFF0F + tex 65 65 + size 5 5 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_yellow_burn + notunderwater + trailspacing 64 + type smoke + color 0xFFFF0F 0xFFFF0F + tex 65 65 + size 45 25 + sizeincrease -30 + alpha 200 200 1000 + // bubbles + effect nade_yellow_burn + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFFFF0F 0xFFFF0F + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + effect nade_yellow_burn + trailspacing 16 + type smoke + color 0xFFFF0F 0xFFFF0F + tex 33 33 + size 25 25 + sizeincrease -30 + + effect nade_pink_burn + trailspacing 1 + type smoke color 0xFF0FFF 0xFF0FFF - sizeincrease 1 + tex 65 65 + size 5 5 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_pink_burn + notunderwater + trailspacing 64 + type smoke + color 0xFF0FFF 0xFF0FFF + tex 65 65 + size 45 25 + sizeincrease -30 + alpha 200 200 1000 + // bubbles + effect nade_pink_burn + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFF0FFF 0xFF0FFF + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + effect nade_pink_burn + trailspacing 16 + type smoke + color 0xFF0FFF 0xFF0FFF + tex 33 33 + size 25 25 + sizeincrease -30 + + effect nade_burn + trailspacing 1 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 65 65 + size 5 5 + sizeincrease -1 + alpha 100 100 250 + //gravity -0.11 + // fire + effect nade_burn + notunderwater + trailspacing 64 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 65 65 + size 45 25 + sizeincrease -30 + alpha 200 200 1000 + // bubbles + effect nade_burn + underwater + trailspacing 16 + type bubble + tex 62 62 + color 0xFFFFFF 0xFFFFFF + size 1 1 + alpha 256 256 256 + gravity -0.125 + bounce 1.5 + liquidfriction 4 + velocityjitter 16 16 16 + effect nade_burn + trailspacing 16 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 33 33 + size 25 25 + sizeincrease -30 + + effect nade_blue_explode + countabsolute 1 + type decal + tex 8 16 + size 88 88 + alpha 256 256 0 + originjitter 26 26 26 + lightradius 300 + lightradiusfade 1500 + lightcolor 20 20 100 + // shockwave + effect nade_blue_explode + type smoke + countabsolute 1 + tex 33 33 + size 32 32 + sizeincrease 1800 + color 0x80C0FF 0x80C0FF + alpha 80 80 650 + velocitymultiplier 44 + // fire + effect nade_blue_explode + notunderwater + count 16 + type smoke + color 0x629dff 0x0018ff + tex 48 55 + size 20 24 + sizeincrease 555 + alpha 400 656 2000 + airfriction 30 + originjitter 50 50 50 + velocityjitter 320 320 320 + rotate -180 180 -9 9 + // fire streched + effect nade_blue_explode + count 8 + type spark + tex 48 55 + color 0x629dff 0x0018ff + size 60 90 + alpha 1500 3000 13000 + stretchfactor 80 + sizeincrease 40 + velocityjitter 30 30 30 + airfriction -9 + //smoke + effect nade_blue_explode + type smoke + count 32 + blend alpha + tex 0 7 + size 60 30 + color 0x222222 0x000000 + alpha 128 328 390 + rotate -180 180 2 -2 + velocityjitter 200 200 200 + velocityoffset 0 0 180 + originjitter 50 50 10 + sizeincrease 50 + airfriction 0.04 + gravity 0.4 + // underwater bubbles + effect nade_blue_explode + underwater + count 32 + type bubble + tex 62 62 + color 0x404040 0x808080 + size 3 6 + alpha 128 256 64 + gravity -0.125 + bounce 1.5 + liquidfriction 0.25 + originjitter 16 16 16 + velocityjitter 196 196 196 + rotate 0 0 0 0 + // bouncing sparks + effect nade_blue_explode + notunderwater + count 8 + type spark + tex 40 40 + color 0x006cff 0x0600ff + size 1 2 + alpha 644 956 484 + gravity 1 + airfriction 1 + bounce 1.6 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // notbouncing sparks + effect nade_blue_explode + count 16 + type spark + tex 40 40 + color 0x006cff 0x0600ff + size 1 2 + alpha 644 956 684 + gravity 0.5 + airfriction 0.7 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // derbis + effect nade_blue_explode + notunderwater + count 12 + type alphastatic + tex 66 68 + color 0x6a3d25 0xcac5b4 + size 2 6 + alpha 644 956 684 + gravity 1.3 + airfriction 0.5 + bounce 1.6 + velocityjitter 324 324 524 + rotate -180 180 -1000 1000 + + effect nade_red_explode + countabsolute 1 + type decal + tex 8 16 + size 88 88 + alpha 256 256 0 + originjitter 26 26 26 + lightradius 300 + lightradiusfade 1500 + lightcolor 100 20 20 + // shockwave + effect nade_red_explode + type smoke + countabsolute 1 + tex 33 33 + size 32 32 + sizeincrease 2200 + color 0xff0000 0xffa2a2 + alpha 80 80 650 + velocitymultiplier 44 + // fire + effect nade_red_explode + notunderwater + count 16 + type smoke + color 0xff0000 0xff4200 + tex 48 55 + size 20 24 + sizeincrease 555 + alpha 400 656 2000 + airfriction 30 + originjitter 50 50 50 + velocityjitter 320 320 320 + rotate -180 180 -9 9 + // fire streched + effect nade_red_explode + count 8 + type spark + tex 48 55 + color 0xff0000 0xff4200 + size 60 90 + alpha 1500 3000 13000 + stretchfactor 80 + sizeincrease 40 + velocityjitter 30 30 30 + airfriction -9 + //smoke + effect nade_red_explode + type smoke + count 32 + blend alpha + tex 0 7 + size 60 30 + color 0x222222 0x000000 + alpha 128 328 390 + rotate -180 180 2 -2 + velocityjitter 200 200 200 + velocityoffset 0 0 180 + originjitter 50 50 10 + sizeincrease 50 + airfriction 0.04 + gravity 0.4 + // underwater bubbles + effect nade_red_explode + underwater + count 32 + type bubble + tex 62 62 + color 0x404040 0x808080 + size 3 6 + alpha 128 256 64 + gravity -0.125 + bounce 1.5 + liquidfriction 0.25 + originjitter 16 16 16 + velocityjitter 196 196 196 + rotate 0 0 0 0 + // bouncing sparks + effect nade_red_explode + notunderwater + count 8 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 484 + gravity 1 + airfriction 1 + bounce 1.6 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // notbouncing sparks + effect nade_red_explode + count 16 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 684 + gravity 0.5 + airfriction 0.7 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // derbis + effect nade_red_explode + notunderwater + count 8 + type smoke + tex 71 73 + color 0xff0000 0xffa2a2 + size 20 40 + alpha 644 956 2500 + originjitter 64 64 64 + velocityjitter 324 324 324 + rotate -180 180 -100 100 + + effect nade_yellow_explode + countabsolute 1 + type decal + tex 8 16 + size 88 88 + alpha 256 256 0 + originjitter 26 26 26 + lightradius 300 + lightradiusfade 1500 + lightcolor 100 20 20 + // shockwave + effect nade_yellow_explode + type smoke + countabsolute 1 + tex 33 33 + size 32 32 + sizeincrease 2200 + color 0xff0000 0xffa2a2 + alpha 80 80 650 + velocitymultiplier 44 + // fire + effect nade_yellow_explode + notunderwater + count 16 + type smoke + color 0xFFFF0F 0xFFFF0F + tex 48 55 + size 20 24 + sizeincrease 555 + alpha 400 656 2000 + airfriction 30 + originjitter 50 50 50 + velocityjitter 320 320 320 + rotate -180 180 -9 9 + // fire streched + effect nade_yellow_explode + count 8 + type spark + tex 48 55 + color 0xFFFF0F 0xFFFF0F + size 60 90 + alpha 1500 3000 13000 + stretchfactor 80 + sizeincrease 40 + velocityjitter 30 30 30 + airfriction -9 + //smoke + effect nade_yellow_explode + type smoke + count 32 + blend alpha + tex 0 7 + size 60 30 + color 0x222222 0x000000 + alpha 128 328 390 + rotate -180 180 2 -2 + velocityjitter 200 200 200 + velocityoffset 0 0 180 + originjitter 50 50 10 + sizeincrease 50 + airfriction 0.04 + gravity 0.4 + // underwater bubbles + effect nade_yellow_explode + underwater + count 32 + type bubble + tex 62 62 + color 0x404040 0x808080 + size 3 6 + alpha 128 256 64 + gravity -0.125 + bounce 1.5 + liquidfriction 0.25 + originjitter 16 16 16 + velocityjitter 196 196 196 + rotate 0 0 0 0 + // bouncing sparks + effect nade_yellow_explode + notunderwater + count 8 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 484 + gravity 1 + airfriction 1 + bounce 1.6 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // notbouncing sparks + effect nade_yellow_explode + count 16 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 684 + gravity 0.5 + airfriction 0.7 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // derbis + effect nade_yellow_explode + notunderwater + count 8 + type smoke + tex 71 73 + color 0xff0000 0xffa2a2 + size 20 40 + alpha 644 956 2500 + originjitter 64 64 64 + velocityjitter 324 324 324 + rotate -180 180 -100 100 + + effect nade_pink_explode + countabsolute 1 + type decal + tex 8 16 + size 88 88 + alpha 256 256 0 + originjitter 26 26 26 + lightradius 300 + lightradiusfade 1500 + lightcolor 100 20 20 + // shockwave + effect nade_pink_explode + type smoke + countabsolute 1 + tex 33 33 + size 32 32 + sizeincrease 2200 + color 0xff0000 0xffa2a2 + alpha 80 80 650 + velocitymultiplier 44 + // fire + effect nade_pink_explode + notunderwater + count 16 + type smoke + color 0xFF0FFF 0xFF0FFF + tex 48 55 + size 20 24 + sizeincrease 555 + alpha 400 656 2000 + airfriction 30 + originjitter 50 50 50 + velocityjitter 320 320 320 + rotate -180 180 -9 9 + // fire streched + effect nade_pink_explode + count 8 + type spark + tex 48 55 + color 0xFF0FFF 0xFF0FFF + size 60 90 + alpha 1500 3000 13000 + stretchfactor 80 + sizeincrease 40 + velocityjitter 30 30 30 + airfriction -9 + //smoke + effect nade_pink_explode + type smoke + count 32 + blend alpha + tex 0 7 + size 60 30 + color 0x222222 0x000000 + alpha 128 328 390 + rotate -180 180 2 -2 + velocityjitter 200 200 200 + velocityoffset 0 0 180 + originjitter 50 50 10 + sizeincrease 50 + airfriction 0.04 + gravity 0.4 + // underwater bubbles + effect nade_pink_explode + underwater + count 32 + type bubble + tex 62 62 + color 0x404040 0x808080 + size 3 6 + alpha 128 256 64 + gravity -0.125 + bounce 1.5 + liquidfriction 0.25 + originjitter 16 16 16 + velocityjitter 196 196 196 + rotate 0 0 0 0 + // bouncing sparks + effect nade_pink_explode + notunderwater + count 8 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 484 + gravity 1 + airfriction 1 + bounce 1.6 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // notbouncing sparks + effect nade_pink_explode + count 16 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 684 + gravity 0.5 + airfriction 0.7 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // derbis + effect nade_pink_explode + notunderwater + count 8 + type smoke + tex 71 73 + color 0xff0000 0xffa2a2 + size 20 40 + alpha 644 956 2500 + originjitter 64 64 64 + velocityjitter 324 324 324 + rotate -180 180 -100 100 + + effect nade_explode + countabsolute 1 + type decal + tex 8 16 + size 88 88 + alpha 256 256 0 + originjitter 26 26 26 + lightradius 300 + lightradiusfade 1500 + lightcolor 100 20 20 + // shockwave + effect nade_explode + type smoke + countabsolute 1 + tex 33 33 + size 32 32 + sizeincrease 2200 + color 0xff0000 0xffa2a2 + alpha 80 80 650 + velocitymultiplier 44 + // fire + effect nade_explode + notunderwater + count 16 + type smoke + color 0xFFFFFF 0xFFFFFF + tex 48 55 + size 20 24 + sizeincrease 555 + alpha 400 656 2000 + airfriction 30 + originjitter 50 50 50 + velocityjitter 320 320 320 + rotate -180 180 -9 9 + // fire streched + effect nade_explode + count 8 + type spark + tex 48 55 + color 0xFFFFFF 0xFFFFFF + size 60 90 + alpha 1500 3000 13000 + stretchfactor 80 + sizeincrease 40 + velocityjitter 30 30 30 + airfriction -9 + //smoke + effect nade_explode + type smoke + count 32 + blend alpha + tex 0 7 + size 60 30 + color 0x222222 0x000000 + alpha 128 328 390 + rotate -180 180 2 -2 + velocityjitter 200 200 200 + velocityoffset 0 0 180 + originjitter 50 50 10 + sizeincrease 50 + airfriction 0.04 + gravity 0.4 + // underwater bubbles + effect nade_explode + underwater + count 32 + type bubble + tex 62 62 + color 0x404040 0x808080 + size 3 6 + alpha 128 256 64 + gravity -0.125 + bounce 1.5 + liquidfriction 0.25 + originjitter 16 16 16 + velocityjitter 196 196 196 + rotate 0 0 0 0 + // bouncing sparks + effect nade_explode + notunderwater + count 8 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 484 + gravity 1 + airfriction 1 + bounce 1.6 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // notbouncing sparks + effect nade_explode + count 16 + type spark + tex 40 40 + color 0xff0000 0xffa2a2 + size 1 2 + alpha 644 956 684 + gravity 0.5 + airfriction 0.7 + liquidfriction 0.8 + velocityoffset 0 0 80 + originjitter 16 16 16 + velocityjitter 424 424 624 + // derbis + effect nade_explode + notunderwater + count 8 + type smoke + tex 71 73 + color 0xff0000 0xffa2a2 + size 20 40 + alpha 644 956 2500 + originjitter 64 64 64 + velocityjitter 324 324 324 + rotate -180 180 -100 100 diff --cc monsters.cfg index 65890643f,000000000..598e25d8b mode 100644,000000..100644 --- a/monsters.cfg +++ b/monsters.cfg @@@ -1,209 -1,0 +1,209 @@@ +// Misc +set g_monsters 1 "Enable monsters (master switch)" +set g_monsters_think_delay 0.1 "Delay between monster think frames" +set g_monsters_skill 1 "Monster skill (affecting some of their attributes). 1 - easy, 2 - medium, 3 - hard, 4 - insane, 5 - nightmare" +set g_monsters_miniboss_chance 5 +set g_monsters_miniboss_healthboost 100 +set g_monsters_forcedrop 0 "Force all monsters to drop this item on death. Use g_monsters_drop_* cvars to change forced drop item" +set g_monsters_drop_time 10 "Amount of time before monster's dropped loot disappears" +set g_monsters_drop_type armor "Type of item to drop when forced. Possible values are: health, armor, ammo" +set g_monsters_drop_size medium "Size of the item monsters drop. Possible health/amor values are: small, medium, large. Possible ammo values are: shells, bullets, cells, rockets" +set g_monsters_owners 1 "Monsters will not attack their owners in team matches if set to 1" +set g_monsters_teams 1 +set g_monsters_spawnshieldtime 2 "Monsters will not take damage for this amount of seconds" +set g_monsters_typefrag 1 +set g_monsters_healthbars 1 "Show health bars above monsters" +set g_monsters_target_range 2000 +set g_monsters_target_infront 0 "Only find targets infront of the monster" +set g_monsters_respawn 1 "Enable monster respawning" +set g_monsters_respawn_delay 20 "Monsters respawn in this amount of seconds" +set g_monsters_score_kill 1 "Get this many points for killing a naturally spawned monster" +set g_monsters_max 20 "Global maximum player-spawned monsters" +set g_monsters_max_perplayer 0 "Maximum monsters per-player" +set g_monsters_skill_easy 2 "Monster easy skill level (used for skill based functions)" +set g_monsters_skill_normal 4 "Monster normal skill level (used for skill based functions)" +set g_monsters_skill_hard 5 "Monster hard skill level (used for skill based functions)" +set g_monsters_skill_insane 7 "Monster insane skill level (used for skill based functions)" +set g_monsters_skill_nightmare 10 "Monster nightmare skill level (used for skill based functions)" + +// Brute +set g_monster_brute 1 "Enable Brutes" +set g_monster_brute_health 200 "Brute health" +set g_monster_brute_chainsaw_damage 15 "Brute chainsaw damage (hits multiple times)" +set g_monster_brute_drop ammo "Brute drops this item on death" +set g_monster_brute_drop_size bullets "Size of the item Brutes drop. Possible values are: small, medium, large" +set g_monster_brute_speed_walk 100 "Brute walk speed" +set g_monster_brute_speed_run 150 "Brute run speed" +set g_monster_brute_attack_uzi_bullets 3 "Number of machine gun bullets Brute fires" +set g_monster_brute_attack_uzi_chance 0.1 "Chance for Brute to fire machine gun" +set g_monster_brute_attack_uzi_damage 10 "Brute machine gun damage per bullet" +set g_monster_brute_attack_uzi_force 5 "Brute machine gun knockback" +set g_monster_brute_attack_grenade_damage 50 "Brute grenade damage" +set g_monster_brute_attack_grenade_edgedamage 25 "Brute grenade indirect hit damage" +set g_monster_brute_attack_grenade_radius 200 "Brute grenade explosion radius" +set g_monster_brute_attack_grenade_force 15 "Brute grenade knockback" + +// Animus +set g_monster_animus 1 "Enable Animuses" +set g_monster_animus_health 300 "Animus health" +set g_monster_animus_attack_jump_damage 40 "Animus jump attack damage" +set g_monster_animus_damage 20 "Animus melee attack damage" +set g_monster_animus_drop health "Animus drops this item on death" +set g_monster_animus_drop_size medium "Size of the item Animuses drop. Possible values are: small, medium, large" +set g_monster_animus_speed_walk 150 "Animus walk speed" +set g_monster_animus_speed_run 300 "Animus run speed" + +// Shambler +set g_monster_shambler 1 "Enable Shamblers" +set g_monster_shambler_health 600 "Shambler health" +set g_monster_shambler_damage 50 "Shambler melee attack damage" +set g_monster_shambler_attack_lightning_damage 20 "Shambler lightning attack damage per frame" +set g_monster_shambler_attack_claw_damage 30 "Shambler claw attack damage" +set g_monster_shambler_drop health "Shambler drops this item on death" +set g_monster_shambler_drop_size large "Size of the item Shamblers drop. Possible values are: small, medium, large" +set g_monster_shambler_speed_walk 100 "Shambler walk speed" +set g_monster_shambler_speed_run 150 "Shambler run speed" + +// Bruiser +set g_monster_bruiser 1 "Enable Bruisers" +set g_monster_bruiser_health 75 "Bruiser Health" +set g_monster_bruiser_drop armor "Bruiser drops this item on death" +set g_monster_bruiser_drop_size medium "Size of the item Bruisers drop. Possible values are: small, medium, large" +set g_monster_bruiser_melee_damage 20 "Bruiser melee attack damage" +set g_monster_bruiser_melee_side_damage 10 "Bruiser melee attack side damage" +set g_monster_bruiser_speed_walk 40 "Bruiser walk speed" +set g_monster_bruiser_speed_run 70 "Bruiser run speed" + +// Wyvern +set g_monster_wyvern 1 "Enable Wyverns" +set g_monster_wyvern_health 80 "Wyvern health" +set g_monster_wyvern_drop ammo "Wyvern drops this item on death" +set g_monster_wyvern_drop_size cells "Size of the item Wyverns drop. Possible values are: small, medium, large" +set g_monster_wyvern_speed_walk 40 "Wyvern walk speed" +set g_monster_wyvern_speed_run 70 "Wyvern run speed" +set g_monster_wyvern_fireball_damagetime 3 "How long the enemy will burn if it's within fireball radius" +set g_monster_wyvern_fireball_damage 30 "Wyvern fireball projectile damage" +set g_monster_wyvern_fireball_edgedamage 20 "Wyvern fireball indirect hit damage" +set g_monster_wyvern_fireball_force 50 "Wyvern fireball projectile push force" +set g_monster_wyvern_fireball_radius 70 "Wyvern fireball projectile damage radius" +set g_monster_wyvern_fireball_speed 400 "Wyvern fireball projectile speed" + +// Cerberus +set g_monster_cerberus 1 "Enable Cerberuses" +set g_monster_cerberus_health 25 "Cerberus health" +set g_monster_cerberus_bite_damage 15 "Cerberus bite attack damage" +set g_monster_cerberus_attack_jump_damage 30 "Cerberus jump attack damage" +set g_monster_cerberus_drop health "Cerberus drops this item on death" +set g_monster_cerberus_drop_size small "Size of the item Cerberuss drop. Possible values are: small, medium, large" +set g_monster_cerberus_speed_walk 60 "Cerberus walk speed" +set g_monster_cerberus_speed_run 120 "Cerberus run speed" + +// Slime +set g_monster_slime 1 "Enable Slime" +set g_monster_slime_health 80 "Slime health" +set g_monster_slime_drop ammo "Slime drops this item when it explodes" +set g_monster_slime_drop_size rockets "Size of the item Slime drops. Possible values are: small, medium, large" +set g_monster_slime_speed_walk 20 "Slime walk speed" +set g_monster_slime_speed_run 30 "Slime run speed" + +// Knight +set g_monster_knight 1 "Enable Knights" +set g_monster_knight_health 250 "Knight health" +set g_monster_knight_drop armor "Knight drops this item on death" +set g_monster_knight_drop_size medium "Size of the item Knights drop. Possible values are: small, medium, large" +set g_monster_knight_inferno_damage 40 "Knight inferno damage" +set g_monster_knight_inferno_chance 0.4 "Knight inferno attack chance" +set g_monster_knight_inferno_damagetime 3 "How long the inferno should burn the player" +set g_monster_knight_fireball_damage 30 "Knight fireball projectile damage" +set g_monster_knight_fireball_edgedamage 10 "Knight fireball indirect hit damage" +set g_monster_knight_fireball_force 50 "Knight fireball projectile push force" +set g_monster_knight_fireball_radius 70 "Knight fireball projectile damage radius" +set g_monster_knight_fireball_speed 600 "Knight fireball projectile speed" +set g_monster_knight_fireball_spread 0 "Knight fireball projectile spread" +set g_monster_knight_fireball_chance 0.3 "Chance for Knight to throw a fireball" +set g_monster_knight_jump_chance 0.2 "Chance for Knight to jump at the player (always 1 if enemy is further than _dist)" +set g_monster_knight_jump_damage 25 "Knight jump attack damage" +set g_monster_knight_jump_dist 500 "Knight will prioritise jumping if the enemy is this far away" +set g_monster_knight_melee_damage 20 "Knight melee attack damage" +set g_monster_knight_spike_damage 5 "Knight spike projectile damage" +set g_monster_knight_spike_edgedamage 5 "Knight spike projectile indirect hit damage" +set g_monster_knight_spike_radius 20 "Knight spike projectile damage radius" +set g_monster_knight_spike_force 5 "Knight spike projectile force" +set g_monster_knight_spike_chance 0.5 "Knight spike attack chance" +set g_monster_knight_speed_walk 75 "Knight walk speed" +set g_monster_knight_speed_run 150 "Knight run speed" + +// Stingray +set g_monster_stingray 1 "Enable Stingray" +set g_monster_stingray_health 25 "Stingray health" +set g_monster_stingray_damage 10 "Stingray bite attack damage" +set g_monster_stingray_drop health "Stingray drops this item on death" +set g_monster_stingray_drop_size small "Size of the item Stingray drop. Possible values are: small, medium, large" +set g_monster_stingray_speed_walk 40 "Stingray walk speed" +set g_monster_stingray_speed_run 70 "Stingray run speed" + +// Mage +set g_monster_mage 1 "Enable Mages" +set g_monster_mage_health 200 "Mage health" +set g_monster_mage_drop health "Mage drops this item on death" +set g_monster_mage_drop_size medium "Size of the item Mages drop. Possible values are: small, medium, large" +set g_monster_mage_speed 50 "Mage move speed" +set g_monster_mage_attack_spike_damage 30 "Mage homing spike explosion damage" +set g_monster_mage_attack_spike_radius 60 "Mage homing spike explosion radius" +set g_monster_mage_attack_spike_delay 2 "Delay between Mage homing spike attacks" +set g_monster_mage_attack_melee_damage 30 "Mage magic attack damage" +set g_monster_mage_attack_melee_delay 0.7 "Delay between Mage melee attacks" +set g_monster_mage_heal_self 35 "Amount of health Mage will regenerate every attack when its low on health" +set g_monster_mage_heal_friends 15 "Amount of health Mage will regenerate nearby friends" +set g_monster_mage_heal_minhealth 250 "Health limit below which Mage will try to heal itself" +set g_monster_mage_heal_range 200 "Maximum healing distance" +set g_monster_mage_heal_delay 1.5 "Delay between healing bursts" +set g_monster_mage_shield_blockpercent 40 "% of damage inflicted on Mage if using a force field" +set g_monster_mage_shield_delay 7 "Refire for Mage force shield" +set g_monster_mage_shield_time 3 "Amount of time Mage force field lasts" +set g_monster_mage_attack_grenade_damage 25 "Mage fake item grenade attack damage" +set g_monster_mage_attack_grenade_edgedamage 20 "Mage fake item grenade attack edge damage" +set g_monster_mage_attack_grenade_radius 100 "Mage fake item grenade attack explosion radius" +set g_monster_mage_attack_grenade_lifetime 5 "Mage fake item grenade life time" +set g_monster_mage_attack_grenade_speed 150 "Mage fake item grenade forward speed" +set g_monster_mage_attack_grenade_speed_up 95 "Mage fake item grenade upwards speed" +set g_monster_mage_attack_grenade_speed_z 0 "Mage fake item grenade speed angle" +set g_monster_mage_attack_grenade_spread 0 "Mage fake item grenade spread" +set g_monster_mage_attack_grenade_force 170 "Mage fake item grenade damage knockback" +set g_monster_mage_attack_grenade_chance 30 "% chance of Mage attack being fake item grenade" + +// Zombie +set g_monster_zombie 1 "Enable Zombies" - set g_monster_zombie_attack_leap_damage 45 "Damage when zombie performs an attack leap" ++set g_monster_zombie_attack_leap_damage 50 "Damage when zombie performs an attack leap" +set g_monster_zombie_attack_leap_delay 1.5 "Delay after zombie attack leap" +set g_monster_zombie_attack_leap_force 55 "Force of zombie attack leap" +set g_monster_zombie_attack_leap_range 96 "Range of zombie attack leap" +set g_monster_zombie_attack_leap_speed 500 "The speed of a zombie attack leap" - set g_monster_zombie_attack_stand_damage 35 "Damage when zombie hits from a standing position" ++set g_monster_zombie_attack_stand_damage 40 "Damage when zombie hits from a standing position" +set g_monster_zombie_attack_stand_delay 1.2 "Delay after a zombie hits from a standing position" +set g_monster_zombie_attack_stand_range 48 "Range of a zombie standing position attack" - set g_monster_zombie_health 200 "Zombie health" ++set g_monster_zombie_health 150 "Zombie health" +set g_monster_zombie_speed_walk 150 "Zombie walk speed" +set g_monster_zombie_speed_run 400 "Zombie run speed" +set g_monster_zombie_stopspeed 100 "Speed at which zombie stops" +set g_monster_zombie_drop health "Zombie drops this item on death" +set g_monster_zombie_drop_size large "Size of the item zombies drop. Possible values are: small, medium, large" + +// Spider +set g_monster_spider 1 "Enable Spiders" +set g_monster_spider_attack_type 0 "Spider attack type (0 = ice, 1 = fire, ...)" +set g_monster_spider_attack_leap_delay 1.5 "Delay after spider attack leap" +set g_monster_spider_attack_stand_damage 35 "Damage when spider hits from a standing position" +set g_monster_spider_attack_stand_delay 1.2 "Delay after a spider hits from a standing position" +set g_monster_spider_attack_fire_time 2 "Spider fire attack burn time" +set g_monster_spider_attack_web_speed 1000 "Spider web fly speed" +set g_monster_spider_attack_web_speed_up 150 "Spider web upwards fly speed" +set g_monster_spider_attack_web_spread 0 "Spider web spread" +set g_monster_spider_attack_web_speed_z 0 "Spider web upwards angle" +set g_monster_spider_health 200 "Spider health" +set g_monster_spider_idle_timer_min 1 "Minimum time a spider can stay idle" +set g_monster_spider_speed_walk 150 "Spider walk speed" +set g_monster_spider_speed_run 400 "Spider run speed" +set g_monster_spider_stopspeed 100 Speed at which spider stops" +set g_monster_spider_drop health "Spider drops this item on death" +set g_monster_spider_drop_size large "Size of the item spiders drop. Possible values are: small, medium, large" diff --cc qcsrc/common/constants.qh index 7b403ddd1,1a70b341d..22ba6a56f --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@@ -363,8 -355,17 +363,19 @@@ float PROJECTILE_WAKICANNON = 29 float PROJECTILE_BUMBLE_GUN = 30; float PROJECTILE_BUMBLE_BEAM = 31; +float PROJECTILE_MAGE_SPIKE = 32; + + float PROJECTILE_NADE_RED = 50; + float PROJECTILE_NADE_RED_BURN = 51; + float PROJECTILE_NADE_BLUE = 52; + float PROJECTILE_NADE_BLUE_BURN = 53; + float PROJECTILE_NADE_YELLOW = 54; + float PROJECTILE_NADE_YELLOW_BURN = 55; + float PROJECTILE_NADE_PINK = 56; + float PROJECTILE_NADE_PINK_BURN = 57; + float PROJECTILE_NADE = 58; + float PROJECTILE_NADE_BURN = 59; + float SPECIES_HUMAN = 0; float SPECIES_ROBOT_SOLID = 1; float SPECIES_ALIEN = 2; diff --cc qcsrc/common/deathtypes.qh index 7ae83f802,48a269b1a..2a1ba096a --- a/qcsrc/common/deathtypes.qh +++ b/qcsrc/common/deathtypes.qh @@@ -15,29 -15,7 +15,30 @@@ DEATHTYPE(DEATH_KILL, DEATH_SELF_SUICIDE, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_LAVA, DEATH_SELF_LAVA, DEATH_MURDER_LAVA, NORMAL_POS) \ DEATHTYPE(DEATH_MIRRORDAMAGE, DEATH_SELF_BETRAYAL, NO_MSG, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_CERBERUS_BITE, DEATH_SELF_MON_CERBERUS_BITE, DEATH_MURDER_MONSTER, DEATH_MONSTER_FIRST) \ + DEATHTYPE(DEATH_MONSTER_CERBERUS_JUMP, DEATH_SELF_MON_CERBERUS_JUMP, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_ANIMUS, DEATH_SELF_MON_ANIMUS, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_STINGRAY, DEATH_SELF_MON_STINGRAY, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_KNIGHT_CRUSH, DEATH_SELF_MON_KNIGHT_CRUSH, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_KNIGHT_FBALL, DEATH_SELF_MON_KNIGHT_FBALL, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_KNIGHT_INFERNO, DEATH_SELF_MON_KNIGHT_INFERNO, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_KNIGHT_MELEE, DEATH_SELF_MON_KNIGHT_MELEE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_KNIGHT_SPIKE, DEATH_SELF_MON_KNIGHT_SPIKE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_BRUISER, DEATH_SELF_MON_BRUISER, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_BRUTE_BLADE, DEATH_SELF_MON_BRUTE_BLADE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_BRUTE_GRENADE, DEATH_SELF_MON_BRUTE_GRENADE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_BRUTE_UZI, DEATH_SELF_MON_BRUTE_UZI, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_MAGE, DEATH_SELF_MON_MAGE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_CLAW, DEATH_SELF_MON_SHAMBLER_CLAW, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_SMASH, DEATH_SELF_MON_SHAMBLER_SMASH, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_ZAP, DEATH_SELF_MON_SHAMBLER_ZAP, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SPIDER, DEATH_SELF_MON_SPIDER, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SPIDER_FIRE, DEATH_SELF_MON_SPIDER_FIRE, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SLIME, DEATH_SELF_MON_SLIME, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_WYVERN, DEATH_SELF_MON_WYVERN, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_ZOMBIE_JUMP, DEATH_SELF_MON_ZOMBIE_JUMP, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_ZOMBIE_MELEE, DEATH_SELF_MON_ZOMBIE_MELEE, DEATH_MURDER_MONSTER, DEATH_MONSTER_LAST) \ + DEATHTYPE(DEATH_NADE, DEATH_SELF_NADE, DEATH_MURDER_NADE, NORMAL_POS) \ DEATHTYPE(DEATH_NOAMMO, DEATH_SELF_NOAMMO, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_ROT, DEATH_SELF_ROT, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_SHOOTING_STAR, DEATH_SELF_SHOOTING_STAR, DEATH_MURDER_SHOOTING_STAR, NORMAL_POS) \ diff --cc qcsrc/common/notifications.qh index e941fe064,1ad03e59b..45ae5d18d --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@@ -263,7 -263,7 +263,8 @@@ void Send_Notification_WOVA MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_FALL, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_fall", _("^BG%s%s^K1 was grounded by ^BG%s^K1%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_FIRE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s\n"), _("^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s\n")) \ MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_LAVA, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_lava", _("^BG%s%s^K1 was cooked by ^BG%s^K1%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_MONSTER, 3, 2, "spree_inf s1 s2 s3loc spree_end", "", "", _("^BG%s%s^K1 was pushed infront of a monster by ^BG%s^K1%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_NADE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SHOOTING_STAR, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_shootingstar", _("^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SLIME, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was slimed by ^BG%s^K1%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_MURDER_SWAMP, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was preserved by ^BG%s^K1%s%s\n"), "") \ @@@ -292,29 -292,7 +293,30 @@@ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_FIRE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 became a bit too crispy%s%s\n"), _("^BG%s^K1 felt a little hot%s%s\n")) \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_GENERIC, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 died%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_LAVA, 2, 1, "s1 s2loc spree_lost", "s1", "notify_lava", _("^BG%s^K1 turned into hot slag%s%s\n"), _("^BG%s^K1 found a hot place%s%s\n")) \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_CERBERUS_BITE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was mauled by a Cerberus%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_CERBERUS_JUMP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 didn't see the pouncing Cerberus%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ANIMUS, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was eviscerated by an Animus%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_STINGRAY, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was fatally wounded by a Stingray%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_CRUSH, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was crushed by a pouncing Knight%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_FBALL, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was turned to ash by a Knight%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_INFERNO, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was burned to death by a Knight%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_MELEE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was slain by a Knight%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_SPIKE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was cursed by a Knight%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUISER, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was beaten in a fistfight by a Bruiser%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_BLADE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was cut down by a Brute%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_GRENADE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 almost dodged a Brute's grenade%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_UZI, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was nailed by a Brute%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MAGE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was exploded by a Mage%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_CLAW, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1's innards became outwards by a Shambler%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Shambler%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Shambler%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was bitten by a Spider%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER_FIRE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was incinerated by a Spider%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SLIME, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blown up by a Slime%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_WYVERN, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was fireballed by a Wyvern%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ZOMBIE_JUMP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 joins the Zombies%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ZOMBIE_MELEE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was given kung fu lessons by a Zombie%s%s\n"), "") \ + MSG_INFO_NOTIF(1, INFO_DEATH_SELF_NADE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 mastered the art of self-nading%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_NOAMMO, 2, 1, "s1 s2loc spree_lost", "s1", "notify_outofammo", _("^BG%s^K1 died%s%s. What's the point of living without ammo?\n"), _("^BG%s^K1 ran out of ammo%s%s\n")) \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_ROT, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 rotted away%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_SHOOTING_STAR, 2, 1, "s1 s2loc spree_lost", "s1", "notify_shootingstar", _("^BG%s^K1 became a shooting star%s%s\n"), "") \ @@@ -498,7 -478,7 +503,8 @@@ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_FIRE, 0, 0, "", NO_CPID, "0 0", _("^K1You got a little bit too crispy!"), _("^K1You felt a little too hot!")) \ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_GENERIC, 0, 0, "", NO_CPID, "0 0", _("^K1You killed your own dumb self!"), _("^K1You need to be more careful!")) \ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_LAVA, 0, 0, "", NO_CPID, "0 0", _("^K1You couldn't stand the heat!"), "") \ + MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_MONSTER, 0, 0, "", NO_CPID, "0 0", _("^K1You were killed by a monster!"), _("^K1You need to watch out for monsters!")) \ + MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_NADE, 0, 0, "", NO_CPID, "0 0", _("^K1You forgot to put the pin back in!"), _("^K1Tastes like chicken!")) \ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_NOAMMO, 0, 0, "", NO_CPID, "0 0", _("^K1You were killed for running out of ammo..."), _("^K1You are respawning for running out of ammo...")) \ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_ROT, 0, 0, "", NO_CPID, "0 0", _("^K1You grew too old without taking your medicine"), _("^K1You need to preserve your health")) \ MSG_CENTER_NOTIF(1, CENTER_DEATH_SELF_SHOOTING_STAR, 0, 0, "", NO_CPID, "0 0", _("^K1You became a shooting star!"), "") \ @@@ -587,7 -568,7 +594,8 @@@ MSG_MULTI_NOTIF(1, DEATH_MURDER_FALL, NO_MSG, INFO_DEATH_MURDER_FALL, NO_MSG) \ MSG_MULTI_NOTIF(1, DEATH_MURDER_FIRE, NO_MSG, INFO_DEATH_MURDER_FIRE, NO_MSG) \ MSG_MULTI_NOTIF(1, DEATH_MURDER_LAVA, NO_MSG, INFO_DEATH_MURDER_LAVA, NO_MSG) \ + MSG_MULTI_NOTIF(1, DEATH_MURDER_MONSTER, NO_MSG, INFO_DEATH_MURDER_MONSTER, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_MURDER_NADE, NO_MSG, INFO_DEATH_MURDER_NADE, NO_MSG) \ MSG_MULTI_NOTIF(1, DEATH_MURDER_SHOOTING_STAR, NO_MSG, INFO_DEATH_MURDER_SHOOTING_STAR, NO_MSG) \ MSG_MULTI_NOTIF(1, DEATH_MURDER_SLIME, NO_MSG, INFO_DEATH_MURDER_SLIME, NO_MSG) \ MSG_MULTI_NOTIF(1, DEATH_MURDER_SWAMP, NO_MSG, INFO_DEATH_MURDER_SWAMP, NO_MSG) \ @@@ -616,29 -597,7 +624,30 @@@ MSG_MULTI_NOTIF(1, DEATH_SELF_FIRE, NO_MSG, INFO_DEATH_SELF_FIRE, CENTER_DEATH_SELF_FIRE) \ MSG_MULTI_NOTIF(1, DEATH_SELF_GENERIC, NO_MSG, INFO_DEATH_SELF_GENERIC, CENTER_DEATH_SELF_GENERIC) \ MSG_MULTI_NOTIF(1, DEATH_SELF_LAVA, NO_MSG, INFO_DEATH_SELF_LAVA, CENTER_DEATH_SELF_LAVA) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_CERBERUS_BITE, NO_MSG, INFO_DEATH_SELF_MON_CERBERUS_BITE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_CERBERUS_JUMP, NO_MSG, INFO_DEATH_SELF_MON_CERBERUS_JUMP, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ANIMUS, NO_MSG, INFO_DEATH_SELF_MON_ANIMUS, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_STINGRAY, NO_MSG, INFO_DEATH_SELF_MON_STINGRAY, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_CRUSH, NO_MSG, INFO_DEATH_SELF_MON_KNIGHT_CRUSH, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_FBALL, NO_MSG, INFO_DEATH_SELF_MON_KNIGHT_FBALL, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_INFERNO, NO_MSG, INFO_DEATH_SELF_MON_KNIGHT_INFERNO, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_MELEE, NO_MSG, INFO_DEATH_SELF_MON_KNIGHT_MELEE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_SPIKE, NO_MSG, INFO_DEATH_SELF_MON_KNIGHT_SPIKE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUISER, NO_MSG, INFO_DEATH_SELF_MON_BRUISER, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_BLADE, NO_MSG, INFO_DEATH_SELF_MON_BRUTE_BLADE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_GRENADE, NO_MSG, INFO_DEATH_SELF_MON_BRUTE_GRENADE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_UZI, NO_MSG, INFO_DEATH_SELF_MON_BRUTE_UZI, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MAGE, NO_MSG, INFO_DEATH_SELF_MON_MAGE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_CLAW, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_CLAW, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_SMASH, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_ZAP, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER, NO_MSG, INFO_DEATH_SELF_MON_SPIDER, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER_FIRE, NO_MSG, INFO_DEATH_SELF_MON_SPIDER_FIRE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SLIME, NO_MSG, INFO_DEATH_SELF_MON_SLIME, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_WYVERN, NO_MSG, INFO_DEATH_SELF_MON_WYVERN, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ZOMBIE_JUMP, NO_MSG, INFO_DEATH_SELF_MON_ZOMBIE_JUMP, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ZOMBIE_MELEE, NO_MSG, INFO_DEATH_SELF_MON_ZOMBIE_MELEE, CENTER_DEATH_SELF_MONSTER) \ + MSG_MULTI_NOTIF(1, DEATH_SELF_NADE, NO_MSG, INFO_DEATH_SELF_NADE, CENTER_DEATH_SELF_NADE) \ MSG_MULTI_NOTIF(1, DEATH_SELF_NOAMMO, NO_MSG, INFO_DEATH_SELF_NOAMMO, CENTER_DEATH_SELF_NOAMMO) \ MSG_MULTI_NOTIF(1, DEATH_SELF_ROT, NO_MSG, INFO_DEATH_SELF_ROT, CENTER_DEATH_SELF_ROT) \ MSG_MULTI_NOTIF(1, DEATH_SELF_SHOOTING_STAR, NO_MSG, INFO_DEATH_SELF_SHOOTING_STAR, CENTER_DEATH_SELF_SHOOTING_STAR) \ diff --cc qcsrc/server/autocvars.qh index 38e0f0cdf,3d640de5d..78d84d450 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@@ -1259,8 -1234,26 +1259,31 @@@ float autocvar_g_touchexplode_radius float autocvar_g_touchexplode_damage; float autocvar_g_touchexplode_edgedamage; float autocvar_g_touchexplode_force; +float autocvar_g_invasion_round_timelimit; +float autocvar_g_invasion_round_limit; +float autocvar_g_invasion_warmup; +float autocvar_g_invasion_monster_count; +float autocvar_g_invasion_zombies_only; + #define autocvar_g_bloodloss cvar("g_bloodloss") + float autocvar_g_random_gravity_negative_chance; + float autocvar_g_random_gravity_min; + float autocvar_g_random_gravity_max; + float autocvar_g_random_gravity_positive; + float autocvar_g_random_gravity_negative; + float autocvar_g_random_gravity_delay; + float autocvar_g_nades; + float autocvar_g_nades_spawn; + float autocvar_g_nades_nade_lifetime; + float autocvar_g_nades_nade_minforce; + float autocvar_g_nades_nade_maxforce; + float autocvar_g_nades_nade_health; + float autocvar_g_nades_nade_refire; + float autocvar_g_nades_nade_damage; + float autocvar_g_nades_nade_edgedamage; + float autocvar_g_nades_nade_radius; + float autocvar_g_nades_nade_force; + float autocvar_g_nades_nade_newton_style; + float autocvar_g_campcheck_damage; + float autocvar_g_campcheck_distance; + float autocvar_g_campcheck_interval; + float autocvar_g_jump_grunt; diff --cc qcsrc/server/cl_client.qc index 41f8f9117,d7ca62ba0..70811e6fe --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@@ -2374,11 -2346,9 +2365,9 @@@ void PlayerPreThink (void float do_crouch = self.BUTTON_CROUCH; if(self.hook.state) do_crouch = 0; - if(self.health <= g_bloodloss) - do_crouch = 1; if(self.vehicle) do_crouch = 0; - if(self.freezetag_frozen) + if(self.frozen) do_crouch = 0; if(self.weapon == WEP_SHOTGUN && self.weaponentity.wframe == WFRAME_FIRE2 && time < self.weapon_nextthink) do_crouch = 0; diff --cc qcsrc/server/cl_physics.qc index 4af0fdb43,a7051ff14..77d235701 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@@ -23,13 -19,16 +19,19 @@@ When you press the jump ke */ void PlayerJump (void) { + if(self.frozen) + return; // no jumping in freezetag when frozen ++ + float doublejump = FALSE; - float mjumpheight; - float doublejump; + player_multijump = doublejump; + if(MUTATOR_CALLHOOK(PlayerJump)) + return; + + doublejump = player_multijump; - doublejump = FALSE; + float mjumpheight; + if (autocvar_sv_doublejump) { tracebox(self.origin + '0 0 0.01', self.mins, self.maxs, self.origin - '0 0 0.01', MOVE_NORMAL, self); @@@ -847,12 -784,6 +787,19 @@@ void SV_PlayerPhysics( self.disableclientprediction = 0; if(time < self.ladder_time) self.disableclientprediction = 1; + + if(self.frozen) + { - self.movement = '0 0 0'; ++ if(autocvar_sv_dodging_frozen && IS_REAL_CLIENT(self)) ++ { ++ self.movement_x = bound(-5, self.movement_x, 5); ++ self.movement_y = bound(-5, self.movement_y, 5); ++ self.movement_z = bound(-5, self.movement_z, 5); ++ } ++ else ++ self.movement = '0 0 0'; + self.disableclientprediction = 1; + } MUTATOR_CALLHOOK(PlayerPhysics); diff --cc qcsrc/server/mutators/gamemode_freezetag.qc index 325b6c29c,0c22db05b..ead918c44 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@@ -477,10 -519,39 +477,21 @@@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPr return 1; } -MUTATOR_HOOKFUNCTION(freezetag_PlayerPhysics) -{ - if(self.freezetag_frozen) - { - if(autocvar_sv_dodging_frozen && IS_REAL_CLIENT(self)) - { - self.movement_x = bound(-5, self.movement_x, 5); - self.movement_y = bound(-5, self.movement_y, 5); - self.movement_z = bound(-5, self.movement_z, 5); - } - else - self.movement = '0 0 0'; - - self.disableclientprediction = 1; - } - return 1; -} - MUTATOR_HOOKFUNCTION(freezetag_PlayerDamage_Calculate) { - if(frag_target.freezetag_frozen && frag_deathtype != DEATH_HURTTRIGGER) + if(frag_target.frozen == 1 && frag_deathtype != DEATH_HURTTRIGGER) { + if(autocvar_g_freezetag_revive_falldamage > 0) + if(frag_deathtype == DEATH_FALL) + if(frag_damage >= autocvar_g_freezetag_revive_falldamage) + { + freezetag_Unfreeze(frag_target); + frag_target.health = autocvar_g_freezetag_revive_falldamage_health; + pointparticles(particleeffectnum("iceorglass"), frag_target.origin, '0 0 0', 3); + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_FREEZETAG_REVIVED_FALL, frag_target.netname); + Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_FREEZETAG_REVIVE_FALL); + } + frag_damage = 0; frag_force = frag_force * autocvar_g_freezetag_frozen_force; } diff --cc qcsrc/server/mutators/mutator_dodging.qc index 1d6dd911e,263df8225..4ef9406d8 --- a/qcsrc/server/mutators/mutator_dodging.qc +++ b/qcsrc/server/mutators/mutator_dodging.qc @@@ -39,6 -33,10 +33,10 @@@ MUTATOR_HOOKFUNCTION(dodging_PlayerPhys float new_velocity_gain; float velocity_difference; float clean_up_and_do_nothing; + float horiz_speed = autocvar_sv_dodging_horiz_speed; + - if(self.freezetag_frozen) ++ if(self.frozen) + horiz_speed = autocvar_sv_dodging_horiz_speed_frozen; if (self.deadflag != DEAD_NO) return 0; @@@ -170,6 -168,9 +168,9 @@@ MUTATOR_HOOKFUNCTION(dodging_GetPressed tap_direction_x = 0; tap_direction_y = 0; + + float frozen_dodging; - frozen_dodging = (self.freezetag_frozen && autocvar_sv_dodging_frozen); ++ frozen_dodging = (self.frozen && autocvar_sv_dodging_frozen); float dodge_detected; if (g_dodging == 0) diff --cc qcsrc/server/progs.src index 7fc907d95,e9e9a4b8c..d446d1bd3 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@@ -45,8 -45,8 +45,9 @@@ mutators/gamemode_keyhunt.qh // TODO fi mutators/gamemode_keepaway.qh mutators/gamemode_nexball.qh mutators/gamemode_lms.qh +mutators/gamemode_invasion.qh mutators/mutator_dodging.qh + mutators/mutator_nades.qh //// tZork Turrets //// tturrets/include/turrets_early.qh diff --cc scripts/shaderlist.txt index 8082c886f,366f24c6d..831a6673f --- a/scripts/shaderlist.txt +++ b/scripts/shaderlist.txt @@@ -14,5 -14,4 +14,6 @@@ tre tuba turrets weapons +barricade +monsters + ok_nade_counter