From 965e3cdc58fa6fa35cc70e33f193e4ca71dd55b1 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 31 Mar 2021 11:25:20 -0400 Subject: [PATCH 01/11] Update --- Classic/scripts/autoexec/zzDiscordBot.cs | 79 +++++++++++++++++++----- 1 file changed, 63 insertions(+), 16 deletions(-) diff --git a/Classic/scripts/autoexec/zzDiscordBot.cs b/Classic/scripts/autoexec/zzDiscordBot.cs index 73fae99..d94c094 100644 --- a/Classic/scripts/autoexec/zzDiscordBot.cs +++ b/Classic/scripts/autoexec/zzDiscordBot.cs @@ -4,13 +4,16 @@ //exec("scripts/autoexec/zzDiscordBot.cs"); -$discordBot::AuthKey[0] = ""; -$discordBot::IP[0] = ""; +//note first channel is for monitoring +$discordBot::discordCHID = ""; +$discordBot::IP = ""; $discordBot::reconnectTimeout = 3 * 60000; -$discordBot::AuthSet = 0; $discordBot::autoStart = 1; - - +//used on the bot to help split thigns up +$discordBot::cmdSplit = "%cmd%"; +//These correspond with $discordBot::discordCHID +$discordBot::monitorChannel = 1; +$discordBot::serverFeed = 2; package discordPackage { @@ -40,7 +43,7 @@ function messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8 %message = strreplace(%message,"%7",getTaggedString(%a7)); %message = strreplace(%message,"%8",getTaggedString(%a8)); %message = stripChars(%message, "\cp\co\c0\c6\c7\c8\c9"); - sendToDiscord(%message,2); + sendToDiscordEmote(%message, $discordBot::serverFeed); } } @@ -104,7 +107,7 @@ function discordBotProcess(%type, %var1, %var2, %var3, %var4, %var5, %var6) if(%msg !$= "") { %msg = stripChars(%msg, "\cp\co\c0\c6\c7\c8\c9"); - sendToDiscord(%msg, 2); + sendToDiscordEmote(%msg, $discordBot::serverFeed); } } @@ -183,11 +186,11 @@ function dtEventLog(%log, %save) { parent::dtEventLog(%log, %save); if(discord.lastState $= "Connected") - sendToDiscord(%log, 1); + sendToDiscord(%log, $discordBot::monitorChannel); } function LogMessage(%client, %msg, %cat){ if(discord.lastState $= "Connected") - sendToDiscord("Message" SPC %client.nameBase SPC %msg, 1); + sendToDiscord("Message" SPC %client.nameBase SPC %msg, $discordBot::monitorChannel); parent::LogMessage(%client, %msg, %cat); } @@ -202,11 +205,20 @@ function sendToDiscord(%msg,%channel) { if(discord.lastState $= "Connected") { - discord.send("MSG" SPC (%channel-1) SPC %msg @ "\r\n"); + discord.send("MSG" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ %msg @ "\r\n"); + } + } +} +function sendToDiscordEmote(%msg,%channel)//emote filter will be applyed used in server feed +{ + if(isObject(discord) && %msg !$= "") + { + if(discord.lastState $= "Connected") + { + discord.send("MSGE" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ %msg @ "\r\n"); } } } - function discordCon(){ if(discord.lastState !$= "Connected"){ if(isEventPending($discordBot::reconnectEvent)) @@ -215,7 +227,7 @@ function discordCon(){ discord.delete(); new TCPObject(discord); discord.lastState = "Connecting"; - discord.connect($discordBot::IP[$discordBot::AuthSet]); + discord.connect($discordBot::IP); } } function discordKill(){ @@ -246,7 +258,7 @@ function discord::onDNSResolved(%this){ function discord::onConnected(%this){ %this.lastState = "Connected"; error(%this.lastState); - discord.send("AUTH" SPC $discordBot::AuthKey[$discordBot::AuthSet] @ "\r\n"); + discord.send("AUTH" @ $discordBot::cmdSplit @ $discordBot::discordCHID @ $discordBot::cmdSplit @ $Host::GameName @ "\r\n"); } function discord::onDisconnect(%this){ @@ -265,9 +277,44 @@ function discord::onLine(%this, %line){ //case "Discord": //messageAll( 'MsgDiscord', '\c3Discord: \c4%1 %2',getWord(%lineStrip,1),getWords(%lineStrip,2,getWordCount(%lineStrip) -1)); case "PING": - discord.send("PONG" @ "\r\n"); - case "PINGX": - discord.send("PINGY" @ "\r\n"); + discord.send("PONG" @ $discordBot::cmdSplit @ "\r\n"); + case "PINGAVG": + %min = 10000; + %max = -10000; + for(%i = 0; %i < ClientGroup.getCount(); %i++){ + %cl = ClientGroup.getObject(%i); + %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); + %min = (%ping < %min) ? %ping : %min; + %max = (%ping > %max) ? %ping : %max; + if(%ping < 250){ + %lowCount++; + %lowPing += %ping; + } + %pc++; + %pingT += %ping; + } + %lowCount = %lowPing = (%lowCount == 0) ? 1 : %lowCount; + if(!%pc){ + sendToDiscord("Ping AVG:" @ 0 SPC "Low Avg:" @ 0 SPC "Min:" @ 0 SPC "Max:" @ 0, $discordBot::monitorChannel); + } + else{ + %avg = mFloor(%pingT/%pc); + %lavg = mFloor(%lowPing/%lowCount); + sendToDiscord("Ping AVG:" @ %avg SPC "Low Avg:" @ %lavg SPC "Min:" @ %min SPC "Max:" @ %max, $discordBot::monitorChannel); + } + case "PINGLIST": + if(isObject(discord) && discord.lastState $= "Connected"){ + %channel = 1; + if(ClientGroup.getCount() > 0){ + for(%i = 0; %i < ClientGroup.getCount(); %i++){ + %cl = ClientGroup.getObject(%i); + %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); + %msg = %cl.namebase @ "-" @ %ping @ "-" @ %i; + discord.schedule(%i*32,"send","MSGSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ %msg @ "\r\n"); + } + discord.schedule((%i+1)*32,"send","PROCSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ "MessageEmbed" @ "\r\n"); + } + } default: error("Bad Command" SPC %line); } From 74eca1008c24e207a9a53c2a1323ee3697665c04 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 31 Mar 2021 12:25:01 -0400 Subject: [PATCH 02/11] Fixes --- Classic/scripts/autoexec/zzDiscordBot.cs | 149 ++++++++++++----------- 1 file changed, 77 insertions(+), 72 deletions(-) diff --git a/Classic/scripts/autoexec/zzDiscordBot.cs b/Classic/scripts/autoexec/zzDiscordBot.cs index d94c094..a8f758d 100644 --- a/Classic/scripts/autoexec/zzDiscordBot.cs +++ b/Classic/scripts/autoexec/zzDiscordBot.cs @@ -11,6 +11,7 @@ $discordBot::reconnectTimeout = 3 * 60000; $discordBot::autoStart = 1; //used on the bot to help split thigns up $discordBot::cmdSplit = "%cmd%"; +$discordBot::cmdSubSplit = "%tab%"; //These correspond with $discordBot::discordCHID $discordBot::monitorChannel = 1; $discordBot::serverFeed = 2; @@ -28,11 +29,12 @@ package discordPackage function messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10, %a11, %a12, %a13) { parent::messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10, %a11, %a12, %a13); - %type = getTaggedString(%msgType); + %type = getTaggedString(%msgType); switch$(%type) { case "msgExplosionKill" or "msgSuicide" or "msgVehicleSpawnKill" or "msgVehicleCrash" or "msgVehicleKill" or "msgTurretSelfKill" or "msgTurretSelfKill" or "msgCTurretKill" or "msgTurretKill" or - "msgSelfKill" or "msgOOBKill" or "msgCampKill" or "msgTeamKill" or "msgLavaKill" or "msgLightningKill" or "MsgRogueMineKill" or "MsgHeadshotKill" or "MsgRearshotKill" or "MsgLegitKill": + "msgSelfKill" or "msgOOBKill" or "msgCampKill" or "msgTeamKill" or "msgLavaKill" or "msgLightningKill" or "MsgRogueMineKill" or "MsgHeadshotKill" or "MsgRearshotKill" or "MsgLegitKill" or + "MsgClientJoin" or "MsgClientDrop": %message = getTaggedString(%msgString); %message = strreplace(%message,"%1",getTaggedString(%a1)); %message = strreplace(%message,"%2",getTaggedString(%a2)); @@ -44,73 +46,12 @@ function messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8 %message = strreplace(%message,"%8",getTaggedString(%a8)); %message = stripChars(%message, "\cp\co\c0\c6\c7\c8\c9"); sendToDiscordEmote(%message, $discordBot::serverFeed); - } + } + if($missionName !$= $discordBot::cm && ClientGroup.getCount() > 2){ + sendToDiscordEmote("The mission changed to" SPC $missionName, $discordBot::serverFeed); + $discordBot::cm = $missionName; + } } - -function discordBotProcess(%type, %var1, %var2, %var3, %var4, %var5, %var6) -{ - //echo(%type SPC %var1 SPC %var2 SPC %var3 SPC %var4 SPC %var5 SPC %var6); - - switch$ (%type) - { - case "flagCap": - %game = %var1; - %player = %var2; - %flag = %player.holdingFlag; - %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); - %msg = getTaggedString(%player.client.name) SPC "captured the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; - case "touchEnemyFlag": - %game = %var1; - %player = %var2; - %flag = %var3; - if(!%player.flagTossWait) - { - %grabspeed = mFloor(VectorLen(setWord(%player.getVelocity(), 2, 0)) * 3.6); - if(%flag.isHome) - %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Speed:" SPC %grabspeed @ "Kph)"; - else if(!%flag.isHome) - %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag in the field. (Speed:" SPC %grabspeed @ "Kph)"; - } - case "droppedFlag": - %game = %var1; - %player = %var2; - %flag = %player.holdingFlag; - %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); - %msg = getTaggedString(%player.client.name) SPC "dropped the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; - case "flagReturn": - %game = %var1; - %flag = %var2; - %player = %var3; - if(%player !$= "") - %msg = getTaggedString(%player.client.name) SPC "returned the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag."; - else - %msg = "The" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag was returned to base."; - case "lakTouchFlag": - %game = %var1; - %player = %var2; - %flag = %var3; - if(!%player.client.flagDeny && %player.getState() !$= "Dead" && PlayingPlayers() > 1) - %msg = getTaggedString(%player.client.name) SPC "has taken the flag."; - case "lakMApoints": - %sourceObject = %var1; - %points = %var2; - if(%points == 1) - %s = "s"; - %hitType = %var3; - %weapon = %var4; - %distance = %var5; - %vel = %var6; - if(%points) - %msg = getTaggedString(%sourceObject.client.name) SPC "receives" SPC %points @ %s SPC "points! [" @ %hitType SPC %weapon @ "] [Distance:" SPC %distance @ "] [Speed:" SPC %vel @ "]"; - } - - if(%msg !$= "") - { - %msg = stripChars(%msg, "\cp\co\c0\c6\c7\c8\c9"); - sendToDiscordEmote(%msg, $discordBot::serverFeed); - } -} - function CTFGame::flagCap(%game, %player) { if(discord.lastState $= "Connected") @@ -198,7 +139,70 @@ function LogMessage(%client, %msg, %cat){ if(!isActivePackage(discordPackage)) activatePackage(discordPackage); - + +function discordBotProcess(%type, %var1, %var2, %var3, %var4, %var5, %var6) +{ + //echo(%type SPC %var1 SPC %var2 SPC %var3 SPC %var4 SPC %var5 SPC %var6); + + switch$ (%type) + { + case "flagCap": + %game = %var1; + %player = %var2; + %flag = %player.holdingFlag; + %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); + %msg = getTaggedString(%player.client.name) SPC "captured the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; + case "touchEnemyFlag": + %game = %var1; + %player = %var2; + %flag = %var3; + if(!%player.flagTossWait) + { + %grabspeed = mFloor(VectorLen(setWord(%player.getVelocity(), 2, 0)) * 3.6); + if(%flag.isHome) + %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Speed:" SPC %grabspeed @ "Kph)"; + else if(!%flag.isHome) + %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag in the field. (Speed:" SPC %grabspeed @ "Kph)"; + } + case "droppedFlag": + %game = %var1; + %player = %var2; + %flag = %player.holdingFlag; + %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); + %msg = getTaggedString(%player.client.name) SPC "dropped the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; + case "flagReturn": + %game = %var1; + %flag = %var2; + %player = %var3; + if(%player !$= "") + %msg = getTaggedString(%player.client.name) SPC "returned the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag."; + else + %msg = "The" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag was returned to base."; + case "lakTouchFlag": + %game = %var1; + %player = %var2; + %flag = %var3; + if(!%player.client.flagDeny && %player.getState() !$= "Dead" && PlayingPlayers() > 1) + %msg = getTaggedString(%player.client.name) SPC "has taken the flag."; + case "lakMApoints": + %sourceObject = %var1; + %points = %var2; + if(%points == 1) + %s = "s"; + %hitType = %var3; + %weapon = %var4; + %distance = %var5; + %vel = %var6; + if(%points) + %msg = getTaggedString(%sourceObject.client.name) SPC "receives" SPC %points @ %s SPC "points! [" @ %hitType SPC %weapon @ "] [Distance:" SPC %distance @ "] [Speed:" SPC %vel @ "]"; + } + + if(%msg !$= "") + { + %msg = stripChars(%msg, "\cp\co\c0\c6\c7\c8\c9"); + sendToDiscordEmote(%msg, $discordBot::serverFeed); + } +} function sendToDiscord(%msg,%channel) { if(isObject(discord) && %msg !$= "") @@ -281,6 +285,7 @@ function discord::onLine(%this, %line){ case "PINGAVG": %min = 10000; %max = -10000; + %lowCount = %lowPing = 0; for(%i = 0; %i < ClientGroup.getCount(); %i++){ %cl = ClientGroup.getObject(%i); %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); @@ -293,7 +298,7 @@ function discord::onLine(%this, %line){ %pc++; %pingT += %ping; } - %lowCount = %lowPing = (%lowCount == 0) ? 1 : %lowCount; + %lowCount = (%lowCount == 0) ? 1 : %lowCount; if(!%pc){ sendToDiscord("Ping AVG:" @ 0 SPC "Low Avg:" @ 0 SPC "Min:" @ 0 SPC "Max:" @ 0, $discordBot::monitorChannel); } @@ -309,10 +314,10 @@ function discord::onLine(%this, %line){ for(%i = 0; %i < ClientGroup.getCount(); %i++){ %cl = ClientGroup.getObject(%i); %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); - %msg = %cl.namebase @ "-" @ %ping @ "-" @ %i; + %msg = %cl.namebase @ $discordBot::cmdSubSplit @ %ping @ $discordBot::cmdSubSplit @ %i; discord.schedule(%i*32,"send","MSGSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ %msg @ "\r\n"); } - discord.schedule((%i+1)*32,"send","PROCSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ "MessageEmbed" @ "\r\n"); + discord.schedule((%i+1)*32,"send","PROCSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ "msgList" @ "\r\n"); } } default: From 4595b648146d1314613a1a1d1b05b736c553bb3d Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Thu, 1 Apr 2021 06:37:22 -0400 Subject: [PATCH 03/11] Update defaultGame.cs --- Classic/scripts/defaultGame.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Classic/scripts/defaultGame.cs b/Classic/scripts/defaultGame.cs index dd738cf..c728f41 100644 --- a/Classic/scripts/defaultGame.cs +++ b/Classic/scripts/defaultGame.cs @@ -1833,7 +1833,8 @@ function DefaultGame::clientMissionDropReady(%game, %client) if(isEventPending(%client.okschedule)) cancel(%client.okschedule); - %time = ($Host::KickObserverTimeout) + ($Host::KickObserverTimeout/2); + %time = $Host::KickObserverTimeout; + //%time = ($Host::KickObserverTimeout) + ($Host::KickObserverTimeout/2); //%minutes = %time / 60; //messageClient(%client, 'MsgNoObservers', '\c2You have %1 minutes to join the game or you will be kicked.', %minutes); From f72e3dcfd1b8f0eeac9fda83566ac9ac83801fb8 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Thu, 1 Apr 2021 06:44:53 -0400 Subject: [PATCH 04/11] Update zzDiscordBot.cs --- Classic/scripts/autoexec/zzDiscordBot.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classic/scripts/autoexec/zzDiscordBot.cs b/Classic/scripts/autoexec/zzDiscordBot.cs index a8f758d..6bcb4c6 100644 --- a/Classic/scripts/autoexec/zzDiscordBot.cs +++ b/Classic/scripts/autoexec/zzDiscordBot.cs @@ -8,7 +8,7 @@ $discordBot::discordCHID = ""; $discordBot::IP = ""; $discordBot::reconnectTimeout = 3 * 60000; -$discordBot::autoStart = 1; +$discordBot::autoStart = 0; //used on the bot to help split thigns up $discordBot::cmdSplit = "%cmd%"; $discordBot::cmdSubSplit = "%tab%"; From edad1298365f3ce2ff7c29fd5a0a6e86a55d26b8 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Fri, 2 Apr 2021 17:46:37 -0400 Subject: [PATCH 05/11] Update Autobalance.cs --- Classic/scripts/autoexec/Autobalance.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Classic/scripts/autoexec/Autobalance.cs b/Classic/scripts/autoexec/Autobalance.cs index 44027f9..1d05c35 100644 --- a/Classic/scripts/autoexec/Autobalance.cs +++ b/Classic/scripts/autoexec/Autobalance.cs @@ -61,9 +61,6 @@ function Autobalance( %game ) //Select lower half of team rank as canidates for team change if(!$Autobalance::UseAllMode) { - //Reset clients canidate var - ResetABClients(); - $Autobalance::Max = mFloor($TeamRank[$BigTeam, count]/2); for(%i = $Autobalance::Max; %i < $TeamRank[$BigTeam, count]; %i++) { @@ -127,14 +124,17 @@ function DefaultGame::gameOver(%game) { Parent::gameOver(%game); - //Reset Autobalance - $BigTeam = ""; - - //Reset all clients canidate var - for (%i = 0; %i < ClientGroup.getCount(); %i++) + if($CurrentMissionType $= "CTF" || $CurrentMissionType $= "SCtF") { - %client = ClientGroup.getObject(%i); - %client.abCanidate = false; + //Reset Autobalance + $BigTeam = ""; + + //Reset all clients canidate var + for (%i = 0; %i < ClientGroup.getCount(); %i++) + { + %client = ClientGroup.getObject(%i); + %client.abCanidate = false; + } } } From 9498ab20bc71b9ed53abff4153aafcd090391db5 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 7 Apr 2021 14:45:12 -0400 Subject: [PATCH 06/11] Add Conc.cs (From Base) --- Classic/scripts/weapons/concussionGrenade.cs | 208 +++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 Classic/scripts/weapons/concussionGrenade.cs diff --git a/Classic/scripts/weapons/concussionGrenade.cs b/Classic/scripts/weapons/concussionGrenade.cs new file mode 100644 index 0000000..bd6e107 --- /dev/null +++ b/Classic/scripts/weapons/concussionGrenade.cs @@ -0,0 +1,208 @@ +// grenade (thrown by hand) script +// ------------------------------------------------------------------------ + +datablock EffectProfile(ConcussionGrenadeThrowEffect) +{ + effectname = "weapons/grenade_throw"; + minDistance = 2.5; + maxDistance = 2.5; +}; + +datablock EffectProfile(ConcussionGrenadeSwitchEffect) +{ + effectname = "weapons/generic_switch"; + minDistance = 2.5; + maxDistance = 2.5; +}; + +datablock EffectProfile(ConcussionGrenadeExplosionEffect) +{ + effectname = "explosions/grenade_explode"; + minDistance = 10; + maxDistance = 50; +}; + +datablock AudioProfile(ConcussionGrenadeExplosionSound) +{ + filename = "fx/weapons/grenade_explode.wav"; + description = AudioExplosion3d; + preload = true; + effect = ConcussionGrenadeExplosionEffect; +}; + +// ------------------------------------------------------ +// z0dd - ZOD, 5/8/02. Duplicate datablock, waste of mem. +//datablock AudioProfile(ConcussionGrenadeExplosionSound) +//{ +// filename = "fx/weapons/grenade_explode.wav"; +// description = AudioExplosion3d; +// preload = true; +// effect = ConcussionGrenadeExplosionEffect; +//}; +// ------------------------------------------------------ + +//-------------------------------------------------------------------------- +// Sparks +//-------------------------------------------------------------------------- +datablock ParticleData(ConcussionGrenadeSparks) +{ + dragCoefficient = 1; + gravityCoefficient = 0.0; + inheritedVelFactor = 0.2; + constantAcceleration = 0.0; + lifetimeMS = 500; + lifetimeVarianceMS = 350; + textureName = "special/bigSpark"; + colors[0] = "0.56 0.36 1.0 1.0"; + colors[1] = "0.56 0.36 1.0 1.0"; + colors[2] = "1.0 0.36 1.0 0.0"; + sizes[0] = 0.5; + sizes[1] = 0.25; + sizes[2] = 0.25; + times[0] = 0.0; + times[1] = 0.5; + times[2] = 1.0; + +}; + +datablock ParticleEmitterData(ConcussionGrenadeSparkEmitter) +{ + ejectionPeriodMS = 1; + periodVarianceMS = 0; + ejectionVelocity = 12; + velocityVariance = 6.75; + ejectionOffset = 0.0; + thetaMin = 0; + thetaMax = 180; + phiReferenceVel = 0; + phiVariance = 360; + overrideAdvances = false; + orientParticles = true; + lifetimeMS = 100; + particles = "ConcussionGrenadeSparks"; +}; + +datablock ParticleData( ConcussionGrenadeCrescentParticle ) +{ + dragCoefficient = 2; + gravityCoefficient = 0.0; + inheritedVelFactor = 0.2; + constantAcceleration = -0.0; + lifetimeMS = 600; + lifetimeVarianceMS = 000; + textureName = "special/crescent3"; + colors[0] = "0.8 0.8 1.0 1.00"; + colors[1] = "0.8 0.5 1.0 0.20"; + colors[2] = "0.2 0.8 1.0 0.0"; + sizes[0] = 2.0; + sizes[1] = 4.0; + sizes[2] = 5.0; + times[0] = 0.0; + times[1] = 0.5; + times[2] = 1.0; +}; + +datablock ParticleEmitterData( ConcussionGrenadeCrescentEmitter ) +{ + ejectionPeriodMS = 15; + periodVarianceMS = 0; + ejectionVelocity = 20; + velocityVariance = 10.0; + ejectionOffset = 0.0; + thetaMin = 0; + thetaMax = 80; + phiReferenceVel = 0; + phiVariance = 360; + overrideAdvances = false; + orientParticles = true; + lifetimeMS = 200; + particles = "ConcussionGrenadeCrescentParticle"; +}; + +//-------------------------------------------------------------------------- +// Shockwave +//-------------------------------------------------------------------------- +datablock ShockwaveData(ConcussionGrenadeShockwave) +{ + width = 4.0; + numSegments = 20; + numVertSegments = 2; + velocity = 5; + acceleration = 10.0; + lifetimeMS = 1000; + height = 1.0; + is2D = true; + + texture[0] = "special/shockwave4"; + texture[1] = "special/gradient"; + texWrap = 6.0; + + times[0] = 0.0; + times[1] = 0.5; + times[2] = 1.0; + + colors[0] = "0.8 0.8 1.0 1.00"; + colors[1] = "0.8 0.5 1.0 0.20"; + colors[2] = "0.2 0.8 1.0 0.0"; +}; + +//-------------------------------------------------------------------------- +// Explosion +//-------------------------------------------------------------------------- +datablock ExplosionData(ConcussionGrenadeExplosion) +{ + soundProfile = ConcussionGrenadeExplosionSound; + shockwave = ConcussionGrenadeShockwave; + + emitter[0] = ConcussionGrenadeSparkEmitter; + emitter[1] = ConcussionGrenadeCrescentEmitter; + + shakeCamera = true; + camShakeFreq = "4.0 5.0 4.5"; + camShakeAmp = "140.0 140.0 140.0"; + camShakeDuration = 1.0; + camShakeRadius = 15.0; +}; + +//-------------------------------------------------------------------------- +// Item Data +//-------------------------------------------------------------------------- +datablock ItemData(ConcussionGrenadeThrown) +{ + shapeFile = "grenade.dts"; + mass = 0.7; + elasticity = 0.2; + friction = 1; + pickupRadius = 2; + maxDamage = 0.5; + explosion = ConcussionGrenadeExplosion; + damageRadius = 15.0; + radiusDamageType = $DamageType::Grenade; + kickBackStrength = 3500; + + computeCRC = true; + +}; + +datablock ItemData(ConcussionGrenade) +{ + className = HandInventory; + catagory = "Handheld"; + shapeFile = "grenade.dts"; + mass = 0.7; + elasticity = 0.2; + friction = 1; + pickupRadius = 2; + thrownItem = ConcussionGrenadeThrown; + pickUpName = "some concussion grenades"; + isGrenade = true; +}; + +//-------------------------------------------------------------------------- +// Functions: +//-------------------------------------------------------------------------- +function ConcussionGrenadeThrown::onCollision( %data, %obj, %col ) +{ + // Do nothing... +} + From 2241501aa499004b8f78bb580d4ff4be56c7fb79 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 7 Apr 2021 14:45:48 -0400 Subject: [PATCH 07/11] Adjusted Conc Range --- Classic/scripts/weapons/concussionGrenade.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classic/scripts/weapons/concussionGrenade.cs b/Classic/scripts/weapons/concussionGrenade.cs index bd6e107..664d975 100644 --- a/Classic/scripts/weapons/concussionGrenade.cs +++ b/Classic/scripts/weapons/concussionGrenade.cs @@ -161,7 +161,7 @@ datablock ExplosionData(ConcussionGrenadeExplosion) camShakeFreq = "4.0 5.0 4.5"; camShakeAmp = "140.0 140.0 140.0"; camShakeDuration = 1.0; - camShakeRadius = 15.0; + camShakeRadius = 18.0; //was 15 }; //-------------------------------------------------------------------------- @@ -176,7 +176,7 @@ datablock ItemData(ConcussionGrenadeThrown) pickupRadius = 2; maxDamage = 0.5; explosion = ConcussionGrenadeExplosion; - damageRadius = 15.0; + damageRadius = 18.0; //was 15 radiusDamageType = $DamageType::Grenade; kickBackStrength = 3500; From 7acbb290e77d2c5c39f3a2ed6ad1320305108cdb Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 7 Apr 2021 14:55:35 -0400 Subject: [PATCH 08/11] Disabled OG Blaster throwStart adjustment --- Classic/scripts/autoexec/TacoOverrides.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs index 0effa1f..a186bbb 100755 --- a/Classic/scripts/autoexec/TacoOverrides.cs +++ b/Classic/scripts/autoexec/TacoOverrides.cs @@ -27,7 +27,7 @@ function serverCmdEndThrowCount(%client, %data) %throwScale = %throwStrength / 2; %client.player.throwStrength = %throwScale; - %client.player.throwStart = 5; //was 0 + %client.player.throwStart = 2; //was 0 } //Tank UE code by Keen @@ -152,14 +152,14 @@ function stationTrigger::onEnterTrigger(%data, %obj, %colObj) } //OG Blaster Buff -function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC) -{ +// function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC) +// { //Takes 10 blaster shots to kill a heavy, 13 normal. - if(%targetObject.client.armor $= "Heavy" && %damageType $= $DamageType::Blaster) - %amount *= 1.3; + // if(%targetObject.client.armor $= "Heavy" && %damageType $= $DamageType::Blaster) + // %amount *= 1.3; - Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC); -} + // Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC); +// } // Global water viscosity function DefaultGame::missionLoadDone(%game) From f592afd882355c179470e624e6f5589a87b30a77 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Wed, 7 Apr 2021 18:50:05 -0400 Subject: [PATCH 09/11] Experimental (Normal Conc Throw) --- Classic/scripts/autoexec/TacoOverrides.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs index a186bbb..564c3b7 100755 --- a/Classic/scripts/autoexec/TacoOverrides.cs +++ b/Classic/scripts/autoexec/TacoOverrides.cs @@ -291,6 +291,13 @@ function VehicleData::createPositionMarker(%data, %obj) return %marker; } +//Normal Conc Throw (Like Normal Grenades) +function ConcussionGrenadeThrown::onThrow(%this, %gren) +{ + AIGrenadeThrown(%gren); + %gren.detThread = schedule(1500, %gren, "detonateGrenade", %gren); +} + }; // Prevent package from being activated if it is already From 00389c0d55230c90a0c8681558ab4e18be59a2b0 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Thu, 8 Apr 2021 10:26:42 -0400 Subject: [PATCH 10/11] Adjustments --- Classic/scripts/autoexec/TacoOverrides.cs | 16 ++++++++-------- Classic/scripts/weapons/concussionGrenade.cs | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs index 564c3b7..04e85ae 100755 --- a/Classic/scripts/autoexec/TacoOverrides.cs +++ b/Classic/scripts/autoexec/TacoOverrides.cs @@ -152,14 +152,14 @@ function stationTrigger::onEnterTrigger(%data, %obj, %colObj) } //OG Blaster Buff -// function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC) -// { - //Takes 10 blaster shots to kill a heavy, 13 normal. - // if(%targetObject.client.armor $= "Heavy" && %damageType $= $DamageType::Blaster) - // %amount *= 1.3; +function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC) +{ + //Takes 11 blaster shots to kill a heavy, 13 normal. + if(%targetObject.client.armor $= "Heavy" && %damageType $= $DamageType::Blaster) + %amount *= 1.15; - // Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC); -// } + Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC); +} // Global water viscosity function DefaultGame::missionLoadDone(%game) @@ -295,7 +295,7 @@ function VehicleData::createPositionMarker(%data, %obj) function ConcussionGrenadeThrown::onThrow(%this, %gren) { AIGrenadeThrown(%gren); - %gren.detThread = schedule(1500, %gren, "detonateGrenade", %gren); + %gren.detThread = schedule(1800, %gren, "detonateGrenade", %gren); } }; diff --git a/Classic/scripts/weapons/concussionGrenade.cs b/Classic/scripts/weapons/concussionGrenade.cs index 664d975..6444560 100644 --- a/Classic/scripts/weapons/concussionGrenade.cs +++ b/Classic/scripts/weapons/concussionGrenade.cs @@ -161,7 +161,7 @@ datablock ExplosionData(ConcussionGrenadeExplosion) camShakeFreq = "4.0 5.0 4.5"; camShakeAmp = "140.0 140.0 140.0"; camShakeDuration = 1.0; - camShakeRadius = 18.0; //was 15 + camShakeRadius = 16.5; //was 15 }; //-------------------------------------------------------------------------- @@ -176,7 +176,7 @@ datablock ItemData(ConcussionGrenadeThrown) pickupRadius = 2; maxDamage = 0.5; explosion = ConcussionGrenadeExplosion; - damageRadius = 18.0; //was 15 + damageRadius = 16.5; //was 15 radiusDamageType = $DamageType::Grenade; kickBackStrength = 3500; From 6315aecfdb36570fdbe97504f57c245c710892ea Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Thu, 8 Apr 2021 10:36:29 -0400 Subject: [PATCH 11/11] Notes --- Classic/scripts/autoexec/TacoOverrides.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs index 04e85ae..d503bbd 100755 --- a/Classic/scripts/autoexec/TacoOverrides.cs +++ b/Classic/scripts/autoexec/TacoOverrides.cs @@ -291,11 +291,11 @@ function VehicleData::createPositionMarker(%data, %obj) return %marker; } -//Normal Conc Throw (Like Normal Grenades) +//Conc Throw (Almost Normal Grenades) 1500 Normal function ConcussionGrenadeThrown::onThrow(%this, %gren) { AIGrenadeThrown(%gren); - %gren.detThread = schedule(1800, %gren, "detonateGrenade", %gren); + %gren.detThread = schedule(1800, %gren, "detonateGrenade", %gren); // Was 2000 } };