From b99fae619e91838cef42376f4d6f3db309765238 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Tue, 13 Apr 2021 12:22:09 -0400 Subject: [PATCH] Revert "Merge remote-tracking branch 'origin/NoEvo' into NoEvo" This reverts commit 1ed4b1a2ab536f5cdd02a3fda62183f2c3c79fc7. --- Classic/scripts/autoexec/Autobalance.cs | 20 +- Classic/scripts/autoexec/TacoOverrides.cs | 13 +- Classic/scripts/autoexec/zzDiscordBot.cs | 222 +++++++------------ Classic/scripts/defaultGame.cs | 3 +- Classic/scripts/weapons/concussionGrenade.cs | 208 ----------------- 5 files changed, 99 insertions(+), 367 deletions(-) delete mode 100644 Classic/scripts/weapons/concussionGrenade.cs diff --git a/Classic/scripts/autoexec/Autobalance.cs b/Classic/scripts/autoexec/Autobalance.cs index 1d05c35..44027f9 100644 --- a/Classic/scripts/autoexec/Autobalance.cs +++ b/Classic/scripts/autoexec/Autobalance.cs @@ -61,6 +61,9 @@ 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++) { @@ -124,17 +127,14 @@ function DefaultGame::gameOver(%game) { Parent::gameOver(%game); - if($CurrentMissionType $= "CTF" || $CurrentMissionType $= "SCtF") - { - //Reset Autobalance - $BigTeam = ""; + //Reset Autobalance + $BigTeam = ""; - //Reset all clients canidate var - for (%i = 0; %i < ClientGroup.getCount(); %i++) - { - %client = ClientGroup.getObject(%i); - %client.abCanidate = false; - } + //Reset all clients canidate var + for (%i = 0; %i < ClientGroup.getCount(); %i++) + { + %client = ClientGroup.getObject(%i); + %client.abCanidate = false; } } diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs index d503bbd..0effa1f 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 = 2; //was 0 + %client.player.throwStart = 5; //was 0 } //Tank UE code by Keen @@ -154,9 +154,9 @@ function stationTrigger::onEnterTrigger(%data, %obj, %colObj) //OG Blaster Buff function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC) { - //Takes 11 blaster shots to kill a heavy, 13 normal. + //Takes 10 blaster shots to kill a heavy, 13 normal. if(%targetObject.client.armor $= "Heavy" && %damageType $= $DamageType::Blaster) - %amount *= 1.15; + %amount *= 1.3; Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %mineSC); } @@ -291,13 +291,6 @@ function VehicleData::createPositionMarker(%data, %obj) return %marker; } -//Conc Throw (Almost Normal Grenades) 1500 Normal -function ConcussionGrenadeThrown::onThrow(%this, %gren) -{ - AIGrenadeThrown(%gren); - %gren.detThread = schedule(1800, %gren, "detonateGrenade", %gren); // Was 2000 -} - }; // Prevent package from being activated if it is already diff --git a/Classic/scripts/autoexec/zzDiscordBot.cs b/Classic/scripts/autoexec/zzDiscordBot.cs index 6bcb4c6..73fae99 100644 --- a/Classic/scripts/autoexec/zzDiscordBot.cs +++ b/Classic/scripts/autoexec/zzDiscordBot.cs @@ -4,17 +4,13 @@ //exec("scripts/autoexec/zzDiscordBot.cs"); -//note first channel is for monitoring -$discordBot::discordCHID = ""; -$discordBot::IP = ""; +$discordBot::AuthKey[0] = ""; +$discordBot::IP[0] = ""; $discordBot::reconnectTimeout = 3 * 60000; -$discordBot::autoStart = 0; -//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; +$discordBot::AuthSet = 0; +$discordBot::autoStart = 1; + + package discordPackage { @@ -29,12 +25,11 @@ 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" or - "MsgClientJoin" or "MsgClientDrop": + "msgSelfKill" or "msgOOBKill" or "msgCampKill" or "msgTeamKill" or "msgLavaKill" or "msgLightningKill" or "MsgRogueMineKill" or "MsgHeadshotKill" or "MsgRearshotKill" or "MsgLegitKill": %message = getTaggedString(%msgString); %message = strreplace(%message,"%1",getTaggedString(%a1)); %message = strreplace(%message,"%2",getTaggedString(%a2)); @@ -45,13 +40,74 @@ 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"); - sendToDiscordEmote(%message, $discordBot::serverFeed); - } - if($missionName !$= $discordBot::cm && ClientGroup.getCount() > 2){ - sendToDiscordEmote("The mission changed to" SPC $missionName, $discordBot::serverFeed); - $discordBot::cm = $missionName; - } + sendToDiscord(%message,2); + } } + +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"); + sendToDiscord(%msg, 2); + } +} + function CTFGame::flagCap(%game, %player) { if(discord.lastState $= "Connected") @@ -127,11 +183,11 @@ function dtEventLog(%log, %save) { parent::dtEventLog(%log, %save); if(discord.lastState $= "Connected") - sendToDiscord(%log, $discordBot::monitorChannel); + sendToDiscord(%log, 1); } function LogMessage(%client, %msg, %cat){ if(discord.lastState $= "Connected") - sendToDiscord("Message" SPC %client.nameBase SPC %msg, $discordBot::monitorChannel); + sendToDiscord("Message" SPC %client.nameBase SPC %msg, 1); parent::LogMessage(%client, %msg, %cat); } @@ -139,90 +195,18 @@ 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 !$= "") { if(discord.lastState $= "Connected") { - 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"); + discord.send("MSG" SPC (%channel-1) SPC %msg @ "\r\n"); } } } + function discordCon(){ if(discord.lastState !$= "Connected"){ if(isEventPending($discordBot::reconnectEvent)) @@ -231,7 +215,7 @@ function discordCon(){ discord.delete(); new TCPObject(discord); discord.lastState = "Connecting"; - discord.connect($discordBot::IP); + discord.connect($discordBot::IP[$discordBot::AuthSet]); } } function discordKill(){ @@ -262,7 +246,7 @@ function discord::onDNSResolved(%this){ function discord::onConnected(%this){ %this.lastState = "Connected"; error(%this.lastState); - discord.send("AUTH" @ $discordBot::cmdSplit @ $discordBot::discordCHID @ $discordBot::cmdSplit @ $Host::GameName @ "\r\n"); + discord.send("AUTH" SPC $discordBot::AuthKey[$discordBot::AuthSet] @ "\r\n"); } function discord::onDisconnect(%this){ @@ -281,45 +265,9 @@ 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" @ $discordBot::cmdSplit @ "\r\n"); - 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(); - %min = (%ping < %min) ? %ping : %min; - %max = (%ping > %max) ? %ping : %max; - if(%ping < 250){ - %lowCount++; - %lowPing += %ping; - } - %pc++; - %pingT += %ping; - } - %lowCount = (%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 @ $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 @ "msgList" @ "\r\n"); - } - } + discord.send("PONG" @ "\r\n"); + case "PINGX": + discord.send("PINGY" @ "\r\n"); default: error("Bad Command" SPC %line); } diff --git a/Classic/scripts/defaultGame.cs b/Classic/scripts/defaultGame.cs index c728f41..dd738cf 100644 --- a/Classic/scripts/defaultGame.cs +++ b/Classic/scripts/defaultGame.cs @@ -1833,8 +1833,7 @@ function DefaultGame::clientMissionDropReady(%game, %client) if(isEventPending(%client.okschedule)) cancel(%client.okschedule); - %time = $Host::KickObserverTimeout; - //%time = ($Host::KickObserverTimeout) + ($Host::KickObserverTimeout/2); + %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); diff --git a/Classic/scripts/weapons/concussionGrenade.cs b/Classic/scripts/weapons/concussionGrenade.cs deleted file mode 100644 index 6444560..0000000 --- a/Classic/scripts/weapons/concussionGrenade.cs +++ /dev/null @@ -1,208 +0,0 @@ -// 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 = 16.5; //was 15 -}; - -//-------------------------------------------------------------------------- -// Item Data -//-------------------------------------------------------------------------- -datablock ItemData(ConcussionGrenadeThrown) -{ - shapeFile = "grenade.dts"; - mass = 0.7; - elasticity = 0.2; - friction = 1; - pickupRadius = 2; - maxDamage = 0.5; - explosion = ConcussionGrenadeExplosion; - damageRadius = 16.5; //was 15 - 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... -} -