Code:
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
level.doCustomMap = 0;
level.doorwait = 0.3;
level.elevator_model["enter"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.elevator_model["exit"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
precacheModel( level.elevator_model["enter"] );
precacheModel( level.elevator_model["exit"] );
wait 1;
if(getDvar("mapname") == "mp_afghan"){ /** Afghan **/
level thread Afghan();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_boneyard"){ /** Scrapyard **/
level thread Scrapyard();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_brecourt"){ /** Wasteland **/
level thread Wasteland();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_checkpoint"){ /** Karachi **/
level thread Karachi();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_derail"){ /** Derail **/
level thread Derail();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_estate"){ /** Estate **/
level thread Estate();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_favela"){ /** Favela **/
level thread Favela();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_highrise"){ /** HighRise **/
level thread HighRise();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_nightshift"){ /** Skidrow **/
level thread Skidrow();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_invasion"){ /** Invasion **/
level thread Invasion();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_quarry"){ /** Quarry **/
level thread Quarry();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_rundown"){ /** Rundown **/
level thread Rundown();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_rust"){ /** Rust **/
level thread Rust();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_subbase"){ /** SubBase **/
level thread SubBase();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_terminal"){ /** Terminal **/
level thread Terminal();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_underpass"){ /** Underpass **/
level thread Underpass();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_strike"){ /** Strike **/
level thread Strike();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_crash"){ /** Crash **/
level thread Crash();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_compact"){ /** Salvage **/
level thread Salvage();
level.doCustomMap = 1;
}
if(level.doCustomMap == 1){
level.gameState = "starting";
//if(!level.testing)
level thread CreateMapWait();
//
} else {
level.gameState = "starting";
wait 15;
level notify("CREATED");
}
}
CreateMapWait()
{
level.TimerText destroy();
level.Timer destroy();
level.TimerText = level createServerFontString( "objective", 1.5 );
level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
level.TimerText setText("^3Wait for the map to be created:");
level.Timer = level createServerFontString( "objective", 2 );
level.Timer setPoint( "CENTER", "CENTER", 0, -75 );
level.Timer.color = (1,1,0);
for(i = 30; i > 0; i--)
{
level.Timer setValue(i);
foreach(player in level.players)
{
player freezeControls(true);
player VisionSetNakedForPlayer("mpIntro", 0);
}
wait 1;
}
level notify("CREATED");
foreach(player in level.players)
{
player freezeControls(false);
player VisionSetNakedForPlayer(getDvar("mapname"), 0);
}
}
CreateCustomSpawnPointsCircle(center, radius, team)
{
rings = roundUp(radius/50);
for(r = 1; r <= rings; r++){
for(t = 0; t < 360; t += 30){
x = 50 * r * Cos(t);
y = 50 * r * Sin(t);
pos = (center + (x, y, 0));
if(team == "allies" || team == "all"){
level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
}
if(team == "axis" || team == "all"){
level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
}
}
}
}
CreateCustomSpawnPointsBox(corner1, corner2, team)
{
W = Distance((corner1[0], 0, 0), (corner2[0], 0, 0));
L = Distance((0, corner1[1], 0), (0, corner2[1], 0));
CX = corner2[0] - corner1[0];
CY = corner2[1] - corner1[1];
ROWS = roundUp(W/50);
COLUMNS = roundUp(L/50);
XA = CX/ROWS;
YA = CY/COLUMNS;
for(r = 0; r <= ROWS; r++){
for(c = 0; c <= COLUMNS; c++){
pos = (corner1 + (XA * r, YA * c, 0));
if(team == "allies" || team == "all"){
level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
}
if(team == "axis" || team == "all"){
level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
}
}
}
}
CreateCustomSpawnPointsPoint(pos, team)
{
if(team == "allies" || team == "all"){
level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
}
if(team == "axis" || team == "all"){
level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
}
}
CreateElevator(enter, exit, angle)
{
flag = spawn( "script_model", enter );
flag setModel( level.elevator_model["enter"] );
wait 0.01;
efx = loadfx( "misc/flare_ambient" );
playFx( efx, enter );
flag showInMap();
wait 0.01;
flag = spawn( "script_model", exit );
flag setModel( level.elevator_model["exit"] );
wait 0.01;
self thread ElevatorThink(enter, exit, angle);
}
showInMap()
{
self endon ( "disconnect" );
self endon ( "death" );
curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
name = precacheShader( "compass_waypoint_panic" );
objective_add( curObjID, "invisible", (0,0,0) );
objective_position( curObjID, self.origin );
objective_state( curObjID, "active" );
objective_team( curObjID, self.team );
objective_icon( curObjID, name );
self.objIdFriendly = curObjID;
}
CreateBlocks(pos, angle)
{
block = spawn("script_model", pos );
block setModel("com_plasticcase_friendly");
block.angles = angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.01;
}
CreateDoors(open, close, xangle, yangle, zangle, size, height, hp, range)
{
offset = (((size / 2) - 0.5) * -1);
center = spawn("script_model", open );
for(j = 0; j < size; j++){
door = spawn("script_model", open + ((0, 30, 0) * offset));
door setModel("com_plasticcase_enemy");
door Solid();
door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
door EnableLinkTo();
door LinkTo(center);
for(h = 1; h < height; h++){
door = spawn("script_model", open + ((0, 30, 0) * offset) - ((70, 0, 0) * h));
door setModel("com_plasticcase_enemy");
door Solid();
door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
door EnableLinkTo();
door LinkTo(center);
}
offset += 1;
}
if(!isDefined(yangle)){
Temp = VectorToAngles(open - close);
yangle = Temp[1]-90;
}
center.angles = (xangle, yangle, zangle);
center.state = "open";
center.maxhp = hp;
center.hp = hp;
center.range = range;
center thread DoorThinkUse(open, close);
center thread DoorThinkRepair();
center thread DoorUse();
center thread ResetDoors(open, hp);
wait 0.01;
}
CreateRamps(top, bottom)
{
D = Distance(top, bottom);
blocks = roundUp(D/30);
CX = top[0] - bottom[0];
CY = top[1] - bottom[1];
CZ = top[2] - bottom[2];
XA = CX/blocks;
YA = CY/blocks;
ZA = CZ/blocks;
CXY = Distance((top[0], top[1], 0), (bottom[0], bottom[1], 0));
Temp = VectorToAngles(top - bottom);
BA = (Temp[2], Temp[1] + 90, Temp[0]);
for(b = 0; b < blocks; b++){
block = spawn("script_model", (bottom + ((XA, YA, ZA) * b)));
block setModel("com_plasticcase_friendly");
block.angles = BA;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.01;
}
block = spawn("script_model", (bottom + ((XA, YA, ZA) * blocks) - (0, 0, 5)));
block setModel("com_plasticcase_friendly");
block.angles = (BA[0], BA[1], 0);
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.01;
}
CreateBridge(point1, point2, point3)
{
points = [];
points[0] = point1;
points[1] = point2;
points[2] = point3;
for(i = 0; i < points.size; i++){
if(!isDefined(points[i+1])){
return;
}
D = Distance(points[i], points[i+1]);
blocks = roundUp(D/30);
CX = points[i][0] - points[i+1][0];
CY = points[i][1] - points[i+1][1];
CZ = points[i][2] - points[i+1][2];
XA = CX/blocks;
YA = CY/blocks;
ZA = CZ/blocks;
CXY = Distance((points[i][0], points[i][1], 0), (points[i+1][0], points[i+1][1], 0));
Temp = VectorToAngles(points[i] - points[i+1]);
BA = (Temp[2], Temp[1] + 90, Temp[0]);
for(b = 0; b <= blocks; b++){
block = spawn("script_model", (points[i+1] + ((XA, YA, ZA) * b)));
block setModel("com_plasticcase_friendly");
block.angles = BA;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.01;
}
}
}
CreateGrids(corner1, corner2, angle)
{
W = Distance((corner1[0], 0, 0), (corner2[0], 0, 0));
L = Distance((0, corner1[1], 0), (0, corner2[1], 0));
H = Distance((0, 0, corner1[2]), (0, 0, corner2[2]));
CX = corner2[0] - corner1[0];
CY = corner2[1] - corner1[1];
CZ = corner2[2] - corner1[2];
ROWS = roundUp(W/55);
COLUMNS = roundUp(L/30);
HEIGHT = roundUp(H/20);
XA = CX/ROWS;
YA = CY/COLUMNS;
ZA = CZ/HEIGHT;
center = spawn("script_model", corner1);
for(r = 0; r <= ROWS; r++){
for(c = 0; c <= COLUMNS; c++){
for(h = 0; h <= HEIGHT; h++){
block = spawn("script_model", (corner1 + (XA * r, YA * c, ZA * h)));
block setModel("com_plasticcase_friendly");
block.angles = (0, 0, 0);
block Solid();
block LinkTo(center);
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.01;
}
}
}
center.angles = angle;
}
CreateWalls(start, end)
{
D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
H = Distance((0, 0, start[2]), (0, 0, end[2]));
blocks = roundUp(D/55);
height = roundUp(H/30);
CX = end[0] - start[0];
CY = end[1] - start[1];
CZ = end[2] - start[2];
XA = (CX/blocks);
YA = (CY/blocks);
ZA = (CZ/height);
TXA = (XA/4);
TYA = (YA/4);
Temp = VectorToAngles(end - start);
Angle = (0, Temp[1], 90);
for(h = 0; h < height; h++){
block = spawn("script_model", (start + (TXA, TYA, 10) + ((0, 0, ZA) * h)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
for(i = 1; i < blocks; i++){
block = spawn("script_model", (start + ((XA, YA, 0) * i) + (0, 0, 10) + ((0, 0, ZA) * h)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
block = spawn("script_model", ((end[0], end[1], start[2]) + (TXA * -1, TYA * -1, 10) + ((0, 0, ZA) * h)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
}
CreateAdaptWalls(start, end, height, offset)
{
D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
blocks = roundUp(D/55);
CX = end[0] - start[0];
CY = end[1] - start[1];
XA = (CX/blocks);
YA = (CY/blocks);
ZA = 30;
TXA = (XA/4);
TYA = (YA/4);
Temp = VectorToAngles(end - start);
Angle = (0, Temp[1], 90);
tempstart = bulletTrace(start, start + (0, 0, 100000), false, undefined)["position"] - (0,0,500);
tempend = bulletTrace(end, end + (0, 0, 100000), false, undefined)["position"] - (0,0,500);
for(h = 0; h < height; h++){
spawnlocation = bulletTrace(tempstart, tempstart - (0, 0, 100000), false, undefined)["position"];
block = spawn("script_model", (spawnlocation + (TXA, TYA, 15 + offset)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
for(i = 1; i < blocks; i++){
spawnlocation = bulletTrace(tempstart + ((XA, YA, 0) * i), tempstart + ((XA, YA, 0) * i) - (0, 0, 100000), false, undefined)["position"];
block = spawn("script_model", (spawnlocation + (0, 0, 15 + offset)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
spawnlocation = bulletTrace(tempend, tempend - (0, 0, 100000), false, undefined)["position"];
block = spawn("script_model", (spawnlocation + (TXA * -1, TYA * -1, 15 + offset)));
block setModel("com_plasticcase_friendly");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
}
CreateCluster(amount, pos, radius)
{
for(i = 0; i < amount; i++)
{
half = radius / 2;
power = ((randomInt(radius) - half), (randomInt(radius) - half), 500);
block = spawn("script_model", pos + (0, 0, 1000) );
block setModel("com_plasticcase_friendly");
block.angles = (90, 0, 0);
block PhysicsLaunchServer((0, 0, 0), power);
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
block thread ResetCluster(pos, radius);
wait 0.05;
}
}
CreateTables(start, end)
{
D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
blocks = roundUp(D/55);
CX = end[0] - start[0];
CY = end[1] - start[1];
XA = (CX/blocks);
YA = (CY/blocks);
TXA = (XA/4);
TYA = (YA/4);
Temp = VectorToAngles(end - start);
Angle = (0, Temp[1], 0);
block = spawn("script_model", (start + (TXA, TYA, 10)));
block setModel("com_plasticcase_enemy");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
for(i = 1; i < blocks; i++){
block = spawn("script_model", (start + ((XA, YA, 0) * i) + (0, 0, 10)));
block setModel("com_plasticcase_enemy");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
block = spawn("script_model", ((end[0], end[1], start[2]) + (TXA * -1, TYA * -1, 10)));
block setModel("com_plasticcase_enemy");
block.angles = Angle;
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
wait 0.001;
}
CreateBombSite(pos, team, otherteam)
{
center = spawn("script_model", pos );
center setModel("com_bomb_objective");
center Solid();
center CloneBrushmodelToScriptmodel( level.bombSiteCollision );
block = spawn("script_model", pos + (0, 20, 30) );
block.angles = (0, 0, 0);
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
block EnableLinkTo();
block LinkTo(center);
block = spawn("script_model", pos + (0, -20, 30) );
block.angles = (0, 0, 0);
block Solid();
block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
block EnableLinkTo();
block LinkTo(center);
curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
objective_add( curObjID, "invisible", (0,0,0) );
objective_position( curObjID, center.origin );
objective_state( curObjID, "active" );
objective_team( curObjID, team );
center.objIdFriendly = curObjID;
center maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
objective_add( curObjID, "invisible", (0,0,0) );
objective_position( curObjID, center.origin );
objective_state( curObjID, "active" );
objective_team( curObjID, otherteam );
center.objIdEnemy = curObjID;
center maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
center thread BombSiteUse(team, otherteam);
center thread BombThinkPlant(team, otherteam);
}
CreateKillIfBelow(z)
{
level thread KillBelow(z);
}
CustomSpawnin****tem()
{
self endon("disconnect");
pickingspawn = true;
spawnpoint = undefined;
for(;;)
{
self waittill("spawned_player");
pickingspawn = true;
hits = 0;
trys = 0;
if(level.CustomSpawnSetting == 0){
return;
} else if(level.CustomSpawnSetting == 1){
if(randomInt(99) < 50){
while(pickingspawn){
temppos = level.CustomSpawnPointsFinal[self.team][randomInt(level.CustomSpawnPointsFinal[self.team].size)];
top = bullettrace(temppos, temppos + (0, 0, 100000), false, undefined)["position"];
spawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
if(level.CustomSpawnNearEnemy == 0){
foreach(player in level.players)
{
if(player.team == self.team){
continue;
}
end = player.origin - spawnpoint;
if(length(end) > 10000){
continue;
}
check = bullettracepassed(spawnpoint, spawnpoint + (end[0], end[1], 0), false, undefined);
if(check){
hits++;
}
}
if(hits == 0){
pickingspawn = false;
} else {
trys++;
}
if(trys > level.CustomSpawnPointsFinal[self.team].size - 1){
pickingspawn = false;
}
} else {
pickingspawn = false;
}
}
self SetOrigin((spawnpoint));
}
} else if(level.CustomSpawnSetting == 2){
while(pickingspawn){
temppos = level.CustomSpawnPointsFinal[self.team][randomInt(level.CustomSpawnPointsFinal[self.team].size)];
top = bullettrace(temppos, temppos + (0, 0, 100000), false, undefined)["position"];
spawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
if(level.CustomSpawnNearEnemy == 0){
foreach(player in level.players)
{
if(player.team == self.team){
continue;
}
end = player.origin - spawnpoint;
if(length(end) > 1000){
continue;
}
check = bullettracepassed(spawnpoint, spawnpoint + (end[0], end[1], 0), false, undefined);
if(check){
hits++;
}
}
if(hits == 0){
pickingspawn = false;
} else {
trys++;
}
if(trys > level.CustomSpawnPointsFinal[self.team].size - 1){
pickingspawn = false;
}
} else {
pickingspawn = false;
}
}
self SetOrigin((spawnpoint));
}
}
}
RemoveUnusableSpawnPoint()
{
foreach(spawnpoint in level.CustomSpawnPoints["allies"])
{
hits = 0;
top = bullettrace(spawnpoint, spawnpoint + (0, 0, 100000), false, undefined)["position"];
checkspawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
for(i = 0; i < 360; i++)
{
direction = AnglesToForward((0, i, 0));
end = vector_multiply((0, direction[1], 0) ,55);
check = bullettracepassed(checkspawnpoint, checkspawnpoint + end, false, undefined);
if(!check){
hits++;
}
}
if(hits == 0){
level.CustomSpawnPointsFinal["allies"][level.CustomSpawnPointsFinal["allies"].size] = spawnpoint;
}
}
foreach(spawnpoint in level.CustomSpawnPoints["axis"])
{
hits = 0;
top = bullettrace(spawnpoint, spawnpoint + (0, 0, 100000), false, undefined)["position"];
checkspawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
for(i = 0; i < 360; i += 5)
{
direction = AnglesToForward((0, i, 0));
end = vector_multiply((0, direction[1], 0) ,55);
check = bullettracepassed(checkspawnpoint, checkspawnpoint + end, false, undefined);
if(!check){
hits++;
}
}
if(hits == 0){
level.CustomSpawnPointsFinal["axis"][level.CustomSpawnPointsFinal["axis"].size] = spawnpoint;
}
}
foreach(player in level.players)
{
player suicide();
}
}
ElevatorThink(enter, exit, angle)
{
self endon("disconnect");
while(1)
{
foreach(player in level.players)
{
if(DistanceSquared(enter, player.origin) <= Power(50, 2)){
player SetOrigin(exit);
player SetPlayerAngles(angle);
}
}
wait .25;
}
}
DoorThinkUse(open, close)
{
while(1)
{
if(self.hp > 0){
self waittill ( "triggeruse" , player );
if(player.team == "allies"){
if(self.state == "open"){
self MoveTo(close, level.doorwait);
wait level.doorwait;
self.state = "close";
continue;
}
if(self.state == "close"){
self MoveTo(open, level.doorwait);
wait level.doorwait;
self.state = "open";
continue;
}
}
if(player.team == "axis"){
if(self.state == "close"){
if(player.attackeddoor == 0){
hitChance = 0;
switch(player GetStance())
{
case "prone":
hitChance = 15;
break;
case "crouch":
hitChance = 45;
break;
case "stand":
hitChance = 90;
break;
default:
break;
}
if(randomInt(100) < hitChance){
self.hp--;
player iPrintlnBold("HIT - " + self.hp + "/" + self.maxhp);
if(self.hp <= int(self.maxhp/5)){
self playSound("flag_spawned");
}
} else {
player iPrintlnBold("^1MISS - " + self.hp + "/" + self.maxhp);
}
player.attackeddoor = 1;
player thread DoorAttackWait();
continue;
}
}
}
} else {
if(self.state == "close"){
self MoveTo(open, level.doorwait);
}
self.state = "broken";
wait .5;
}
}
}
DoorThinkRepair()
{
while(1)
{
self waittill ( "triggerrepair" , player );
if(self.hp < self.maxhp){
if(self.hp > 0){
player thread RepairDoor(self);
} else {
if(useHoldThink(player, "Fixing Door...", 20000)){
self.hp = self.maxhp;
self.state = "open";
player.bounty += 200;
}
}
}
}
}
RepairDoor(door)
{
self notify("RepairingDoor");
self endon("RepairingDoor");
self endon("disconnect");
self endon("death");
if(useHoldThink(self, "Repairing Door...", 5000)){
if(door.state != "broken"){
door.hp += 1;
self.hprepaired += 1;
self iPrintlnBold("Repaired - " + door.hp + "/" + door.maxhp);
if(self.hprepaired >= 5){
self.bounty += 50;
self.hprepaired = 0;
}
}
}
}
DoorUse()
{
while(1)
{
foreach(player in level.players)
{
if(DistanceSquared(self.origin, player.origin) <= Power(self.range, 2)){
if(player.team == "allies"){
if(player getCurrentWeapon() == "onemanarmy_mp"){
if(self.state == "broken"){
player.hint = "^1Door is Broken. ^7Press and Hold ^3[{+activate}] ^7to ^2Fix ^7the door";
} else {
if(self.hp < self.maxhp){
player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Repair ^7the door";
}
}
} else {
if(self.state == "open"){
player.hint = "Press ^3[{+activate}] ^7to ^2Close ^7the door";
}
if(self.state == "close"){
player.hint = "Press ^3[{+activate}] ^7to ^2Open ^7the door";
}
if(self.state == "broken"){
player.hint = "^1Door is Broken";
}
}
}
if(player.team == "axis"){
if(self.state == "close"){
player.hint = "Press ^3[{+activate}] ^7to ^2Attack ^7the door";
}
if(self.state == "broken"){
player.hint = "^1Door is Broken";
}
}
if(player getCurrentWeapon() == "onemanarmy_mp"){
if(player maps\mp\gametypes\_rank::checkPress("F")){
self notify( "triggerrepair" , player);
}
} else {
if(player UseButtonPressed()){
self notify( "triggeruse" , player);
}
}
}
}
wait .045;
}
}
DoorAttackWait()
{
self notify("attackwait");
self endon("attackwait");
self endon("disconnect");
self endon("death");
wait 1;
self.attackeddoor = 0;
}
BombSiteUse(team, otherteam)
{
while(1)
{
foreach(player in level.players)
{
if(DistanceSquared(self.origin, player.origin) <= Power(100, 2)){
if(!self.bombplanted){
if(player.team == otherteam){
player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Plant ^7the bomb";
}
} else {
if(player.team == team){
player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Defuse ^7the bomb";
}
}
if(player maps\mp\gametypes\_rank::checkPress("F")){
self notify( "triggeruse" , player);
}
}
}
wait .045;
}
}
BombThinkPlant(team, otherteam)
{
self endon("defuse");
while(1)
{
self waittill ( "triggeruse" , player );
if(level.BombsPlanted == 1 && level.BombSiteSetting == 1){
continue;
}
if(player.team == team){
continue;
}
player.currentweapon = player getCurrentWeapon();
player giveWeapon("briefcase_bomb_mp");
player SwitchToWeapon("briefcase_bomb_mp");
wait .5;
if(!useHoldThink( player, &"MP_PLANTING_EXPLOSIVE", 6000 )){
player SwitchToWeapon(player.currentweapon);
continue;
}
player SwitchToWeapon(player.currentweapon);
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
tempAngle = randomfloat( 360 );
forward = (cos( tempAngle ), sin( tempAngle ), 0);
forward = vectornormalize( forward - vector_multiply( trace["normal"], vectordot( forward, trace["normal"] ) ) );
dropAngles = vectortoangles( forward );
wait 1;
self.bombmodel = spawn( "script_model", trace["position"] );
self.bombmodel.angles = dropAngles;
self.bombmodel setModel( "prop_suitcase_bomb" );
level.BombTimerIcon = createServerIcon( "hud_suitcase_bomb", 50, 50 );
level.BombTimerIcon setPoint( "BOTTOM RIGHT", "BOTTOM RIGHT", -90, -50 );
level.BombTimerIcon.alpha = 0.75;
level.BombTimerIcon.glow = 1;
level.BombTimerIcon.glowColor = ( 1, 1, 0 );
level.BombTimerIcon.glowAlpha = 1;
level.BombTimer = createServerTimer("objective", 1.25);
level.BombTimer setPoint( "BOTTOM RIGHT", "BOTTOM RIGHT", -90, -65 );
level.BombTimer.foreground = true;
level.BombTimer.glow = 1;
level.BombTimer.glowColor = ( 1, 1, 0 );
level.BombTimer.glowAlpha = 1;
level.BombTimer SetTenthsTimer(30);
level.BombsPlanted++;
leaderDialog( "bomb_planted" );
player playSound( "mp_bomb_plant" );
level thread teamPlayerCardSplash( "callout_bombplanted", player );
self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defuse_a", (0,0,44), 14, 14 );
self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_defend_a", (0,0,44), 14, 14 );
self.bombplanted = true;
self.bombmodel thread playTickingSound(30);
self thread BombThinkDefuse(team, otherteam);
TimerWait(30);
self notify("explode");
self.bombmodel notify("stop_ticking");
level.BombTimerIcon destroy();
level.BombTimer destroy();
self.bombplanted = false;
self.bombmodel hide();
self.bombmodel thread BombExplosion();
self.bombmodel delete();
self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
}
}
BombThinkDefuse(team, otherteam)
{
self endon("explode");
while(1)
{
self waittill ( "triggeruse" , player );
if(player.team == otherteam){
continue;
}
player.currentweapon = player getCurrentWeapon();
player giveWeapon("briefcase_bomb_mp");
player SwitchToWeapon("briefcase_bomb_mp");
self.bombmodel hide();
wait .5;
if(!useHoldThink( player, &"MP_DEFUSING_EXPLOSIVE", 6000 )){
player SwitchToWeapon(player.currentweapon);
self.bombmodel show();
continue;
}
player SwitchToWeapon(player.currentweapon);
leaderDialog( "bomb_defused" );
level thread teamPlayerCardSplash( "callout_bombdefused", player );
self notify("defuse");
level.BombsPlanted--;
self.bombplanted = false;
self thread BombThinkPlant(team, otherteam);
self.bombmodel notify("stop_ticking");
level.BombTimerIcon destroy();
level.BombTimer destroy();
self.bombmodel delete();
self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
return;
}
}
BombExplosion()
{
level.BombsPlanted--;
level.BombsExploded++;
explosionOrigin = self.origin;
RadiusDamage( explosionOrigin, 1500, 500, 20 );
rot = randomfloat(360);
level._effect["cloud"] = loadfx( "explosions/emp_flash_mp" );
level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
level._effect["explode"]["medium"] = loadfx ("explosions/aerial_explosion");
level._effect["explode"]["large"] = loadfx ("explosions/aerial_explosion_large");
playFx( level._effect["cloud"], explosionOrigin+(0,0,200));
PlayRumbleOnPosition( "grenade_rumble", explosionOrigin );
earthquake( 0.75, 2.0, explosionOrigin, 5000 );
level thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin );
wait 0.0001;
for(t = 0; t < 360; t += 36){
x = 500 * Cos(t);
y = 500 * Sin(t);
PlayFx( level._effect["bombexplosion"], explosionOrigin + (x,y,300), (0,0,1), (cos(rot),sin(rot),0) );
PlayFx( level._effect["explode"]["medium"], explosionOrigin + (x,y,50), (0,0,1), (cos(rot),sin(rot),0) );
PlayFx( level._effect["explode"]["large"], explosionOrigin + (0-x,0-y,50), (0,0,1), (cos(rot),sin(rot),0) );
x = 1000 * Cos(t+18);
y = 1000 * Sin(t+18);
PlayFx( level._effect["bombexplosion"], explosionOrigin + (x,y,150), (0,0,1), (cos(rot),sin(rot),0) );
PlayFx( level._effect["explode"]["large"], explosionOrigin + (x,y,50), (0,0,1), (cos(rot),sin(rot),0) );
PlayFx( level._effect["explode"]["medium"], explosionOrigin + (0-x,0-y,50), (0,0,1), (cos(rot),sin(rot),0) );
wait 0.0001;
}
}
KillBelow(z)
{
for(;;)
{
foreach(player in level.players)
{
if(player.origin[2] < z){
RadiusDamage(player.origin,100,999999,999999);
}
wait .1;
}
wait .15;
}
}
ResetDoors(open, hp)
{
while(1)
{
level waittill("RESETDOORS");
self.hp = hp;
self MoveTo(open, level.doorwait);
self.state = "open";
}
}
ResetCluster(pos, radius)
{
wait 5;
self RotateTo(((randomInt(36)*10), (randomInt(36)*10), (randomInt(36)*10)), 1);
level waittill("RESETCLUSTER");
self thread CreateCluster(1, pos, radius);
self delete();
}
roundUp( floatVal )
{
if ( int( floatVal ) != floatVal )
return int( floatVal+1 );
else
return int( floatVal );
}
Power( number, power )
{
returnnumber = 1;
for(i = 0; i < power; i++){
returnnumber *= number;
}
return returnnumber;
}
useHoldThink( player, string, useTime)
{
player playerLinkTo( self );
player playerLinkedOffsetEnable();
self.curProgress = 0;
self.inUse = true;
self.useRate = 0;
if ( isDefined( useTime ) )
self.useTime = useTime;
else
self.useTime = 3000;
player thread personalUseBar( self, string );
result = useHoldThinkLoop( player );
assert ( isDefined( result ) );
if ( isAlive( player ) )
{
player unlink();
}
if ( !isDefined( self ) )
return false;
self.inUse = false;
self.curProgress = 0;
return ( result );
}
personalUseBar( object, string )
{
self endon( "disconnect" );
useBar = createPrimaryProgressBar( -25 );
useBarText = createPrimaryProgressBarText( -25 );
useBarText setText( string );
lastRate = -1;
while ( isReallyAlive( self ) && isDefined( object ) && object.inUse && !level.gameEnded )
{
if ( lastRate != object.useRate )
{
if( object.curProgress > object.useTime)
object.curProgress = object.useTime;
useBar updateBar( object.curProgress / object.useTime, (1000 / object.useTime) * object.useRate );
if ( !object.useRate )
{
useBar hideElem();
useBarText hideElem();
}
else
{
useBar showElem();
useBarText showElem();
}
}
lastRate = object.useRate;
wait ( 0.05 );
}
useBar destroyElem();
useBarText destroyElem();
}
useHoldThinkLoop( player )
{
while( !level.gameEnded && isDefined( self ) && isReallyAlive( player ) && player useButtonPressed() && self.curProgress < self.useTime )
{
self.curProgress += (50 * self.useRate);
if ( isDefined(self.objectiveScaler) )
self.useRate = 1 * self.objectiveScaler;
else
self.useRate = 1;
if ( self.curProgress >= self.useTime )
return ( isReallyAlive( player ) );
wait 0.05;
}
return false;
}
TimerWait(Duration)
{
level endon( "game_ended" );
level endon( "bomb_defused" );
maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( Duration );
}
playTickingSound(Duration)
{
self endon("death");
self endon("stop_ticking");
level endon("game_ended");
time = Duration;
while(1)
{
self playSound( "ui_mp_suitcasebomb_timer" );
if ( time > 10 )
{
time -= 1;
wait 1;
}
else if ( time > 4 )
{
time -= .5;
wait .5;
}
else if ( time > 1 )
{
time -= .4;
wait .4;
}
else
{
time -= .3;
wait .3;
}
maps\mp\gametypes\_hostmigration::waitTillHostMigrationDone();
}
}
Afghan()
{
CreateAdaptWalls((2665, 5845, 265), (3475, 4345, 585), 4, 0);
CreateAdaptWalls((2385, 4765, 520), (2900, 4975, 560), 1, 0);
CreateAdaptWalls((2385, 4765, 1000), (2900, 4975, 1000), 1, 30);
CreateAdaptWalls((2385, 4765, 1000), (2900, 4975, 1000), 1, 0);
CreateElevator((2015, 4470, 235), (2700, 5645, 340), (0, -65, 0));
CreateElevator((2486, 4484, 635), (-588, -770, -70), (0, -65, 0));
CreateRamps((2280, 1254, 142), (2548, 1168, 33));
CreateDoors((1590, -238, 160), (1590, -168, 160), 90, 0, 0, 2, 2, 5, 50);
CreateDoors((1938, -125, 160), (1938, -15, 160), 90, 0, 0, 4, 2, 15, 75);
CreateDoors((2297, 10, 160), (2297, -100, 160), 90, 0, 0, 4, 2, 10, 75);
CreateDoors((525, 1845, 162), (585, 1845, 162), 90, 90, 0, 2, 2, 5, 50);
CreateDoors((-137, 1380, 226), (-137, 1505, 226), 90, 0, 0, 4, 2, 15, 75);
CreateDoors((820, 1795, 165), (820, 1495, 165), 90, 0, 0, 12, 2, 40, 100);
CreateDoors((2806, 893, 210), (2806, 806, 210), 90, 0, 0, 3, 2, 10, 50);
CreateDoors((2750, 4900, 590), (3000, 5015, 590), 90, -65, 0, 6, 2, 15, 75);
}
Derail()
{
CreateElevator((-110, 2398, 124), (-125, 2263, 333), (0, 270, 0));
CreateBlocks((-240, 1640, 422), (0, 90, 0));
CreateBlocks((-270, 1640, 422), (0, 90, 0));
CreateBlocks((-270, 1585, 422), (0, 90, 0));
CreateBlocks((-270, 1530, 422), (0, 90, 0));
CreateBlocks((-270, 1475, 422), (0, 90, 0));
CreateBlocks((-270, 1420, 422), (0, 90, 0));
CreateBlocks((-270, 1365, 422), (0, 90, 0));
CreateBlocks((-270, 1310, 422), (0, 90, 0));
CreateBlocks((-270, 1255, 422), (0, 90, 0));
CreateBlocks((-970, 3018, 138), (0, 90, 0));
CreateBlocks((-985, 3018, 148), (0, 90, 0));
CreateBlocks((-1000, 3018, 158), (0, 90, 0));
CreateBlocks((-1015, 3018, 168), (0, 90, 0));
CreateBlocks((-1030, 3018, 178), (0, 90, 0));
CreateBlocks((-1045, 3018, 188), (0, 90, 0));
CreateBlocks((-1060, 3018, 198), (0, 90, 0));
CreateBlocks((-1075, 3018, 208), (0, 90, 0));
CreateBlocks((-1090, 3018, 218), (0, 90, 0));
CreateBlocks((-1105, 3018, 228), (0, 90, 0));
CreateBlocks((-1120, 3018, 238), (0, 90, 0));
CreateBlocks((-1135, 3018, 248), (0, 90, 0));
CreateRamps((-124, 2002, 437), (-124, 2189, 332));
CreateDoors((400, 1486, 128), (400, 1316, 128), 90, 0, 0, 6, 2, 30, 100);
CreateDoors((-61, 755, 128), (-161, 755, 128), 90, 90, 0, 3, 2, 20, 75);
mgTurret1 = spawnTurret( "misc_turret", (4, 1566, 663), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 45, 0);
mgTurret1 setModel( "weapon_minigun" );
}
Estate()
{
CreateBlocks((-2378, 782, -130), (90, 0, 0));
CreateBlocks((-2388, 823, -130), (90, 0, 0));
CreateBlocks((-2398, 863, -130), (90, 0, 0));
CreateBlocks((-1098, 2623, 37), (90, 0, 0));
CreateBlocks((-3227, 3483, -101), (90, 0, 0));
CreateBlocks((-371, 919, 245), (0, 100, 90));
CreateBlocks((-383, 991, 245), (0, 100, 90));
CreateBlocks((-371, 919, 275), (0, 100, 90));
CreateBlocks((-383, 991, 275), (0, 100, 90));
CreateBlocks((-371, 919, 305), (0, 100, 90));
CreateBlocks((-383, 991, 305), (0, 100, 90));
CreateBlocks((-371, 919, 335), (0, 100, 90));
CreateBlocks((-383, 991, 335), (0, 100, 90));
CreateBlocks((-349, 1115, 245), (0, 50, 90));
CreateBlocks((-302, 1166, 245), (0, 50, 90));
CreateBlocks((-349, 1115, 275), (0, 50, 90));
CreateBlocks((-302, 1166, 275), (0, 50, 90));
CreateBlocks((-349, 1115, 305), (0, 50, 90));
CreateBlocks((-302, 1166, 305), (0, 50, 90));
CreateBlocks((-349, 1115, 335), (0, 50, 90));
CreateBlocks((-302, 1166, 335), (0, 50, 90));
CreateBlocks((-371, 919, 395), (0, 100, 90));
CreateBlocks((-383, 991, 395), (0, 100, 90));
CreateBlocks((-371, 919, 425), (0, 100, 90));
CreateBlocks((-383, 991, 425), (0, 100, 90));
CreateBlocks((-371, 919, 455), (0, 100, 90));
CreateBlocks((-383, 991, 455), (0, 100, 90));
CreateBlocks((-371, 919, 485), (0, 100, 90));
CreateBlocks((-383, 991, 485), (0, 100, 90));
CreateBlocks((-349, 1115, 395), (0, 50, 90));
CreateBlocks((-302, 1166, 395), (0, 50, 90));
CreateBlocks((-349, 1115, 425), (0, 50, 90));
CreateBlocks((-302, 1166, 425), (0, 50, 90));
CreateBlocks((-349, 1115, 455), (0, 50, 90));
CreateBlocks((-302, 1166, 455), (0, 50, 90));
CreateBlocks((-349, 1115, 485), (0, 50, 90));
CreateBlocks((-302, 1166, 485), (0, 50, 90));
CreateBlocks((-55, 1231, 245), (0, -20, 90));
CreateBlocks((8, 1217, 245), (0, -20, 90));
CreateBlocks((102, 1188, 245), (0, -20, 90));
CreateBlocks((162, 1168, 245), (0, -20, 90));
CreateBlocks((-55, 1231, 275), (0, -20, 90));
CreateBlocks((8, 1217, 275), (0, -20, 90));
CreateBlocks((102, 1188, 275), (0, -20, 90));
CreateBlocks((162, 1168, 275), (0, -20, 90));
CreateBlocks((-3200, 998, -143), (90, 0, 0));
CreateBlocks((-3200, 1028, -143), (90, 0, 0));
CreateBlocks((-3200, 1058, -143), (90, 0, 0));
CreateBlocks((-3200, 1088, -143), (90, 0, 0));
CreateBlocks((-3200, 1118, -143), (90, 0, 0));
CreateBlocks((-3181, 3124, -218), (90, 0, 0));
CreateBlocks((-3211, 3124, -218), (90, 0, 0));
CreateBlocks((-3241, 3124, -218), (90, 0, 0));
CreateBlocks((-3181, 3124, -163), (90, 0, 0));
CreateBlocks((-3211, 3124, -163), (90, 0, 0));
CreateBlocks((-3241, 3124, -163), (90, 0, 0));
CreateBlocks((-2622, 3676, -106), (90, 0, 0));
CreateBlocks((-3741, 3245, -200), (90, 0, 0));
CreateBlocks((-3821, 2170, -250), (90, 0, 0));
CreateBlocks((-3791, 2170, -250), (90, 0, 0));
CreateBlocks((-3761, 2170, -250), (90, 0, 0));
CreateBlocks((-3821, 2170, -195), (90, 0, 0));
CreateBlocks((-3791, 2170, -195), (90, 0, 0));
CreateBlocks((-3761, 2170, -195), (90, 0, 0));
CreateBlocks((-471, -126, 193), (0, 0, 90));
CreateBlocks((-547, -104, 193), (0, 0, 90));
CreateBlocks((-625, -84, 193), (0, 0, 90));
CreateBlocks((-702, -61, 193), (0, 0, 90));
CreateBlocks((-778, -38, 193), (0, 0, 90));
CreateBlocks((-830, -13, 193), (0, 0, 90));
CreateBlocks((1333, -92, 210), (0, 0, 90));
CreateRamps((1025, 3563, 291), (692, 3563, 146));
CreateDoors((489, 1321, 212), (409, 1341, 212), 90, undefined, 0, 4, 2, 20, 75);
CreateDoors((421, 861, 212), (461, 1011, 212), 90, undefined, 0, 4, 2, 20, 75);
CreateDoors((64, 680, 212), (184, 640, 212), 90, undefined, 0, 6, 2, 30, 100);
CreateDoors((706, 575, 185), (791, 545, 185), 0, -15, 0, 6, 1, 25, 75);
CreateDoors((24, 477, 341), (48, 552, 341), 90, undefined, 0, 3, 2, 5, 50);
}
Favela()
{
CreateElevator((-1975, 795, 8), (14950, -11250, -831), (0, 180,0));
CreateElevator((14975, -11050, -831), (-1460, 1515, 162), (0, 0, 0));
CreateWalls((14000, -11000, -832), (15000, -11000, -772));
CreateWalls((15000, -11000, -832), (15000, -11500, -772));
CreateWalls((15000, -11500, -832), (14000, -11500, -772));
CreateWalls((14000, -11500, -832), (14000, -11000, -652));
CreateWalls((14300, -11500, -772), (14000, -11500, -652));
CreateWalls((14000, -11000, -772), (14300, -11000, -652));
CreateWalls((14300, -11000, -832), (14300, -11175, -772));
CreateWalls((14300, -11325, -832), (14300, -11500, -772));
CreateWalls((14300, -11000, -742), (14300, -11500, -702));
CreateWalls((14300, -11000, -653), (14300, -11500, -652));
CreateRamps((14040, -11470, -727), (14040, -11060, -842));
CreateGrids((14095, -11030, -732), (14260, -11470, -732), (0,0,0));
CreateDoors((14300, -11100, -810), (14300, -11250, -810), 90, 180, 0, 5, 2, 25, 75);
}
HighRise()
{
CreateElevator((-1230, 7420, 2780), (-2830, 20000, 2070), (0, 0, 0));
CreateBlocks((-2723, 5162, 3030), (90, 0, 0));
CreateBlocks((-2753, 5162, 3030), (90, 0, 0));
CreateBlocks((-2723, 5132, 3030), (90, 0, 0));
CreateDoors((-1550, 5875, 2967), (-1550, 5649, 2967), 0, 0, 0, 7, 1, 20, 100);
CreateDoors((-1185, 5900, 2967), (-1185, 6117, 2967), 0, 0, 0, 7, 1, 20, 100);
CreateWalls((-710, 19875, 2185), (-710, 20170, 2215));
CreateWalls((-460, 19875, 2185), (-710, 19875, 2215));
CreateWalls((-460, 20170, 2185), (-460, 19875, 2215));
CreateWalls((-710, 20170, 2185), (-460, 20170, 2215));
CreateWalls((-710, 19875, 2305), (-710, 20170, 2335));
CreateWalls((-460, 19875, 2305), (-710, 19875, 2335));
CreateWalls((-460, 20170, 2305), (-460, 19875, 2335));
CreateWalls((-710, 20170, 2305), (-460, 20170, 2335));
CreateWalls((-710, 19875, 2425), (-710, 20170, 2455));
CreateWalls((-460, 19875, 2425), (-710, 19875, 2455));
CreateWalls((-460, 20170, 2425), (-460, 19875, 2455));
CreateWalls((-710, 20170, 2425), (-460, 20170, 2455));
CreateWalls((-710, 19875, 2545), (-710, 20170, 2575));
CreateWalls((-460, 19875, 2545), (-710, 19875, 2575));
CreateWalls((-460, 20170, 2545), (-460, 19875, 2575));
CreateWalls((-710, 20170, 2545), (-460, 20170, 2575));
CreateRamps((-680, 20130, 2120), (-680, 19910, 2060));
CreateRamps((-490, 20130, 2170), (-640, 20130, 2120));
CreateRamps((-490, 19910, 2220), (-490, 20090, 2170));
CreateRamps((-680, 19910, 2270), (-530, 19910, 2220));
CreateRamps((-680, 20130, 2320), (-680, 19940, 2270));
CreateRamps((-490, 20130, 2370), (-640, 20130, 2320));
CreateRamps((-490, 19910, 2420), (-490, 20090, 2370));
CreateRamps((-680, 19910, 2470), (-530, 19910, 2420));
CreateRamps((-680, 20130, 2520), (-680, 19940, 2470));
CreateRamps((-490, 20130, 2570), (-640, 20130, 2520));
CreateBridge((-1400, 20250, 1870), (-2000, 20250, 1870));
CreateBridge((-1400, 20350, 1870), (-2000, 20350, 1870));
CreateBridge((-1400, 20450, 1870), (-2000, 20450, 1870));
CreateKillIfBelow(1750);
CreateRamps((370, 6382, 2804), (596, 6382, 2957));
}
Invasion()
{
CreateElevator((-2150, -2366, 268), (-2276, -1353, 573), (0, -90, 0));
CreateElevator((-1413, -1333, 270), (-1558, -1485, 1064), (0, 0, 0));
CreateElevator((-607, -984, 293), (-842, -1053, 878), (0, 0, 0));
CreateGrids((-1400, -1850, 390), (-1359, -1455, 420), (0, 0, 0));
CreateBlocks((-1468, -1470, 1044), (0, -80, 0));
CreateBlocks((-1498, -1475, 1044), (0, -80, 0));
CreateBlocks((-1528, -1480, 1044), (0, -80, 0));
CreateBlocks((-1558, -1485, 1044), (0, -80, 0));
CreateBlocks((-1588, -1490, 1044), (0, -80, 0));
CreateBlocks((-1618, -1495, 1044), (0, -80, 0));
CreateBlocks((-1648, -1500, 1044), (0, -80, 0));
}
Karachi()
{
CreateElevator((-2265, 230, 0), (-2385, 106, 5), (0, 180, 0));
CreateElevator((-2025, -250, -5), (-2265, -70, 10), (0, 90, 0));
CreateBlocks((-4100, 1380, 25), (90, 0, 0));
CreateBlocks((-3135, 670, 35), (0, 0, -45));
CreateBlocks((-3850, -125, 44), (0, 0, 0));
CreateBlocks((-4385, -55, 223), (0, 90, 0));
CreateBlocks((-5125, -30, 520), (0, 90, 90));
CreateBlocks((-5125, -30, 580), (0, 90, 90));
CreateBlocks((-5125, -30, 640), (0, 90, 90));
CreateBlocks((-5125, -30, 700), (0, 90, 90));
CreateBlocks((-5125, -30, 760), (0, 90, 90));
CreateBlocks((-5125, -30, 820), (0, 90, 90));
CreateBlocks((-5125, -30, 880), (0, 90, 90));
CreateBlocks((-5125, -30, 940), (0, 90, 90));
CreateBlocks((-4950, 78, 820), (90, 0, 0));
CreateBlocks((-4815, 68, 820), (90, 0, 0));
CreateBlocks((-3510, -105, 450), (90, 0, 0));
CreateBlocks((-5040, 65, 690), (90, 0, 0));
CreateBlocks((-3320, -80, 660), (90, 0, 0));
CreateWalls((-5110, 25, 45), (-5040, 755, 105));
CreateWalls((-5110, 25, 155), (-5040, 755, 185));
CreateWalls((-5110, 25, 235), (-5040, 755, 265));
CreateWalls((-5110, 25, 315), (-5040, 755, 345));
CreateWalls((-5110, 25, 395), (-5040, 755, 425));
CreateWalls((-5110, 25, 475), (-5040, 755, 505));
CreateWalls((-5110, 25, 555), (-5040, 755, 585));
CreateWalls((-2525, -1000, 10), (-2560, -880, 100));
CreateRamps((-4180, -115, 285), (-4155, 205, 20));
CreateRamps((-2480, 605, 176), (-2480, 405, 26));
CreateRamps((-2835, 1060, 176), (-2825, 835, 24));
CreateRamps((-4100, 665, 224), (-4100, 385, 17));
CreateRamps((-4010, -150, 404), (-4155, -150, 258));
CreateRamps((-2825, 805, 312), (-3065, 805, 176));
CreateRamps((-4670, -55, 496), (-4405, -55, 233));
CreateRamps((-4930, 755, 224), (-4950, 550, 37));
CreateRamps((-4340, 600, 632), (-4870, 730, 224));
CreateRamps((-4310, 593, 632), (-4060, 642, 496));
CreateRamps((-4695, -30, 745), (-5050, 0, 496));
CreateRamps((-3620, -105, 352), (-3620, -220, 288));
CreateRamps((-4358, -103, 673), (-4326, 575, 631));
CreateBridge((-3976, 640, 630), (-3976, 544, 635), (-3976, -100, 590));
CreateBridge((-3620, -105, 342), (-3580, 565, 375));
CreateGrids((-3310, -145, 90), (-2600, -145, 90), (0, 0, 0));
CreateGrids((-2820, 795, 310), (-2820, 620, 310), (0, 0, 0));
CreateGrids((-4375, -65, 227), (-4235, -65, 227), (0, 0, 0));
}
Quarry()
{
CreateElevator((-5308, -794, -192), (-2127, -1480, 632), (0, 120, 0));
CreateElevator((-1935, -1008, 576), (-5527, 1160, 304), (0, 270, 0));
CreateBlocks((-5600, 1500, 105), (0, 0, 0));
CreateBlocks((-5600, 1540, 139), (0, 0, 0));
CreateBlocks((-3680, 1880, 125), (90, 0, 0));
CreateWalls((-2099, -844, 713), (-2099, -895, 800));
CreateGrids((-2272, -1119, 620), (-2651, -1350, 620), (0, 0, 0));
CreateGrids((-2350, -1090, 790), (-2580, -1350, 790), (0, 0, 0));
CreateWalls((-2332, -1370, 620), (-2651, -1370, 700));
CreateWalls((-2332, -1105, 620), (-2651, -1105, 700));
CreateRamps((-2653, -1319, 624), (-2633, -1080, 790));
CreateDoors((-2328, -1350, 650), (-2328, -1229, 650), 90, 0, 0, 9, 2, 10, 100);
}
Rundown()
{
CreateDoors((360, -1462, 202), (300, -1342, 202), 90, undefined, 0, 3, 2, 10, 75);
CreateDoors((460, -1420, 206), (400, -1300, 206), 90, undefined, 0, 3, 2, 10, 75);
CreateDoors((30, -1630, 186), (-30, -1510, 186), 90, undefined, 0, 4, 2, 15, 75);
CreateDoors((-280, -1482, 186), (-220, -1602, 186), 90, undefined, 0, 4, 2, 15, 75);
CreateBlocks((385, -1660, 40), (0, 120, 90));
CreateRamps((-597, -280, 212), (-332, -522, 180));
CreateRamps((726, -389, 142), (560, -373, 13));
CreateRamps((2250, -1155, 306), (1905, -876, 200));
CreateRamps((850, -3125, 312), (535, -3125, 189));
CreateRamps((1775, 450, 144), (1775, 735, -5));
CreateWalls((-2190, -2885, -120), (-2240, -2500, 0));
CreateWalls((-1985, -2290, -120), (-1770, -2510, 0));
}
Rust()
{
CreateBlocks((773, 1080, 258), (0, 90, 0));
CreateRamps((745, 1570, 383), (745, 1690, 273));
CreateDoors((565, 1540, 295), (653, 1540, 295), 90, 90, 0, 3, 2, 10, 60);
CreateGrids((773, 1135, 258), (533, 1795, 258), (0, 0, 0));
CreateGrids((695, 1795, 378), (533, 1540, 378), (0, 0, 0));
CreateWalls((533, 1795, 278), (773, 1795, 448));
CreateWalls((790, 1795, 278), (790, 1540, 448));
CreateWalls((515, 1540, 278), (515, 1795, 448));
CreateWalls((773, 1540, 278), (715, 1540, 378));
CreateWalls((590, 1540, 278), (533, 1540, 378));
CreateWalls((773, 1540, 398), (533, 1540, 428));
CreateWalls((-3075, 876, 219), (-3075, 631, 225));
}
Scrapyard()
{
CreateElevator((-1750, 383, -127), (-5180, 4299, 2288), (0, 45, 0));
CreateElevator((-3643, 6478, 2475), (-4563, 6550, 2560), (0, 180, 0));
CreateGrids((-5300, 6400, 2545), (-4500, 6700, 2545), (0, 0, 0));
CreateDoors((-4950, 6250, 2580), (-4950, 6550, 2580), 90, 0, 0, 12, 2, 10, 300);
CreateRamps((-5239, 6456, 2540), (-5239, 6674, 2683));
CreateGrids((-5239, 6691, 2685), (-4972, 6691, 2685), (0, 0, 0));
CreateGrids((-4972, 6691, 2685), (-4972, 6356, 2685), (0, 0, 0));
CreateElevator((-4963, 6363, 2700), (-662, 654, 73), (0, 0, 0));
CreateBlocks((420, 1636, 174), (0, 0, 0));
CreateBlocks((475, 1636, 174), (0, 0, 0));
CreateBlocks((530, 1636, 174), (0, 0, 0));
CreateBlocks((585, 1636, 174), (0, 0, 0));
CreateBlocks((640, 1636, 174), (0, 0, 0));
CreateBlocks((695, 1636, 174), (0, 0, 0));
CreateBlocks((750, 1636, 174), (0, 0, 0));
CreateBlocks((805, 1636, 174), (0, 0, 0));
CreateBlocks((860, 1636, 174), (0, 0, 0));
CreateBlocks((420, 1606, 174), (0, 0, 0));
CreateBlocks((475, 1606, 174), (0, 0, 0));
CreateBlocks((530, 1606, 174), (0, 0, 0));
CreateBlocks((585, 1606, 174), (0, 0, 0));
CreateBlocks((640, 1606, 174), (0, 0, 0));
CreateBlocks((695, 1606, 174), (0, 0, 0));
CreateBlocks((750, 1606, 174), (0, 0, 0));
CreateBlocks((805, 1606, 174), (0, 0, 0));
CreateBlocks((860, 1606, 174), (0, 0, 0));
CreateBlocks((420, 1576, 174), (0, 0, 0));
CreateBlocks((475, 1576, 174), (0, 0, 0));
CreateBlocks((530, 1576, 174), (0, 0, 0));
CreateBlocks((585, 1576, 174), (0, 0, 0));
CreateBlocks((640, 1576, 174), (0, 0, 0));
CreateBlocks((695, 1576, 174), (0, 0, 0));
CreateBlocks((750, 1576, 174), (0, 0, 0));
CreateBlocks((805, 1576, 174), (0, 0, 0));
CreateBlocks((860, 1576, 174), (0, 0, 0));
CreateBlocks((-1541, -80, 1), (0, 90, -33.3));
CreateBlocks((-1517.7, -80, 16.3), (0, 90, -33.3));
CreateBlocks((-1494.4, -80, 31.6), (0, 90, -33.3));
CreateBlocks((-1471.1, -80, 46.9), (0, 90, -33.3));
CreateBlocks((-1447.8, -80, 62.2), (0, 90, -33.3));
CreateBlocks((-1424.5, -80, 77.5), (0, 90, -33.3));
CreateBlocks((-1401.2, -80, 92.8), (0, 90, -33.3));
CreateBlocks((-1377.9, -80, 108.1), (0, 90, -33.3));
CreateBlocks((-1354.6, -80, 123.4), (0, 90, -33.3));
CreateElevator((10, 1659, -72), (860, 1606, 194), (0, 180, 0));
CreateElevator((-276, 1567, -76), (-1176, 2033, -63), (0, 180, 0));
CreateElevator((-1176, 2222, -63), (-1758, -714, -31));
mgTurret1 = spawnTurret( "misc_turret", (-2662, 2247, -40), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 0, 0);
mgTurret1 setModel( "weapon_minigun" );
mgTurret2 = spawnTurret( "misc_turret", (-2046, 2350, -40), "pavelow_minigun_mp" );
mgTurret2.angles = (0, 0, 0);
mgTurret2 setModel( "weapon_minigun" );
}
Skidrow()
{
CreateElevator((-725, -410, 136), (-910, -620, 570), (0, 0, 0));
CreateRamps((-705, -830, 688), (-495, -830, 608));
CreateRamps((-580, -445, 608), (-580, -375, 568));
CreateRamps((1690, 325, 213), (1890, 325, 108));
CreateGrids((-1540, -1687, 600), (-275, -1687, 660), (0, 0, 0));
CreateGrids((-1060, -1535, 584), (-470, -1650, 584), (0, 0, 0));
CreateGrids((-700, -120, 580), (-700, -120, 640), (0, 90, 0));
CreateGrids((-705, -490, 580), (-705, -770, 580), (-45, 0, 0));
CreateBlocks((-1055, -275, 550), (90, 0, 0));
CreateBlocks((-1055, -275, 600), (90, 0, 0));
CreateBlocks((-460, -95, 600), (90, 0, 0));
}
SubBase()
{
CreateWalls((1768, -4096, 0.125012), (1687, -4096, 91.7437));
CreateWalls((1559, -4096, 0.125012), (1495, -4096, 91.7437));
CreateDoors((1752, -4094, 8.125), (1621, -4096, 0.125), 90, 90, 0, 5, 2, 5, 50);
CreateGrids((1772, -4092, 95.664), (1489, -4226, 95.4576), (0, 0, 0));
CreateWalls((1476, -4098, 110.289), (1781, -4098, 111.289));
CreateRamps((1635, -4245, 94.3329), (1633, -4499, 88.1657));
CreateGrids((1779, -4516, 93.5231), (1489, -4663, 81.9746), (0, 0, 0));
CreateRamps((1737, -4743, 0.125005), (1735, -4887, 77.9122));
CreateRamps((1500, -4683, 96.0805), (1517, -4887, 79.6079));
mgTurret3 = spawnTurret( "misc_turret", (1624, -4098, 137), "pavelow_minigun_mp" );
mgTurret3.angles = (0, 90, 0);
mgTurret3 setModel( "weapon_minigun" );
CreateElevator((-234, -2196, 4.10537), (1631, -2678, 0.124995));
CreateWalls((1495, -2997, 0.125008), (1580, -2997, 60));
CreateWalls((1694, -2997, 0.125008), (1768, -2997, 60));
CreateRamps((1472, -4499, 95.0477), (1487, -4186, 268));
CreateWalls((1306, -4050, 292), (1483, -4086, 287));
CreateRamps((1102, -4403, 166.125), (1085, -4200, 272));
CreateElevator((917, -4124, 287), (-352, -4020, 0.125));
CreateWalls((-488, -5494, 0.125005), (-215, -5494, 50));
CreateRamps((-357, -5367, 0.124998), (-354, -5477, 38.6509));
CreateRamps((-357, -5512, 36.9589), (-360, -5705, 0.125008));
CreateWalls((-491, -5491, 51.8875), (-401, -5490, 141));
CreateWalls((-306, -5493, 51.8875), (-215, -5499, 141));
CreateGrids((-215, -5494, 138), (-494, -5632, 140), (0, 0, 0));
CreateRamps((-215, -5934, 12.446), (-212, -5653, 127));
CreateWalls((-496, -5490, 154), (-215, -5491, 154));
}
Terminal()
{
CreateElevator((2867,3984,84), (617,4008,342), (0, 180, 0));
CreateElevator((615,2954,342), (-912,4175,216), (0, 180, 0));
CreateElevator((-935,5046,192), (-967,1270,40), (0, 180, 0));
CreateRamps((-908,643,40), (-908,100,490));
CreateGrids((-658,80,500), (-1000,-150,500), (0, 0, 0));
CreateDoors((-904,80,515), (-780,80,515), (90, 180, 90), 3.5, 2.2, 20, 60);
CreateWalls((-638,80,515), (-870,80,625));
CreateWalls((-988,80,515), (-1030,80,625));
CreateWalls((-1030,-150,515), (-1030,80,625));
CreateWalls((-638,80,515), (-638,-150,625));
CreateWalls((-1030,-150,515), (-638,-150,625));
CreateGrids((-1030,-75,635), (-638,80,635), (0, 0, 0));
CreateRamps((-714,-119,515), (-1030,-119,625));
CreateBlocks((-1030,80,650), (0, 0, 45));
CreateBlocks((-730,80,650), (0, 0, 45));
mgTurret1 = spawnTurret( "misc_turret", (-1030,80,670), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 90, 0);
mgTurret1 setModel( "weapon_minigun" );
mgTurret2 = spawnTurret( "misc_turret", (-730,80,670), "pavelow_minigun_mp" );
mgTurret2.angles = (0, 90, 0);
mgTurret2 setModel( "weapon_minigun" );
}
Underpass()
{
CreateElevator((-415, 3185, 392), (-1225, 3485, 1035), (0, 180, 0));
CreateBlocks((1110, 1105, 632), (90, 0, 0));
CreateBlocks((-3040, 3145, 1100), (90, 0, 0));
CreateBlocks((2444, 1737, 465), (90, 0, 0));
CreateWalls((-1100, 3850, 1060), (-1100, 3085, 1090));
CreateWalls((-1100, 3850, 1120), (-1100, 3085, 1150));
CreateWalls((-3030, 3453, 1040), (-3030, 3155, 1160));
CreateWalls((-3030, 3155, 1040), (-3330, 3155, 1160));
CreateWalls((-3330, 3155, 1040), (-3330, 3890, 1160));
CreateWalls((-3330, 3890, 1040), (-3030, 3890, 1160));
CreateWalls((-3030, 3155, 1190), (-3330, 3155, 1220));
CreateWalls((-3330, 3155, 1190), (-3330, 3890, 1220));
CreateWalls((-3330, 3890, 1190), (-3030, 3890, 1220));
CreateWalls((-3030, 3890, 1040), (-3030, 3592, 1160));
CreateWalls((-3030, 3890, 1150), (-3030, 3155, 1180));
CreateWalls((-3030, 3155, 1250), (-3330, 3155, 1295));
CreateWalls((-3330, 3155, 1250), (-3330, 3890, 1295));
CreateWalls((-3330, 3890, 1250), (-3030, 3890, 1295));
CreateWalls((-3030, 3890, 1250), (-3030, 3155, 1295));
CreateDoors((-3030, 3400, 1052), (-3030, 3522.5, 1052), 90, 180, 0, 4, 2, 20, 75);
CreateRamps((-3125, 3375, 1250), (-3125, 3210, 1120));
CreateRamps((-3100, 3855, 1125), (-3200, 3855, 1030));
CreateGrids((-3070, 3190, 1120), (-3070, 3855, 1120), (0, 0, 0));
CreateGrids((-3070, 3190, 1240), (-3070, 3855, 1240), (0, 0, 0));
}
Wasteland()
{
CreateDoors((1344, -778, -33), (1344, -898, -33), 90, 0, 0, 5, 2, 15, 75);
CreateDoors((684, -695, -16), (684, -825, -16), 90, 0, 0, 5, 2, 15, 75);
CreateDoors((890, -120, -12), (760, -120, -12), 90, 90, 0, 5, 2, 15, 125);
CreateDoors((958, -1072, -36), (958, -972, -36), 90, 0, 0, 3, 2, 10, 50);
CreateDoors((1057, -648, -36), (997, -748, -36), 90, -30, 0, 3, 2, 10, 50);
CreateDoors((10895, 12581, 1298), (11070, 12581, 1295), 90, 90, 0, 7, 2, 10, 50);
CreateElevator((218, -618, -26), (11288, 14676, 1298), (0, 300, 0));
CreateElevator((-2336, -1348, 32), (11046, 14518, 1298), (0, 270, 0));
CreateElevator((-1021, 1263, 77), (11232, 14122, 1298), (0, 270, 0));
CreateElevator((2836, 978, -124), (10917, 13826, 1298), (0, 270, 0));
CreateElevator((2348, -1855, -13), (11046, 13421, 1298), (0, 270, 0));
CreateWalls((10798, 12581, 1298), (10955, 12581, 1340));
CreateWalls((11167, 12581, 1298), (11379, 12581, 1340));
CreateRamps((10850, 11700, 1298), (10850, 12300, 1448));
CreateRamps((11300, 11700, 1298), (11300, 12300, 1448));
CreateGrids((10798, 12581, 1450), (11379, 12300, 1450), (0, 0, 0));
mgTurret1 = spawnTurret( "misc_turret", (11327, 12538, 1525), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 90, 0);
mgTurret1 setModel( "weapon_minigun" );
mgTurret2 = spawnTurret( "misc_turret", (10837, 12538, 1525), "pavelow_minigun_mp" );
mgTurret2.angles = (0, 90, 0);
mgTurret2 setModel( "weapon_minigun" );
CreateGrids((10725, 14529, 1228), (10725, 10212, 1228), (0, 0, 0));
}
Strike()
{
CreateElevator((-655, 706, 52), (-1042, 569, 190), (0, -130, 0));
CreateGrids((-1165, 584, 185), (-1248, 519, 185), (0, 0, 0));
CreateDoors((-1353, 327, 215), (-1260, 327, 215), 90, 90, 0, 3, 1, 15, 75);
mgTurret1 = spawnTurret( "misc_turret", (-1322, 156, 268), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 90, 0);
mgTurret1 setModel( "weapon_minigun" );
CreateElevator((-1034, 93, 187), (-177, 489, 28), (0, -90, 0));
CreateElevator((-738, 791, 60), (-1757, 1290, 20), (0, 130, 0));
CreateWalls((-3498, 1260, 10), (-3498, 1600, 100));
mgTurret1 = spawnTurret( "misc_turret", (-2934, 1564, 38), "pavelow_minigun_mp" );
mgTurret1.angles = (0, 0, 0);
mgTurret1 setModel( "weapon_minigun" );
mgTurret2 = spawnTurret( "misc_turret", (-2934, 1360, 31), "pavelow_minigun_mp" );
mgTurret2.angles = (0, 0, 0);
mgTurret2 setModel( "weapon_minigun" );
CreateElevator((-3255, 1561, 8), (-177, 489, 28), (0, -130, 0));
}
Crash()
{
CreateWalls((1658, 688, 590), (1658, 688, 650));
CreateRamps((1585, 424, 612), (1548, -430, 68));
CreateElevator((411, 481, 272), (-88, 3841, 830), (0, 0, 0));
CreateElevator((-1241, 3624, 688), (-1652, 3541, 913), (0, 130, 0));
CreateRamps((-2199, 3071, 900), (-2199, 2856, 1060));
CreateElevator((-2272, 2501, 1072), (-565, 1485, 420), (0, 130, 0));
}
Salvage()
{
CreateRamps((1147, 2896, 67), (1702, 2896, 254));
CreateGrids((1732, 2796, 260), (1932, 2996, 260), (0, 0, 0));
CreateDoors((1783, 3120, 300), (1783, 2894, 300), 90, 0, 0, 9, 2, 15, 197);
CreateElevator((1370, -710, 1), (1000, 2915, 85), (0, 0, 0));
CreateElevator((1956, 2988, 258), (1832, 2473, 430), (0, 180, 0));
CreateGrids((1832, 2473, 395), (1653, 2517, 395), (0, 0, 0));
}