Script:Files:script/teams/base.script
From Mod Wiki
#define ON_UPGRADE( LEVEL ) if ( oldLevel < LEVEL && newLevel >= LEVEL ) #define MAX_HEALTH_BOOST 20.f #define HEALTH_BOOST 5.f object team_base { void preinit(); void syncFields(); void init(); void destroy(); void OnPlayerDied( entity p ); void OnPlayerTapOut( entity p ); void OnPlayerJoined( entity p ); void OnMapStart(); void OnMapStart_Base(); void OnNextRespawnTimeChanged() {} boolean SelectActionItem( entity p, float code ); boolean HasActionItem( entity p, float code ); string GetActionItem( entity p, float code ); string GetActionIcon( entity p, float code ); void UpdateStealth( entity p ) { ; } void OnProficiencyUpgrade( entity p, float type, float oldLevel, float newLevel ) { ; } void RegenPulse( entity p ) { ; } void GiveSpottingProficiency( entity p ); void GiveRadarSpottingProficiency( entity p ); void GiveRepairProficiency( entity p, task t, float scale ); void GiveReviveProficiency( entity p ); void GiveReviveWaitProficiency( entity p ); void GiveBackstabProficiency( entity p ); float CountPlayersOfClass( float playerClass ); float GetMaxReviveCount() { return 0.f; } void UpgradeClip( entity p, float clip, float clipCount ); void UpgradeAmmo( entity p, float clip, float clipCount ); void PlayIntelRepairedMessage(); void PlayIntelDamagedMessage(); float GetNextVehicleSpawnTime(); float GetHealthBoost( entity p ) { return 0.f; } void GiveSpawnItems( entity p ) { ; } boolean HasConstructionBonus( entity p ) { return false; } boolean HasChargeArmBonus( entity p ) { return false; } boolean HasSelfArmingMines( entity p ) { return false; } boolean HasRepairBonus( entity p ) { return false; } boolean HasDisarmBonus( entity p ) { return false; } boolean HasFastFireSupportLock( entity p ) { return false; } boolean HasFastFireSupportRecharge( entity p ) { return false; } boolean HasFastHackBonus( entity p ) { return false; } boolean HasVehicleArmorBonus( entity p ) { return false; } boolean CanTransferStroyent( entity p ) { return false; } boolean HasEnhancedRadar( entity p ) { return false; } boolean HasPersonalJammer( entity p ) { return false; } boolean CanRequestVehicle( entity p ) { return false; } boolean HasEfficientDecoys( entity p ) { return false; } boolean HasFastRevive( entity p ) { return false; } boolean HasFastDisguise( entity p ) { return false; } boolean HasFastTargetLock( entity p ) { return false; } boolean CanStab( entity p ) { return false; } boolean HasSpreadBonus( entity p ) { return false; } float GetMaxSupplies( entity p ) { return 1.f; } void CreatePersonnelAuras( entity p ) { ; } float GetWeaponSpeedBonus( entity p ) { return 0.f; } void ResetVehicleCredit( entity p ); void SetRespawnWait( float time ) { ; } float GetRespawnWait(); void MarkWaitingPlayers(); string repairItem; string hackItem; string chargeArmItem; string chargeDisarmItem; string armItem; string constructItem; string disguiseItem; string spawnHostItem; string spawnHostDisarmItem; string reviveItem; string stabItem; string disguisedStabItem; string plantItem; string flyerDroneItem; string repairIcon; string hackIcon; string chargeArmIcon; string chargeDisarmIcon; string armIcon; string constructIcon; string disguiseIcon; string spawnHostIcon; string disarmSpawnHostIcon; string reviveIcon; string spawnCapIcon; string stabIcon; string useIcon; string plantIcon; string useVehicleIcon; string flyerDroneIcon; float spottingProficiency; float radarSpottingProficiency; float repairProficiency; float reviveProficiency; float reviveWaitProficiency; float backstabDisguisedProficiency; float reviveMeToolTip1; float reviveMeToolTip2; float spawnHostMeToolTip1; float spawnHostMeToolTip2; float parachuteToolTip; float vehicleRepairTask; float captureSpawnTask; float liberateSpawnTaskCovertOnly; float liberateSpawnTask; float nextDisableTime; float nextVehicleSpawnTime; handle structureName; float GetMineLimit(); float respawnWait; } void team_base::preinit() { spottingProficiency = -1; radarSpottingProficiency = -1; repairProficiency = -1; reviveProficiency = -1; reviveWaitProficiency = -1; backstabDisguisedProficiency= -1; reviveMeToolTip1 = -1; reviveMeToolTip2 = -1; spawnHostMeToolTip1 = -1; spawnHostMeToolTip2 = -1; parachuteToolTip = -1; vehicleRepairTask = -1; captureSpawnTask = -1; liberateSpawnTask = -1; nextDisableTime = 0.f; nextVehicleSpawnTime = 0.f; respawnWait = -1; // TODO: Expose these to the defs? repairItem = ""; hackItem = ""; chargeArmItem = ""; chargeDisarmItem = ""; armItem = ""; constructItem = ""; disguiseItem = ""; spawnHostItem = ""; spawnHostDisarmItem = ""; reviveItem = ""; stabItem = ""; disguisedStabItem = ""; plantItem = ""; flyerDroneItem = ""; repairIcon = getKey( "mtr_repair_icon" ); hackIcon = getKey( "mtr_hack_icon" ); chargeArmIcon = getKey( "mtr_chargearm_icon" ); chargeDisarmIcon = getKey( "mtr_chargearm_icon" ); armIcon = getKey( "mtr_arm_icon" ); constructIcon = getKey( "mtr_construct_icon" ); disguiseIcon = getKey( "mtr_disguise_icon" ); spawnHostIcon = getKey( "mtr_spawnhost_icon" ); disarmSpawnHostIcon = getKey( "mtr_disarm_spawnhost_icon" ); reviveIcon = getKey( "mtr_revive_icon" ); spawnCapIcon = getKey( "mtr_spawncap_icon" ); stabIcon = getKey( "mtr_stab_icon" ); useIcon = getKey( "mtr_use_icon" ); plantIcon = getKey( "mtr_plant_icon" ); useVehicleIcon = getKey( "mtr_usevehicle_icon" ); flyerDroneIcon = getKey( "mtr_flyerdrone_icon" ); } void team_base::init() { } void team_base::syncFields() { syncBroadcast( "nextDisableTime" ); } void team_base::destroy() { } void team_base::OnPlayerDied( entity p ) { } void team_base::OnPlayerTapOut( entity p ) { } void team_base::OnPlayerJoined( entity p ) { // reset the player's vehicle request credit ResetVehicleCredit( p ); } void team_base::ResetVehicleCredit( entity p ) { p.vUseVehicleCredit( 1.f ); } void team_base::OnMapStart() { OnMapStart_Base(); } void team_base::OnMapStart_Base() { nextDisableTime = 0.f; nextVehicleSpawnTime = 0.f; // reset the vehicle credit of all players float maxClients = sys.getMaxClients(); float index; for ( index = 0; index < maxClients; index++ ) { entity p = sys.getClient( index ); if ( p == $null_entity ) { continue; } team_base team = p.getGameTeam(); if ( team != self ) { continue; } ResetVehicleCredit( p ); } } float team_base::GetMineLimit() { return 0.f; } boolean team_base::SelectActionItem( entity p, float code ) { string item = GetActionItem( p, code ); if ( item != "" ) { if ( !p.hasWeapon( item ) ) { return false; } p.setWeapon( item, 0 ); return true; } return false; } boolean team_base::HasActionItem( entity p, float code ) { if ( code == AK_USE || code == AK_USEVEHICLE ) { return true; } string item = GetActionItem( p, code ); if ( item != "" ) { return p.hasWeapon( item ); } return false; } string team_base::GetActionItem( entity p, float code ) { if ( code == AK_REPAIR ) { return repairItem; } else if ( code == AK_HACK ) { return hackItem; } else if ( code == AK_CHARGEARM ) { return chargeArmItem; } else if ( code == AK_CHARGEDISARM ) { return chargeDisarmItem; } else if ( code == AK_ARM ) { return armItem; } else if ( code == AK_CONSTRUCT ) { return constructItem; } else if ( code == AK_DISGUISE ) { return disguiseItem; } else if ( code == AK_SPAWNHOST ) { return spawnHostItem; } else if ( code == AK_DISARM_SPAWNHOST ) { return spawnHostDisarmItem; } else if ( code == AK_REVIVE ) { return reviveItem; } else if ( code == AK_STAB ) { if ( p.isDisguised() ) { return disguisedStabItem; } return stabItem; } else if ( code == AK_PLANT ) { return plantItem; } else if ( code == AK_FLYERDRONE ) { return flyerDroneItem; } return ""; } string team_base::GetActionIcon( entity p, float code ) { if ( code == AK_REPAIR ) { return repairIcon; } else if ( code == AK_HACK ) { return hackIcon; } else if ( code == AK_CHARGEARM ) { return chargeArmIcon; } else if ( code == AK_CHARGEDISARM ) { return chargeDisarmIcon; } else if ( code == AK_ARM ) { return armIcon; } else if ( code == AK_CONSTRUCT ) { return constructIcon; } else if ( code == AK_DISGUISE ) { return disguiseIcon; } else if ( code == AK_SPAWNHOST ) { return spawnHostIcon; } else if ( code == AK_DISARM_SPAWNHOST ) { return disarmSpawnHostIcon; } else if ( code == AK_REVIVE ) { return reviveIcon; } else if ( code == AK_SPAWNCAP ) { return spawnCapIcon; } else if ( code == AK_STAB ) { return stabIcon; } else if ( code == AK_USE ) { return useIcon; } else if ( code == AK_PLANT ) { return plantIcon; } else if ( code == AK_USEVEHICLE ) { return useVehicleIcon; } else if ( code == AK_FLYERDRONE ) { return flyerDroneIcon; } return ""; } void team_base::GiveSpottingProficiency( entity p ) { string statName = getName() + "_spotting_success"; sys.increaseStatInt( sys.allocStatInt( statName ), p.getEntityNumber(), 1 ); if ( spottingProficiency != -1 ) { p.giveProficiency( spottingProficiency, 1.f, $null, "spotting success" ); } } void team_base::GiveRadarSpottingProficiency( entity p ) { string statName = getName() + "_spotting_success"; sys.increaseStatInt( sys.allocStatInt( statName ), p.getEntityNumber(), 1 ); if ( radarSpottingProficiency != -1 ) { p.giveProficiency( radarSpottingProficiency, 1.f, $null, "radar spotting success" ); } } void team_base::GiveRepairProficiency( entity p, task t, float scale ) { if ( repairProficiency != -1 ) { p.giveProficiency( repairProficiency, scale, t, "repairing" ); } } void team_base::GiveReviveProficiency( entity p ) { if ( reviveProficiency != -1 ) { p.giveProficiency( reviveProficiency, 1.f, $null, "revive success" ); } } void team_base::GiveReviveWaitProficiency( entity p ) { if ( reviveWaitProficiency != -1 ) { p.giveProficiency( reviveWaitProficiency, 1.f, $null, "waited for revive" ); } } void team_base::GiveBackstabProficiency( entity p ) { if ( p.isDisguised() ) { if ( backstabDisguisedProficiency != -1 ) { p.giveProficiency( backstabDisguisedProficiency, 1.f, $null, "backstab disguised bonus" ); } } } float team_base::GetNextVehicleSpawnTime() { return nextVehicleSpawnTime; } void team_base::UpgradeClip( entity p, float clip, float clipCount ) { float maxAmmo = p.getMaxAmmo( clip ); if ( maxAmmo > 0 ) { p.setMaxAmmo( clip, maxAmmo + clipCount ); } } void team_base::UpgradeAmmo( entity p, float clip, float clipCount ) { p.setAmmo( clip, p.getAmmo( clip ) + clipCount ); } void team_base::MarkWaitingPlayers() { float count = sys.getMaxClients(); float index; for ( index = 0; index < count; index++ ) { entity p = sys.getClient( index ); if ( p == $null_entity ) { continue; } if ( !p.needsRevive() ) { continue; } if ( p.getGameTeam() != self ) { continue; } p.vOnSpawnWavePassed(); } } float team_base::CountPlayersOfClass( float playerClass ) { float classCount; float count = sys.getMaxClients(); float index; for ( index = 0; index < count; index++ ) { entity p = sys.getClient( index ); if ( p == $null_entity ) { continue; } if ( p.getPlayerClass() == playerClass ) { classCount++; } } return classCount; } float team_base::GetRespawnWait() { return respawnWait; }