Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "zcommon.acs"
- #library "strfhelp"
- #define VDOORSPEED 16
- #define VDOORWAIT 150
- str QuestItems[32] =
- {
- "QuestItemThatDoesNotExist",
- "QuestItem1", "QuestItem2", "QuestItem3",
- "QuestItem4", "QuestItem5", "QuestItem6", "QuestItem7",
- "QuestItem8", "QuestItem9", "QuestItem10", "QuestItem11",
- "QuestItem12", "QuestItem13", "QuestItem14", "QuestItem15",
- "QuestItem16", "QuestItem17", "QuestItem18", "QuestItem19",
- "QuestItem20", "QuestItem21", "QuestItem22", "QuestItem23",
- "QuestItem24", "QuestItem25", "QuestItem26", "QuestItem27",
- "QuestItem28", "QuestItem29", "QuestItem30", "QuestItem31"
- };
- str MusicNames[34] =
- {
- "",
- "d_action",
- "d_tavern",
- "d_danger",
- "d_fast",
- "d_intro",
- "d_darker",
- "d_strike",
- "d_slide",
- "d_tribal",
- "d_march",
- "d_danger",
- "d_mood",
- "d_castle",
- "d_darker",
- "d_action",
- "d_fight",
- "d_spense",
- "d_slide",
- "d_strike",
- "d_dark",
- "d_tech",
- "d_slide",
- "d_drone",
- "d_panthr",
- "d_sad",
- "d_instry",
- "d_tech",
- "d_action",
- "d_instry",
- "d_drone",
- "d_fight",
- "d_happy",
- "d_end"
- };
- // Script 0 is used to implement several of Strife's unique line types.
- // It's also used to implement the sky change after the Programmer dies.
- script << 0 >> (int type, int tag)
- {
- int i;
- switch (type)
- {
- // WALK TRIGGERS
- case 230:
- i = GetLineRowOffset() & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- Door_Open (tag, VDOORSPEED);
- clearlinespecial ();
- }
- break;
- case 227:
- i = GetLineRowOffset() & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- Door_Close (tag, VDOORSPEED);
- clearlinespecial ();
- }
- break;
- case 228:
- if (CheckInventory ("QuestItem24"))
- {
- if (CheckInventory ("QuestItem28"))
- {
- LocalAmbientSound ("svox/voc130", 127);
- }
- else
- {
- LocalAmbientSound ("svox/voc128", 127);
- }
- clearlinespecial ();
- }
- break;
- case 196:
- if (GetSigilPieces() > 1)
- {
- Floor_LowerToLowest (tag, 8);
- clearlinespecial ();
- }
- break;
- case 197:
- if (GetSigilPieces() > 1)
- {
- Door_Close (tag, VDOORSPEED*4);
- clearlinespecial ();
- }
- break;
- case 212:
- if (CheckInventory ("FlameThrower"))
- {
- Floor_LowerToLowest (tag, 8);
- clearlinespecial ();
- }
- break;
- case 193:
- i = GetLineRowOffset() & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- Floor_LowerToLowest (tag, 8);
- clearlinespecial ();
- }
- break;
- case 11:
- if (tag == 0)
- {
- Exit_Normal (0);
- }
- else
- {
- Teleport_NewMap (tag, 0, FALSE);
- }
- break;
- case 52:
- tag /= 100;
- if (tag == 0)
- {
- Exit_Normal (0);
- }
- else
- {
- Teleport_NewMap (tag, 0, FALSE);
- }
- break;
- case 187:
- i = GetLineRowOffset() & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- ClearForceField (tag);
- clearlinespecial ();
- }
- break;
- case 188:
- if (CheckInventory ("QuestItem16") || gametype() == GAME_NET_DEATHMATCH)
- {
- Door_Open (tag, VDOORSPEED);
- clearlinespecial ();
- }
- break;
- case 200:
- if (CheckInventory ("Sigil"))
- {
- Door_Open (tag, VDOORSPEED);
- clearlinespecial ();
- }
- break;
- case 215:
- i = (tag % 100) & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- SendToCommunicator (tag/100, 0, 1, 0);
- clearlinespecial ();
- }
- break;
- case 204:
- case 203:
- if (tag >= 0 && tag <= 33)
- {
- SetMusic (MusicNames[tag]);
- }
- break;
- // WALK RETRIGGERS
- case 216:
- i = GetLineRowOffset() & 31;
- if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
- {
- Door_Raise (tag, VDOORSPEED, VDOORWAIT);
- }
- break;
- case 186:
- if (lineside() != LINE_FRONT)
- break;
- case 145:
- if (gametype() == GAME_NET_DEATHMATCH)
- {
- Floor_RaiseByValue (tag, 128, 64);
- clearlinespecial();
- }
- else
- {
- Teleport_NewMap (tag/100, tag%100, TRUE);
- }
- break;
- case 175:
- if (GetActorFloorZ(0) + 16.0 > GetActorZ(0))
- {
- NoiseAlert (0, 0);
- }
- break;
- case 198:
- if (!CheckInventory ("OfficersUniform"))
- {
- NoiseAlert (0, 0);
- }
- break;
- case 208:
- if (CheckInventory ("FlameThrower"))
- {
- NoiseAlert (0, 0);
- }
- break;
- case 206:
- if (CheckInventory ("OfferingChalice"))
- {
- NoiseAlert (0, 0);
- }
- break;
- case 184:
- if (Plat_UpNearestWaitDownStay (tag, 16, 35))
- {
- // FIXME
- }
- break;
- case 213:
- if (!CheckInventory ("OfferingChalice"))
- {
- print (s:"You need the chalice !");
- activatorsound ("*usefail", 127);
- SetResultValue (0);
- }
- else
- {
- SetResultValue (Door_Raise (0, VDOORSPEED, VDOORWAIT, tag));
- }
- break;
- case 232:
- if (!CheckInventory ("QuestItem18") && gametype() != GAME_NET_DEATHMATCH)
- {
- print (s:"You need the Oracle Pass!");
- activatorsound ("*usefail", 127);
- SetResultValue (0);
- }
- else
- {
- SetResultValue (Door_Raise (0, VDOORSPEED, VDOORWAIT, tag));
- }
- break;
- case 180:
- case 181:
- SetResultValue (Floor_RaiseByValueTxTy (tag, 8, 512));
- break;
- case 194:
- if (Door_Open (tag, VDOORSPEED))
- {
- print (s:"You've freed the prisoners!");
- GiveInventory ("QuestItem13", 1);
- }
- else
- {
- SetResultValue (0);
- }
- break;
- case 199:
- if (Ceiling_LowerAndCrush (tag, 8, 10))
- {
- print (s:"You've destroyed the Converter!");
- GiveInventory ("QuestItem25", 1);
- GiveInventory ("UpgradeStamina", 10);
- GiveInventory ("UpgradeAccuracy", 1);
- }
- else
- {
- SetResultValue (0);
- }
- break;
- case 209:
- if (CheckInventory ("OfferingChalice"))
- {
- SetResultValue (Generic_Stairs (tag, 16, 16, 0, 0));
- }
- else
- {
- print (s:"You need the chalice!");
- activatorsound ("*usefail", 127);
- SetResultValue (0);
- }
- break;
- case 219:
- case 220:
- SetResultValue (Floor_LowerToHighest (tag, 8, 128));
- break;
- case 226:
- if (Floor_LowerToHighest (tag, 8, 128))
- {
- GiveInventory ("UpgradeStamina", 10);
- GiveInventory ("UpgradeAccuracy", 1);
- print (s:"Congratulations! You have completed the training area");
- }
- else
- {
- SetResultValue (0);
- }
- break;
- case 154:
- SetResultValue (Plat_DownWaitUpStayLip (tag, 32, 105, 0));
- break;
- case 177:
- SetResultValue (Plat_DownWaitUpStayLip (tag, 32, 105, 0));
- break;
- case 214: // This only needs to be ACS for the long delay
- SetResultValue (Plat_DownWaitUpStayLip (tag, 8, 1050, 0, 1));
- break;
- case 235:
- if (GetSigilPieces() < 5)
- {
- SetResultValue (0);
- break;
- }
- // Intentional fall-through
- case 174:
- case 40:
- case 189:
- case 233:
- i = Door_Open (tag, VDOORSPEED/2);
- i = i | Floor_LowerToLowest (tag, VDOORSPEED/2);
- SetResultValue (i);
- if (type == 233 && i)
- {
- SendToCommunicator (70, 0, 0, 0);
- }
- break;
- case 183:
- i = Door_Open (tag, VDOORSPEED/2);
- i = i | Floor_LowerToHighest (tag, VDOORSPEED/2, 128);
- SetResultValue (i);
- break;
- case 229:
- SetResultValue (0);
- if (GetSigilPieces() == 5)
- {
- SetResultValue (Door_Animated (tag, 4, 105));
- }
- break;
- case 234:
- if (CheckInventory ("QuestItem3") || gametype() == GAME_NET_DEATHMATCH)
- {
- SetResultValue (Door_Raise (tag, VDOORSPEED, VDOORWAIT));
- }
- else
- {
- SetResultValue (Door_LockedRaise (0, 0, 0, 102));
- }
- break;
- case 256:
- // Not a line type, but used by the Programmer death script.
- ChangeSky ("SKYMNT01", "SKYMNT01");
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement