2013-02-01 20:45:22 +00:00
// DisplayName = CombatCon
//--- GAME RULES BEGIN ---
// Make a base or use map bases.
// Defend your base.
// Destroy the enemy base.
// Team killing and suicide penalties.
//--- GAME RULES END ---
// CombatCon Game
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Notes are all done by Blnukem. These are to help you know what's what when
// editing this gametype. (The notes are not completed, so don't edit anything)
//------------------------------------------------------------------------------
// NOTICE:
// This rather huge file will be cleaned and remade in a later version of ACCM.
// So for all you file moderators out there, have fun tweaking this gametype.
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Now to get rid of the overpowered weapons.
$ InvBanList [ CombatCon , "M4" ] = 1 ;
$ InvBanList [ CombatCon , "RailGun" ] = 1 ;
$ InvBanList [ CombatCon , "NapalmMortar" ] = 1 ;
$ InvBanList [ CombatCon , "Flamer" ] = 1 ;
$ InvBanList [ CombatCon , "FlamerAmmoPack" ] = 1 ;
$ InvBanList [ CombatCon , "ELFBarrelPack" ] = 1 ;
//------------------------------------------------------------------------------
// Easy huh? Also as another reminder, the weapons above were removed by popular
// demand of the ACCM users and the Devs. The weapons are just too ovepowered
// for PVP style gameplay.
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Lets begin the Gametype code... Shall we?
//------------------------------------------------------------------------------
// NOTICE:
// Any notes below this point were not done by Blnukem. So it's advised you
// don't try editing anything below this point. Or you'll mess the Gametype up.
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function CombatConGame : : initGameVars ( % game )
{
if ( isDemo ( ) )
{
% game . SCORE_PER_SUICIDE = - 10 ;
% game . SCORE_PER_TEAMKILL = - 10 ;
% game . SCORE_PER_DEATH = 0 ;
% game . SCORE_PER_KILL = 10 ;
% game . SCORE_PER_GEN_DESTROY = 8 ;
% game . SCORE_PER_TURRET_KILL = 5 ;
% game . SCORE_PER_GEN_DEFEND = 5 ;
% game . SCORE_PER_GEN_REPAIR = 2 ;
% game . RADIUS_GEN_DEFENSE = 20 ; //meters
% game . fadeTimeMS = 2000 ;
% game . notifyMineDist = 7.5 ;
% game . stalemate = false ;
% game . stalemateObjsVisible = false ;
% game . stalemateTimeMS = 60000 ;
% game . stalemateFreqMS = 15000 ;
% game . stalemateDurationMS = 6000 ;
}
if ( ! isDemo ( ) )
{
% game . SCORE_PER_SUICIDE = - 10 ;
% game . SCORE_PER_TEAMKILL = - 10 ;
% game . SCORE_PER_DEATH = 0 ;
% game . SCORE_PER_KILL = 10 ;
% game . SCORE_PER_HEADSHOT = 2 ;
% game . SCORE_PER_TURRET_KILL = 10 ;
% game . SCORE_PER_TURRET_KILL_AUTO = 0 ;
% game . SCORE_PER_GEN_DEFEND = 5 ;
% game . SCORE_PER_DESTROY_GEN = 10 ;
% game . SCORE_PER_DESTROY_SENSOR = 4 ;
% game . SCORE_PER_DESTROY_TURRET = 5 ;
% game . SCORE_PER_DESTROY_ISTATION = 2 ;
% game . SCORE_PER_DESTROY_VSTATION = 5 ;
% game . SCORE_PER_DESTROY_SOLAR = 5 ;
% game . SCORE_PER_DESTROY_SENTRY = 4 ;
% game . SCORE_PER_DESTROY_DEP_SENSOR = 1 ;
% game . SCORE_PER_DESTROY_DEP_INV = 2 ;
% game . SCORE_PER_DESTROY_DEP_TUR = 3 ;
% game . SCORE_PER_DESTROY_SHRIKE = 5 ;
% game . SCORE_PER_DESTROY_STRIKEFIGHTER = 5 ;
% game . SCORE_PER_DESTROY_HELICOPTER = 5 ;
% game . SCORE_PER_DESTROY_AWACS = 7 ;
% game . SCORE_PER_DESTROY_BOMBER = 7 ;
% game . SCORE_PER_DESTROY_GUNSHIP = 10 ;
% game . SCORE_PER_DESTROY_HEAVYHELICOPTER = 10 ;
% game . SCORE_PER_DESTROY_TRANSPORT = 10 ;
% game . SCORE_PER_DESTROY_WILDCAT = 2 ;
% game . SCORE_PER_DESTROY_TANK = 5 ;
% game . SCORE_PER_DESTROY_HEAVYTANK = 5 ;
% game . SCORE_PER_DESTROY_CGTANK = 5 ;
% game . SCORE_PER_DESTROY_FFTRANSPORT = 5 ;
% game . SCORE_PER_DESTROY_ARTILLERY = 10 ;
% game . SCORE_PER_DESTROY_MPB = 10 ;
% game . SCORE_PER_DESTROY_TRANSBOAT = 4 ;
% game . SCORE_PER_DESTROY_SUB = 10 ;
% game . SCORE_PER_DESTROY_BOAT = 15 ;
% game . SCORE_PER_PASSENGER = 3 ;
% game . SCORE_PER_REPAIR_GEN = 8 ;
% game . SCORE_PER_REPAIR_SENSOR = 1 ;
% game . SCORE_PER_REPAIR_TURRET = 4 ;
% game . SCORE_PER_REPAIR_ISTATION = 2 ;
% game . SCORE_PER_REPAIR_VSTATION = 4 ;
% game . SCORE_PER_REPAIR_SOLAR = 4 ;
% game . SCORE_PER_REPAIR_SENTRY = 2 ;
% game . SCORE_PER_REPAIR_DEP_TUR = 3 ;
% game . SCORE_PER_REPAIR_DEP_INV = 2 ;
% game . FLAG_RETURN_DELAY = 45 * 1000 ;
% game . TIME_CONSIDERED_FLAGCARRIER_THREAT = 3 * 1000 ;
% game . RADIUS_GEN_DEFENSE = 20 ;
% game . RADIUS_FLAG_DEFENSE = 20 ;
% game . TOUCH_DELAY_MS = 20000 ;
% game . fadeTimeMS = 2000 ;
% game . notifyMineDist = 7.5 ;
% game . stalemate = false ;
% game . stalemateObjsVisible = false ;
% game . stalemateTimeMS = 60000 ;
% game . stalemateFreqMS = 15000 ;
% game . stalemateDurationMS = 6000 ;
}
}
package CombatConGame {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Now Seriously... STOP EDITING!!!
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function ShapeBaseData : : onDestroyed ( % data , % obj )
{
% scorer = % obj . lastDamagedBy ;
if ( ! isObject ( % scorer ) )
return ;
if ( ( % scorer . getType ( ) & $ TypeMasks : : GameBaseObjectType ) & &
% scorer . getDataBlock ( ) . catagory $ = "Vehicles" )
{
// ---------------------------------------------
// z0dd - ZOD, 6/18/02. %name was never defined.
% name = % scorer . getDatablock ( ) . getName ( ) ;
if ( % name $ = "BomberFlyer" | | % name $ = "AssaultVehicle" )
% gunnerNode = 1 ;
else
% gunnerNode = 0 ;
if ( % scorer . getMountNodeObject ( % gunnerNode ) )
{
% destroyer = % scorer . getMountNodeObject ( % gunnerNode ) . client ;
% scorer = % destroyer ;
% damagingTeam = % scorer . team ;
}
}
else if ( % scorer . getClassName ( ) $ = "Turret" )
{
if ( % scorer . getControllingClient ( ) )
{
//manned turret
% destroyer = % scorer . getControllingClient ( ) ;
% scorer = % destroyer ;
% damagingTeam = % scorer . team ;
}
else return ; //unmanned turret
}
if ( ! % damagingTeam )
% damagingTeam = % scorer . team ;
if ( % damagingTeam = = % obj . team )
{
//error("team objects dont score");
return ;
}
if ( % obj . soiledByEnemyRepair )
{
//error(%obj SPC "was once repiared by an enemy. No destruction points.");
return ;
}
% objType = % obj . getDataBlock ( ) . getName ( ) ;
if ( % objType $ = "GeneratorLarge" )
{
% score = game . awardScoreGenDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "SensorLargePulse" | | % objType $ = "SensorMediumPulse" )
{
% score = game . awardScoreSensorDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "TurretBaseLarge" )
{
% score = game . awardScoreTurretDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "StationInventory" )
{
% score = game . awardScoreInvDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "StationVehicle" )
{
% score = game . awardScoreVehicleStationDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "SolarPanel" )
{
% score = game . awardScoreSolarDestroy ( % scorer ) ;
game . shareScore ( % score , % score ) ;
}
else if ( % objType $ = "SentryTurret" )
{
% score = game . awardScoreSentryDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "DeployedMotionSensor" | | % objType $ = "DeployedPulseSensor" )
{
% score = game . awardScoreDepSensorDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "TurretDeployedWallIndoor" | | % objType $ = "TurretDeployedFloorIndoor" | |
% objType $ = "TurretDeployedCeilingIndoor" | | % objType $ = "TurretDeployedOutdoor" )
{
% score = game . awardScoreDepTurretDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
else if ( % objType $ = "DeployedStationInventory" )
{
% score = game . awardScoreDepStationDestroy ( % scorer ) ;
game . shareScore ( % scorer , % score ) ;
}
}
function ShapeBaseData : : onDisabled ( % data , % obj )
{
% obj . wasDisabled = true ;
Parent : : onDisabled ( % data , % obj ) ;
}
function RepairGunImage : : onRepair ( % this , % obj , % slot )
{
Parent : : onRepair ( % this , % obj , % slot ) ;
% target = % obj . repairing ;
if ( % target & & % target . team ! = % obj . team )
{
//error("Enemy stuff("@%obj@") is being repaired (by "@%target@")");
% target . soiledByEnemyRepair = true ;
}
}
function CombatConGame : : timeLimitReached ( % game )
{
logEcho ( "game over (timelimit)" ) ;
% game . gameOver ( ) ;
cycleMissions ( ) ;
}
function CombatConGame : : scoreLimitReached ( % game )
{
logEcho ( "game over (scorelimit)" ) ;
% game . gameOver ( ) ;
cycleMissions ( ) ;
}
function CombatConGame : : gameOver ( % game )
{
//call the default
DefaultGame : : gameOver ( % game ) ;
//send the winner message
% winner = "" ;
if ( $ teamScore [ 1 ] > $ teamScore [ 2 ] )
% winner = % game . getTeamName ( 1 ) ;
else if ( $ teamScore [ 2 ] > $ teamScore [ 1 ] )
% winner = % game . getTeamName ( 2 ) ;
if ( % winner $ = ' Storm ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.stowins.wav" ) ;
else if ( % winner $ = ' Inferno ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.infwins.wav" ) ;
else if ( % winner $ = ' Starwolf ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.swwin.wav" ) ;
else if ( % winner $ = ' Blood Eagle ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.bewin.wav" ) ;
else if ( % winner $ = ' Diamond Sword ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.dswin.wav" ) ;
else if ( % winner $ = ' Phoenix ' )
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.pxwin.wav" ) ;
else
messageAll ( ' MsgGameOver ' , "Match has ended.~wvoice/announcer/ann.gameover.wav" ) ;
messageAll ( ' MsgClearObjHud ' , "" ) ;
for ( % i = 0 ; % i < ClientGroup . getCount ( ) ; % i + + )
{
% client = ClientGroup . getObject ( % i ) ;
% game . resetScore ( % client ) ;
}
for ( % j = 1 ; % j < = % game . numTeams ; % j + + )
$ TeamScore [ % j ] = 0 ;
}
function CombatConGame : : onClientDamaged ( % game , % clVictim , % clAttacker , % damageType , % implement , % damageLoc )
{
if ( % clVictim . headshot & & % damageType = = $ DamageType : : Laser & & % clVictim . team ! = % clAttacker . team )
{
% clAttacker . scoreHeadshot + + ;
if ( % game . SCORE_PER_HEADSHOT ! = 0 )
{
messageClient ( % clAttacker , ' msgHeadshot ' , ' \ c0You received a % 1 point bonus for a successful headshot . ' , % game . SCORE_PER_HEADSHOT ) ;
}
% game . recalcScore ( % clAttacker ) ;
}
//the DefaultGame will set some vars
DefaultGame : : onClientDamaged ( % game , % clVictim , % clAttacker , % damageType , % implement , % damageLoc ) ;
//if victim is carrying a flag and is not on the attackers team, mark the attacker as a threat for x seconds(for scoring purposes)
if ( ( % clVictim . holdingFlag ! $ = "" ) & & ( % clVictim . team ! = % clAttacker . team ) )
{
% clAttacker . dmgdFlagCarrier = true ;
cancel ( % clAttacker . threatTimer ) ; //restart timer
% clAttacker . threatTimer = schedule ( % game . TIME_CONSIDERED_FLAGCARRIER_THREAT , % clAttacker . dmgdFlagCarrier = false ) ;
}
}
////////////////////////////////////////////////////////////////////////////////////////
function CombatConGame : : clientMissionDropReady ( % game , % client )
{
messageClient ( % client , ' MsgClientReady ' , "" , % game . class ) ;
% game . resetScore ( % client ) ;
for ( % i = 1 ; % i < = % game . numTeams ; % i + + )
{
$ Teams [ % i ] . score = 0 ;
messageClient ( % client , ' MsgCombatConAddTeam ' , "" , % i , % game . getTeamName ( % i ) , $ flagStatus [ % i ] , $ TeamScore [ % i ] ) ;
}
//%game.populateTeamRankArray(%client);
//messageClient(%client, 'MsgYourRankIs', "", -1);
messageClient ( % client , ' MsgMissionDropInfo ' , ' \ c0You are in mission % 1 ( % 2 ) . ' , $ MissionDisplayName , $ MissionTypeDisplayName , $ ServerName ) ;
DefaultGame : : clientMissionDropReady ( % game , % client ) ;
}
function CombatConGame : : assignClientTeam ( % game , % client , % respawn )
{
DefaultGame : : assignClientTeam ( % game , % client , % respawn ) ;
// if player's team is not on top of objective hud, switch lines
messageClient ( % client , ' MsgCheckTeamLines ' , "" , % client . team ) ;
}
function CombatConGame : : recalcScore ( % game , % cl )
{
% killValue = % cl . kills * % game . SCORE_PER_KILL ;
% deathValue = % cl . deaths * % game . SCORE_PER_DEATH ;
if ( % killValue - % deathValue = = 0 )
% killPoints = 0 ;
else
% killPoints = ( % killValue * % killValue ) / ( % killValue - % deathValue ) ;
if ( ! isDemo ( ) )
{
% cl . offenseScore = % killPoints +
% cl . suicides * % game . SCORE_PER_SUICIDE +
% cl . escortAssists * % game . SCORE_PER_ESCORT_ASSIST +
% cl . teamKills * % game . SCORE_PER_TEAMKILL +
% cl . scoreHeadshot * % game . SCORE_PER_HEADSHOT +
% cl . flagCaps * % game . SCORE_PER_PLYR_FLAG_CAP +
% cl . flagGrabs * % game . SCORE_PER_PLYR_FLAG_TOUCH +
% cl . genDestroys * % game . SCORE_PER_DESTROY_GEN +
% cl . sensorDestroys * % game . SCORE_PER_DESTROY_SENSOR +
% cl . turretDestroys * % game . SCORE_PER_DESTROY_TURRET +
% cl . iStationDestroys * % game . SCORE_PER_DESTROY_ISTATION +
% cl . vstationDestroys * % game . SCORE_PER_DESTROY_VSTATION +
% cl . solarDestroys * % game . SCORE_PER_DESTROY_SOLAR +
% cl . sentryDestroys * % game . SCORE_PER_DESTROY_SENTRY +
% cl . depSensorDestroys * % game . SCORE_PER_DESTROY_DEP_SENSOR +
% cl . depTurretDestroys * % game . SCORE_PER_DESTROY_DEP_TUR +
% cl . depStationDestroys * % game . SCORE_PER_DESTROY_DEP_INV +
% cl . vehicleScore + % cl . vehicleBonus ;
% cl . defenseScore = % cl . genDefends * % game . SCORE_PER_GEN_DEFEND +
% cl . flagDefends * % game . SCORE_PER_FLAG_DEFEND +
% cl . carrierKills * % game . SCORE_PER_CARRIER_KILL +
% cl . escortAssists * % game . SCORE_PER_ESCORT_ASSIST +
% cl . turretKills * % game . SCORE_PER_TURRET_KILL_AUTO +
% cl . mannedturretKills * % game . SCORE_PER_TURRET_KILL +
% cl . genRepairs * % game . SCORE_PER_REPAIR_GEN +
% cl . SensorRepairs * % game . SCORE_PER_REPAIR_SENSOR +
% cl . TurretRepairs * % game . SCORE_PER_REPAIR_TURRET +
% cl . StationRepairs * % game . SCORE_PER_REPAIR_ISTATION +
% cl . VStationRepairs * % game . SCORE_PER_REPAIR_VSTATION +
% cl . solarRepairs * % game . SCORE_PER_REPAIR_SOLAR +
% cl . sentryRepairs * % game . SCORE_PER_REPAIR_SENTRY +
% cl . depInvRepairs * % game . SCORE_PER_REPAIR_DEP_INV +
% cl . depTurretRepairs * % game . SCORE_PER_REPAIR_DEP_TUR +
% cl . returnPts ;
}
if ( isDemo ( ) )
{
% cl . offenseScore = % killPoints +
% cl . flagDefends * % game . SCORE_PER_FLAG_DEFEND +
% cl . suicides * % game . SCORE_PER_SUICIDE + //-1
% cl . escortAssists * % game . SCORE_PER_ESCORT_ASSIST + // 1
% cl . teamKills * % game . SCORE_PER_TEAMKILL + // -1
% cl . flagCaps * % game . SCORE_PER_PLYR_FLAG_CAP + // 3
% cl . genDestroys * % game . SCORE_PER_GEN_DESTROY ; // 2
% cl . defenseScore = % cl . genDefends * % game . SCORE_PER_GEN_DEFEND + // 1
% cl . carrierKills * % game . SCORE_PER_CARRIER_KILL + // 1
% cl . escortAssists * % game . SCORE_PER_ESCORT_ASSIST + // 1
% cl . turretKills * % game . SCORE_PER_TURRET_KILL + // 1
% cl . flagReturns * % game . SCORE_PER_FLAG_RETURN + // 1
% cl . genRepairs * % game . SCORE_PER_GEN_REPAIR ; // 1
}
% cl . score = mFloor ( % cl . offenseScore + % cl . defenseScore + ( % cl . zkills * $ zombie : : killpoints ) ) ;
% game . recalcTeamRanks ( % cl ) ;
}
function CombatConGame : : updateKillScores ( % game , % clVictim , % clKiller , % damageType , % implement )
{
// is this a vehicle kill rather than a player kill
// console error message suppression
if ( isObject ( % implement ) )
{
if ( % implement . getDataBlock ( ) . getName ( ) $ = "AssaultPlasmaTurret" | | % implement . getDataBlock ( ) . getName ( ) $ = "BomberTurret" ) // gunner
% clKiller = % implement . vehicleMounted . getMountNodeObject ( 1 ) . client ;
else if ( % implement . getDataBlock ( ) . catagory $ = "Vehicles" ) // pilot
% clKiller = % implement . getMountNodeObject ( 0 ) . client ;
}
if ( % game . testTurretKill ( % implement ) ) //check for turretkill before awarded a non client points for a kill
% game . awardScoreTurretKill ( % clVictim , % implement ) ;
else if ( % game . testKill ( % clVictim , % clKiller ) ) //verify victim was an enemy
{
% value = % game . awardScoreKill ( % clKiller ) ;
% game . shareScore ( % clKiller , % value ) ;
% game . awardScoreDeath ( % clVictim ) ;
if ( % game . testGenDefend ( % clVictim , % clKiller ) )
% game . awardScoreGenDefend ( % clKiller ) ;
if ( % game . testCarrierKill ( % clVictim , % clKiller ) )
% game . awardScoreCarrierKill ( % clKiller ) ;
else
{
if ( % game . testFlagDefend ( % clVictim , % clKiller ) )
% game . awardScoreFlagDefend ( % clKiller ) ;
}
if ( % game . testEscortAssist ( % clVictim , % clKiller ) )
% game . awardScoreEscortAssist ( % clKiller ) ;
}
else
{
if ( % game . testSuicide ( % clVictim , % clKiller , % damageType ) ) //otherwise test for suicide
{
% game . awardScoreSuicide ( % clVictim ) ;
}
else
{
if ( % game . testTeamKill ( % clVictim , % clKiller ) ) //otherwise test for a teamkill
% game . awardScoreTeamKill ( % clVictim , % clKiller ) ;
}
}
}
function CombatConGame : : testGenDefend ( % game , % victimID , % killerID )
{
InitContainerRadiusSearch ( % victimID . plyrPointOfDeath , % game . RADIUS_GEN_DEFENSE , $ TypeMasks : : StaticShapeObjectType ) ;
% objID = containerSearchNext ( ) ;
while ( % objID ! = 0 )
{
% objType = % objID . getDataBlock ( ) . ClassName ;
if ( ( % objType $ = "generator" ) & & ( % objID . team = = % killerID . team ) )
return true ; //found a killer's generator within required radius of victim's death
else
% objID = containerSearchNext ( ) ;
}
return false ; //didn't find a qualifying gen within required radius of victim's point of death
}
function CombatConGame : : testCarrierKill ( % game , % victimID , % killerID )
{
% flag = % victimID . plyrDiedHoldingFlag ;
return ( ( % flag ! $ = "" ) & & ( % flag . team = = % killerID . team ) ) ;
}
function CombatConGame : : testEscortAssist ( % game , % victimID , % killerID )
{
return ( % victimID . dmgdFlagCarrier ) ;
}
function CombatConGame : : testValidRepair ( % game , % obj )
{
if ( ! % obj . wasDisabled )
{
//error(%obj SPC "was never disabled");
return false ;
}
else if ( % obj . lastDamagedByTeam = = % obj . team )
{
//error(%obj SPC "was last damaged by a friendly");
return false ;
}
else if ( % obj . team ! = % obj . repairedBy . team )
{
//error(%obj SPC "was repaired by an enemy");
return false ;
}
else
{
if ( % obj . soiledByEnemyRepair )
% obj . soiledByEnemyRepair = false ;
return true ;
}
}
function CombatConGame : : resetDontScoreTimer ( % game , % team )
{
$ dontScoreTimer [ % team ] = false ;
}
// Asset Destruction scoring
function CombatConGame : : awardScoreGenDestroy ( % game , % cl )
{
% cl . genDestroys + + ;
if ( % game . SCORE_PER_DESTROY_GEN ! = 0 )
{
messageClient ( % cl , ' msgGenDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy generator . ' , % game . SCORE_PER_DESTROY_GEN ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_GEN ;
}
function CombatConGame : : awardScoreSensorDestroy ( % game , % cl )
{
% cl . sensorDestroys + + ;
if ( % game . SCORE_PER_DESTROY_SENSOR ! = 0 )
{
messageClient ( % cl , ' msgSensorDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy sensor . ' , % game . SCORE_PER_DESTROY_SENSOR ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_SENSOR ;
}
function CombatConGame : : awardScoreTurretDestroy ( % game , % cl )
{
% cl . turretDestroys + + ;
if ( % game . SCORE_PER_DESTROY_TURRET ! = 0 )
{
messageClient ( % cl , ' msgTurretDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy turret . ' , % game . SCORE_PER_DESTROY_TURRET ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_TURRET ;
}
function CombatConGame : : awardScoreInvDestroy ( % game , % cl )
{
% cl . IStationDestroys + + ;
if ( % game . SCORE_PER_DESTROY_ISTATION ! = 0 )
{
messageClient ( % cl , ' msgInvDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy inventory station . ' , % game . SCORE_PER_DESTROY_ISTATION ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_ISTATION ;
}
function CombatConGame : : awardScoreVehicleStationDestroy ( % game , % cl )
{
% cl . VStationDestroys + + ;
if ( % game . SCORE_PER_DESTROY_VSTATION ! = 0 )
{
messageClient ( % cl , ' msgVSDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy vehicle station . ' , % game . SCORE_PER_DESTROY_VSTATION ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_VSTATION ;
}
function CombatConGame : : awardScoreSolarDestroy ( % game , % cl )
{
% cl . SolarDestroys + + ;
if ( % game . SCORE_PER_DESTROY_SOLAR ! = 0 )
{
messageClient ( % cl , ' msgSolarDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy solar panel . ' , % game . SCORE_PER_DESTROY_SOLAR ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_SOLAR ;
}
function CombatConGame : : awardScoreSentryDestroy ( % game , % cl )
{
% cl . sentryDestroys + + ;
if ( % game . SCORE_PER_DESTROY_SENTRY ! = 0 )
{
messageClient ( % cl , ' msgSentryDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy sentry turret . ' , % game . SCORE_PER_DESTROY_SENTRY ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_SENTRY ;
}
function CombatConGame : : awardScoreDepSensorDestroy ( % game , % cl )
{
% cl . depSensorDestroys + + ;
if ( % game . SCORE_PER_DESTROY_DEP_SENSOR ! = 0 )
{
messageClient ( % cl , ' msgDepSensorDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy deployable . ' , % game . SCORE_PER_DESTROY_DEP_SENSOR ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_DEP_SENSOR ;
}
function CombatConGame : : awardScoreDepTurretDestroy ( % game , % cl )
{
% cl . depTurretDestroys + + ;
if ( % game . SCORE_PER_DESTROY_DEP_TUR ! = 0 )
{
messageClient ( % cl , ' msgDepTurDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy deployed turret . ' , % game . SCORE_PER_DESTROY_DEP_TUR ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_DEP_TUR ;
}
function CombatConGame : : awardScoreDepStationDestroy ( % game , % cl )
{
% cl . depStationDestroys + + ;
if ( % game . SCORE_PER_DESTROY_DEP_INV ! = 0 )
{
messageClient ( % cl , ' msgDepInvDes ' , ' \ c0You received a % 1 point bonus for destroying an enemy deployed station . ' , % game . SCORE_PER_DESTROY_DEP_INV ) ;
//messageTeamExcept(%cl, 'msgGenDes', '\c0Teammate %1 received a %2 point bonus for destroying an enemy generator.', %cl.name, %game.SCORE_PER_GEN_DESTROY);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_DESTROY_DEP_INV ;
}
function CombatConGame : : awardScoreGenDefend ( % game , % killerID )
{
% killerID . genDefends + + ;
if ( % game . SCORE_PER_GEN_DEFEND ! = 0 )
{
messageClient ( % killerID , ' msgGenDef ' , ' \ c0You received a % 1 point bonus for defending a generator . ' , % game . SCORE_PER_GEN_DEFEND ) ;
//messageTeamExcept(%killerID, 'msgGenDef', '\c0Teammate %1 received a %2 point bonus for defending a generator.', %killerID.name, %game.SCORE_PER_GEN_DEFEND);
}
% game . recalcScore ( % cl ) ;
return % game . SCORE_PER_GEN_DEFEND ;
}
function CombatConGame : : awardScoreCarrierKill ( % game , % killerID )
{
% killerID . carrierKills + + ;
if ( % game . SCORE_PER_CARRIER_KILL ! = 0 )
{
messageClient ( % killerID , ' msgCarKill ' , ' \ c0You received a % 1 point bonus for stopping the enemy flag carrier ! ' , % game . SCORE_PER_CARRIER_KILL ) ;
//messageTeamExcept(%killerID, 'msgCarKill', '\c0Teammate %1 received a %2 point bonus for stopping the enemy flag carrier!', %killerID.name, %game.SCORE_PER_CARRIER_KILL);
}
% game . recalcScore ( % killerID ) ;
return % game . SCORE_PER_CARRIER_KILL ;
}
function CombatConGame : : awardScoreFlagDefend ( % game , % killerID )
{
% killerID . flagDefends + + ;
if ( % game . SCORE_PER_FLAG_DEFEND ! = 0 )
{
messageClient ( % killerID , ' msgFlagDef ' , ' \ c0You received a % 1 point bonus for defending your flag ! ' , % game . SCORE_PER_FLAG_DEFEND ) ;
//messageTeamExcept(%killerID, 'msgFlagDef', '\c0Teammate %1 received a %2 point bonus for defending your flag!', %killerID.name, %game.SCORE_PER_FLAG_DEFEND);
}
% game . recalcScore ( % killerID ) ;
return % game . SCORE_PER_FLAG_DEFEND ;
}
function CombatConGame : : awardScoreEscortAssist ( % game , % killerID )
{
% killerID . escortAssists + + ;
if ( % game . SCORE_PER_ESCORT_ASSIST ! = 0 )
{
messageClient ( % killerID , ' msgEscAsst ' , ' \ c0You received a % 1 point bonus for protecting the flag carrier ! ' , % game . SCORE_PER_ESCORT_ASSIST ) ;
//messageTeamExcept(%killerID, 'msgEscAsst', '\c0Teammate %1 received a %2 point bonus for protecting the flag carrier!', %killerID.name, %game.SCORE_PER_ESCORT_ASSIST);
}
% game . recalcScore ( % killerID ) ;
return % game . SCORE_PER_ESCORT_ASSIST ;
}
function CombatConGame : : resetScore ( % game , % client )
{
% client . offenseScore = 0 ;
% client . kills = 0 ;
% client . deaths = 0 ;
% client . suicides = 0 ;
% client . escortAssists = 0 ;
% client . teamKills = 0 ;
% client . flagCaps = 0 ;
% client . flagGrabs = 0 ;
% client . genDestroys = 0 ;
% client . sensorDestroys = 0 ;
% client . turretDestroys = 0 ;
% client . iStationDestroys = 0 ;
% client . vstationDestroys = 0 ;
% client . solarDestroys = 0 ;
% client . sentryDestroys = 0 ;
% client . depSensorDestroys = 0 ;
% client . depTurretDestroys = 0 ;
% client . depStationDestroys = 0 ;
% client . vehicleScore = 0 ;
% client . vehicleBonus = 0 ;
% client . flagDefends = 0 ;
% client . defenseScore = 0 ;
% client . genDefends = 0 ;
% client . carrierKills = 0 ;
% client . escortAssists = 0 ;
% client . turretKills = 0 ;
% client . mannedTurretKills = 0 ;
% client . flagReturns = 0 ;
% client . genRepairs = 0 ;
% client . SensorRepairs = 0 ;
% client . TurretRepairs = 0 ;
% client . StationRepairs = 0 ;
% client . VStationRepairs = 0 ;
% client . solarRepairs = 0 ;
% client . sentryRepairs = 0 ;
% client . depInvRepairs = 0 ;
% client . depTurretRepairs = 0 ;
% client . returnPts = 0 ;
% client . score = 0 ;
}
function CombatConGame : : objectRepaired ( % game , % obj , % objName )
{
% item = % obj . getDataBlock ( ) . getName ( ) ;
switch $ ( % item )
{
case generatorLarge :
% game . genOnRepaired ( % obj , % objName ) ;
case sensorMediumPulse :
% game . sensorOnRepaired ( % obj , % objName ) ;
case sensorLargePulse :
% game . sensorOnRepaired ( % obj , % objName ) ;
case stationInventory :
% game . stationOnRepaired ( % obj , % objName ) ;
case turretBaseLarge :
% game . turretOnRepaired ( % obj , % objName ) ;
case stationVehicle :
% game . vStationOnRepaired ( % obj , % objName ) ;
case solarPanel :
% game . solarPanelOnRepaired ( % obj , % objName ) ;
case sentryTurret :
% game . sentryTurretOnRepaired ( % obj , % objName ) ;
case TurretDeployedWallIndoor :
% game . depTurretOnRepaired ( % obj , % objName ) ;
case TurretDeployedFloorIndoor :
% game . depTurretOnRepaired ( % obj , % objName ) ;
case TurretDeployedCeilingIndoor :
% game . depTurretOnRepaired ( % obj , % objName ) ;
case TurretDeployedOutdoor :
% game . depTurretOnRepaired ( % obj , % objName ) ;
}
% obj . wasDisabled = false ;
}
function CombatConGame : : genOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgGenRepaired ' , ' \ c0 % 1 repaired the % 2 Generator ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreGenRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : stationOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgStationRepaired ' , ' \ c0 % 1 repaired the % 2 Inventory Station ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreStationRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : sensorOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgSensorRepaired ' , ' \ c0 % 1 repaired the % 2 Pulse Sensor ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreSensorRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : turretOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgTurretRepaired ' , ' \ c0 % 1 repaired the % 2 Turret ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreTurretRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : vStationOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgvstationRepaired ' , ' \ c0 % 1 repaired the Vehicle Station ! ' , % repairman . name ) ;
% game . awardScoreVStationRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : solarPanelOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgsolarRepaired ' , ' \ c0 % 1 repaired the % 2 Solar Panel ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreSolarRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : sentryTurretOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
teamRepairMessage ( % repairman , ' msgsentryTurretRepaired ' , ' \ c0 % 1 repaired the % 2 Sentry Turret ! ' , % repairman . name , % obj . nameTag ) ;
% game . awardScoreSentryRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : depTurretOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
% game . awardScoreDepTurretRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : depInvOnRepaired ( % game , % obj , % objName )
{
if ( % game . testValidRepair ( % obj ) )
{
% repairman = % obj . repairedBy ;
% game . awardScoreDepInvRepair ( % obj . repairedBy ) ;
}
}
function CombatConGame : : awardScoreGenRepair ( % game , % cl )
{
% cl . genRepairs + + ;
if ( % game . SCORE_PER_REPAIR_GEN ! = 0 )
{
messageClient ( % cl , ' msgGenRep ' , ' \ c0You received a % 1 point bonus for repairing a generator . ' , % game . SCORE_PER_REPAIR_GEN ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreStationRepair ( % game , % cl )
{
% cl . stationRepairs + + ;
if ( % game . SCORE_PER_REPAIR_ISTATION ! = 0 )
{
messageClient ( % cl , ' msgIStationRep ' , ' \ c0You received a % 1 point bonus for repairing a inventory station . ' , % game . SCORE_PER_REPAIR_ISTATION ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreSensorRepair ( % game , % cl )
{
% cl . sensorRepairs + + ;
if ( % game . SCORE_PER_REPAIR_SENSOR ! = 0 )
{
messageClient ( % cl , ' msgSensorRep ' , ' \ c0You received a % 1 point bonus for repairing a sensor . ' , % game . SCORE_PER_REPAIR_SENSOR ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreTurretRepair ( % game , % cl )
{
% cl . TurretRepairs + + ;
if ( % game . SCORE_PER_REPAIR_TURRET ! = 0 )
{
messageClient ( % cl , ' msgTurretRep ' , ' \ c0You received a % 1 point bonus for repairing a base turret . ' , % game . SCORE_PER_REPAIR_TURRET ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreVStationRepair ( % game , % cl )
{
% cl . VStationRepairs + + ;
if ( % game . SCORE_PER_REPAIR_VSTATION ! = 0 )
{
messageClient ( % cl , ' msgVStationRep ' , ' \ c0You received a % 1 point bonus for repairing a vehicle station . ' , % game . SCORE_PER_REPAIR_VSTATION ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreSolarRepair ( % game , % cl )
{
% cl . solarRepairs + + ;
if ( % game . SCORE_PER_REPAIR_SOLAR ! = 0 )
{
messageClient ( % cl , ' msgsolarRep ' , ' \ c0You received a % 1 point bonus for repairing a solar panel . ' , % game . SCORE_PER_REPAIR_SOLAR ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreSentryRepair ( % game , % cl )
{
% cl . sentryRepairs + + ;
if ( % game . SCORE_PER_REPAIR_SENTRY ! = 0 )
{
messageClient ( % cl , ' msgSentryRep ' , ' \ c0You received a % 1 point bonus for repairing a sentry turret . ' , % game . SCORE_PER_REPAIR_SENTRY ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreDepTurretRepair ( % game , % cl )
{
% cl . depTurretRepairs + + ;
if ( % game . SCORE_PER_REPAIR_DEP_TUR ! = 0 )
{
messageClient ( % cl , ' msgDepTurretRep ' , ' \ c0You received a % 1 point bonus for repairing a deployed turret . ' , % game . SCORE_PER_REPAIR_DEP_TUR ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : awardScoreDepInvRepair ( % game , % cl )
{
% cl . depInvRepairs + + ;
if ( % game . SCORE_PER_REPAIR_DEP_INV ! = 0 )
{
messageClient ( % cl , ' msgDepInvRep ' , ' \ c0You received a % 1 point bonus for repairing a deployed station . ' , % game . SCORE_PER_REPAIR_DEP_INV ) ;
}
% game . recalcScore ( % cl ) ;
}
function CombatConGame : : enterMissionArea ( % game , % playerData , % player )
{
% player . client . outOfBounds = false ;
messageClient ( % player . client , ' EnterMissionArea ' , ' \ c1You are back in the mission area . ~ wvoice / Announcer / ANN . ib . wav ' ) ;
cancel ( % player . alertThread ) ;
}
function CombatConGame : : leaveMissionArea ( % game , % playerData , % player )
{
if ( % player . getState ( ) $ = "Dead" )
return ;
% player . client . outOfBounds = true ;
messageClient ( % player . client , ' LeaveMissionArea ' , ' \ c1You have left the mission area . Return or be killed . ~ wvoice / Announcer / ANN . oob . wav ' ) ;
% player . alertThread = % game . schedule ( 10 , "DMAlertPlayer" , 3 , % player ) ;
}
function CombatConGame : : DMAlertPlayer ( % game , % count , % player )
{
if ( % count > 1 )
% player . alertThread = % game . schedule ( 1000 , "DMAlertPlayer" , % count - 1 , % player ) ;
else
% player . alertThread = % game . schedule ( 5000 , "MissionAreaDamage" , % player ) ;
}
function CombatConGame : : MissionAreaDamage ( % game , % player )
{
if ( % player . getState ( ) ! $ = "Dead" ) {
% player . setDamageFlash ( 1.5 ) ;
% prevHurt = % player . getDamageLevel ( ) ;
% player . scriptkill ( $ DamageType : : OutOfBounds ) ;
% player . alertThread = % game . schedule ( 1000 , "MissionAreaDamage" , % player ) ;
}
}
function CombatConGame : : vehicleDestroyed ( % game , % vehicle , % destroyer ) {
% data = % vehicle . getDataBlock ( ) ;
% vehicleType = getTaggedString ( % data . targetTypeTag ) ;
if ( % vehicleType ! $ = "MPB" )
% vehicleType = strlwr ( % vehicleType ) ;
% enemyTeam = ( % destroyer . team = = 1 ) ? 2 : 1 ;
% scorer = 0 ;
% multiplier = 3 ;
% shouldshare = 0 ;
% passengers = 0 ;
for ( % i = 0 ; % i < % data . numMountPoints ; % i + + )
if ( % vehicle . getMountNodeObject ( % i ) )
% passengers + + ;
if ( % destroyer . client ) {
% destroyer = % destroyer . client ;
% scorer = % destroyer ;
if ( % vehicle . lastDamageType = = $ DamageType : : Mine )
% multiplier = 1 ;
}
else if ( % destroyer . getClassName ( ) $ = "Turret" ) {
if ( % destroyer . getControllingClient ( ) ) {
% destroyer = % destroyer . getControllingClient ( ) ;
% scorer = % destroyer ;
if ( % destroyer . vehicleMounted ) {
if ( % destroyer . vehicleMounted . getMountNodeObject ( 0 ) ) {
% driver = % destroyer . vehicleMounted . getMountNodeObject ( 0 ) ;
% sharer = % driver . client ;
% shouldshare = 1 ;
}
% multiplier = 2 ;
}
}
else {
% destroyerName = "A turret" ;
% multiplier = 0 ;
}
}
else if ( % destroyer . getDataBlock ( ) . catagory $ = "Vehicles" ) {
if ( % destroyer . getMountNodeObject ( 0 ) ) {
% destroyer = % destroyer . getMountNodeObject ( 0 ) . client ;
% scorer = % destroyer ;
}
% multiplier = 2 ;
}
else
return ;
if ( % destroyerName $ = "" )
% destroyerName = % destroyer . name ;
if ( % vehicle . team = = % destroyer . team ) {
% pref = ( % vehicleType $ = "Assault Tank" ) ? "an" : "a" ;
messageAll ( ' msgVehicleTeamDestroy ' , ' \ c0 % 1 TEAMKILLED % 3 % 2 ! ' , % destroyerName , % vehicleType , % pref ) ;
}
2013-03-31 16:54:31 +00:00
else if ( % destroyerName ! $ = "" ) {
2013-02-01 20:45:22 +00:00
messageTeamExcept ( % destroyer , ' msgVehicleDestroy ' , ' \ c0 % 1 destroyed an enemy % 2. ' , % destroyerName , % vehicleType ) ;
messageTeam ( % enemyTeam , ' msgVehicleDestroy ' , ' \ c0 % 1 destroyed your team \ ' s % 2. ' , % destroyerName , % vehicleType ) ;
if ( % scorer ) {
% value = % game . awardScoreVehicleDestroyed ( % scorer , % vehicleType , % multiplier , % passengers ) ;
if ( % shouldshare = = 1 )
% game . awardScoreVehicleDestroyed ( % sharer , % vehicleType , ( % multiplier / 2 ) , % passengers ) ;
% game . shareScore ( % value ) ;
}
}
}
function CombatConGame : : awardScoreVehicleDestroyed ( % game , % client , % vehicleType , % mult , % passengers )
{
if ( isDemo ( ) )
return 0 ;
if ( % vehicleType $ = "Interceptor" )
% base = % game . SCORE_PER_DESTROY_SHRIKE ;
else if ( % vehicleType $ = "Fighter" )
% base = % game . SCORE_PER_DESTROY_STRIKEFIGHTER ;
else if ( % vehicleType $ = "Assault Chopper" )
% base = % game . SCORE_PER_DESTROY_HELICOPTER ;
else if ( % vehicleType $ = "AWACS" )
% base = % game . SCORE_PER_DESTROY_AWACS ;
else if ( % vehicleType $ = "Bomber" )
% base = % game . SCORE_PER_DESTROY_BOMBER ;
else if ( % vehicleType $ = "Gunship" )
% base = % game . SCORE_PER_DESTROY_GUNSHIP ;
else if ( % vehicleType $ = "Transport Chopper" )
% base = % game . SCORE_PER_DESTROY_HEAVYHELICOPTER ;
else if ( % vehicleType $ = "Heavy Transport" )
% base = % game . SCORE_PER_DESTROY_TRANSPORT ;
else if ( % vehicleType $ = "Grav Cycle" )
% base = % game . SCORE_PER_DESTROY_WILDCAT ;
else if ( % vehicleType $ = "Light Tank" )
% base = % game . SCORE_PER_DESTROY_TANK ;
else if ( % vehicleType $ = "Assault Tank" )
% base = % game . SCORE_PER_DESTROY_HEAVYTANK ;
else if ( % vehicleType $ = "chaingun tank" )
% base = % game . SCORE_PER_DESTROY_CGTANK ;
else if ( % vehicleType $ = "APC" )
% base = % game . SCORE_PER_DESTROY_FFTRANSPORT ;
else if ( % vehicleType $ = "Heavy Artillery" )
% base = % game . SCORE_PER_DESTROY_ARTILLERY ;
else if ( % vehicleType $ = "MPB" )
% base = % game . SCORE_PER_DESTROY_MPB ;
else if ( % vehicleType $ = "Boat" )
% base = % game . SCORE_PER_DESTROY_TRANSBOAT ;
else if ( % vehicleType $ = "Submarine" )
% base = % game . SCORE_PER_DESTROY_SUB ;
else if ( % vehicleType $ = "GunBoat" )
% base = % game . SCORE_PER_DESTROY_BOAT ;
% total = ( % base * % mult ) + ( % passengers * % game . SCORE_PER_PASSENGER ) ;
% client . vehicleScore + = % total ;
messageClient ( % client , ' msgVehicleScore ' , ' \ c0You received a % 1 point bonus for destroying an enemy % 2. ' , % total , % vehicleType ) ;
% game . recalcScore ( % client ) ;
return % total ;
}
function CombatConGame : : shareScore ( % game , % client , % amount )
{
if ( isDemo ( ) )
return 0 ;
//error("share score of"SPC %amount SPC "from client:" SPC %client);
// all of the player in the bomber and tank share the points
// gained from any of the others
% vehicle = % client . vehicleMounted ;
if ( ! % vehicle )
return 0 ;
% vehicleType = getTaggedString ( % vehicle . getDataBlock ( ) . targetTypeTag ) ;
if ( % vehicleType $ = "Bomber" | | % vehicleType $ = "Assault Tank" )
{
for ( % i = 0 ; % i < % vehicle . getDataBlock ( ) . numMountPoints ; % i + + )
{
% occupant = % vehicle . getMountNodeObject ( % i ) ;
if ( % occupant )
{
% occCl = % occupant . client ;
if ( % occCl ! = % client & & % occCl . team = = % client . team )
{
// the vehicle has a valid teammate at this node
// share the score with them
% occCl . vehicleBonus + = % amount ;
% game . recalcScore ( % occCl ) ;
}
}
}
}
}
function CombatConGame : : awardScoreTurretKill ( % game , % victimID , % implement )
{
if ( ( % killer = % implement . getControllingClient ( ) ) ! = 0 ) //award whoever might be controlling the turret
{
if ( % killer = = % victimID )
% game . awardScoreSuicide ( % victimID ) ;
else if ( % killer . team = = % victimID . team ) //player controlling a turret killed a teammate
{
% killer . teamKills + + ;
% game . awardScoreTurretTeamKill ( % victimID , % killer ) ;
% game . awardScoreDeath ( % victimID ) ;
}
else
{
% killer . mannedturretKills + + ;
% game . recalcScore ( % killer ) ;
% game . awardScoreDeath ( % victimID ) ;
}
}
else if ( ( % killer = % implement . owner ) ! = 0 ) //if it isn't controlled, award score to whoever deployed it
{
if ( % killer . team = = % victimID . team )
{
% game . awardScoreDeath ( % victimID ) ;
}
else
{
% killer . turretKills + + ;
% game . recalcScore ( % killer ) ;
% game . awardScoreDeath ( % victimID ) ;
}
}
//default is, no one was controlling it, no one owned it. No score given.
}
function CombatConGame : : testKill ( % game , % victimID , % killerID )
{
return ( ( % killerID ! = 0 ) & & ( % victimID . team ! = % killerID . team ) ) ;
}
function CombatConGame : : awardScoreKill ( % game , % killerID )
{
% killerID . kills + + ;
% game . recalcScore ( % killerID ) ;
return % game . SCORE_PER_KILL ;
}
} ;