Código: Selecionar todos
#include "zcommon.acs"
#import "DLEGACS.acs"
//Última TID = 61
// ================================================================
// Definindo Objetivos/Tips =======================================
Script 101 ENTER
{
objectives[1] = "Ganhe acesso a estação central e\nreative os geradores de energia.";
objectives[2] = "Sala de segurança.\n\nVocê precisa ganhar acesso a esta sala para\nconseguir acesso a estação central.";
objectives[3] = "...";
cobjectives[1] = "Acesso a sala de segurança garantido.";
cobjectives[2] = "Beleza!\n\nAbra caminho até a estação de controle.";
cobjectives[3] = "Acesso a estação central garantido.";
tips[1] = "Seria melhor religar a porra dos geradores\n\nantes. Não seria?";
tips[2] = "Sem cartão, sem acesso...\n\nCruel!";
//Garantindo as armas únicas!
If (GameType() != GAME_NET_DEATHMATCH)
{
GiveInventory("CannonShotgun",1);
GiveInventory("LChainGun",1);
}
}
// ===================================
// Variáveis =========================
Int Coop = 5;
Int Camera1 = 0;
Int Danilos = 0;
Int TrapDoor1 = 0;
Int TrapDoor1Ok = 0;
Int LiftsHellKnightsOk = 0;
Int Action1 = 0;
Int ArchViewOk = 0;
Int ArchView2Ok = 0;
Int YellowDoorWarning = 0;
Int PainTag = 37;
Int HellKGenerator1 = 0;
Int FallWarning = 0;
Int Action2RevenantPoints = 0;
Int Action2DemonsPoints = 0;
Int Action2ImpsPoints = 0;
Int FirstHIGHJUMP = 0;
Int ExtraShells = 0;
// ==================================
//Ajustes do Mapa! ==================
Script 102 OPEN
{
//ALINHAMENTOS!
Sector_setCeilingpanning(2,32,0,0,0);
Sector_setFloorpanning(2,32,0,0,0);
Sector_setCeilingpanning(3,0,0,32,0);
Sector_setFloorpanning(3,0,0,32,0);
Sector_setCeilingpanning(4,1,0,64,0);
Sector_setFloorpanning(7,32,0,0,0);
Sector_setCeilingpanning(9,0,0,32,0);
Sector_setFloorpanning(9,0,0,32,0);
Sector_setCeilingpanning(12,32,0,32,0);
Sector_setCeilingpanning(30,32,0,32,0);
Sector_setCeilingpanning(34,64,0,0,0);
Sector_setCeilingpanning(35,64,0,0,0);
Sector_setFloorpanning(45,32,0,32,0);
Sector_setCeilingpanning(60,4,0,20,0);
Sector_setCeilingpanning(74,0,0,32,0);
Sector_setFloorpanning(74,0,0,32,0);
Sector_setCeilingpanning(91,32,0,32,0);
Sector_setCeilingpanning(92,32,0,32,0);
Sector_setCeilingpanning(93,32,0,32,0);
Sector_setCeilingpanning(94,32,0,32,0);
Sector_setCeilingpanning(95,32,0,32,0);
Sector_setCeilingpanning(98,0,0,32,0);
Sector_setFloorpanning(98,0,0,32,0);
Sector_setFloorpanning(99,0,0,32,0);
//Apagando Luzes.
Thing_Deactivate(34);
Thing_Deactivate(35);
Thing_Deactivate(36);
Thing_Deactivate(57);
//SetCameraToTexture(24,"CAMERA01",1);
//Modo DM
If (GameType() == GAME_NET_DEATHMATCH)
{
Ceiling_RaiseToNearest(25,10);
Floor_LowerToLowest(25,10);
Door_Open(11,10);
Delay(35);
SetMusic("E1M4_FIG",1,1);
}
//Modo Cooperativo.
If (GameType() == GAME_SINGLE_PLAYER)
{ Coop = 0; }
//Fechando a porta.
Door_Close(1,5);
//Removendo Painters
ACS_execute(166,0,0,0,0);
//Poly
Polyobj_RotateLeft(101,100,255);
//Queda
Sector_SetDamage(110,999,1);
}
// =====================================
//Ajustes do Player ====================
Script 1 ENTER
{
//Cura!
ACS_Execute(700,0,0,0,0);
//Ativando HUD
StartHud();
//Sparks
ACS_Execute(171,0,0,0,0);
}
// =====================================
// Action de Inicio ====================
Script 2 (VOID)
{
If (Camera1 == 0)
{
If (GameType() == GAME_SINGLE_PLAYER)// Caso SP!
{
SetPlayerProperty(PlayerNumber(),1,PROP_TOTALLYFROZEN);
ACS_Execute(167,0,0,0,0);
Delay(35*2);
ClearHud();
Thing_Activate(1);
Delay(1);
ChangeCamera(1,PlayerNumber(),1);
Delay(35*2);
Thing_SpawnFacing(4,T_REVENANT,0,5);
Delay(1);
NoiseAlert(PlayerNumber(),5);
Delay(50);
ChangeCamera(0,0,1);
Delay(1);
Thing_Deactivate(1);
StartHud();
SetPlayerProperty(PlayerNumber(),0,PROP_TOTALLYFROZEN);
SetMusic("E1M4_FIG",1,1);
Delay(1);
Camera1++;
}
Else //Não SP.
{
SetMusic("E1M4_FIG",1,1);
Thing_SpawnFacing(4,T_REVENANT,0,5);
Delay(1);
NoiseAlert(PlayerNumber(),5);
Delay(1);
Camera1++;
}
}
}
// ==================================
//Revenants =========================
Script 3 (VOID)
{
If (Danilos == 0 && GameType() != GAME_NET_DEATHMATCH)
{
While (Thingcount(0,5) > 0)
{
Delay(1);
}
ACS_Execute(167,0,0,0,0);
Delay(75);
Thing_SpawnFacing(6,T_REVENANT,0,7);
Delay(1);
NoiseAlert(PlayerNumber(),7);
Danilos++;
ACS_Execute(4,0,0,0,0);
}
}
// =================================
//Após Revenants ===================
Script 4 (VOID)
{
If (GameType() != GAME_NET_DEATHMATCH)
{
While(ThingCount(0,7) > 0)
{
Delay(1);
}
Delay(70);
//OBJ1!
ACS_Execute(253,0,1,0,8.0);
Delay(35 * 8);
Door_Open(11,80);
Delay(1);
Thing_SpawnFacing(8,T_SHOTGUY,1,10);
Thing_SpawnFacing(9,T_CHAINGUY,1,10);
Delay(1);
NoiseAlert(PlayerNumber(),10);
While(Thingcount(0,10) > 3)
{
Delay(1);
}
Delay(15);
ACS_Execute(167,0,0,0,0);
Delay(35);
Thing_SpawnFacing(12,T_SPECTRE,0,23);
Delay(1);
NoiseAlert(PlayerNumber(),23);
}
}
// ==========================================
//Script do Elevador! =======================
Int LiftOn = 0;
Script 5 (Int Sector, Int SDamage)
{
If (LiftOn == 0 && LineSide() == SIDE_FRONT)
{
Delay(35);
LiftOn++;
SetLineBlocking(1,ON);
Ceiling_RaiseToNearest(Sector,40);
Floor_RaiseToNearest(Sector,40);
TagWait(21);
SetLineBlocking(1,OFF);
Delay(70);
SetLineBlocking(1,ON);
Floor_LowerToLowest(Sector,40);
Ceiling_LowerToLowest(Sector,40);
Delay(15);
Sector_SetDamage(SDamage,999,1);
TagWait(21);
Sector_SetDamage(SDamage,0,1);
SetLineBlocking(1,OFF);
LiftOn--;
}
}
// ========================================
// Portas e luzes =========================
Script 51 (Int LightID, Int QuePorta )
{
Thing_Deactivate(LightID);
Door_Open(QuePorta,80);
Delay(140);
Door_Close(QuePorta,80);
TagWait(QuePorta);
Thing_Activate(LightID);
}
// ==============================
// Evitando Bugs no Lift ========
Script 52 (VOID)
{
If (LiftOn == 0)
{
ACS_Terminate(5,0);
}
}
// ==============================
// Penca de Zumbis ==============
Script 6 (VOID)
{
If (GameType() != GAME_NET_DEATHMATCH)
{
Delay(35);
ACS_Execute(167,0,0,0,0);
Delay(1);
TrapDoor1++;
}
}
// ==================================================================================
// Penca de Zumbis 2 ================================================================
Script 7 (VOID)
{
If (TrapDoor1 == 1 && LineSide() == SIDE_FRONT && GameType() != GAME_NET_DEATHMATCH)
{
Ceiling_RaiseToNearest(25,60);
Floor_LowerToLowest(25,60);
TagWait(25);
Delay(1);
NoiseAlert(PlayerNumber(),15);
Delay(1);
TrapDoor1Ok++;
ClearLineSpecial();
}
Else If (TrapDoor1Ok == 1)
{
ClearLineSpecial();
}
}
// =========================================================
// HellKnights após Chave Amarela ==========================
Script 8 (VOID)
{
If (LiftsHellKnightsOk == 0 && CheckInventory("YellowCard") && GameType() != GAME_NET_DEATHMATCH)
{
Thing_SpawnFacing(13,T_HELLKNIGHT,0,17);
Delay(1);
LiftsHellKnightsOk++;
ACS_Execute(81,0,0,0,0);
}
}
// ====================================
// Fim da primeira Action =============
Script 81 (VOID)
{
While(Thingcount(0,17) > 0)
{
Delay(1);
}
Delay(35);
Radius_Quake(5,20,0,128,0);
SetMusic("*",1,1);
Delay(1);
Action1++;
}
// ==================================
// Tip ==============================
Script 9 (VOID)
{
ACS_Execute(254,0,1,0,4.0);
}
// ==================================
// Porta ============================
Script 10 (VOID)
{
Thing_Deactivate(16);
Door_Open(26,80);
Delay(140);
Door_Close(26,80);
TagWait(26);
Thing_Activate(16);
}
// ===================================
// Surprise ==========================
Script 11 (VOID)
{
If (ArchViewOk > 0)
{
FloorAndCeiling_RaiseByValue(29,999,512);
LocalAmbientSound("METAL01",999);
ClearLineSpecial();
}
}
// ===================================
// Surprise 2 ========================
Script 111 (VOID)
{
FloorAndCeiling_RaiseByValue(27,999,512);
LocalAmbientSound("METAL01",999);
}
// =====================================================================
//ArchVile Vision Script (3 hours in this SHIT!) =======================
Script 12 (VOID)
{
If (Action1 == 1 && ArchViewOk == 0 && GameType() == GAME_SINGLE_PLAYER)
{
SetLineBlocking(99,ON);
ACS_Execute(167,0,0,0,0);
Delay(1);
Thing_Remove(10);
Delay(1);
SetActorAngle(PlayerNumber(),0.5);
ClearHud();
Delay(1);
SetPlayerProperty(PlayerNumber(),1,PROP_TOTALLYFROZEN);
Delay(35);
Thing_SpawnFacing(18,T_VILE,0,20);
Delay(70);
LocalAmbientSound("Fear01",5.0);
Thing_SetGoal(20,19,0,1);
Delay(35*3);
Thing_remove(20);
Delay(35);
StartHud();
Delay(1);
SetLineBlocking(99,OFF);
SetPlayerProperty(PlayerNumber(),0,PROP_TOTALLYFROZEN);
ArchViewOk++;
}
Else { ArchViewOk++; }
}
// =====================================================================================
// Porta Amarela =======================================================================
Script 13 (VOID)
{
If (CheckInventory("YellowCard") && Action1 == 1 && GameType() != GAME_NET_DEATHMATCH)
{
Door_Raise(26,80,140);
Thing_Deactivate(16);
TagWait(26);
Thing_Activate(16);
If (YellowDoorWarning == 1 && GameType() != GAME_NET_DEATHMATCH)
{
ACS_Execute(254,0,2,0,4.0);
Delay(1);
YellowDoorWarning++;
}
}
Else
{
If (YellowDoorWarning == 0 && GameType() != GAME_NET_DEATHMATCH)
{
ACS_Execute(253,0,2,0,8.0);
Delay(1);
YellowDoorWarning++;
}
}
}
// ===============================
// Acesso a estação ==============
Script 14 (VOID)
{
Door_Open(32,80);
Thing_Deactivate(21);
Door_Open(33,20);
Delay(10);
Thing_Deactivate(22);
}
// ===============================
// Objetivo Completo! ============
Int Obj1Ok;
Script 15 (VOID)
{
If (Obj1Ok == 0)
{
ACS_Execute(254,0,3,0,8.0);
Delay(1);
Obj1Ok++;
}
}
//=================================
// Evento do Gerador ==============
Int GeneratorActive = 0;
Script 16 (VOID)
{
If (GameType() == GAME_SINGLE_PLAYER && GameType() != GAME_NET_DEATHMATCH)
{
ClearHud();
SetPlayerProperty(PlayerNumber(),1,PROP_FROZEN);
Delay(35);
ChangeCamera(26,PlayerNumber(),1);
Delay(70);
Polyobj_RotateLeft(102,100,255);
Polyobj_RotateLeft(103,100,255);
Delay(15);
Thing_SpawnFacing(27,T_VILE,1,30);
Delay(1);
Thing_SetGoal(30,28,0,1);
Delay(35*5);
ChangeCamera(0,0,1);
SetPlayerProperty(PlayerNumber(),0,PROP_FROZEN);
Delay(15);
StartHud();
Delay(1);
ArchView2Ok++;
ACS_Execute(21,0,0,0,0);
Delay(1);
GeneratorActive++;
}
Else
{
ClearHud();
SetPlayerProperty(0,1,PROP_FROZEN);
Delay(35);
ChangeCamera(26,0,1);
Delay(35);
Polyobj_RotateLeft(102,100,255);
Polyobj_RotateLeft(103,100,255);
Delay(35);
ChangeCamera(0,0,1);
Delay(1);
SetPlayerProperty(0,0,PROP_FROZEN);
ArchView2Ok++;
ACS_Execute(21,0,0,0,0);
Delay(1);
GeneratorActive++;
StartHud();
ACS_Execute(21,0,0,0,0);
}
}
// =================================
// Macumba ativando som. ===========
Script 161 (VOID)
{
ThingSound(34,"Fear01",5.0);
}
// =================================
// Alerta após a câmera! ===========
Script 162 (VOID)
{
If (ArchView2Ok > 0)
{
Thing_Move(32,31,1);
Delay(15);
Delay(1);
ACS_Execute(167,0,0,0,0);
ClearLineSpecial();
}
}
// ====================================
// Efeito de Luzes. ===================
Script 163 (VOID)
{
If (ArchView2Ok > 0)
{
ClearLineSpecial();
ACS_Execute(167,0,0,0);
Delay(1);
SetLineBlocking(5,ON);
SetLineTexture(5,SIDE_FRONT,TEXTURE_MIDDLE,"SBLOCK02");
SetLineTexture(5,SIDE_BACK,TEXTURE_MIDDLE,"SBLOCK02");
TranslucentLine(5,75,1);
Light_Glow(69,100,255,35);
Thing_SpawnFacing(165,166,1,167);
ThingSound(33,"Fear04",999);
ThingSound(70,"Fear04",999);
Delay(1);
Door_Close(33,200);
TagWait(33);
Thing_Activate(22);
Delay(Random(35,140));
Thing_Deactivate(33);
Thing_Activate(34);
Delay(3);
Thing_Deactivate(34);
Thing_Activate(35);
Delay(3);
Thing_Deactivate(35);
Thing_Activate(36);
Delay(3);
Thing_Deactivate(36);
Delay(35);
Delay(Random(35,95));
Thing_SpawnFacing(37,T_PAINELEMENTAL,0,38);
If (GameType() == GAME_NET_COOPERATIVE)
{
Thing_SpawnFacing(59,T_PAINELEMENTAL,0,60);
Delay(1);
NoiseAlert(PlayerNumber(),60);
}
Delay(1);
NoiseAlert(PlayerNumber(), 38);
ACS_Execute(164,0,0,0,0);
}
}
// ===============================================
// Pains! ========================================
Script 164 (VOID)
{
While(Thingcount(0,PainTag + 1) > 0)
{
Delay(1);
}
Delay(70);
Thing_SpawnFacing(37,T_PAINELEMENTAL,0,PainTag + 1);
Delay(1);
NoiseAlert(PlayerNumber(),PainTag + 1);
Delay(1);
PainTag++;
Delay(35*5);
If (PainTag <40> 0)
{
Delay(1);
}
LocalAmbientSound("LOSScarySound7",999);
}
// =========================================
// Caindo no bagulhéte! ====================
Script 19 (VOID)
{
ACS_Execute(108,0,0,0,0);
Delay(1);
If (FallWarning == 0)
{
FallWarning++;
ACS_Execute(167,0,0,0);
LocalAmbientSound("Fear04",999);
ThingSound(70,"Fear04",999);
Delay(35);
SetMusic("E1M4_FIG",1,1);
Delay(35*3);
AutoSave();
Delay(Random(35,(35*5)));
Ceiling_RaiseByValue(96,999,2);
Thing_SpawnFacing(52,166,1,167);
Delay(1);
If (GameType() == GAME_NET_COOPERATIVE)
{
Sector_SetDamage(96,999,1);
Delay(1);
Sector_SetDamage(96,0,1);
}
Thing_SpawnFacing(52,T_REVENANT,0,54);
Delay(1);
NoiseAlert(PlayerNumber(),53);
ACS_Execute(191,0,0,0,0);
}
Else //Caso o maldito Player caia de novo na porra do bagulho!
{
If(FirstHIGHJUMP == 1)
{
SetActorProperty(PlayerNumber(), APROP_JUMPZ, 20.0);
}
}
}
// ==============================================================
// Action =======================================================
Script 191 (VOID)
{
While (Action2RevenantPoints <2> 0)
{
Delay(1);
}
Delay(Random(70,(35*5)));
If (GameType() == GAME_NET_COOPERATIVE)
{
Sector_SetDamage(96,999,1);
Delay(1);
Sector_SetDamage(96,0,1);
}
Thing_SpawnFacing(52,T_REVENANT,0,54);
Delay(1);
NoiseAlert(PlayerNumber(),54);
Delay(1);
Action2RevenantPoints++;
}
While(ThingCount(0,54) > 0)
{
Delay(1);
}
Delay(70);
If (GameType() == GAME_NET_COOPERATIVE)
{
Sector_SetDamage(96,999,1);
Delay(1);
Sector_SetDamage(96,0,1);
}
Thing_SpawnFacing(52,T_DEMON,0,54);
Delay(1);
NoiseAlert(PlayerNumber(),53);
ACS_Execute(192,0,0,0,0);
}
// =============================================
// Mais Action =================================
Script 192 (VOID)
{
While (Action2DemonsPoints <= 3 + Coop)
{
Delay(35*4);
If (GameType() == GAME_NET_COOPERATIVE)
{
Sector_SetDamage(96,999,1);
Delay(1);
Sector_SetDamage(96,0,1);
}
Thing_SpawnFacing(52,T_DEMON,0,54);
Delay(1);
NoiseAlert(PlayerNumber(),54);
Delay(1);
Action2DemonsPoints++;
}
Delay(35*4);
If (GameType() == GAME_NET_COOPERATIVE)
{
Sector_SetDamage(96,999,1);
Delay(1);
Sector_SetDamage(96,0,1);
}
Thing_SpawnFacing(52,T_IMP,0,54);
Delay(1);
NoiseAlert(PlayerNumber(),53);
ACS_Execute(193,0,0,0,0);
Delay(35);
Thing_SpawnFacing(58,T_SOULSPHERE,1,59);
Delay(1);
ACS_Execute(18,0,0,0,0);
}
// ============================================
// É nóis dinovo! =============================
Script 193 (VOID)
{
While (Action2ImpsPoints <4> 0)
{
Delay(1);
}
ACS_Execute(194,0,0,0,0);
}
// =======================================
// Final da Action2 ======================
Script 194 (VOID)
{
Radius_Quake(5,20,0,128,0);
Thing_Remove(167);
Delay(15);
SetMusic("*",1,1);
Delay(Random(95,(35*30)));
ACS_Execute(22,0,0,0,0);
}
// ==================================
// Abrir da Porta. ==================
Script 20 (VOID)
{
Thing_Deactivate(55);
Door_Open(98,80);
Delay(15);
}
// ===================================================================
//Aviso caso não tenham religados os geradores. ======================
Script 201 (VOID)
{
If(GeneratorActive == 0)
{
ACS_Execute(255,0,1,0,8.0);
}
}
// ================================================
// "We start from the Dark" =======================
Script 21 (VOID)
{
SetLineSpecial(10,210,99,0,0,0,0);
Thing_Activate(57);
}
// ====================================================
// Primeiro HellGift - HIGHJUMP! ======================
Script 22 (VOID)
{
ClearHud();
Delay(1);
SetPlayerProperty(PlayerNumber(),1,PROP_TOTALLYFROZEN);
ChangeCamera(71,0,0);
SetActorProperty(PlayerNumber(), APROP_JUMPZ, 25.0);
Delay(35*5);
SetPlayerProperty(PlayerNumber(),0,PROP_TOTALLYFROZEN);
ChangeCamera(0,0,0);
Delay(1);
FirstHIGHJUMP++;
Delay(1);
SetWeapon("Fists");
StartHud();
}
// =======================================================
// Removendo HIGHJump! ===================================
Script 23 (VOID)
{
If(FirstHIGHJUMP == 1)
{
SetActorProperty(PlayerNumber(), APROP_JUMPZ, 8.0);
}
}
// ================================================================
// Porta de Saída =================================================
Script 24 (VOID)
{
If (CheckInventory("RedCard") && GameType() != GAME_NET_DEATHMATCH)
{
Thing_Deactivate(61);
Door_Raise(74,40,140);
TagWait(74);
Thing_Activate(61);
}
Else
{
If (GameType() != GAME_NET_DEATHMATCH)
{
ACS_Execute(255,0,2,0,4.0);
}
}
}
Script 25 (VOID)
{
If (GameType() == GAME_SINGLE_PLAYER)
{
Delay(1);
SetPlayerProperty(PlayerNumber(),1,PROP_TOTALLYFROZEN);
Delay(35);
SetActorAngle(PlayerNumber(),0.5);
TagWait(74);
Ceiling_LowerToLowest(101,5);
Floor_LowerToLowest(101,5);
Delay(35*5);
SetPlayerProperty(PlayerNumber(),0,PROP_TOTALLYFROZEN);
Exit_Normal(0);
}
Else
{
Delay(35);
Exit_Normal(0);
}
}
// ========================================
// Portas e luzes em modo DM ==============
Script 105 (Int LightID, Int QuePorta )
{
If (GameType() == GAME_NET_DEATHMATCH)
{
Thing_Deactivate(LightID);
Door_Open(QuePorta,80);
Delay(140);
Door_Close(QuePorta,80);
TagWait(QuePorta);
Thing_Activate(LightID);
}
}
// =============================================================
// Entrada alernativa do Secret pra sacanear o DooMAGE =========
Script 106 (VOID)
{
If (GameType() == GAME_NET_DEATHMATCH)
{
FloorAndCeiling_RaiseByValue(27,999,512);
LocalAmbientSound("METAL01",999);
}
}
Script 107 (VOID)
{
If (GameType() == GAME_NET_DEATHMATCH)
{
FloorAndCeiling_RaiseByValue(29,999,512);
LocalAmbientSound("METAL01",999);
}
}
// =================================================================================================================
// Salvando jogadores insanos ======================================================================================
Script 108 (VOID)
{
If (ExtraShells == 0 && CheckInventory("Shell2") <= 20 && GameType() == GAME_SINGLE_PLAYER)
{
ExtraShells++;
Delay(1);
Thing_SpawnFacing(96,143,1,0);
}
}
