Files
IL-GSC/BO2/PC/MP/maps/mp/mp_hydro.gsc
2023-10-28 00:17:17 -04:00

470 lines
17 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\mp_hydro.gsc
* Game: Call of Duty: Black Ops 2
* Platform: PC
* Function Count: 12
* Decompile Time: 15 ms
* Timestamp: 10/28/2023 12:11:09 AM
*******************************************************************/
#include common_scripts/utility;
#include maps/mp/_compass;
#include maps/mp/_events;
#include maps/mp/_load;
#include maps/mp/_tacticalinsertion;
#include maps/mp/_utility;
#include maps/mp/gametypes/_weaponobjects;
#include maps/mp/killstreaks/_airsupport;
#include maps/mp/killstreaks/_rcbomb;
#include maps/mp/mp_hydro_amb;
#include maps/mp/mp_hydro_fx;
//Function Number: 1
main()
{
level.levelspawndvars = ::levelspawndvars;
precacheitem("hydro_water_mp");
maps/mp/mp_hydro_fx::main();
precachemodel("collision_physics_256x256x10");
precachemodel("collision_missile_128x128x10");
precachemodel("collision_physics_64x64x64");
maps/mp/_load::main();
maps/mp/mp_hydro_amb::main();
maps/mp/_compass::setupminimap("compass_map_mp_hydro");
maps/mp/mp_hydro_amb::main();
/#
execdevgui("devgui_mp_hydro");
#/
registerclientfield("world","pre_wave",1,1,"int");
registerclientfield("world","big_wave",1,1,"int");
setdvar("compassmaxrange","2300");
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
spawncollision("collision_physics_256x256x10","collider",(3695,340,84),(0,44.8,-90));
spawncollision("collision_physics_256x256x10","collider",(3449,82,84),(0,44.8,-90));
spawncollision("collision_physics_64x64x64","collider",(577.5,-1835,309.5),(0,0,0));
spawncollision("collision_physics_64x64x64","collider",(577.5,-1786.5,339.5),(0,0,0));
spawncollision("collision_physics_64x64x64","collider",(-641.5,-1834.5,309.5),(0,0,0));
spawncollision("collision_physics_64x64x64","collider",(-641.5,-1786,339.5),(0,0,0));
spawncollision("collision_missile_128x128x10","collider",(-521.5,-2106,325),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(-521.5,-2041,325),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(471.5,-2106,325),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(471.5,-2041,325),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(1432,-1912,376.5),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(1516.5,-1912,376.5),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(-1490,-1916.5,376.5),VectorScale((0,0,1)));
spawncollision("collision_missile_128x128x10","collider",(-1574.5,-1916.5,376.5),VectorScale((0,0,1)));
level.waterrushfx = loadfx("maps/mp_maps/fx_mp_hydro_dam_water_wall");
level.waterambientfxmiddlefront = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_middle_front");
level.waterambientfxmiddleback = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_middle_back");
level.waterambientfxleftfront = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_right");
level.waterambientfxleftmiddle = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_left_mid");
level.waterambientfxleftback = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_left_back");
level.waterambientfxrightfront = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_left");
level.waterambientfxrightmiddle = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_right_mid");
level.waterambientfxrightback = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_right_back");
level.waterambientfxboxfront = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_box");
level.waterambientfxboxback = loadfx("maps/mp_maps/fx_mp_hydro_flood_splash_box_back");
setdvar("tu6_player_shallowWaterHeight","10.5");
visionsetnaked("mp_hydro",1);
level thread removeobjectsondemovertime();
set_dvar_if_unset("scr_hydro_water_rush",1);
if(getgametypesetting("allowMapScripting"))
{
level.overrideplayerdeathwatchtimer = ::leveloverridetime;
initwatertriggers();
}
}
//Function Number: 2
levelspawndvars(reset_dvars)
{
ss = level.spawnsystem;
ss.enemy_influencer_radius = set_dvar_float_if_unset("scr_spawn_enemy_influencer_radius","2400",reset_dvars);
}
//Function Number: 3
leveloverridetime(defaulttime)
{
if(IsDefined(self.lastattacker) && IsDefined(self.lastattacker.targetname) && self.lastattacker.targetname == "water_kill_trigger")
{
return 0.4;
}
}
//Function Number: 4
initwatertriggers()
{
water_kill_triggers = getentarray("water_kill_trigger","targetname");
water_mover = spawn("script_model",(0,0,0));
water_mover setmodel("tag_origin");
water_ambient_mover = spawn("script_model",(0,0,0));
water_ambient_mover setmodel("tag_origin");
water_ambient_front_pillar = spawn("script_model",(-31,-888,202));
water_ambient_front_pillar setmodel("tag_origin");
water_ambient_front_pillar.angles = VectorScale((0,1,0));
water_ambient_front_pillar linkto(water_ambient_mover);
water_ambient_back_pillar = spawn("script_model",(-32,-1535,202));
water_ambient_back_pillar setmodel("tag_origin");
water_ambient_back_pillar.angles = VectorScale((0,1,0));
water_ambient_back_pillar linkto(water_ambient_mover);
water_ambient_front_block = spawn("script_model",(-32,-331,193));
water_ambient_front_block setmodel("tag_origin");
water_ambient_front_block.angles = VectorScale((0,1,0));
water_ambient_front_block linkto(water_ambient_mover);
water_ambient_back_block = spawn("script_model",(-32,-1800,199));
water_ambient_back_block setmodel("tag_origin");
water_ambient_back_block.angles = VectorScale((0,1,0));
water_ambient_back_block linkto(water_ambient_mover);
water_ambient_back_right = spawn("script_model",(-467,-1975,190));
water_ambient_back_right setmodel("tag_origin");
water_ambient_back_right.angles = VectorScale((0,1,0));
water_ambient_back_right linkto(water_ambient_mover);
water_ambient_back_left = spawn("script_model",(404,-1975,190));
water_ambient_back_left setmodel("tag_origin");
water_ambient_back_left.angles = VectorScale((0,1,0));
water_ambient_back_left linkto(water_ambient_mover);
water_ambient_middle_right = spawn("script_model",(-274,-1680,185));
water_ambient_middle_right setmodel("tag_origin");
water_ambient_middle_right.angles = VectorScale((0,1,0));
water_ambient_middle_right linkto(water_ambient_mover);
water_ambient_middle_left = spawn("script_model",(215,-1680,185));
water_ambient_middle_left setmodel("tag_origin");
water_ambient_middle_left.angles = VectorScale((0,1,0));
water_ambient_middle_left linkto(water_ambient_mover);
water_ambient_front_right = spawn("script_model",(-333,-302,185));
water_ambient_front_right setmodel("tag_origin");
water_ambient_front_right.angles = VectorScale((0,1,0));
water_ambient_front_right linkto(water_ambient_mover);
water_ambient_front_left = spawn("script_model",(265,-302,185));
water_ambient_front_left setmodel("tag_origin");
water_ambient_front_left.angles = VectorScale((0,1,0));
water_ambient_front_left linkto(water_ambient_mover);
water_pa_1 = spawn("script_model",(1667,-1364,684));
water_pa_1 setmodel("tag_origin");
water_pa_2 = spawn("script_model",(-1806,-1375,783));
water_pa_2 setmodel("tag_origin");
water_pa_3 = spawn("script_model",(-100,-1375,783));
water_pa_3 setmodel("tag_origin");
wait(0.1);
water_kill_triggers[0] enablelinkto();
water_kill_triggers[0] linkto(water_mover);
water_kill_triggers[1] enablelinkto();
water_kill_triggers[1] linkto(water_mover);
playfxontag(level.waterambientfxmiddlefront,water_ambient_front_pillar,"tag_origin");
playfxontag(level.waterambientfxmiddleback,water_ambient_back_pillar,"tag_origin");
playfxontag(level.waterambientfxboxfront,water_ambient_front_block,"tag_origin");
playfxontag(level.waterambientfxboxback,water_ambient_back_block,"tag_origin");
playfxontag(level.waterambientfxrightback,water_ambient_back_right,"tag_origin");
playfxontag(level.waterambientfxleftback,water_ambient_back_left,"tag_origin");
playfxontag(level.waterambientfxrightmiddle,water_ambient_middle_right,"tag_origin");
playfxontag(level.waterambientfxleftmiddle,water_ambient_middle_left,"tag_origin");
playfxontag(level.waterambientfxrightfront,water_ambient_front_right,"tag_origin");
playfxontag(level.waterambientfxleftfront,water_ambient_front_left,"tag_origin");
setdvar("R_WaterWaveBase",0);
if(level.timelimit)
{
seconds = level.timelimit * 60;
add_timed_event(int(seconds * 0.25),"hydro_water_rush");
add_timed_event(int(seconds * 0.75),"hydro_water_rush");
}
else if(level.scorelimit)
{
add_score_event(int(level.scorelimit * 0.25),"hydro_water_rush");
add_score_event(int(level.scorelimit * 0.75),"hydro_water_rush");
}
trigger = spawn("trigger_radius",(-28,-2208,-830),0,450,40);
water_kill_triggers[water_kill_triggers.size] = trigger;
self thread watchwatertrigger(water_mover,water_kill_triggers,water_pa_1,water_pa_2,water_pa_3,water_ambient_back_pillar,water_ambient_front_block,water_ambient_mover);
wait(5);
setdvar("R_WaterWaveBase",0);
}
//Function Number: 5
watchwatertrigger(water_mover,water_kill_triggers,water_pa_1,water_pa_2,water_pa_3,water_ambient_back,water_ambient_box,water_ambient_mover)
{
thread watchdevnotify();
for(;;)
{
level waittill_any("hydro_water_rush","dev_water_rush");
setclientfield("pre_wave",1);
level thread waterkilltriggerthink(water_kill_triggers);
water_ambient_back playloopsound("amb_train_incomming_beep");
water_ambient_box playloopsound("amb_train_incoming_beep");
water_pa_1 playsound("evt_pa_atten");
water_pa_2 playsound("evt_pa_atten");
water_pa_3 playsound("evt_pa_atten");
wait(2);
water_pa_1 playsound("evt_pa_online");
water_pa_2 playsound("evt_pa_online");
water_pa_3 playsound("evt_pa_online");
water_fx1 = spawn("script_model",1000 + VectorScale((0,1,0)));
water_fx1 setmodel("tag_origin");
water_fx1.angles = VectorScale((0,1,0));
water_fx2 = spawn("script_model",1000 + VectorScale((0,1,0)));
water_fx2 setmodel("tag_origin");
water_fx2.angles = VectorScale((0,1,0));
exploder(1005);
wait(3);
water_pa_1 playsound("evt_pa_online");
water_pa_2 playsound("evt_pa_online");
water_pa_3 playsound("evt_pa_online");
wait(1);
playfxontag(level.waterrushfx,water_fx1,"tag_origin");
playfxontag(level.waterrushfx,water_fx2,"tag_origin");
water_fx1 playloopsound("evt_water_wave");
water_fx2 playloopsound("evt_water_wave");
water_mover.origin = (0,0,0);
setclientfield("big_wave",1);
water_mover moveto(VectorScale((0,1,0)),2100);
water_ambient_mover moveto(VectorScale((0,0,1)),20);
water_kill_triggers[2].origin = 1000 + VectorScale((0,0,1));
/#
maps/mp/killstreaks/_airsupport::debug_cylinder(water_kill_triggers[2].origin,450,40,(1,0.1,0.1),1,2500);
#/
level thread waterfxloopstarter(water_fx1,water_fx2,5);
thread play_exploder();
waterlevel = -24;
wait(2);
water_pa_1 playsound("evt_pa_warn");
water_pa_2 playsound("evt_pa_warn");
water_pa_3 playsound("evt_pa_warn");
wait(3);
water_pa_1 playsound("evt_pa_offline");
water_pa_2 playsound("evt_pa_offline");
water_pa_3 playsound("evt_pa_offline");
wait(1);
water_kill_triggers[2].origin = 1000 - VectorScale((0,0,1));
/#
maps/mp/killstreaks/_airsupport::debug_cylinder(water_kill_triggers[2].origin,450,40,(1,0.1,0.1),0,2500);
#/
water_mover moveto(VectorScale((0,1,0)),4100);
water_ambient_mover moveto((0,0,0),2.5);
water_fx1 stoploopsound(2);
water_fx2 stoploopsound(2);
setclientfield("pre_wave",0);
wait(1.5);
water_pa_1 playsound("evt_pa_access");
water_pa_2 playsound("evt_pa_access");
water_pa_3 playsound("evt_pa_access");
wait(1);
water_ambient_box stoploopsound(1);
water_ambient_back stoploopsound(1);
stop_exploder(1005);
setdvar("R_WaterWaveAmplitude","0 0 0 0");
water_mover.origin = VectorScale((0,0,-1));
wait(2);
water_fx1 delete();
water_fx2 delete();
water_mover.origin = (0,0,0);
setclientfield("big_wave",0);
wait(5);
level notify("water_stop",500,2.5,water_kill_triggers[2].origin,water_kill_triggers[2].origin,2.5,2.5,90,water_kill_triggers[1].origin,90,water_kill_triggers[0].origin);
}
}
//Function Number: 6
play_exploder()
{
wait(0.2);
exploder(1002);
wait(0.5);
exploder(1001);
}
//Function Number: 7
watchdevnotify()
{
startvalue = GetDvar(#"1CC516F5");
for(;;)
{
should_water_rush = GetDvar(#"1CC516F5");
if(should_water_rush != startvalue)
{
level notify("dev_water_rush");
startvalue = should_water_rush;
}
wait(0.2);
}
}
//Function Number: 8
waterfxloopstarter(fx1,fx2,looptime)
{
level thread waterfxloop(fx1,fx2);
}
//Function Number: 9
waterfxloop(fx1,fx2)
{
start1 = fx1.origin;
start2 = fx2.origin;
fx1 moveto(2200 + VectorScale((0,1,0)),fx1.origin);
fx2 moveto(2200 + VectorScale((0,1,0)),fx2.origin);
wait(2.67);
fx1 moveto(fx1.origin + (0,600,-1000),2.5);
fx2 moveto(fx2.origin + (0,600,-1000),2.5);
wait(3);
fx1.origin = start1;
fx2.origin = start2;
}
//Function Number: 10
waterkilltriggerthink(triggers)
{
level endon("water_stop");
for(;;)
{
wait(0.1);
entities = getdamageableentarray(triggers[0].origin,2000);
foreach(entity in entities)
{
triggertouched = 0;
if(!(entity istouching(triggers[0])))
{
triggertouched = 1;
if(!(entity istouching(triggers[1])))
{
if(!(entity istouching(triggers[2])))
{
}
else if(IsDefined(entity.model) && entity.model == "t6_wpn_tac_insert_world")
{
entity maps/mp/_tacticalinsertion::destroy_tactical_insertion();
}
else if(!(isalive(entity)))
{
}
else if(IsDefined(entity.targetname))
{
if(entity.targetname == "talon")
{
entity notify("death");
}
else if(entity.targetname == "rcbomb")
{
entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode();
}
else if(entity.targetname == "riotshield_mp")
{
entity dodamage(1,triggers[triggertouched].origin + (0,0,1),triggers[triggertouched],triggers[triggertouched],0,"MOD_CRUSH");
}
else if(IsDefined(entity.helitype) && entity.helitype == "qrdrone")
{
watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher("qrdrone");
watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate(entity,0,undefined);
}
else if(entity.classname == "grenade")
{
if(!(IsDefined(entity.name)))
{
}
else if(!(IsDefined(entity.owner)))
{
}
else if(entity.name == "proximity_grenade_mp")
{
watcher = entity.owner getwatcherforweapon(entity.name);
watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate(entity,0,undefined,"script_mover_mp");
}
else if(!(isweaponequipment(entity.name)))
{
}
else
{
watcher = entity.owner getwatcherforweapon(entity.name);
if(!(IsDefined(watcher)))
{
}
else
{
watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate(entity,0,undefined,"script_mover_mp");
if(entity.classname == "auto_turret")
{
if(!IsDefined(entity.damagedtodeath) || !entity.damagedtodeath)
{
entity domaxdamage(triggers[triggertouched].origin + (0,0,1),triggers[triggertouched],triggers[triggertouched],0,"MOD_CRUSH");
}
}
else
{
if(isplayer(entity))
{
entity dodamage(entity.health * 2,triggers[triggertouched].origin + (0,0,1),triggers[triggertouched],triggers[triggertouched],0,"MOD_HIT_BY_OBJECT",0,"hydro_water_mp");
}
else
{
entity dodamage(entity.health * 2,triggers[triggertouched].origin + (0,0,1),triggers[triggertouched],triggers[triggertouched],0,"MOD_CRUSH");
}
if(isplayer(entity))
{
entity playlocalsound("mpl_splash_death");
}
}
}
}
}
}
}
}
}
}
}
//Function Number: 11
getwatcherforweapon(weapname)
{
if(!(IsDefined(self)))
{
return undefined;
}
if(!(isplayer(self)))
{
return undefined;
}
for(i = 0;i < self.weaponobjectwatcherarray.size;i++)
{
if(self.weaponobjectwatcherarray[i].weapon != weapname)
{
}
else
{
return self.weaponobjectwatcherarray[i];
}
}
return undefined;
}
//Function Number: 12
removeobjectsondemovertime()
{
if(level.gametype == "dem")
{
if(IsDefined(game["overtime_round"]))
{
objects = getentarray("delete_dem_overtime","script_noteworthy");
if(IsDefined(objects))
{
for(i = 0;i < objects.size;i++)
{
objects[i] delete();
}
}
}
}
}