mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-11 19:27:57 -05:00
293 lines
8.6 KiB
Plaintext
293 lines
8.6 KiB
Plaintext
#include maps/mp/_popups;
|
|
#include maps/mp/killstreaks/_spyplane;
|
|
#include maps/mp/killstreaks/_killstreakrules;
|
|
#include maps/mp/killstreaks/_killstreaks;
|
|
#include maps/mp/gametypes/_tweakables;
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_utility;
|
|
|
|
init()
|
|
{
|
|
setmatchflag( "radar_allies", 0 );
|
|
setmatchflag( "radar_axis", 0 );
|
|
level.spyplane = [];
|
|
level.counterspyplane = [];
|
|
level.satellite = [];
|
|
level.spyplanetype = [];
|
|
level.satellitetype = [];
|
|
level.radartimers = [];
|
|
_a14 = level.teams;
|
|
_k14 = getFirstArrayKey( _a14 );
|
|
while ( isDefined( _k14 ) )
|
|
{
|
|
team = _a14[ _k14 ];
|
|
level.radartimers[ team ] = getTime();
|
|
_k14 = getNextArrayKey( _a14, _k14 );
|
|
}
|
|
level.spyplaneviewtime = 25;
|
|
level.counteruavviewtime = 30;
|
|
level.radarlongviewtime = 45;
|
|
if ( maps/mp/gametypes/_tweakables::gettweakablevalue( "killstreak", "allowradar" ) )
|
|
{
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreak( "radar_mp", "radar_mp", "killstreak_spyplane", "uav_used", ::usekillstreakradar );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakstrings( "radar_mp", &"KILLSTREAK_EARNED_RADAR", &"KILLSTREAK_RADAR_NOT_AVAILABLE", &"KILLSTREAK_RADAR_INBOUND" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdialog( "radar_mp", "mpl_killstreak_radar", "kls_u2_used", "", "kls_u2_enemy", "", "kls_u2_ready" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdevdvar( "radar_mp", "scr_giveradar" );
|
|
maps/mp/killstreaks/_killstreaks::createkillstreaktimer( "radar_mp" );
|
|
}
|
|
if ( maps/mp/gametypes/_tweakables::gettweakablevalue( "killstreak", "allowcounteruav" ) )
|
|
{
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreak( "counteruav_mp", "counteruav_mp", "killstreak_counteruav", "counteruav_used", ::usekillstreakcounteruav );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakstrings( "counteruav_mp", &"KILLSTREAK_EARNED_COUNTERUAV", &"KILLSTREAK_COUNTERUAV_NOT_AVAILABLE", &"KILLSTREAK_COUNTERUAV_INBOUND" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdialog( "counteruav_mp", "mpl_killstreak_radar", "kls_cu2_used", "", "kls_cu2_enemy", "", "kls_cu2_ready" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdevdvar( "counteruav_mp", "scr_givecounteruav" );
|
|
maps/mp/killstreaks/_killstreaks::createkillstreaktimer( "counteruav_mp" );
|
|
}
|
|
if ( maps/mp/gametypes/_tweakables::gettweakablevalue( "killstreak", "allowradardirection" ) )
|
|
{
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreak( "radardirection_mp", "radardirection_mp", "killstreak_spyplane_direction", "uav_used", ::usekillstreaksatellite );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakstrings( "radardirection_mp", &"KILLSTREAK_EARNED_SATELLITE", &"KILLSTREAK_SATELLITE_NOT_AVAILABLE", &"KILLSTREAK_SATELLITE_INBOUND" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdialog( "radardirection_mp", "mpl_killstreak_satellite", "kls_sat_used", "", "kls_sat_enemy", "", "kls_sat_ready" );
|
|
maps/mp/killstreaks/_killstreaks::registerkillstreakdevdvar( "radardirection_mp", "scr_giveradardirection" );
|
|
maps/mp/killstreaks/_killstreaks::createkillstreaktimer( "radardirection_mp" );
|
|
}
|
|
}
|
|
|
|
usekillstreakradar( hardpointtype )
|
|
{
|
|
if ( self maps/mp/killstreaks/_killstreakrules::iskillstreakallowed( hardpointtype, self.team ) == 0 )
|
|
{
|
|
return 0;
|
|
}
|
|
killstreak_id = self maps/mp/killstreaks/_killstreakrules::killstreakstart( hardpointtype, self.team );
|
|
if ( killstreak_id == -1 )
|
|
{
|
|
return 0;
|
|
}
|
|
return self maps/mp/killstreaks/_spyplane::callspyplane( hardpointtype, 0, killstreak_id );
|
|
}
|
|
|
|
usekillstreakcounteruav( hardpointtype )
|
|
{
|
|
if ( self maps/mp/killstreaks/_killstreakrules::iskillstreakallowed( hardpointtype, self.team ) == 0 )
|
|
{
|
|
return 0;
|
|
}
|
|
killstreak_id = self maps/mp/killstreaks/_killstreakrules::killstreakstart( hardpointtype, self.team );
|
|
if ( killstreak_id == -1 )
|
|
{
|
|
return 0;
|
|
}
|
|
return self maps/mp/killstreaks/_spyplane::callcounteruav( hardpointtype, 0, killstreak_id );
|
|
}
|
|
|
|
usekillstreaksatellite( hardpointtype )
|
|
{
|
|
if ( self maps/mp/killstreaks/_killstreakrules::iskillstreakallowed( hardpointtype, self.team ) == 0 )
|
|
{
|
|
return 0;
|
|
}
|
|
killstreak_id = self maps/mp/killstreaks/_killstreakrules::killstreakstart( hardpointtype, self.team );
|
|
if ( killstreak_id == -1 )
|
|
{
|
|
return 0;
|
|
}
|
|
return self maps/mp/killstreaks/_spyplane::callsatellite( hardpointtype, 0, killstreak_id );
|
|
}
|
|
|
|
teamhasspyplane( team )
|
|
{
|
|
return getteamspyplane( team ) > 0;
|
|
}
|
|
|
|
teamhassatellite( team )
|
|
{
|
|
return getteamsatellite( team ) > 0;
|
|
}
|
|
|
|
useradaritem( hardpointtype, team, displaymessage )
|
|
{
|
|
team = self.team;
|
|
/#
|
|
assert( isDefined( level.players ) );
|
|
#/
|
|
self maps/mp/killstreaks/_killstreaks::playkillstreakstartdialog( hardpointtype, team );
|
|
if ( level.teambased )
|
|
{
|
|
if ( !isDefined( level.spyplane[ team ] ) )
|
|
{
|
|
level.spyplanetype[ team ] = 0;
|
|
}
|
|
currenttypespyplane = level.spyplanetype[ team ];
|
|
if ( !isDefined( level.satellitetype[ team ] ) )
|
|
{
|
|
level.satellitetype[ team ] = 0;
|
|
}
|
|
currenttypesatellite = level.satellitetype[ team ];
|
|
}
|
|
else
|
|
{
|
|
if ( !isDefined( self.pers[ "spyplaneType" ] ) )
|
|
{
|
|
self.pers[ "spyplaneType" ] = 0;
|
|
}
|
|
currenttypespyplane = self.pers[ "spyplaneType" ];
|
|
if ( !isDefined( self.pers[ "satelliteType" ] ) )
|
|
{
|
|
self.pers[ "satelliteType" ] = 0;
|
|
}
|
|
currenttypesatellite = self.pers[ "satelliteType" ];
|
|
}
|
|
radarviewtype = 0;
|
|
normal = 1;
|
|
fastsweep = 2;
|
|
notifystring = "";
|
|
issatellite = 0;
|
|
isradar = 0;
|
|
iscounteruav = 0;
|
|
viewtime = level.spyplaneviewtime;
|
|
switch( hardpointtype )
|
|
{
|
|
case "radar_mp":
|
|
notifystring = "spyplane";
|
|
isradar = 1;
|
|
viewtime = level.spyplaneviewtime;
|
|
level.globalkillstreakscalled++;
|
|
self addweaponstat( hardpointtype, "used", 1 );
|
|
break;
|
|
case "radardirection_mp":
|
|
notifystring = "satellite";
|
|
issatellite = 1;
|
|
viewtime = level.radarlongviewtime;
|
|
level notify( "satelliteInbound" );
|
|
level.globalkillstreakscalled++;
|
|
self addweaponstat( hardpointtype, "used", 1 );
|
|
break;
|
|
case "counteruav_mp":
|
|
notifystring = "counteruav";
|
|
iscounteruav = 1;
|
|
viewtime = level.counteruavviewtime;
|
|
level.globalkillstreakscalled++;
|
|
self addweaponstat( hardpointtype, "used", 1 );
|
|
break;
|
|
}
|
|
if ( displaymessage )
|
|
{
|
|
if ( isDefined( level.killstreaks[ hardpointtype ] ) && isDefined( level.killstreaks[ hardpointtype ].inboundtext ) )
|
|
{
|
|
level thread maps/mp/_popups::displaykillstreakteammessagetoall( hardpointtype, self );
|
|
}
|
|
}
|
|
return viewtime;
|
|
}
|
|
|
|
resetspyplanetypeonend( type )
|
|
{
|
|
self waittill( type + "_timer_kill" );
|
|
self.pers[ "spyplane" ] = 0;
|
|
}
|
|
|
|
resetsatellitetypeonend( type )
|
|
{
|
|
self waittill( type + "_timer_kill" );
|
|
self.pers[ "satellite" ] = 0;
|
|
}
|
|
|
|
setteamspyplanewrapper( team, value )
|
|
{
|
|
setteamspyplane( team, value );
|
|
if ( team == "allies" )
|
|
{
|
|
setmatchflag( "radar_allies", value );
|
|
}
|
|
else
|
|
{
|
|
if ( team == "axis" )
|
|
{
|
|
setmatchflag( "radar_axis", value );
|
|
}
|
|
}
|
|
while ( level.multiteam == 1 )
|
|
{
|
|
_a205 = level.players;
|
|
_k205 = getFirstArrayKey( _a205 );
|
|
while ( isDefined( _k205 ) )
|
|
{
|
|
player = _a205[ _k205 ];
|
|
if ( player.team == team )
|
|
{
|
|
player setclientuivisibilityflag( "radar_client", value );
|
|
}
|
|
_k205 = getNextArrayKey( _a205, _k205 );
|
|
}
|
|
}
|
|
level notify( "radar_status_change" );
|
|
}
|
|
|
|
setteamsatellitewrapper( team, value )
|
|
{
|
|
setteamsatellite( team, value );
|
|
if ( team == "allies" )
|
|
{
|
|
setmatchflag( "radar_allies", value );
|
|
}
|
|
else
|
|
{
|
|
if ( team == "axis" )
|
|
{
|
|
setmatchflag( "radar_axis", value );
|
|
}
|
|
}
|
|
while ( level.multiteam == 1 )
|
|
{
|
|
_a228 = level.players;
|
|
_k228 = getFirstArrayKey( _a228 );
|
|
while ( isDefined( _k228 ) )
|
|
{
|
|
player = _a228[ _k228 ];
|
|
if ( player.team == team )
|
|
{
|
|
player setclientuivisibilityflag( "radar_client", value );
|
|
}
|
|
_k228 = getNextArrayKey( _a228, _k228 );
|
|
}
|
|
}
|
|
level notify( "radar_status_change" );
|
|
}
|
|
|
|
enemyobituarytext( type, numseconds )
|
|
{
|
|
switch( type )
|
|
{
|
|
case "radarupdate_mp":
|
|
self iprintln( &"MP_WAR_RADAR_ACQUIRED_UPDATE_ENEMY", numseconds );
|
|
break;
|
|
case "radardirection_mp":
|
|
self iprintln( &"MP_WAR_RADAR_ACQUIRED_DIRECTION_ENEMY", numseconds );
|
|
break;
|
|
case "counteruav_mp":
|
|
self iprintln( &"MP_WAR_RADAR_COUNTER_UAV_ACQUIRED_ENEMY", numseconds );
|
|
break;
|
|
default:
|
|
self iprintln( &"MP_WAR_RADAR_ACQUIRED_ENEMY", numseconds );
|
|
}
|
|
}
|
|
|
|
friendlyobituarytext( type, callingplayer, numseconds )
|
|
{
|
|
switch( type )
|
|
{
|
|
case "radarupdate_mp":
|
|
self iprintln( &"MP_WAR_RADAR_UPDATE_ACQUIRED", callingplayer, numseconds );
|
|
break;
|
|
case "radardirection_mp":
|
|
self iprintln( &"MP_WAR_RADAR_DIRECTION_ACQUIRED", callingplayer, numseconds );
|
|
break;
|
|
case "counteruav_mp":
|
|
self iprintln( &"MP_WAR_RADAR_COUNTER_UAV_ACQUIRED", numseconds );
|
|
break;
|
|
default:
|
|
self iprintln( &"MP_WAR_RADAR_ACQUIRED", callingplayer, numseconds );
|
|
}
|
|
}
|