Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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);
- }
- CustomSpawningSystem()
- {
- 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()
- {
- }
- Derail()
- {
- }
- Estate()
- {
- }
- Favela()
- {
- }
- HighRise()
- {
- }
- Invasion()
- {
- }
- Karachi()
- {
- }
- Quarry()
- {
- }
- Rundown()
- {
- }
- Rust()
- {
- }
- Scrapyard()
- {
- }
- Skidrow()
- {
- }
- SubBase()
- {
- }
- Terminal()
- {
- }
- Underpass()
- {
- }
- Wasteland()
- {
- }
- Strike()
- {
- }
- Crash()
- {
- }
- Salvage()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement