s1-scripts-dev/raw/maps/mp/mp_terrace.gsc
2025-05-21 16:23:17 +02:00

123 lines
2.6 KiB
Plaintext

#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\_dynamic_events;
main()
{
maps\mp\mp_terrace_precache::main();
maps\createart\mp_terrace_art::main();
maps\mp\mp_terrace_fx::main();
maps\mp\_load::main();
maps\mp\mp_terrace_lighting::main();
maps\mp\mp_terrace_aud::main();
maps\mp\_compass::setupMiniMap( "compass_map_mp_terrace" );
game["attackers"] = "allies";
game["defenders"] = "axis";
level.allow_swimming = false;
level thread maps\mp\_water::init();
level.aerial_pathnode_group_connect_dist = 400;
level.mapCustomKillstreakFunc = ::terraceCustomKillstreakFunc;
level thread init_turbines();
level thread init_blimps();
level thread init_bells();
// paladin overrides
level.orbitalSupportOverrideFunc = ::terraceCustomOSPFunc;
//Setting Killstreak overrides
level.ospvisionset = "mp_terrace_osp";
level.osplightset = "mp_terrace_osp";
level.droneVisionSet = "mp_terrace_drone";
level.droneLightSet = "mp_terrace_drone";
level.warbirdVisionSet = "mp_terrace_warbird";
level.warbirdLightSet = "mp_terrace_warbird";
}
terraceCustomOSPFunc()
{
level.orbitalsupportoverrides.spawnAngleMin = 180;
level.orbitalsupportoverrides.spawnAngleMax = 270;
if(level.currentgen)
{
level.orbitalsupportoverrides.leftArc = 17.5; //leftArc = 25;
level.orbitalsupportoverrides.rightArc = 17.5; //rightArc = 25;
level.orbitalsupportoverrides.topArc = -35; //topArc = -25;
level.orbitalsupportoverrides.bottomArc = 60; //bottomArc = 60;
}
}
terraceCustomKillstreakFunc()
{
level thread maps\mp\killstreaks\streak_mp_terrace::init();
}
init_turbines()
{
turbines = GetEntArray("turbine_blades","targetname");
array_thread(turbines, ::turbine_spin);
}
turbine_spin()
{
spin_time = 30*60; //30 minutes should be longer enough so it only has to be called once per match
degrees_per_second = RandomFloatRange(30,60);
while(1)
{
self RotateVelocity( (0,degrees_per_second,0), spin_time);
wait spin_time;
}
}
init_blimps()
{
blimps = GetEntArray("blimp","targetname");
array_thread(blimps, ::blimp_run);
}
blimp_run()
{
move_time = 10*60;
next = self;
while(IsDefined(next.target))
{
next = getstruct(next.target, "targetname");
if(!IsDefined(next))
return;
self MoveTo(next.origin, move_time, move_time*0.1, move_time*0.1);
self RotateTo(next.angles, move_time, move_time*0.1, move_time*0.1);
wait move_time;
}
}
init_bells()
{
bells = GetEntArray("bell_collision","targetname");
array_thread(bells, ::bell_run);
}
bell_run()
{
self SetCanDamage(true);
self Ghost();
while(1)
{
self.health = 1000;
self waittill("damage");
self PlaySound("physics_bell_default");
}
}