/* * Descent 3 * Copyright (C) 2024 Parallax Software * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ ///////////////////////////////////////////////////////////////////// // D.A.L.L.A.S. Generated Level Script - DLL Source File // // Filename: Merc5.cpp // Version: 3 ///////////////////////////////////////////////////////////////////// #include #include #include #include #include "osiris_import.h" #include "osiris_common.h" #include "DallasFuncs.cpp" #ifdef _MSC_VER // Visual C++ Build #define STDCALL __stdcall #define STDCALLPTR *STDCALL #else // Non-Visual C++ Build #define STDCALL __attribute__((stdcall)) #define STDCALLPTR STDCALL * #endif #ifdef __cplusplus extern "C" { #endif char STDCALL InitializeDLL(tOSIRISModuleInit *func_list); void STDCALL ShutdownDLL(void); int STDCALL GetGOScriptID(char *name, ubyte is_door); void STDCALLPTR CreateInstance(int id); void STDCALL DestroyInstance(int id, void *ptr); short STDCALL CallInstanceEvent(int id, void *ptr, int event, tOSIRISEventInfo *data); int STDCALL GetTriggerScriptID(int trigger_room, int trigger_face); int STDCALL GetCOScriptList(int **list, int **id_list); int STDCALL SaveRestoreState(void *file_ptr, ubyte saving_state); #ifdef __cplusplus } #endif // ================= // Script ID Numbers // ================= #define ID_LEVEL_0000 0x000 #define ID_CUSTOM_OBJECT_11C4 0x001 #define ID_CUSTOM_OBJECT_1088 0x002 #define ID_CUSTOM_OBJECT_09C6 0x003 #define ID_CUSTOM_OBJECT_11C5 0x004 #define ID_CUSTOM_OBJECT_09C7 0x005 #define ID_CUSTOM_OBJECT_182E 0x006 #define ID_CUSTOM_OBJECT_0A05 0x007 #define ID_CUSTOM_OBJECT_0A04 0x008 #define ID_CUSTOM_OBJECT_0A03 0x009 #define ID_CUSTOM_OBJECT_1A02 0x00a #define ID_CUSTOM_OBJECT_1033 0x00b #define ID_CUSTOM_OBJECT_1200 0x00c #define ID_CUSTOM_OBJECT_1036 0x00d #define ID_CUSTOM_OBJECT_1035 0x00e #define ID_CUSTOM_OBJECT_3032 0x00f #define ID_CUSTOM_OBJECT_1830 0x010 #define ID_CUSTOM_OBJECT_28A2 0x011 #define ID_CUSTOM_OBJECT_0A06 0x012 #define ID_CUSTOM_OBJECT_2885 0x013 #define ID_CUSTOM_OBJECT_107E 0x014 #define ID_CUSTOM_OBJECT_1185 0x015 #define ID_CUSTOM_OBJECT_21B2 0x016 #define ID_CUSTOM_OBJECT_09DE 0x017 #define ID_CUSTOM_OBJECT_09DD 0x018 #define ID_CUSTOM_OBJECT_09DC 0x019 #define ID_CUSTOM_OBJECT_21DA 0x01a #define ID_CUSTOM_OBJECT_0899 0x01b #define ID_CUSTOM_OBJECT_089A 0x01c #define ID_CUSTOM_OBJECT_089B 0x01d #define ID_CUSTOM_OBJECT_1098 0x01e #define ID_CUSTOM_OBJECT_09A1 0x01f #define ID_CUSTOM_OBJECT_19A0 0x020 #define ID_CUSTOM_OBJECT_09C9 0x021 #define ID_CUSTOM_OBJECT_1007 0x022 #define ID_CUSTOM_OBJECT_1016 0x023 #define ID_TRIGGER_000F 0x024 #define ID_TRIGGER_0000 0x025 #define ID_TRIGGER_0010 0x026 #define ID_TRIGGER_000E 0x027 #define ID_TRIGGER_000D 0x028 #define ID_TRIGGER_000B 0x029 #define ID_TRIGGER_0009 0x02a #define ID_TRIGGER_000C 0x02b #define ID_TRIGGER_000A 0x02c #define ID_TRIGGER_0007 0x02d #define ID_TRIGGER_0008 0x02e // ======================== // Script Class Definitions // ======================== class BaseScript { public: BaseScript(); ~BaseScript(); virtual short CallEvent(int event, tOSIRISEventInfo *data); }; class LevelScript_0000 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_11C4 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1088 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C6 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_11C5 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C7 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_182E : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0A05 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0A04 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0A03 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1A02 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1033 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1200 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1036 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1035 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_3032 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1830 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_28A2 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0A06 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_2885 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_107E : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1185 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_21B2 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09DE : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09DD : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09DC : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_21DA : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0899 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_089A : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_089B : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1098 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09A1 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_19A0 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C9 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1007 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1016 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000F : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0000 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0010 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000E : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000D : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000B : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0009 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000C : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000A : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0007 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0008 : public BaseScript { public: short CallEvent(int event, tOSIRISEventInfo *data); }; // ====================== // Global Action Counters // ====================== #define MAX_ACTION_CTR_VALUE 100000 int ScriptActionCtr_000 = 0; int ScriptActionCtr_005 = 0; int ScriptActionCtr_012 = 0; int ScriptActionCtr_010 = 0; int ScriptActionCtr_017 = 0; int ScriptActionCtr_040 = 0; int ScriptActionCtr_042 = 0; int ScriptActionCtr_043 = 0; int ScriptActionCtr_072 = 0; int ScriptActionCtr_073 = 0; int ScriptActionCtr_077 = 0; int ScriptActionCtr_074 = 0; int ScriptActionCtr_075 = 0; int ScriptActionCtr_076 = 0; int ScriptActionCtr_001 = 0; int ScriptActionCtr_002 = 0; int ScriptActionCtr_008 = 0; int ScriptActionCtr_003 = 0; int ScriptActionCtr_029 = 0; int ScriptActionCtr_004 = 0; int ScriptActionCtr_030 = 0; int ScriptActionCtr_031 = 0; int ScriptActionCtr_033 = 0; int ScriptActionCtr_032 = 0; int ScriptActionCtr_024 = 0; int ScriptActionCtr_006 = 0; int ScriptActionCtr_058 = 0; int ScriptActionCtr_057 = 0; int ScriptActionCtr_048 = 0; int ScriptActionCtr_046 = 0; int ScriptActionCtr_045 = 0; int ScriptActionCtr_044 = 0; int ScriptActionCtr_007 = 0; int ScriptActionCtr_047 = 0; int ScriptActionCtr_037 = 0; int ScriptActionCtr_060 = 0; int ScriptActionCtr_078 = 0; int ScriptActionCtr_059 = 0; int ScriptActionCtr_013 = 0; int ScriptActionCtr_014 = 0; int ScriptActionCtr_036 = 0; int ScriptActionCtr_050 = 0; int ScriptActionCtr_018 = 0; int ScriptActionCtr_051 = 0; int ScriptActionCtr_022 = 0; int ScriptActionCtr_009 = 0; int ScriptActionCtr_011 = 0; int ScriptActionCtr_016 = 0; int ScriptActionCtr_021 = 0; int ScriptActionCtr_023 = 0; int ScriptActionCtr_041 = 0; int ScriptActionCtr_049 = 0; int ScriptActionCtr_028 = 0; int ScriptActionCtr_084 = 0; int ScriptActionCtr_083 = 0; int ScriptActionCtr_082 = 0; int ScriptActionCtr_019 = 0; int ScriptActionCtr_081 = 0; int ScriptActionCtr_080 = 0; int ScriptActionCtr_079 = 0; int ScriptActionCtr_020 = 0; int ScriptActionCtr_088 = 0; int ScriptActionCtr_087 = 0; int ScriptActionCtr_085 = 0; int ScriptActionCtr_086 = 0; int ScriptActionCtr_025 = 0; int ScriptActionCtr_027 = 0; int ScriptActionCtr_026 = 0; int ScriptActionCtr_038 = 0; int ScriptActionCtr_034 = 0; int ScriptActionCtr_035 = 0; int ScriptActionCtr_039 = 0; int ScriptActionCtr_054 = 0; int ScriptActionCtr_063 = 0; int ScriptActionCtr_071 = 0; int ScriptActionCtr_070 = 0; int ScriptActionCtr_069 = 0; int ScriptActionCtr_068 = 0; int ScriptActionCtr_067 = 0; int ScriptActionCtr_066 = 0; int ScriptActionCtr_065 = 0; int ScriptActionCtr_064 = 0; int ScriptActionCtr_015 = 0; // ======================================== // Function to Clear Global Action Counters // ======================================== void ClearGlobalActionCtrs(void) { ScriptActionCtr_000 = 0; ScriptActionCtr_005 = 0; ScriptActionCtr_012 = 0; ScriptActionCtr_010 = 0; ScriptActionCtr_017 = 0; ScriptActionCtr_040 = 0; ScriptActionCtr_042 = 0; ScriptActionCtr_043 = 0; ScriptActionCtr_072 = 0; ScriptActionCtr_073 = 0; ScriptActionCtr_077 = 0; ScriptActionCtr_074 = 0; ScriptActionCtr_075 = 0; ScriptActionCtr_076 = 0; ScriptActionCtr_001 = 0; ScriptActionCtr_002 = 0; ScriptActionCtr_008 = 0; ScriptActionCtr_003 = 0; ScriptActionCtr_029 = 0; ScriptActionCtr_004 = 0; ScriptActionCtr_030 = 0; ScriptActionCtr_031 = 0; ScriptActionCtr_033 = 0; ScriptActionCtr_032 = 0; ScriptActionCtr_024 = 0; ScriptActionCtr_006 = 0; ScriptActionCtr_058 = 0; ScriptActionCtr_057 = 0; ScriptActionCtr_048 = 0; ScriptActionCtr_046 = 0; ScriptActionCtr_045 = 0; ScriptActionCtr_044 = 0; ScriptActionCtr_007 = 0; ScriptActionCtr_047 = 0; ScriptActionCtr_037 = 0; ScriptActionCtr_060 = 0; ScriptActionCtr_078 = 0; ScriptActionCtr_059 = 0; ScriptActionCtr_013 = 0; ScriptActionCtr_014 = 0; ScriptActionCtr_036 = 0; ScriptActionCtr_050 = 0; ScriptActionCtr_018 = 0; ScriptActionCtr_051 = 0; ScriptActionCtr_022 = 0; ScriptActionCtr_009 = 0; ScriptActionCtr_011 = 0; ScriptActionCtr_016 = 0; ScriptActionCtr_021 = 0; ScriptActionCtr_023 = 0; ScriptActionCtr_041 = 0; ScriptActionCtr_049 = 0; ScriptActionCtr_028 = 0; ScriptActionCtr_084 = 0; ScriptActionCtr_083 = 0; ScriptActionCtr_082 = 0; ScriptActionCtr_019 = 0; ScriptActionCtr_081 = 0; ScriptActionCtr_080 = 0; ScriptActionCtr_079 = 0; ScriptActionCtr_020 = 0; ScriptActionCtr_088 = 0; ScriptActionCtr_087 = 0; ScriptActionCtr_085 = 0; ScriptActionCtr_086 = 0; ScriptActionCtr_025 = 0; ScriptActionCtr_027 = 0; ScriptActionCtr_026 = 0; ScriptActionCtr_038 = 0; ScriptActionCtr_034 = 0; ScriptActionCtr_035 = 0; ScriptActionCtr_039 = 0; ScriptActionCtr_054 = 0; ScriptActionCtr_063 = 0; ScriptActionCtr_071 = 0; ScriptActionCtr_070 = 0; ScriptActionCtr_069 = 0; ScriptActionCtr_068 = 0; ScriptActionCtr_067 = 0; ScriptActionCtr_066 = 0; ScriptActionCtr_065 = 0; ScriptActionCtr_064 = 0; ScriptActionCtr_015 = 0; } // ======================================== // Function to Save Global Action Counters // ======================================== void SaveGlobalActionCtrs(void *file_ptr) { File_WriteInt(ScriptActionCtr_000, file_ptr); File_WriteInt(ScriptActionCtr_005, file_ptr); File_WriteInt(ScriptActionCtr_012, file_ptr); File_WriteInt(ScriptActionCtr_010, file_ptr); File_WriteInt(ScriptActionCtr_017, file_ptr); File_WriteInt(ScriptActionCtr_040, file_ptr); File_WriteInt(ScriptActionCtr_042, file_ptr); File_WriteInt(ScriptActionCtr_043, file_ptr); File_WriteInt(ScriptActionCtr_072, file_ptr); File_WriteInt(ScriptActionCtr_073, file_ptr); File_WriteInt(ScriptActionCtr_077, file_ptr); File_WriteInt(ScriptActionCtr_074, file_ptr); File_WriteInt(ScriptActionCtr_075, file_ptr); File_WriteInt(ScriptActionCtr_076, file_ptr); File_WriteInt(ScriptActionCtr_001, file_ptr); File_WriteInt(ScriptActionCtr_002, file_ptr); File_WriteInt(ScriptActionCtr_008, file_ptr); File_WriteInt(ScriptActionCtr_003, file_ptr); File_WriteInt(ScriptActionCtr_029, file_ptr); File_WriteInt(ScriptActionCtr_004, file_ptr); File_WriteInt(ScriptActionCtr_030, file_ptr); File_WriteInt(ScriptActionCtr_031, file_ptr); File_WriteInt(ScriptActionCtr_033, file_ptr); File_WriteInt(ScriptActionCtr_032, file_ptr); File_WriteInt(ScriptActionCtr_024, file_ptr); File_WriteInt(ScriptActionCtr_006, file_ptr); File_WriteInt(ScriptActionCtr_058, file_ptr); File_WriteInt(ScriptActionCtr_057, file_ptr); File_WriteInt(ScriptActionCtr_048, file_ptr); File_WriteInt(ScriptActionCtr_046, file_ptr); File_WriteInt(ScriptActionCtr_045, file_ptr); File_WriteInt(ScriptActionCtr_044, file_ptr); File_WriteInt(ScriptActionCtr_007, file_ptr); File_WriteInt(ScriptActionCtr_047, file_ptr); File_WriteInt(ScriptActionCtr_037, file_ptr); File_WriteInt(ScriptActionCtr_060, file_ptr); File_WriteInt(ScriptActionCtr_078, file_ptr); File_WriteInt(ScriptActionCtr_059, file_ptr); File_WriteInt(ScriptActionCtr_013, file_ptr); File_WriteInt(ScriptActionCtr_014, file_ptr); File_WriteInt(ScriptActionCtr_036, file_ptr); File_WriteInt(ScriptActionCtr_050, file_ptr); File_WriteInt(ScriptActionCtr_018, file_ptr); File_WriteInt(ScriptActionCtr_051, file_ptr); File_WriteInt(ScriptActionCtr_022, file_ptr); File_WriteInt(ScriptActionCtr_009, file_ptr); File_WriteInt(ScriptActionCtr_011, file_ptr); File_WriteInt(ScriptActionCtr_016, file_ptr); File_WriteInt(ScriptActionCtr_021, file_ptr); File_WriteInt(ScriptActionCtr_023, file_ptr); File_WriteInt(ScriptActionCtr_041, file_ptr); File_WriteInt(ScriptActionCtr_049, file_ptr); File_WriteInt(ScriptActionCtr_028, file_ptr); File_WriteInt(ScriptActionCtr_084, file_ptr); File_WriteInt(ScriptActionCtr_083, file_ptr); File_WriteInt(ScriptActionCtr_082, file_ptr); File_WriteInt(ScriptActionCtr_019, file_ptr); File_WriteInt(ScriptActionCtr_081, file_ptr); File_WriteInt(ScriptActionCtr_080, file_ptr); File_WriteInt(ScriptActionCtr_079, file_ptr); File_WriteInt(ScriptActionCtr_020, file_ptr); File_WriteInt(ScriptActionCtr_088, file_ptr); File_WriteInt(ScriptActionCtr_087, file_ptr); File_WriteInt(ScriptActionCtr_085, file_ptr); File_WriteInt(ScriptActionCtr_086, file_ptr); File_WriteInt(ScriptActionCtr_025, file_ptr); File_WriteInt(ScriptActionCtr_027, file_ptr); File_WriteInt(ScriptActionCtr_026, file_ptr); File_WriteInt(ScriptActionCtr_038, file_ptr); File_WriteInt(ScriptActionCtr_034, file_ptr); File_WriteInt(ScriptActionCtr_035, file_ptr); File_WriteInt(ScriptActionCtr_039, file_ptr); File_WriteInt(ScriptActionCtr_054, file_ptr); File_WriteInt(ScriptActionCtr_063, file_ptr); File_WriteInt(ScriptActionCtr_071, file_ptr); File_WriteInt(ScriptActionCtr_070, file_ptr); File_WriteInt(ScriptActionCtr_069, file_ptr); File_WriteInt(ScriptActionCtr_068, file_ptr); File_WriteInt(ScriptActionCtr_067, file_ptr); File_WriteInt(ScriptActionCtr_066, file_ptr); File_WriteInt(ScriptActionCtr_065, file_ptr); File_WriteInt(ScriptActionCtr_064, file_ptr); File_WriteInt(ScriptActionCtr_015, file_ptr); } // =========================================== // Function to Restore Global Action Counters // =========================================== void RestoreGlobalActionCtrs(void *file_ptr) { ScriptActionCtr_000 = File_ReadInt(file_ptr); ScriptActionCtr_005 = File_ReadInt(file_ptr); ScriptActionCtr_012 = File_ReadInt(file_ptr); ScriptActionCtr_010 = File_ReadInt(file_ptr); ScriptActionCtr_017 = File_ReadInt(file_ptr); ScriptActionCtr_040 = File_ReadInt(file_ptr); ScriptActionCtr_042 = File_ReadInt(file_ptr); ScriptActionCtr_043 = File_ReadInt(file_ptr); ScriptActionCtr_072 = File_ReadInt(file_ptr); ScriptActionCtr_073 = File_ReadInt(file_ptr); ScriptActionCtr_077 = File_ReadInt(file_ptr); ScriptActionCtr_074 = File_ReadInt(file_ptr); ScriptActionCtr_075 = File_ReadInt(file_ptr); ScriptActionCtr_076 = File_ReadInt(file_ptr); ScriptActionCtr_001 = File_ReadInt(file_ptr); ScriptActionCtr_002 = File_ReadInt(file_ptr); ScriptActionCtr_008 = File_ReadInt(file_ptr); ScriptActionCtr_003 = File_ReadInt(file_ptr); ScriptActionCtr_029 = File_ReadInt(file_ptr); ScriptActionCtr_004 = File_ReadInt(file_ptr); ScriptActionCtr_030 = File_ReadInt(file_ptr); ScriptActionCtr_031 = File_ReadInt(file_ptr); ScriptActionCtr_033 = File_ReadInt(file_ptr); ScriptActionCtr_032 = File_ReadInt(file_ptr); ScriptActionCtr_024 = File_ReadInt(file_ptr); ScriptActionCtr_006 = File_ReadInt(file_ptr); ScriptActionCtr_058 = File_ReadInt(file_ptr); ScriptActionCtr_057 = File_ReadInt(file_ptr); ScriptActionCtr_048 = File_ReadInt(file_ptr); ScriptActionCtr_046 = File_ReadInt(file_ptr); ScriptActionCtr_045 = File_ReadInt(file_ptr); ScriptActionCtr_044 = File_ReadInt(file_ptr); ScriptActionCtr_007 = File_ReadInt(file_ptr); ScriptActionCtr_047 = File_ReadInt(file_ptr); ScriptActionCtr_037 = File_ReadInt(file_ptr); ScriptActionCtr_060 = File_ReadInt(file_ptr); ScriptActionCtr_078 = File_ReadInt(file_ptr); ScriptActionCtr_059 = File_ReadInt(file_ptr); ScriptActionCtr_013 = File_ReadInt(file_ptr); ScriptActionCtr_014 = File_ReadInt(file_ptr); ScriptActionCtr_036 = File_ReadInt(file_ptr); ScriptActionCtr_050 = File_ReadInt(file_ptr); ScriptActionCtr_018 = File_ReadInt(file_ptr); ScriptActionCtr_051 = File_ReadInt(file_ptr); ScriptActionCtr_022 = File_ReadInt(file_ptr); ScriptActionCtr_009 = File_ReadInt(file_ptr); ScriptActionCtr_011 = File_ReadInt(file_ptr); ScriptActionCtr_016 = File_ReadInt(file_ptr); ScriptActionCtr_021 = File_ReadInt(file_ptr); ScriptActionCtr_023 = File_ReadInt(file_ptr); ScriptActionCtr_041 = File_ReadInt(file_ptr); ScriptActionCtr_049 = File_ReadInt(file_ptr); ScriptActionCtr_028 = File_ReadInt(file_ptr); ScriptActionCtr_084 = File_ReadInt(file_ptr); ScriptActionCtr_083 = File_ReadInt(file_ptr); ScriptActionCtr_082 = File_ReadInt(file_ptr); ScriptActionCtr_019 = File_ReadInt(file_ptr); ScriptActionCtr_081 = File_ReadInt(file_ptr); ScriptActionCtr_080 = File_ReadInt(file_ptr); ScriptActionCtr_079 = File_ReadInt(file_ptr); ScriptActionCtr_020 = File_ReadInt(file_ptr); ScriptActionCtr_088 = File_ReadInt(file_ptr); ScriptActionCtr_087 = File_ReadInt(file_ptr); ScriptActionCtr_085 = File_ReadInt(file_ptr); ScriptActionCtr_086 = File_ReadInt(file_ptr); ScriptActionCtr_025 = File_ReadInt(file_ptr); ScriptActionCtr_027 = File_ReadInt(file_ptr); ScriptActionCtr_026 = File_ReadInt(file_ptr); ScriptActionCtr_038 = File_ReadInt(file_ptr); ScriptActionCtr_034 = File_ReadInt(file_ptr); ScriptActionCtr_035 = File_ReadInt(file_ptr); ScriptActionCtr_039 = File_ReadInt(file_ptr); ScriptActionCtr_054 = File_ReadInt(file_ptr); ScriptActionCtr_063 = File_ReadInt(file_ptr); ScriptActionCtr_071 = File_ReadInt(file_ptr); ScriptActionCtr_070 = File_ReadInt(file_ptr); ScriptActionCtr_069 = File_ReadInt(file_ptr); ScriptActionCtr_068 = File_ReadInt(file_ptr); ScriptActionCtr_067 = File_ReadInt(file_ptr); ScriptActionCtr_066 = File_ReadInt(file_ptr); ScriptActionCtr_065 = File_ReadInt(file_ptr); ScriptActionCtr_064 = File_ReadInt(file_ptr); ScriptActionCtr_015 = File_ReadInt(file_ptr); } // =============================================================== // Start of Custom Script Block - DO NOT EDIT ANYTHING BEFORE THIS // =============================================================== /**{CUSTOM_SCRIPT_BLOCK_START}** DO NOT EDIT! **/ // Enter your custom script code here /* $$ENUM Region 0:Intro 1:Outside 2:Temple 3:Level3 4:Level2 5:Level1 $$END */ // Got from Nate /* $$ACTION Custom Emit [f:Number=20.0] sparks from [o:Object] aEmitSparks Make object spark Makes an object emit sparks Parameters: Number: the number of sparks to create Object: the object to make sparks come out of $$END */ void aEmitSparks(float num_sparks, int objhandle) { int room; vector pos; if (!qObjExists(objhandle)) return; Obj_Value(objhandle, VF_GET, OBJV_V_POS, &pos); Obj_Value(objhandle, VF_GET, OBJV_I_ROOMNUM, &room); Game_CreateRandomSparks((int)num_sparks, &pos, room); } #define N_REGIONS 2 const char *RegionList[N_REGIONS] = {"LeftLabR", "RightLabR"}; int level_custom_timer_id = 0; /* $$ENUM LevelRegion 0:LeftLab 1:RightLab $$END */ /* $$ACTION Custom Set fog in region [e:LevelRegion] to color = [f:Red=0.5],[f:Green=0.5],[f:Blue=0.5], depth = [f:Depth=500.0] cFogRegion Set region fog Sets the fog color and depth for a predefined region Parameters: Region: the region to set R,G,B: the fog color (0-1) Depth: how deep the fog should be $$END */ void cFogRegion(int region, float r, float g, float b, float depth) { // iterate through all room names starting with region string and set fog region int i = 0, ri; do { char room_name[32]; snprintf(room_name, sizeof(room_name), "%s%c", RegionList[region], (i <= 9) ? (char)('0' + i) : ('A' + i - 10)); ri = Scrpt_FindRoomName(room_name); if (ri >= 0) { aRoomSetFog(ri, r, g, b, depth); } i++; } while (i < 36); } /* $$ACTION Custom Change fog in region [e:LevelRegion] to color = [f:Red=0.5],[f:Green=0.5],[f:Blue=0.5], depth = [f:Depth=200.0] over [f:Time=20.0] seconds cChangeFogRegion Change region fog over time Changes the fog of a predefined region to a color over a time period Parameters: Region: the region to change R,G,B: the fog color (0-1) Depth: hoe deep the fog should be. $$END */ void cChangeFogRegion(int region, float r, float g, float b, float depth, float time) { // iterate through all room names starting with region string and set fog region int i = 0, ri; do { char room_name[32]; snprintf(room_name, sizeof(room_name), "%s%c", RegionList[region], (i <= 9) ? (char)('0' + i) : ('A' + i - 10)); ri = Scrpt_FindRoomName(room_name); if (ri >= 0) { aRoomChangeFog(ri, r, g, b, depth, time); } i++; } while (i < 36); } /* $$ACTION Custom Turn [e:On/Off] Flicker in region [e:LevelRegion] cRegionSetLightingFlicker Turn On/Off flicker in region Turns on or off the light flicker in a predefined region Parameters: On/Off: whether the flicker should be on or off Region: the region to set $$END */ void cRegionSetLightingFlicker(int state, int region) { int i = 0, ri; do { char room_name[32]; snprintf(room_name, sizeof(room_name), "%s%c", RegionList[region], (i <= 9) ? (char)('0' + i) : ('A' + i - 10)); ri = Scrpt_FindRoomName(room_name); if (ri >= 0) { aRoomSetLightingFlicker(state, ri); } i++; } while (i < 36); } /* $$ACTION Custom Malfunction doors in region [e:LevelRegion] cMalfunctionRegionDoors Malfunction doors in region. Causes doors in region to do some random freakout behavior Parameters: Region: the region to set $$END */ #define N_DOORS_PER_REGION 8 char *Region_door_names[N_REGIONS][N_DOORS_PER_REGION] = {{ "Door-Left01", "Door-Left02", "Door-Left12", "Door-Left11", "Door-Left21", "Door-Left22", "End", }, { "Door-Right01", "Door-Right02", "Door-Right12", "Door-Right11", "Door-Right21", "Door-Right22", "End", }}; void cMalfunctionRegionDoors(int region) { int i; i = 0; while (strcmp(Region_door_names[region][i], "End") != 0) { int rnum = rand() % 100; if (rnum < 50) { int doorref = Scrpt_FindDoorName(Region_door_names[region][i]); if (doorref != OBJECT_HANDLE_NONE) { if (rnum >= 30 && rnum < 50) { aDoorActivate(doorref); } else if (rnum >= 10 && rnum < 30) { rnum = rand() % 20; aDoorSetPos(doorref, 0.55f + (rnum * 0.01f)); } else { aDoorStop(doorref); } } } i++; } } /* $$ACTION Custom Timed breaking of glass in room [r:Room], portal [i:PortalNum=0] in [f:Seconds=0.0] cTimeGlassBreak Delay breaking glass for a room Delays breaking glass for specified time in a specified room. Parameters: Room: room to break glass PortalNum: portal number of glass Seconds: Time $$END */ static ubyte breaking_glass_index = 0; static struct t_breaking_glass_data { short room_number; short portal_num; } breaking_glass_data[64]; #define SPECIAL_TIMER_ID_BASE 1000 #define SPECIAL_TIMER_CLASSES 4 #define SPECIAL_TIMER_MAX 256 #define SPECIAL_TIMER_ID_LIMIT (SPECIAL_TIMER_ID_BASE + SPECIAL_TIMER_MAX * SPECIAL_TIMER_CLASSES - 1) inline int LEVEL_TIMER_UID(ubyte timer_class, ubyte index) { return (SPECIAL_TIMER_ID_BASE + (timer_class % SPECIAL_TIMER_CLASSES) * SPECIAL_TIMER_MAX + index); } void cTimeGlassBreak(int room_number, int portal_num, float time) { if (breaking_glass_index >= 64) breaking_glass_index = 0; breaking_glass_data[breaking_glass_index].room_number = room_number; breaking_glass_data[breaking_glass_index].portal_num = portal_num; aSetLevelTimer(time, LEVEL_TIMER_UID(0, breaking_glass_index++)); } /* $$ACTION Custom Query and execute custom timer event with timer id [e:TimerID] cExecTimerEvent Executes a custom timer event. Runs a specific function initialized by a custom timer event function (i.e. glass break) Parameters: TimerID: Timer id of event. $$END */ void cExecTimerEvent(int timerid) { if (timerid < SPECIAL_TIMER_ID_BASE || timerid > SPECIAL_TIMER_ID_LIMIT) { return; } int index = (timerid - SPECIAL_TIMER_ID_BASE); int timer_class = index / SPECIAL_TIMER_MAX; index = index % SPECIAL_TIMER_MAX; switch (timer_class) { case 0: // break glass! if (index < 64 && index >= 0) { aPortalBreakGlass(breaking_glass_data[index].portal_num, breaking_glass_data[index].room_number); } break; } } // Tell the code to call our functions #define ENABLE_CUSTOM_SAVE_AND_RESTORE // Save custom data for this script void dsCustomSave(void *fileptr) {} // Restore custom data for this script void dsCustomRestore(void *fileptr) {} /**{CUSTOM_SCRIPT_BLOCK_END}**** DO NOT EDIT! **/ // ============================================================ // End of Custom Script Block - DO NOT EDIT ANYTHING AFTER THIS // ============================================================ // ================= // Message File Data // ================= #define MAX_SCRIPT_MESSAGES 256 #define MAX_MSG_FILEBUF_LEN 1024 #define NO_MESSAGE_STRING "*Message Not Found*" #define INV_MSGNAME_STRING "*Message Name Invalid*" #define WHITESPACE_CHARS " \t\r\n" // Structure for storing a script message typedef struct { char *name; // the name of the message char *message; // the actual message text } tScriptMessage; // Global storage for level script messages tScriptMessage *message_list[MAX_SCRIPT_MESSAGES]; int num_messages; // ====================== // Message File Functions // ====================== // Initializes the Message List void InitMessageList(void) { for (int j = 0; j < MAX_SCRIPT_MESSAGES; j++) message_list[j] = NULL; num_messages = 0; } // Clear the Message List void ClearMessageList(void) { for (int j = 0; j < num_messages; j++) { free(message_list[j]->name); free(message_list[j]->message); free(message_list[j]); message_list[j] = NULL; } num_messages = 0; } // Adds a message to the list int AddMessageToList(char *name, char *msg) { int pos; // Make sure there is room in the list if (num_messages >= MAX_SCRIPT_MESSAGES) return false; // Allocate memory for this message entry pos = num_messages; message_list[pos] = (tScriptMessage *)malloc(sizeof(tScriptMessage)); if (message_list[pos] == NULL) return false; // Allocate memory for the message name message_list[pos]->name = (char *)malloc(strlen(name) + 1); if (message_list[pos]->name == NULL) { free(message_list[pos]); return false; } strcpy(message_list[pos]->name, name); // Allocate memory for the message name message_list[pos]->message = (char *)malloc(strlen(msg) + 1); if (message_list[pos]->message == NULL) { free(message_list[pos]->name); free(message_list[pos]); return false; } strcpy(message_list[pos]->message, msg); num_messages++; return true; } // Removes any whitespace padding from the end of a string void RemoveTrailingWhitespace(char *s) { int last_char_pos; last_char_pos = strlen(s) - 1; while (last_char_pos >= 0 && isspace(s[last_char_pos])) { s[last_char_pos] = '\0'; last_char_pos--; } } // Returns a pointer to the first non-whitespace char in given string char *SkipInitialWhitespace(char *s) { while ((*s) != '\0' && isspace(*s)) s++; return (s); } // Read in the Messages int ReadMessageFile(char *filename) { void *infile; char filebuffer[MAX_MSG_FILEBUF_LEN + 1]; char *line, *msg_start; int line_num; bool next_msgid_found; // Try to open the file for loading infile = File_Open(filename, "rt"); if (!infile) return false; line_num = 0; next_msgid_found = true; // Clear the message list ClearMessageList(); // Read in and parse each line of the file while (!File_eof(infile)) { // Clear the buffer strcpy(filebuffer, ""); // Read in a line from the file File_ReadString(filebuffer, MAX_MSG_FILEBUF_LEN, infile); line_num++; // Remove whitespace padding at start and end of line RemoveTrailingWhitespace(filebuffer); line = SkipInitialWhitespace(filebuffer); // If line is a comment, or empty, discard it if (strlen(line) == 0 || strncmp(line, "//", 2) == 0) continue; if (!next_msgid_found) { // Parse out the last message ID number // Grab the first keyword, make sure it's valid line = strtok(line, WHITESPACE_CHARS); if (line == NULL) continue; // Grab the second keyword, and assign it as the next message ID line = strtok(NULL, WHITESPACE_CHARS); if (line == NULL) continue; next_msgid_found = true; } else { // Parse line as a message line // Find the start of message, and mark it msg_start = strchr(line, '='); if (msg_start == NULL) continue; msg_start[0] = '\0'; msg_start++; // Add the message to the list AddMessageToList(line, msg_start); } } File_Close(infile); return true; } // Find a message char *GetMessage(char *name) { // Make sure given name is valid if (name == NULL) return INV_MSGNAME_STRING; // Search message list for name for (int j = 0; j < num_messages; j++) if (strcmp(message_list[j]->name, name) == 0) return (message_list[j]->message); // Couldn't find it return NO_MESSAGE_STRING; } //====================== // Name List Arrays //====================== #define NUM_DOOR_NAMES 2 char *Door_names[NUM_DOOR_NAMES] = {"Door-Top1", "Door-Escape"}; int Door_handles[NUM_DOOR_NAMES]; #define NUM_OBJECT_NAMES 175 char *Object_names[NUM_OBJECT_NAMES] = {"ReceptorNode-01", "ReceptorNode-02", "ReceptorNode-03", "ReceptorNode-04", "PowerNode-01", "PowerNode-02", "PowerNode-03", "PowerNode-04", "PSGadget0", "PSGadget1", "Virus Device", "PlayerIntroCamera", "Virus Device2", "BigBoulder", "RockWallBoulder", "Drop2", "TargetExt1", "IntroSpark-1", "IGIntro2", "IntroSmoke2", "IntroSmoke1", "TargetInt2", "IntroSmoke-4", "IntroSmoke-3", "TargetInt1", "Drop1", "TargetExt2", "BoulderExplosion1", "BoulderExplosion2", "BHit1", "Bhit3", "BHit2", "FlasherCrystal", "CrystalBar1", "CrystalBar2", "CrystralBar3", "CrystalBar4", "CrystalBarCenter", "CrystalCenter4", "CrystalCenter3", "CrystalCenter2", "CrystalCenter1", "BTSmoke3", "BTLight", "BTSmoke5", "BTSmoke4", "BTSmoke1", "BTSmoke2", "CrystalMainTarget", "CFX5", "CFX4", "CFX3", "CFX2", "CFX1", "CBCHit1", "CBCHit2", "CBCHit6", "CBCHit5", "CBCHit4", "CBCHit3", "CrystalCenterBeam", "MidBot5", "MidBot4", "MidBot3", "MidBot2", "MidBot1", "HiBot4", "HiBot3", "HiBot2", "HiBot1", "LoBot6", "LoBot5", "LoBot4", "LoBot3", "LoBot2", "LoBot1", "RightTopInter", "RightHubBeam", "LeftTopInterface", "LeftHubBeam", "LeftVirusTerminal", "RightVirusTerminal", "DataArmLeftHub", "LeftBottomInterfac", "TopDoorSmoke2", "LeftTurret-3", "LeftTurret-2", "LeftTurret-5", "LeftTurret-6", "LeftTurret-7", "LeftTurret-9", "LeftTurret-A", "LeftTurret-B", "LeftTurret-E", "LeftTurret-J", "LeftTurret-H", "LeftTurret-I", "LeftTurret-C", "SmokeHub2", "SmokeHub1", "LeftLabHalonSpew0", "LeftLabHalonSpew1", "LeftLabHalonSpew2", "LeftLabHalonSpew3", "LeftLabHalonSpew4", "LeftLabHalonSpew5", "LeftLabHalonSpew6", "LeftLabHalonSpew7", "LeftLabHalonSpew8", "LeftLabHalonSpew9", "LeftLabHalonSpewA", "RightDataArm", "RightBottomInter", "TDSmoke1", "RightTurret-1", "RightTurret-2", "RightTurret-3", "RightTurret-5", "RightTurret-6", "RightTurret-7", "RightTurret-8", "RightTurret-9", "RightTurret-B", "RightTurret-C", "RightTurret-D", "SmokeRight2", "SmokeRight1", "RightLabHalonSpew0", "RightLabHalonSpew1", "RightLabHalonSpew2", "RightLabHalonSpew3", "EightLabHalonSpew4", "RightLabHalonSpew5", "RightLabHalonSpew6", "RightLabHalonSpew7", "RightLabHalonSpew9", "RightLabHalonSpewA", "RightLabHalonSpewB", "RightLabHalonSpewC", "PowerBackup-04", "PowerBackup-03", "PowerBackup-02", "PowerBackup-01", "PNodeSmoker4", "PNodeSmoker3", "PNodeSmoker2", "PNodeSmoker1", "MainPowerBeam2", "MainBeamTarget2", "MainBeamTarget1", "MainPowerBeam1", "RecSwitch4", "RecSwitch3", "RecSwitch2", "RecSwitch1", "ReBootSwitch2", "ReBootSwitch1", "MainPowerWhite1", "MainPowerWhite2", "PT1", "PT2", "PT3", "PT4", "TargetExit1", "Door-Escape", "ExitSmoke1", "ExitSmoke3", "ExitSmoke4", "ExitSmoke2", "Drop2Smoke2", "Drop2Smoke1", "Turret-Outer13", "Turret-Outer12", "Turret-Outer11", "Door-Bottom2"}; int Object_handles[NUM_OBJECT_NAMES]; #define NUM_ROOM_NAMES 50 char *Room_names[NUM_ROOM_NAMES] = { "Creeper-Mid0", "Creeper-Mid0A", "Creeper-Mid0B", "Creeper-Mid0C", "Creeper-Mid0D", "LeftLabRO", "Creeper-LLR0A", "Creeper-LLR0B", "Creeper-LLR0C", "Creeper-LLR0D", "Creeper-LLR0E", "Creeper-LLROF", "Creeper-Mid2", "Creeper-Mid2A", "RightLabR3", "Creeper-RL3-A", "Creeper-RL3-B", "Creeper-RL3-C", "Creeper-RL3-D", "RightLabRJ", "Creeper-RLJ-A", "Creeper-RLJ-B", "Creeper-RLJ-C", "Creeper-RLJ-D", "Creeper-RLJ-E", "Creeper-RLJ-F", "Creeper-RLJ-G", "Creeper-RLJ-H", "Creeper-Mid1", "Creeper-Mid1A", "BoulderHitRoom", "CrystalCenterRoom", "NRGCreep", "LeftLabCreep1", "LeftLabCreep0", "LeftX1", "PowerChute2", "PowerLow8", "PowerLow7", "PowerLow6", "PowerLow5", "PowerLow4", "PowerLow3", "PowerLow2", "PowerLow1", "PowerChute", "PowerSide2", "PowerDoor", "PowerSide1", "PowerStation"}; int Room_indexes[NUM_ROOM_NAMES]; #define NUM_TRIGGER_NAMES 11 char *Trigger_names[NUM_TRIGGER_NAMES] = { "RollingBallWatchout", "RollingBallDetonate", "BeginEndSequence", "MusicLevel1-1", "MusicLevel2-2", "MusicLevel2-1", "MusicLevel3-2", "MusicLevel3-1", "MusicTemple-2", "MusicTemple-1", "MusicOutside-1"}; int Trigger_indexes[NUM_TRIGGER_NAMES]; int Trigger_faces[NUM_TRIGGER_NAMES]; int Trigger_rooms[NUM_TRIGGER_NAMES]; #define NUM_SOUND_NAMES 11 char *Sound_names[NUM_SOUND_NAMES] = {"AmbExplosionFarB", "RockBreakAway", "WpnEMDFireD", "AmbSteamHigh", "AmbSirenBRedAcrop", "ExpMissileLarge1", "WpnPyroGLOmegaFire", "AmbSwitch21", "Wall fade ???", "AmbSwitch31", "AmbSwitch11"}; int Sound_indexes[NUM_SOUND_NAMES]; #define NUM_TEXTURE_NAMES 5 char *Texture_names[NUM_TEXTURE_NAMES] = {"FunkyEffectGreen", "FunkyEffect3", "HellionBeam", "FunkyEffect1", "FunkyEffectAntiV"}; int Texture_indexes[NUM_TEXTURE_NAMES]; #define NUM_PATH_NAMES 14 char *Path_names[NUM_PATH_NAMES] = {"PSGadget0Path", "PSGadget1Path", "IntroCam-Ext1", "IGInt2", "IntroCam-Int2", "IntroCam-Int1", "IntroCam-Ext2", "MidPatrol1", "LowPatrol2", "LowPatrol1", "ExitCam-1", "ExitShip-1", "ExitCam-2", "ExitShip-2"}; int Path_indexes[NUM_PATH_NAMES]; #define NUM_MATCEN_NAMES 0 char **Matcen_names = NULL; int *Matcen_indexes = NULL; #define NUM_GOAL_NAMES 7 char *Goal_names[NUM_GOAL_NAMES] = {"Blast Into the Laboratory", "Infect Computer Hub Delta", "Infect Computer Hub Gamma", "Reboot the System", "Shut Down the Main Power", "Infect the Lab System With Virus Data", "Escape Before the System Reboots"}; int Goal_indexes[NUM_GOAL_NAMES]; #define NUM_MESSAGE_NAMES 16 char *Message_names[NUM_MESSAGE_NAMES] = { "VirusDeviceName", "IntroMessage", "EmptyMessage", "Watchout", "LeftLabInitData", "LeftLabInfected", "LeftLabNotReady", "RightLabInfected", "LeftLabVirusPlaced", "VirusInfectFail", "GetToPower", "RechargeSucceed", "RechargeFail", "DeactivateSucceed", "DeactivateFail", "10Seconds"}; char *Message_strings[NUM_MESSAGE_NAMES]; // =============== // InitializeDLL() // =============== char STDCALL InitializeDLL(tOSIRISModuleInit *func_list) { osicommon_Initialize((tOSIRISModuleInit *)func_list); if (func_list->game_checksum != CHECKSUM) { mprintf(0, "Game-Checksum FAIL!!! (%ul!=%ul)\n", func_list->game_checksum, CHECKSUM); mprintf(0, "RECOMPILE YOUR SCRIPTS!!!\n"); return 0; } ClearGlobalActionCtrs(); dfInit(); InitMessageList(); // Build the filename of the message file char filename[_MAX_PATH + 1]; char english_filename[_MAX_PATH + 1]; int lang_type; if (func_list->script_identifier != NULL) { _splitpath(func_list->script_identifier, NULL, NULL, filename, NULL); snprintf(english_filename, sizeof(english_filename), "%s.msg", filename); lang_type = Game_GetLanguage(); if (lang_type == LANGUAGE_FRENCH) strcat(filename, "_FRN"); else if (lang_type == LANGUAGE_GERMAN) strcat(filename, "_GER"); else if (lang_type == LANGUAGE_ITALIAN) strcat(filename, "_ITN"); else if (lang_type == LANGUAGE_SPANISH) strcat(filename, "_SPN"); else if (lang_type == LANGUAGE_POLISH) strcat(filename, "_POL"); strcat(filename, ".msg"); } else { strcpy(filename, "Merc5.msg"); lang_type = LANGUAGE_ENGLISH; } if (!ReadMessageFile(filename)) { if (lang_type == LANGUAGE_ENGLISH) { mprintf(0, "ERROR: Could not load message file - %s\n", filename); } else if (!ReadMessageFile(english_filename)) { mprintf(0, "ERROR: Could not load message file - %s\n", english_filename); } } int j; // Do Door Index lookups for (j = 0; j < NUM_DOOR_NAMES; j++) Door_handles[j] = Scrpt_FindDoorName(Door_names[j]); // Do Object Index lookups for (j = 0; j < NUM_OBJECT_NAMES; j++) Object_handles[j] = Scrpt_FindObjectName(Object_names[j]); // Do Room Index lookups for (j = 0; j < NUM_ROOM_NAMES; j++) Room_indexes[j] = Scrpt_FindRoomName(Room_names[j]); // Do Trigger Index lookups for (j = 0; j < NUM_TRIGGER_NAMES; j++) { Trigger_indexes[j] = Scrpt_FindTriggerName(Trigger_names[j]); Trigger_faces[j] = Scrpt_GetTriggerFace(Trigger_indexes[j]); Trigger_rooms[j] = Scrpt_GetTriggerRoom(Trigger_indexes[j]); } // Do Sound Index lookups for (j = 0; j < NUM_SOUND_NAMES; j++) Sound_indexes[j] = Scrpt_FindSoundName(Sound_names[j]); // Do Texture Index lookups for (j = 0; j < NUM_TEXTURE_NAMES; j++) Texture_indexes[j] = Scrpt_FindTextureName(Texture_names[j]); // Do Path Index lookups for (j = 0; j < NUM_PATH_NAMES; j++) Path_indexes[j] = Scrpt_FindPathName(Path_names[j]); // Do Matcen Index lookups for (j = 0; j < NUM_MATCEN_NAMES; j++) Matcen_indexes[j] = Scrpt_FindMatcenName(Matcen_names[j]); // Do Goal Index lookups for (j = 0; j < NUM_GOAL_NAMES; j++) Goal_indexes[j] = Scrpt_FindLevelGoalName(Goal_names[j]); // Do Message Name lookups for (j = 0; j < NUM_MESSAGE_NAMES; j++) Message_strings[j] = GetMessage(Message_names[j]); return 1; } // ============= // ShutdownDLL() // ============= void STDCALL ShutdownDLL(void) { ClearMessageList(); } // =============== // GetGOScriptID() // =============== int STDCALL GetGOScriptID(char *name, ubyte isdoor) { return -1; } // ================ // CreateInstance() // ================ void STDCALLPTR CreateInstance(int id) { switch (id) { case ID_LEVEL_0000: return new LevelScript_0000; break; case ID_CUSTOM_OBJECT_11C4: return new CustomObjectScript_11C4; break; case ID_CUSTOM_OBJECT_1088: return new CustomObjectScript_1088; break; case ID_CUSTOM_OBJECT_09C6: return new CustomObjectScript_09C6; break; case ID_CUSTOM_OBJECT_11C5: return new CustomObjectScript_11C5; break; case ID_CUSTOM_OBJECT_09C7: return new CustomObjectScript_09C7; break; case ID_CUSTOM_OBJECT_182E: return new CustomObjectScript_182E; break; case ID_CUSTOM_OBJECT_0A05: return new CustomObjectScript_0A05; break; case ID_CUSTOM_OBJECT_0A04: return new CustomObjectScript_0A04; break; case ID_CUSTOM_OBJECT_0A03: return new CustomObjectScript_0A03; break; case ID_CUSTOM_OBJECT_1A02: return new CustomObjectScript_1A02; break; case ID_CUSTOM_OBJECT_1033: return new CustomObjectScript_1033; break; case ID_CUSTOM_OBJECT_1200: return new CustomObjectScript_1200; break; case ID_CUSTOM_OBJECT_1036: return new CustomObjectScript_1036; break; case ID_CUSTOM_OBJECT_1035: return new CustomObjectScript_1035; break; case ID_CUSTOM_OBJECT_3032: return new CustomObjectScript_3032; break; case ID_CUSTOM_OBJECT_1830: return new CustomObjectScript_1830; break; case ID_CUSTOM_OBJECT_28A2: return new CustomObjectScript_28A2; break; case ID_CUSTOM_OBJECT_0A06: return new CustomObjectScript_0A06; break; case ID_CUSTOM_OBJECT_2885: return new CustomObjectScript_2885; break; case ID_CUSTOM_OBJECT_107E: return new CustomObjectScript_107E; break; case ID_CUSTOM_OBJECT_1185: return new CustomObjectScript_1185; break; case ID_CUSTOM_OBJECT_21B2: return new CustomObjectScript_21B2; break; case ID_CUSTOM_OBJECT_09DE: return new CustomObjectScript_09DE; break; case ID_CUSTOM_OBJECT_09DD: return new CustomObjectScript_09DD; break; case ID_CUSTOM_OBJECT_09DC: return new CustomObjectScript_09DC; break; case ID_CUSTOM_OBJECT_21DA: return new CustomObjectScript_21DA; break; case ID_CUSTOM_OBJECT_0899: return new CustomObjectScript_0899; break; case ID_CUSTOM_OBJECT_089A: return new CustomObjectScript_089A; break; case ID_CUSTOM_OBJECT_089B: return new CustomObjectScript_089B; break; case ID_CUSTOM_OBJECT_1098: return new CustomObjectScript_1098; break; case ID_CUSTOM_OBJECT_09A1: return new CustomObjectScript_09A1; break; case ID_CUSTOM_OBJECT_19A0: return new CustomObjectScript_19A0; break; case ID_CUSTOM_OBJECT_09C9: return new CustomObjectScript_09C9; break; case ID_CUSTOM_OBJECT_1007: return new CustomObjectScript_1007; break; case ID_CUSTOM_OBJECT_1016: return new CustomObjectScript_1016; break; case ID_TRIGGER_000F: return new TriggerScript_000F; break; case ID_TRIGGER_0000: return new TriggerScript_0000; break; case ID_TRIGGER_0010: return new TriggerScript_0010; break; case ID_TRIGGER_000E: return new TriggerScript_000E; break; case ID_TRIGGER_000D: return new TriggerScript_000D; break; case ID_TRIGGER_000B: return new TriggerScript_000B; break; case ID_TRIGGER_0009: return new TriggerScript_0009; break; case ID_TRIGGER_000C: return new TriggerScript_000C; break; case ID_TRIGGER_000A: return new TriggerScript_000A; break; case ID_TRIGGER_0007: return new TriggerScript_0007; break; case ID_TRIGGER_0008: return new TriggerScript_0008; break; default: mprintf(0, "SCRIPT: Illegal ID (%d)\n", id); break; } return NULL; } // ================= // DestroyInstance() // ================= void STDCALL DestroyInstance(int id, void *ptr) { switch (id) { case ID_LEVEL_0000: delete ((LevelScript_0000 *)ptr); break; case ID_CUSTOM_OBJECT_11C4: delete ((CustomObjectScript_11C4 *)ptr); break; case ID_CUSTOM_OBJECT_1088: delete ((CustomObjectScript_1088 *)ptr); break; case ID_CUSTOM_OBJECT_09C6: delete ((CustomObjectScript_09C6 *)ptr); break; case ID_CUSTOM_OBJECT_11C5: delete ((CustomObjectScript_11C5 *)ptr); break; case ID_CUSTOM_OBJECT_09C7: delete ((CustomObjectScript_09C7 *)ptr); break; case ID_CUSTOM_OBJECT_182E: delete ((CustomObjectScript_182E *)ptr); break; case ID_CUSTOM_OBJECT_0A05: delete ((CustomObjectScript_0A05 *)ptr); break; case ID_CUSTOM_OBJECT_0A04: delete ((CustomObjectScript_0A04 *)ptr); break; case ID_CUSTOM_OBJECT_0A03: delete ((CustomObjectScript_0A03 *)ptr); break; case ID_CUSTOM_OBJECT_1A02: delete ((CustomObjectScript_1A02 *)ptr); break; case ID_CUSTOM_OBJECT_1033: delete ((CustomObjectScript_1033 *)ptr); break; case ID_CUSTOM_OBJECT_1200: delete ((CustomObjectScript_1200 *)ptr); break; case ID_CUSTOM_OBJECT_1036: delete ((CustomObjectScript_1036 *)ptr); break; case ID_CUSTOM_OBJECT_1035: delete ((CustomObjectScript_1035 *)ptr); break; case ID_CUSTOM_OBJECT_3032: delete ((CustomObjectScript_3032 *)ptr); break; case ID_CUSTOM_OBJECT_1830: delete ((CustomObjectScript_1830 *)ptr); break; case ID_CUSTOM_OBJECT_28A2: delete ((CustomObjectScript_28A2 *)ptr); break; case ID_CUSTOM_OBJECT_0A06: delete ((CustomObjectScript_0A06 *)ptr); break; case ID_CUSTOM_OBJECT_2885: delete ((CustomObjectScript_2885 *)ptr); break; case ID_CUSTOM_OBJECT_107E: delete ((CustomObjectScript_107E *)ptr); break; case ID_CUSTOM_OBJECT_1185: delete ((CustomObjectScript_1185 *)ptr); break; case ID_CUSTOM_OBJECT_21B2: delete ((CustomObjectScript_21B2 *)ptr); break; case ID_CUSTOM_OBJECT_09DE: delete ((CustomObjectScript_09DE *)ptr); break; case ID_CUSTOM_OBJECT_09DD: delete ((CustomObjectScript_09DD *)ptr); break; case ID_CUSTOM_OBJECT_09DC: delete ((CustomObjectScript_09DC *)ptr); break; case ID_CUSTOM_OBJECT_21DA: delete ((CustomObjectScript_21DA *)ptr); break; case ID_CUSTOM_OBJECT_0899: delete ((CustomObjectScript_0899 *)ptr); break; case ID_CUSTOM_OBJECT_089A: delete ((CustomObjectScript_089A *)ptr); break; case ID_CUSTOM_OBJECT_089B: delete ((CustomObjectScript_089B *)ptr); break; case ID_CUSTOM_OBJECT_1098: delete ((CustomObjectScript_1098 *)ptr); break; case ID_CUSTOM_OBJECT_09A1: delete ((CustomObjectScript_09A1 *)ptr); break; case ID_CUSTOM_OBJECT_19A0: delete ((CustomObjectScript_19A0 *)ptr); break; case ID_CUSTOM_OBJECT_09C9: delete ((CustomObjectScript_09C9 *)ptr); break; case ID_CUSTOM_OBJECT_1007: delete ((CustomObjectScript_1007 *)ptr); break; case ID_CUSTOM_OBJECT_1016: delete ((CustomObjectScript_1016 *)ptr); break; case ID_TRIGGER_000F: delete ((TriggerScript_000F *)ptr); break; case ID_TRIGGER_0000: delete ((TriggerScript_0000 *)ptr); break; case ID_TRIGGER_0010: delete ((TriggerScript_0010 *)ptr); break; case ID_TRIGGER_000E: delete ((TriggerScript_000E *)ptr); break; case ID_TRIGGER_000D: delete ((TriggerScript_000D *)ptr); break; case ID_TRIGGER_000B: delete ((TriggerScript_000B *)ptr); break; case ID_TRIGGER_0009: delete ((TriggerScript_0009 *)ptr); break; case ID_TRIGGER_000C: delete ((TriggerScript_000C *)ptr); break; case ID_TRIGGER_000A: delete ((TriggerScript_000A *)ptr); break; case ID_TRIGGER_0007: delete ((TriggerScript_0007 *)ptr); break; case ID_TRIGGER_0008: delete ((TriggerScript_0008 *)ptr); break; default: mprintf(0, "SCRIPT: Illegal ID (%d)\n", id); break; } } // =================== // CallInstanceEvent() // =================== short STDCALL CallInstanceEvent(int id, void *ptr, int event, tOSIRISEventInfo *data) { switch (id) { case ID_LEVEL_0000: case ID_CUSTOM_OBJECT_11C4: case ID_CUSTOM_OBJECT_1088: case ID_CUSTOM_OBJECT_09C6: case ID_CUSTOM_OBJECT_11C5: case ID_CUSTOM_OBJECT_09C7: case ID_CUSTOM_OBJECT_182E: case ID_CUSTOM_OBJECT_0A05: case ID_CUSTOM_OBJECT_0A04: case ID_CUSTOM_OBJECT_0A03: case ID_CUSTOM_OBJECT_1A02: case ID_CUSTOM_OBJECT_1033: case ID_CUSTOM_OBJECT_1200: case ID_CUSTOM_OBJECT_1036: case ID_CUSTOM_OBJECT_1035: case ID_CUSTOM_OBJECT_3032: case ID_CUSTOM_OBJECT_1830: case ID_CUSTOM_OBJECT_28A2: case ID_CUSTOM_OBJECT_0A06: case ID_CUSTOM_OBJECT_2885: case ID_CUSTOM_OBJECT_107E: case ID_CUSTOM_OBJECT_1185: case ID_CUSTOM_OBJECT_21B2: case ID_CUSTOM_OBJECT_09DE: case ID_CUSTOM_OBJECT_09DD: case ID_CUSTOM_OBJECT_09DC: case ID_CUSTOM_OBJECT_21DA: case ID_CUSTOM_OBJECT_0899: case ID_CUSTOM_OBJECT_089A: case ID_CUSTOM_OBJECT_089B: case ID_CUSTOM_OBJECT_1098: case ID_CUSTOM_OBJECT_09A1: case ID_CUSTOM_OBJECT_19A0: case ID_CUSTOM_OBJECT_09C9: case ID_CUSTOM_OBJECT_1007: case ID_CUSTOM_OBJECT_1016: case ID_TRIGGER_000F: case ID_TRIGGER_0000: case ID_TRIGGER_0010: case ID_TRIGGER_000E: case ID_TRIGGER_000D: case ID_TRIGGER_000B: case ID_TRIGGER_0009: case ID_TRIGGER_000C: case ID_TRIGGER_000A: case ID_TRIGGER_0007: case ID_TRIGGER_0008: return ((BaseScript *)ptr)->CallEvent(event, data); break; default: mprintf(0, "SCRIPT: Illegal ID (%d)\n", id); break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } // ================== // SaveRestoreState() // ================== int STDCALL SaveRestoreState(void *file_ptr, ubyte saving_state) { return 0; } // ==================== // GetTriggerScriptID() // ==================== int STDCALL GetTriggerScriptID(int trigger_room, int trigger_face) { if (trigger_room == Trigger_rooms[0] && trigger_face == Trigger_faces[0]) return ID_TRIGGER_000F; if (trigger_room == Trigger_rooms[1] && trigger_face == Trigger_faces[1]) return ID_TRIGGER_0000; if (trigger_room == Trigger_rooms[2] && trigger_face == Trigger_faces[2]) return ID_TRIGGER_0010; if (trigger_room == Trigger_rooms[3] && trigger_face == Trigger_faces[3]) return ID_TRIGGER_000E; if (trigger_room == Trigger_rooms[4] && trigger_face == Trigger_faces[4]) return ID_TRIGGER_000D; if (trigger_room == Trigger_rooms[5] && trigger_face == Trigger_faces[5]) return ID_TRIGGER_000B; if (trigger_room == Trigger_rooms[6] && trigger_face == Trigger_faces[6]) return ID_TRIGGER_0009; if (trigger_room == Trigger_rooms[7] && trigger_face == Trigger_faces[7]) return ID_TRIGGER_000C; if (trigger_room == Trigger_rooms[8] && trigger_face == Trigger_faces[8]) return ID_TRIGGER_000A; if (trigger_room == Trigger_rooms[9] && trigger_face == Trigger_faces[9]) return ID_TRIGGER_0007; if (trigger_room == Trigger_rooms[10] && trigger_face == Trigger_faces[10]) return ID_TRIGGER_0008; return -1; } // ================= // GetCOScriptList() // ================= int STDCALL GetCOScriptList(int **list, int **id_list) { static int cust_handle_list[35]; static int cust_id_list[35] = { ID_CUSTOM_OBJECT_11C4, ID_CUSTOM_OBJECT_1088, ID_CUSTOM_OBJECT_09C6, ID_CUSTOM_OBJECT_11C5, ID_CUSTOM_OBJECT_09C7, ID_CUSTOM_OBJECT_182E, ID_CUSTOM_OBJECT_0A05, ID_CUSTOM_OBJECT_0A04, ID_CUSTOM_OBJECT_0A03, ID_CUSTOM_OBJECT_1A02, ID_CUSTOM_OBJECT_1033, ID_CUSTOM_OBJECT_1200, ID_CUSTOM_OBJECT_1036, ID_CUSTOM_OBJECT_1035, ID_CUSTOM_OBJECT_3032, ID_CUSTOM_OBJECT_1830, ID_CUSTOM_OBJECT_28A2, ID_CUSTOM_OBJECT_0A06, ID_CUSTOM_OBJECT_2885, ID_CUSTOM_OBJECT_107E, ID_CUSTOM_OBJECT_1185, ID_CUSTOM_OBJECT_21B2, ID_CUSTOM_OBJECT_09DE, ID_CUSTOM_OBJECT_09DD, ID_CUSTOM_OBJECT_09DC, ID_CUSTOM_OBJECT_21DA, ID_CUSTOM_OBJECT_0899, ID_CUSTOM_OBJECT_089A, ID_CUSTOM_OBJECT_089B, ID_CUSTOM_OBJECT_1098, ID_CUSTOM_OBJECT_09A1, ID_CUSTOM_OBJECT_19A0, ID_CUSTOM_OBJECT_09C9, ID_CUSTOM_OBJECT_1007, ID_CUSTOM_OBJECT_1016}; // Fill in the custom handle list cust_handle_list[0] = Object_handles[16]; cust_handle_list[1] = Object_handles[17]; cust_handle_list[2] = Object_handles[21]; cust_handle_list[3] = Object_handles[24]; cust_handle_list[4] = Object_handles[26]; cust_handle_list[5] = Object_handles[13]; cust_handle_list[6] = Object_handles[36]; cust_handle_list[7] = Object_handles[35]; cust_handle_list[8] = Object_handles[34]; cust_handle_list[9] = Object_handles[33]; cust_handle_list[10] = Object_handles[32]; cust_handle_list[11] = Object_handles[48]; cust_handle_list[12] = Object_handles[56]; cust_handle_list[13] = Object_handles[57]; cust_handle_list[14] = Object_handles[58]; cust_handle_list[15] = Object_handles[59]; cust_handle_list[16] = Object_handles[60]; cust_handle_list[17] = Object_handles[37]; cust_handle_list[18] = Object_handles[82]; cust_handle_list[19] = Object_handles[111]; cust_handle_list[20] = Object_handles[10]; cust_handle_list[21] = Object_handles[12]; cust_handle_list[22] = Object_handles[151]; cust_handle_list[23] = Object_handles[152]; cust_handle_list[24] = Object_handles[153]; cust_handle_list[25] = Object_handles[154]; cust_handle_list[26] = Object_handles[3]; cust_handle_list[27] = Object_handles[2]; cust_handle_list[28] = Object_handles[1]; cust_handle_list[29] = Object_handles[0]; cust_handle_list[30] = Object_handles[155]; cust_handle_list[31] = Object_handles[156]; cust_handle_list[32] = Object_handles[163]; cust_handle_list[33] = Object_handles[164]; cust_handle_list[34] = Object_handles[174]; *list = cust_handle_list; *id_list = cust_id_list; return 35; } //======================= // Script Implementation //======================= BaseScript::BaseScript() {} BaseScript::~BaseScript() {} short BaseScript::CallEvent(int event, tOSIRISEventInfo *data) { mprintf(0, "BaseScript::CallEvent()\n"); return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short LevelScript_0000::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_SAVESTATE: { tOSIRISEVTSAVESTATE *event_data = &data->evt_savestate; SaveGlobalActionCtrs(event_data->fileptr); dfSave(event_data->fileptr); #ifdef ENABLE_CUSTOM_SAVE_AND_RESTORE dsCustomSave(event_data->fileptr); #endif } break; case EVT_RESTORESTATE: { tOSIRISEVTRESTORESTATE *event_data = &data->evt_restorestate; RestoreGlobalActionCtrs(event_data->fileptr); dfRestore(event_data->fileptr); #ifdef ENABLE_CUSTOM_SAVE_AND_RESTORE dsCustomRestore(event_data->fileptr); #endif } break; case EVT_INTERVAL: { tOSIRISEVTINTERVAL *event_data = &data->evt_interval; // Script 042: Level FRAME (Left Creepers) if (qUserFlag(0) == true) { if ((qRoomHasPlayer(Room_indexes[0]) == 1) && (qUserFlag(8) == 0)) { aUserFlagSet(8, 1); cTimeGlassBreak(Room_indexes[1], 0, qRandomValue(1.500000f, 5.000000f)); cTimeGlassBreak(Room_indexes[2], 0, qRandomValue(1.500000f, 5.000000f)); cTimeGlassBreak(Room_indexes[3], 0, qRandomValue(1.500000f, 5.000000f)); cTimeGlassBreak(Room_indexes[4], 0, qRandomValue(1.500000f, 5.000000f)); } if ((qRoomHasPlayer(Room_indexes[5]) == 1) && (qUserFlag(12) == 0)) { aUserFlagSet(12, 1); cTimeGlassBreak(Room_indexes[6], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[7], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[8], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[9], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[10], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[11], 0, qRandomValue(1.500000f, 8.000000f)); } // Increment the script action counter if (ScriptActionCtr_042 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_042++; } // Script 043: Level FRAME (Right Creepers) if (qUserFlag(1) == true) { if ((qRoomHasPlayer(Room_indexes[12]) == 1) && (qUserFlag(13) == 0)) { aUserFlagSet(13, 1); aPortalBreakGlass(0, Room_indexes[13]); } if ((qRoomHasPlayer(Room_indexes[14]) == 1) && (qUserFlag(19) == 0)) { aUserFlagSet(19, 1); cTimeGlassBreak(Room_indexes[15], 0, qRandomValue(3.000000f, 8.000000f)); cTimeGlassBreak(Room_indexes[16], 0, qRandomValue(1.500000f, 5.000000f)); cTimeGlassBreak(Room_indexes[17], 0, qRandomValue(1.500000f, 6.000000f)); cTimeGlassBreak(Room_indexes[18], 0, qRandomValue(1.500000f, 4.000000f)); } if ((qRoomHasPlayer(Room_indexes[19]) == 1) && (qUserFlag(20) == 0)) { aUserFlagSet(20, 1); cTimeGlassBreak(Room_indexes[20], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[21], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[22], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[23], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[24], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[25], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[26], 0, qRandomValue(1.500000f, 8.000000f)); cTimeGlassBreak(Room_indexes[27], 0, qRandomValue(1.500000f, 8.000000f)); } if ((qRoomHasPlayer(Room_indexes[28]) == 1) && (qUserFlag(9) == 0)) { aUserFlagSet(9, 1); cTimeGlassBreak(Room_indexes[29], 0, qRandomValue(1.500000f, 8.000000f)); } // Increment the script action counter if (ScriptActionCtr_043 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_043++; } } break; case EVT_LEVELSTART: { tOSIRISEVTLEVELSTART *event_data = &data->evt_levelstart; ClearGlobalActionCtrs(); dfInit(); // Script 000: Level INIT (Weather) if (1) { aRainTurnOn(0.900000f); // Increment the script action counter if (ScriptActionCtr_000 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_000++; } // Script 005: Level INIT (CrystalCenter) if (1) { aUserFlagSet(15, 0); aUserFlagSet(14, 0); // Increment the script action counter if (ScriptActionCtr_005 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_005++; } // Script 012: Level INIT (Power Station) if (1) { aObjPlayAnim(Object_handles[0], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[1], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[2], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[3], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[4], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[5], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[6], 0, 1, 1.000000f, 0); aObjPlayAnim(Object_handles[7], 0, 1, 1.000000f, 0); aAIGoalFollowPathSimple(Object_handles[8], Path_indexes[0], 8392965, -1, 3); aAIGoalFollowPathSimple(Object_handles[9], Path_indexes[1], 8392965, -1, 3); aObjSetShields(Object_handles[8], 100.000000f); aObjSetShields(Object_handles[9], 100.000000f); // Increment the script action counter if (ScriptActionCtr_012 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_012++; } // Script 010: Level INIT (Player Inventory) if ((ScriptActionCtr_010 < 1) && (1)) { aAddObjectToInventoryNamed(Object_handles[10], qPlayerClosest(Object_handles[11], 0), Message_strings[0], 0); aAddObjectToInventoryNamed(Object_handles[12], qPlayerClosest(Object_handles[11], 0), Message_strings[0], 0); // Increment the script action counter if (ScriptActionCtr_010 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_010++; } // Script 017: Level INIT (Terminals) if (1) { aUserFlagSet(0, 0); aUserFlagSet(1, 0); // Increment the script action counter if (ScriptActionCtr_017 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_017++; } // Script 040: Level INIT (Misc) if (1) { aObjMakeInvuln(Object_handles[13], 99999); aObjMakeInvuln(Object_handles[14], 99999); aObjSetMovementType(Object_handles[13], 0); aUserFlagSet(10, 0); aUserFlagSet(11, 0); aUserFlagSet(8, 0); aUserFlagSet(9, 0); aUserFlagSet(13, 0); aUserFlagSet(12, 0); // Increment the script action counter if (ScriptActionCtr_040 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_040++; } // Script 072: IntroCam-1 if (1 == true) { aObjGhostSet(1, Object_handles[15]); aLightningTurnOn(0.100000f, 0.080000f); aCinematicSimple(Path_indexes[2], Message_strings[1], Object_handles[16], 8.000000f, 1); // Increment the script action counter if (ScriptActionCtr_072 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_072++; } // Script 031: INIT Crystal Bars if (1) { aCloakObject(Object_handles[32], 999999.000000f); aObjGhostSet(1, Object_handles[32]); aObjSetMovementType(Object_handles[32], 0); aObjSetMovementType(Object_handles[33], 0); aObjSetMovementType(Object_handles[34], 0); aObjSetMovementType(Object_handles[35], 0); aObjSetMovementType(Object_handles[36], 0); aObjSetMovementType(Object_handles[37], 0); aLightningCreate(Object_handles[36], Object_handles[38], 99999.000000f, 2.000000f, 1, Texture_indexes[0], 0.300000f, 3, 180, 180, 255, 0); aLightningCreate(Object_handles[35], Object_handles[39], 99999.000000f, 2.000000f, 1, Texture_indexes[0], 0.300000f, 3, 180, 180, 255, 0); aLightningCreate(Object_handles[34], Object_handles[40], 99999.000000f, 2.000000f, 1, Texture_indexes[0], 0.300000f, 3, 180, 180, 255, 0); aLightningCreate(Object_handles[33], Object_handles[41], 99999.000000f, 2.000000f, 1, Texture_indexes[0], 0.300000f, 3, 180, 180, 255, 0); // Increment the script action counter if (ScriptActionCtr_031 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_031++; } // Script 037: INIT Patrols if ((ScriptActionCtr_037 < 1) && (1)) { aAIGoalFollowPathSimple(Object_handles[61], Path_indexes[7], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[62], Path_indexes[7], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[63], Path_indexes[7], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[64], Path_indexes[7], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[65], Path_indexes[7], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[66], Path_indexes[8], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[67], Path_indexes[8], 8392704, -1, 0); aAIGoalFollowPathSimple(Object_handles[68], Path_indexes[8], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[69], Path_indexes[8], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[70], Path_indexes[9], 8392960, -1, 3); aAIGoalFollowPathSimple(Object_handles[71], Path_indexes[9], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[72], Path_indexes[9], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[73], Path_indexes[9], 8392704, -1, 0); aAIGoalFollowPathSimple(Object_handles[74], Path_indexes[9], 8392960, -1, 0); aAIGoalFollowPathSimple(Object_handles[75], Path_indexes[9], 8392960, -1, 0); // Increment the script action counter if (ScriptActionCtr_037 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_037++; } // Script 060: INIT Hub Terminals if (1) { aLightningCreate(Object_handles[76], Object_handles[77], 99999.000000f, 5.000000f, 1, Texture_indexes[1], 0.400000f, 2, 255, 150, 255, 0); aLightningCreate(Object_handles[76], Object_handles[77], 99999.000000f, 3.500000f, 1, Texture_indexes[3], 0.800000f, 2, 100, 100, 255, 0); aLightningCreate(Object_handles[78], Object_handles[79], 99999.000000f, 5.000000f, 1, Texture_indexes[1], 0.400000f, 2, 255, 150, 255, 0); aLightningCreate(Object_handles[78], Object_handles[79], 99999.000000f, 3.500000f, 1, Texture_indexes[3], 0.800000f, 2, 100, 100, 255, 0); aObjGhostSet(1, Object_handles[80]); aObjGhostSet(1, Object_handles[81]); // Increment the script action counter if (ScriptActionCtr_060 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_060++; } // Script 028: INIT Main Power Array if (1) { aUserFlagSet(7, 0); aUserFlagSet(6, 0); aObjMakeInvuln(Object_handles[139], 99999); aObjMakeInvuln(Object_handles[140], 99999); aObjMakeInvuln(Object_handles[141], 99999); aObjMakeInvuln(Object_handles[142], 99999); aObjMakeInvuln(Object_handles[3], 99999); aObjMakeInvuln(Object_handles[2], 99999); aObjMakeInvuln(Object_handles[1], 99999); aObjMakeInvuln(Object_handles[0], 99999); aObjMakeInvuln(Object_handles[7], 99999); aObjMakeInvuln(Object_handles[6], 99999); aObjMakeInvuln(Object_handles[5], 99999); aObjMakeInvuln(Object_handles[4], 99999); aLightningCreate(Object_handles[143], Object_handles[7], 99999.000000f, 3.000000f, 1, Texture_indexes[1], 0.500000f, 3, 200, 100, 255, 0); aLightningCreate(Object_handles[144], Object_handles[6], 99999.000000f, 3.000000f, 1, Texture_indexes[1], 0.500000f, 3, 200, 100, 255, 0); aLightningCreate(Object_handles[145], Object_handles[5], 99999.000000f, 3.000000f, 1, Texture_indexes[1], 0.500000f, 3, 200, 100, 255, 0); aLightningCreate(Object_handles[146], Object_handles[4], 99999.000000f, 3.000000f, 1, Texture_indexes[1], 0.500000f, 3, 200, 100, 255, 0); aLightningCreate(Object_handles[147], Object_handles[148], 99999.000000f, 4.500000f, 2, Texture_indexes[1], 0.400000f, 3, 200, 150, 100, 0); aLightningCreate(Object_handles[149], Object_handles[150], 99999.000000f, 3.500000f, 2, Texture_indexes[0], 0.500000f, 3, 0, 150, 250, 0); // Increment the script action counter if (ScriptActionCtr_028 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_028++; } // Script 063: Music-Level Start (Intro) if (1) { aMusicSetRegionAll(0); // Increment the script action counter if (ScriptActionCtr_063 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_063++; } } break; case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 002: RockWall Detonation if (event_data->id == 13) { aTurnOnSpew(Object_handles[27], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.090000f, 0.700000f, 14.000000f, 100.000000f, 0, -1); aTurnOnSpew(Object_handles[28], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 0.600000f, 22.000000f, 60.000000f, 0, -1); aObjMakeVulnerable(Object_handles[14]); aObjDestroy(Object_handles[14]); aSoundPlayObject(Sound_indexes[1], Object_handles[13], 1.000000f); aMiscViewerShake(50.000000f); aSetObjectTimer(Object_handles[13], 0.350000f, 3); aSetObjectTimer(Object_handles[13], 2.000000f, 1); // Increment the script action counter if (ScriptActionCtr_002 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_002++; } // Script 030: Rolling Ball Hit Part2 if ((ScriptActionCtr_030 < 1) && (event_data->id == 21)) { aRoomSetWind(Room_indexes[30], 0.000000f, 0.000000f, 0.000000f, 1.000000f); aMiscViewerShake(40.000000f); // Increment the script action counter if (ScriptActionCtr_030 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_030++; } // Script 022: LeftLab Infection-On if (event_data->id == 4) { cRegionSetLightingFlicker(1, 0); aSetLevelTimer(qRandomValue(2.000000f, 4.000000f), 5); // Increment the script action counter if (ScriptActionCtr_022 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_022++; } // Script 009: LeftLab Infection-Off if (event_data->id == 5) { cRegionSetLightingFlicker(0, 0); aSetLevelTimer(qRandomValue(3.000000f, 6.000000f), 4); // Increment the script action counter if (ScriptActionCtr_009 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_009++; } // Script 011: LeftLab Infection Door if (event_data->id == 8) { cMalfunctionRegionDoors(0); aSetLevelTimer(qRandomValue(3.000000f, 7.000000f), 8); // Increment the script action counter if (ScriptActionCtr_011 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_011++; } // Script 016: RightLab Infection-On if (event_data->id == 6) { cRegionSetLightingFlicker(1, 1); aSetLevelTimer(qRandomValue(2.000000f, 4.000000f), 7); // Increment the script action counter if (ScriptActionCtr_016 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_016++; } // Script 021: RightLab Infection-Off if (event_data->id == 7) { cRegionSetLightingFlicker(0, 1); aSetLevelTimer(qRandomValue(3.000000f, 6.000000f), 6); // Increment the script action counter if (ScriptActionCtr_021 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_021++; } // Script 023: RightLab Infection Door if (event_data->id == 12) { cMalfunctionRegionDoors(1); aSetLevelTimer(qRandomValue(3.000000f, 7.000000f), 12); // Increment the script action counter if (ScriptActionCtr_023 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_023++; } // Script 049: Creeper Timer Events if (1) { cExecTimerEvent(event_data->id); // Increment the script action counter if (ScriptActionCtr_049 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_049++; } // Script 034: End Level in 10 seconds! if (event_data->id == 14) { aShowColoredHUDMessage(255, 0, 0, Message_strings[15]); // Increment the script action counter if (ScriptActionCtr_034 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_034++; } // Script 035: Failed if ((ScriptActionCtr_035 < 1) && (event_data->id == 23)) { aGoalFailed(Goal_indexes[6], 1); aFailLevel(); // Increment the script action counter if (ScriptActionCtr_035 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_035++; } // Script 039: End Level Failure if ((ScriptActionCtr_039 < 1) && (event_data->id == 16)) { aSetLevelTimer(3.800000f, 23); aFadeWhiteAndEndlevel(4.000000f, Message_strings[2]); // Increment the script action counter if (ScriptActionCtr_039 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_039++; } // Script 054: Exit Shaker if (event_data->id == 19) { aMiscViewerShake(qRandomValue(40.000000f, 70.000000f)); aSetLevelTimer(qRandomValue(1.500000f, 3.500000f), 19); // Increment the script action counter if (ScriptActionCtr_054 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_054++; } } break; case EVT_LEVEL_GOAL_COMPLETE: { tOSIRISEVTLEVELGOALCOMPLETE *event_data = &data->evt_level_goal_complete; // Script 041: Both Hubs Infected if ((ScriptActionCtr_041 < 1) && ((qUserFlag(1) == 1) && (qUserFlag(0) == 1))) { aShowHUDMessage(Message_strings[10]); aDoorSetPos(Door_handles[0], 0.800000f); // Increment the script action counter if (ScriptActionCtr_041 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_041++; } } break; case EVT_PLAYER_MOVIE_END: { tOSIRISEVTPLAYERMOVIEEND *event_data = &data->evt_player_movie_end; // Script 026: EndMovie-2 if ((ScriptActionCtr_026 < 1) && (1)) { aObjGhostSet(0, Object_handles[15]); aLightningTurnOn(0.100000f, 0.080000f); aTurnOnSpew(Object_handles[169], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 10.000000f, 7.000000f, 50.000000f, 0, -1); aTurnOnSpew(Object_handles[170], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 10.000000f, 7.000000f, 50.000000f, 0, -1); aObjSpark(Object_handles[171], 30.000000f, 10.000000f); aObjSpark(Object_handles[172], 30.000000f, 10.000000f); aObjSpark(Object_handles[173], 30.000000f, 10.000000f); aStartEndlevelSequencePath(Path_indexes[12], Path_indexes[13], 8.000000f, Message_strings[2]); // Increment the script action counter if (ScriptActionCtr_026 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_026++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_11C4::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_movie_end; // Script 073: IntroCam-2 if (1) { aMusicSetRegionAll(1); aSetObjectTimer(Object_handles[17], 2.000000f, -1); aAISetMaxSpeed(Object_handles[18], 16.000000f); aAIGoalFollowPathSimple(Object_handles[18], Path_indexes[3], 4352, -1, 3); aTurnOnSpew(Object_handles[19], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 10.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[20], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 10.000000f, 5.000000f, 30.000000f, 0, -1); aCinematicSimple(Path_indexes[4], Message_strings[2], Object_handles[21], 8.000000f, 1); // Increment the script action counter if (ScriptActionCtr_073 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_073++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1088::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 077: Intro2 Spark if (1) { aTurnOnSpew(Object_handles[22], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 20.000000f, 4.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[23], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 20.000000f, 4.000000f, 30.000000f, 0, -1); aEmitSparks(80.000000f, Object_handles[17]); // Increment the script action counter if (ScriptActionCtr_077 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_077++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09C6::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_movie_end; // Script 074: IntroCam-3 if (1) { aCinematicSimple(Path_indexes[5], Message_strings[2], Object_handles[24], 9.000000f, 1); // Increment the script action counter if (ScriptActionCtr_074 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_074++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_11C5::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_movie_end; // Script 075: IntroCam-4 if (1) { aLightningTurnOn(0.150000f, 0.080000f); aAISetState(0, Object_handles[25]); aObjSetVelocity(Object_handles[25], 0.000000f, 0.000000f, -1.000000f, 120.000000f); aPhysFlags(1, 58787840, Object_handles[25]); aCinematicSimple(Path_indexes[6], Message_strings[2], Object_handles[26], 8.000000f, 1); // Increment the script action counter if (ScriptActionCtr_075 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_075++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09C7::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_movie_end; // Script 076: IntroCam-POST if (1) { aLightningTurnOn(0.200000f, 0.080000f); aObjGhostSet(1, Object_handles[25]); // Increment the script action counter if (ScriptActionCtr_076 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_076++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_182E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 029: Rolling Ball Hit Something if ((qObjIsPlayer(event_data->it_handle) == true) || (qObjIsType(event_data->it_handle, 2) == true)) { aObjMakeVulnerable(event_data->it_handle); aObjKill(event_data->it_handle, 0, 1, 196832, 0.000000f, 0.000000f); // Increment the script action counter if (ScriptActionCtr_029 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_029++; } } break; case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 008: Rolling Ball Drop if (event_data->id == 3) { aMiscViewerShake(70.000000f); aTurnOnSpew(Object_handles[28], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 0.800000f, 19.000000f, 80.000000f, 0, -1); aObjSetMovementType(data->me_handle, 1); // Increment the script action counter if (ScriptActionCtr_008 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_008++; } // Script 003: Rolling Ball Shaker if (event_data->id == 1) { aMiscShakeArea(data->me_handle, 60.000000f, 400.000000f); aSetObjectTimer(data->me_handle, qRandomValue(1.000000f, 2.500000f), 1); // Increment the script action counter if (ScriptActionCtr_003 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_003++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_0A05::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 033: Crystal Hit 4 if ((ScriptActionCtr_033 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == true)) { aSoundPlayObject(Sound_indexes[2], data->me_handle, 1.000000f); aSetObjectTimer(Object_handles[37], 0.000000f, -1); aEmitSparks(50.000000f, data->me_handle); aEmitSparks(30.000000f, Object_handles[37]); aLightningCreate(Object_handles[37], data->me_handle, 99999.000000f, 1.500000f, 2, Texture_indexes[0], 0.500000f, 3, 180, 180, 255, 0); aLightningCreate(data->me_handle, Object_handles[37], 99999.000000f, 1.500000f, 2, Texture_indexes[1], 1.000000f, 2, 100, 200, 255, 0); aObjSetMovementType(data->me_handle, 1); // Increment the script action counter if (ScriptActionCtr_033 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_033++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_0A04::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 032: Crystal Hit 3 if ((ScriptActionCtr_032 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == true)) { aSoundPlayObject(Sound_indexes[2], data->me_handle, 1.000000f); aSetObjectTimer(Object_handles[37], 0.000000f, -1); aEmitSparks(50.000000f, data->me_handle); aEmitSparks(30.000000f, Object_handles[37]); aLightningCreate(Object_handles[37], data->me_handle, 99999.000000f, 2.500000f, 2, Texture_indexes[0], 0.500000f, 3, 180, 180, 255, 0); aLightningCreate(data->me_handle, Object_handles[37], 99999.000000f, 1.500000f, 2, Texture_indexes[1], 1.000000f, 2, 100, 200, 255, 0); aObjSetMovementType(data->me_handle, 1); // Increment the script action counter if (ScriptActionCtr_032 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_032++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_0A03::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 024: Crystal Hit 2 if ((ScriptActionCtr_024 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == true)) { aSoundPlayObject(Sound_indexes[2], data->me_handle, 1.000000f); aSetObjectTimer(Object_handles[37], 0.000000f, -1); aEmitSparks(50.000000f, data->me_handle); aEmitSparks(30.000000f, Object_handles[37]); aLightningCreate(Object_handles[37], data->me_handle, 99999.000000f, 2.500000f, 2, Texture_indexes[0], 0.500000f, 3, 180, 180, 255, 0); aLightningCreate(data->me_handle, Object_handles[37], 99999.000000f, 1.500000f, 2, Texture_indexes[1], 1.000000f, 2, 100, 200, 255, 0); aObjSetMovementType(data->me_handle, 1); // Increment the script action counter if (ScriptActionCtr_024 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_024++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1A02::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 006: Crystal Hit 1 if ((ScriptActionCtr_006 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == true)) { aSoundPlayObject(Sound_indexes[2], data->me_handle, 1.000000f); aSetObjectTimer(Object_handles[37], 0.000000f, -1); aEmitSparks(50.000000f, data->me_handle); aEmitSparks(30.000000f, Object_handles[37]); aLightningCreate(Object_handles[37], data->me_handle, 99999.000000f, 2.500000f, 2, Texture_indexes[0], 0.500000f, 3, 180, 180, 255, 0); aLightningCreate(data->me_handle, Object_handles[37], 99999.000000f, 1.500000f, 2, Texture_indexes[1], 1.000000f, 2, 100, 200, 255, 0); aObjSetMovementType(data->me_handle, 1); // Increment the script action counter if (ScriptActionCtr_006 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_006++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1033::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 058: Crystal Complete8 if (1) { aSoundPlayObject(Sound_indexes[3], Object_handles[42], 1.000000f); aSoundPlayObject(Sound_indexes[4], Object_handles[43], 1.000000f); aGoalCompleted(Goal_indexes[0], 1); aTurnOnSpew(Object_handles[44], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, -1.000000f, 3.000000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[45], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, -1.000000f, 3.000000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[46], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.100000f, -1.000000f, 4.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[47], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.100000f, -1.000000f, 4.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[42], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.100000f, -1.000000f, 4.000000f, 30.000000f, 0, -1); aObjSetLightingDist(Object_handles[43], 250.000000f); aObjSetLightingDist(Object_handles[32], 0.000000f); aObjGhostSet(1, Object_handles[32]); aRoomSetWind(Room_indexes[31], 0.000000f, 0.000000f, 0.000000f, 1.000000f); aMiscViewerShake(100.000000f); aTurnOnSpew(Object_handles[48], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.140000f, 0.600000f, 250.000000f, 50.000000f, 0, -1); aPortalRenderToggle(0, Room_indexes[31], 1); // Increment the script action counter if (ScriptActionCtr_058 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_058++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1200::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 057: Crystal Complete7 if (1) { aSoundStopObj(Object_handles[37]); aSoundPlayObject(Sound_indexes[5], Object_handles[32], 1.000000f); aSetObjectTimer(Object_handles[32], 0.250000f, -1); aMiscViewerShake(100.000000f); aTurnOnSpew(Object_handles[49], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.140000f, 0.600000f, 300.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[50], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.140000f, 0.600000f, 300.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[51], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.140000f, 0.600000f, 300.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[52], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.140000f, 0.600000f, 300.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[53], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.100000f, 0.140000f, 1.000000f, 300.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[54], -1, 2, 0.000000f, 0.000000f, 65536, 0, 0.900000f, 0.120000f, 0.400000f, 150.000000f, 200.000000f, 0, -1); aTurnOnSpew(Object_handles[55], -1, 2, 0.000000f, 0.000000f, 65536, 0, 0.900000f, 0.120000f, 0.400000f, 150.000000f, 200.000000f, 0, -1); aRoomSetWind(Room_indexes[31], 0.000000f, -1.000000f, 0.000000f, 40.000000f); // Increment the script action counter if (ScriptActionCtr_057 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_057++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1036::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 048: Crystal Complete6 if (1) { aRoomSetWind(Room_indexes[31], 0.000000f, 1.000000f, 0.000000f, 0.500000f); aSetObjectTimer(Object_handles[48], 1.350000f, -1); aMiscViewerShake(80.000000f); aObjSetLightingDist(Object_handles[32], 140.000000f); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 1.700000f, 22.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_048 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_048++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1035::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 046: Crystal Complete5 if (1) { aSetObjectTimer(Object_handles[56], 1.500000f, -1); aMiscViewerShake(80.000000f); aObjSetLightingDist(Object_handles[32], 125.000000f); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 3.200000f, 22.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_046 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_046++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_3032::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 045: Crystal Complete4 if (1) { aSetObjectTimer(Object_handles[57], 1.500000f, -1); aMiscViewerShake(80.000000f); aObjSetLightingDist(Object_handles[32], 110.000000f); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 4.700000f, 22.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_045 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_045++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1830::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 044: Crystal Complete3 if (1) { aSetObjectTimer(Object_handles[58], 1.500000f, -1); aMiscViewerShake(80.000000f); aObjSetLightingDist(Object_handles[32], 95.000000f); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 6.200000f, 22.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_044 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_044++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_28A2::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 007: Crystal Complete2 if (1) { aSoundPlayObject(Sound_indexes[6], Object_handles[37], 1.000000f); aSetObjectTimer(Object_handles[59], 2.000000f, -1); aObjGhostSet(0, Object_handles[32]); aObjSetLightingDist(Object_handles[32], 80.000000f); aMiscViewerShake(80.000000f); aEmitSparks(50.000000f, data->me_handle); aTurnOnSpew(Object_handles[55], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 8.000000f, 12.000000f, 80.000000f, 0, -1); aTurnOnSpew(Object_handles[54], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 8.000000f, 12.000000f, 80.000000f, 0, -1); aTurnOnSpew(Object_handles[48], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 8.200000f, 14.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[48], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 8.200000f, 25.000000f, 50.000000f, 0, -1); aLightningCreate(Object_handles[48], Object_handles[60], 8.100000f, 8.000000f, 1, Texture_indexes[2], 0.600000f, 3, 200, 255, 150, 0); // Increment the script action counter if (ScriptActionCtr_007 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_007++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_0A06::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 047: Crystal Complete1 if (((ScriptActionCtr_006 > 0) == true) && ((ScriptActionCtr_024 > 0) == true) && ((ScriptActionCtr_032 > 0) == true) && ((ScriptActionCtr_033 > 0) == true)) { aSetObjectTimer(Object_handles[60], 1.000000f, -1); aMiscViewerShake(40.000000f); aEmitSparks(80.000000f, data->me_handle); aLightningCreate(Object_handles[48], Object_handles[37], 9.200000f, 2.000000f, 2, Texture_indexes[1], 0.400000f, 3, 100, 200, 255, 0); aLightningCreate(Object_handles[60], Object_handles[37], 99999.000000f, 2.000000f, 1, Texture_indexes[1], 0.500000f, 3, 100, 200, 255, 0); // Increment the script action counter if (ScriptActionCtr_047 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_047++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_2885::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 078: LeftDataArm Hit-1 if ((ScriptActionCtr_078 < 1) && ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (1))) { aObjSpark(Object_handles[83], 50.000000f, 5.000000f); aObjSpark(Object_handles[78], 50.000000f, 5.000000f); aTurnOnSpew(Object_handles[83], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[78], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 15.000000f, 0, -1); aObjDelete(Object_handles[79]); aShowHUDMessage(Message_strings[4]); aSoundPlayObject(Sound_indexes[7], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 1, 5, 4.000000f, 0); // Increment the script action counter if (ScriptActionCtr_078 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_078++; } // Script 059: LeftDataArm Hit-2 if ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (qObjAnimFrame(data->me_handle) == 5.000000f) && (qGoalCompleted(Goal_indexes[1]) == false)) { if ((qUserFlag(0) == false) && (qUserFlag(14) == true)) { aTurnOnSpew(Object_handles[84], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 3.000000f, 15.000000f, 0, -1); aPortalBreakGlass(0, Room_indexes[32]); aPortalBreakGlass(0, Room_indexes[33]); aPortalBreakGlass(0, Room_indexes[34]); aAISetTeam(65536, Object_handles[85]); aAISetTeam(131072, Object_handles[86]); aAISetTeam(131072, Object_handles[87]); aAISetTeam(131072, Object_handles[88]); aAISetTeam(131072, Object_handles[89]); aAISetTeam(131072, Object_handles[90]); aAISetTeam(65536, Object_handles[91]); aAISetTeam(131072, Object_handles[92]); aAISetTeam(196608, Object_handles[93]); aAISetTeam(131072, Object_handles[94]); aAISetTeam(131072, Object_handles[95]); aAISetTeam(65536, Object_handles[96]); aAISetTeam(131072, Object_handles[97]); aMiscViewerShake(80.000000f); aTurnOnSpew(Object_handles[98], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[99], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aSoundPlayObject(Sound_indexes[7], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 5, 9, 4.000000f, 0); aUserFlagSet(0, 1); aGoalCompleted(Goal_indexes[1], 1); aObjSpark(Object_handles[78], 30.000000f, 99999.000000f); aObjSpark(Object_handles[83], 30.000000f, 99999.000000f); aObjSpark(Object_handles[80], 60.000000f, 99999.000000f); aLightningCreate(Object_handles[83], Object_handles[78], 99999.000000f, 5.000000f, 1, Texture_indexes[1], 0.400000f, 2, 255, 150, 255, 0); aLightningCreate(Object_handles[78], Object_handles[80], 99999.000000f, 3.000000f, 1, Texture_indexes[4], 0.600000f, 3, 255, 255, 255, 0); aLightningCreate(Object_handles[83], Object_handles[80], 99999.000000f, 3.000000f, 1, Texture_indexes[4], 0.600000f, 3, 255, 255, 255, 0); aSetLevelTimer(2.000000f, 4); aSetLevelTimer(2.000000f, 8); aRoomFogSetState(1, Room_indexes[35]); aRoomSetFog(Room_indexes[35], 0.250000f, 0.000000f, 0.500000f, 300.000000f); cFogRegion(0, 0.250000f, 0.000000f, 0.500000f, 1000.000000f); cChangeFogRegion(0, 0.250000f, 0.000000f, 0.500000f, 300.000000f, 20.000000f); aTurnOnSpew(Object_handles[100], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 0); aTurnOnSpew(Object_handles[101], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 1); aTurnOnSpew(Object_handles[102], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 2); aTurnOnSpew(Object_handles[103], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 3); aTurnOnSpew(Object_handles[104], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 4); aTurnOnSpew(Object_handles[105], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 5); aTurnOnSpew(Object_handles[106], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 6); aTurnOnSpew(Object_handles[107], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 7); aTurnOnSpew(Object_handles[108], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 8); aTurnOnSpew(Object_handles[109], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 9); aTurnOnSpew(Object_handles[110], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 10); aShowHUDMessage(Message_strings[5]); } else { aShowHUDMessage(Message_strings[6]); } // Increment the script action counter if (ScriptActionCtr_059 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_059++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_107E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 013: RightDataArm Hit-1 if ((ScriptActionCtr_013 < 1) && ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (1))) { aObjSpark(Object_handles[76], 50.000000f, 5.000000f); aObjSpark(Object_handles[112], 50.000000f, 5.000000f); aTurnOnSpew(Object_handles[76], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[112], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 15.000000f, 0, -1); aObjDelete(Object_handles[77]); aShowHUDMessage(Message_strings[4]); aSoundPlayObject(Sound_indexes[7], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 1, 5, 4.000000f, 0); // Increment the script action counter if (ScriptActionCtr_013 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_013++; } // Script 014: RightDataArm Hit-2 if ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (qObjAnimFrame(data->me_handle) == 5.000000f) && (qGoalCompleted(Goal_indexes[2]) == false)) { if ((qUserFlag(1) == false) && (qUserFlag(15) == true)) { aTurnOnSpew(Object_handles[113], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 3.000000f, 15.000000f, 0, -1); aAISetTeam(131072, Object_handles[114]); aAISetTeam(131072, Object_handles[115]); aAISetTeam(65536, Object_handles[116]); aAISetTeam(131072, Object_handles[117]); aAISetTeam(65536, Object_handles[118]); aAISetTeam(131072, Object_handles[119]); aAISetTeam(196608, Object_handles[120]); aAISetTeam(131072, Object_handles[121]); aAISetTeam(131072, Object_handles[122]); aAISetTeam(65536, Object_handles[123]); aAISetTeam(131072, Object_handles[124]); aAISetTeam(131072, Object_handles[124]); aMiscViewerShake(80.000000f); aObjPlayAnim(data->me_handle, 5, 9, 4.000000f, 0); aSoundPlayObject(Sound_indexes[7], data->me_handle, 1.000000f); aObjSpark(Object_handles[81], 60.000000f, 99999.000000f); aObjSpark(Object_handles[76], 30.000000f, 99999.000000f); aObjSpark(Object_handles[112], 30.000000f, 99999.000000f); aLightningCreate(Object_handles[76], Object_handles[81], 99999.000000f, 3.000000f, 1, Texture_indexes[4], 0.600000f, 3, 255, 255, 255, 0); aLightningCreate(Object_handles[112], Object_handles[81], 99999.000000f, 3.000000f, 1, Texture_indexes[4], 0.600000f, 3, 255, 255, 255, 0); aLightningCreate(Object_handles[112], Object_handles[76], 99999.000000f, 5.000000f, 1, Texture_indexes[1], 0.400000f, 2, 255, 150, 255, 0); aUserFlagSet(1, 1); aGoalCompleted(Goal_indexes[2], 1); aSetLevelTimer(2.000000f, 6); aSetLevelTimer(2.000000f, 12); cFogRegion(1, 0.500000f, 0.000000f, 0.250000f, 1000.000000f); cChangeFogRegion(1, 0.500000f, 0.000000f, 0.250000f, 300.000000f, 20.000000f); aTurnOnSpew(Object_handles[125], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[126], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[127], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 11); aTurnOnSpew(Object_handles[128], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 12); aTurnOnSpew(Object_handles[129], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 13); aTurnOnSpew(Object_handles[130], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 14); aTurnOnSpew(Object_handles[131], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 15); aTurnOnSpew(Object_handles[132], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 16); aTurnOnSpew(Object_handles[133], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 17); aTurnOnSpew(Object_handles[134], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 18); aTurnOnSpew(Object_handles[135], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 20); aTurnOnSpew(Object_handles[136], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 21); aTurnOnSpew(Object_handles[137], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 22); aTurnOnSpew(Object_handles[138], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.150000f, -1.000000f, 4.000000f, 20.000000f, 1, 23); aShowHUDMessage(Message_strings[7]); } else { aShowHUDMessage(Message_strings[6]); } // Increment the script action counter if (ScriptActionCtr_014 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_014++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1185::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 036: PICKUP Virus if (qObjIsPlayer(event_data->it_handle) == true) { aAddObjectToInventoryNamed(data->me_handle, event_data->it_handle, Message_strings[0], 0); // Increment the script action counter if (ScriptActionCtr_036 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_036++; } } break; case EVT_USE: { tOSIRISEVTUSE *event_data = &data->evt_use; // Script 018: Hub Virus Placement if (1) { if ((qObjGetDistance(event_data->it_handle, Object_handles[80]) < 40.000000f) && (qUserFlag(14) == false) && ((ScriptActionCtr_078 > 0) == true)) { aShowHUDMessage(Message_strings[8]); aUserFlagSet(14, 1); aSoundPlayObject(Sound_indexes[8], Object_handles[80], 1.000000f); aObjGhostSet(0, Object_handles[80]); aEmitSparks(80.000000f, Object_handles[80]); } else { if ((qObjGetDistance(event_data->it_handle, Object_handles[81]) < 40.000000f) && (qUserFlag(15) == false) && ((ScriptActionCtr_013 > 0) == true)) { aShowHUDMessage(Message_strings[8]); aUserFlagSet(15, 1); aSoundPlayObject(Sound_indexes[8], Object_handles[81], 1.000000f); aObjGhostSet(0, Object_handles[81]); aEmitSparks(80.000000f, Object_handles[81]); } else { aObjGhostSet(0, data->me_handle); aAddObjectToInventoryNamed(data->me_handle, event_data->it_handle, Message_strings[0], 0); aShowColoredHUDMessageObj(255, 0, 0, Message_strings[9], event_data->it_handle); } } // Increment the script action counter if (ScriptActionCtr_018 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_018++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_21B2::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 050: PICKUP Virus 2 if (qObjIsPlayer(event_data->it_handle) == true) { aAddObjectToInventoryNamed(data->me_handle, event_data->it_handle, Message_strings[0], 0); // Increment the script action counter if (ScriptActionCtr_050 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_050++; } } break; case EVT_USE: { tOSIRISEVTUSE *event_data = &data->evt_use; // Script 051: Hub Virus Placement 2 if (1) { if ((qObjGetDistance(event_data->it_handle, Object_handles[80]) < 40.000000f) && (qUserFlag(14) == false) && ((ScriptActionCtr_078 > 0) == true)) { aShowHUDMessage(Message_strings[8]); aUserFlagSet(14, 1); aSoundPlayObject(Sound_indexes[8], Object_handles[80], 1.000000f); aObjGhostSet(0, Object_handles[80]); aEmitSparks(80.000000f, Object_handles[80]); } else { if ((qObjGetDistance(event_data->it_handle, Object_handles[81]) < 40.000000f) && (qUserFlag(15) == false) && ((ScriptActionCtr_013 > 0) == true)) { aShowHUDMessage(Message_strings[8]); aUserFlagSet(15, 1); aSoundPlayObject(Sound_indexes[8], Object_handles[81], 1.000000f); aObjGhostSet(0, Object_handles[81]); aEmitSparks(80.000000f, Object_handles[81]); } else { aObjGhostSet(0, data->me_handle); aAddObjectToInventoryNamed(data->me_handle, event_data->it_handle, Message_strings[0], 0); aShowColoredHUDMessageObj(255, 0, 0, Message_strings[9], event_data->it_handle); } } // Increment the script action counter if (ScriptActionCtr_051 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_051++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09DE::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 084: Receptor Switch4 if ((ScriptActionCtr_084 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == 1)) { aMiscShakeArea(data->me_handle, 40.000000f, 200.000000f); aObjDelete(Object_handles[143]); aTurnOnSpew(Object_handles[3], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 2.000000f, 2.500000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[7], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, 4); aSetObjectTimer(Object_handles[3], 2.000000f, -1); aSoundPlayObject(Sound_indexes[9], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 4, 2.000000f, 0); // Increment the script action counter if (ScriptActionCtr_084 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_084++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09DD::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 083: Receptor Switch3 if ((ScriptActionCtr_083 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == 1)) { aMiscShakeArea(data->me_handle, 40.000000f, 200.000000f); aObjDelete(Object_handles[144]); aTurnOnSpew(Object_handles[2], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 2.000000f, 2.500000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[6], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, 3); aSetObjectTimer(Object_handles[2], 2.000000f, -1); aSoundPlayObject(Sound_indexes[9], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 4, 2.000000f, 0); // Increment the script action counter if (ScriptActionCtr_083 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_083++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09DC::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 082: Receptor Switch2 if ((ScriptActionCtr_082 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == 1)) { aObjDelete(Object_handles[145]); aTurnOnSpew(Object_handles[1], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 2.000000f, 2.500000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[5], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, 2); aSetObjectTimer(Object_handles[1], 2.000000f, -1); aSoundPlayObject(Sound_indexes[9], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 4, 2.000000f, 0); aMiscShakeArea(data->me_handle, 40.000000f, 200.000000f); // Increment the script action counter if (ScriptActionCtr_082 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_082++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_21DA::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 019: Receptor Switch1 if ((ScriptActionCtr_019 < 1) && (qObjIsPlayerWeapon(event_data->it_handle) == 1)) { aObjDelete(Object_handles[146]); aTurnOnSpew(Object_handles[0], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, 2.000000f, 2.500000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[4], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, 1); aSetObjectTimer(Object_handles[0], 2.000000f, -1); aSoundPlayObject(Sound_indexes[9], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 4, 2.000000f, 0); aMiscShakeArea(data->me_handle, 40.000000f, 200.000000f); // Increment the script action counter if (ScriptActionCtr_019 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_019++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_0899::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 081: Receptor NodeShutdown4 if ((ScriptActionCtr_081 < 1) && (1)) { aObjPlayAnim(Object_handles[7], 1, 2, 1.000000f, 0); aObjSpark(data->me_handle, 50.000000f, 2.000000f); aSoundPlayObject(Sound_indexes[8], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 5, 6, 1.000000f, 0); // Increment the script action counter if (ScriptActionCtr_081 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_081++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_089A::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 080: Receptor NodeShutdown3 if ((ScriptActionCtr_080 < 1) && (1)) { aObjPlayAnim(Object_handles[6], 1, 2, 1.000000f, 0); aObjSpark(data->me_handle, 50.000000f, 2.000000f); aSoundPlayObject(Sound_indexes[8], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 5, 6, 1.000000f, 0); // Increment the script action counter if (ScriptActionCtr_080 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_080++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_089B::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 079: Receptor NodeShutdown2 if ((ScriptActionCtr_079 < 1) && (1)) { aObjPlayAnim(Object_handles[5], 1, 2, 1.000000f, 0); aObjSpark(data->me_handle, 50.000000f, 2.000000f); aSoundPlayObject(Sound_indexes[8], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 5, 6, 1.000000f, 0); // Increment the script action counter if (ScriptActionCtr_079 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_079++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1098::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 020: Receptor NodeShutdown1 if ((ScriptActionCtr_020 < 1) && (1)) { aObjPlayAnim(Object_handles[4], 1, 2, 1.000000f, 0); aObjSpark(data->me_handle, 50.000000f, 2.000000f); aSoundPlayObject(Sound_indexes[8], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 5, 6, 1.000000f, 0); // Increment the script action counter if (ScriptActionCtr_020 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_020++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09A1::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 085: Restore Power if ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (qUserFlag(7) == false)) { if (((ScriptActionCtr_086 > 0) == true) && (1)) { aSetLevelTimer(50.000000f, 14); aSetLevelTimer(60.000000f, 16); aTimerShow(16); aSetObjectTimer(Object_handles[156], 1.000000f, -1); aSetObjectTimer(Object_handles[155], 4.000000f, -1); aDoorSetPos(Door_handles[0], 0.000000f); aObjPlayAnim(Object_handles[7], 2, 3, 1.000000f, 0); aObjPlayAnim(Object_handles[6], 2, 3, 1.000000f, 0); aObjPlayAnim(Object_handles[5], 2, 3, 1.000000f, 0); aObjPlayAnim(Object_handles[4], 2, 3, 1.000000f, 0); aGoalCompleted(Goal_indexes[3], 1); aUserFlagSet(7, 1); aShowHUDMessage(Message_strings[11]); aSoundPlayObject(Sound_indexes[10], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 3, 3.000000f, 0); } else { if (qUserFlag(7) == false) { aShowHUDMessage(Message_strings[12]); } } // Increment the script action counter if (ScriptActionCtr_085 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_085++; } } break; case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 088: RestorePower3 if (1) { aSetLevelTimer(4.000000f, 19); aObjSpark(Object_handles[7], 20.000000f, 5.000000f); aObjSpark(Object_handles[6], 20.000000f, 5.000000f); aObjSpark(Object_handles[5], 20.000000f, 5.000000f); aObjSpark(Object_handles[4], 20.000000f, 5.000000f); aLightningCreate(Object_handles[5], Object_handles[141], 99999.000000f, 3.000000f, 2, Texture_indexes[4], 0.500000f, 2, 255, 255, 255, 0); aLightningCreate(Object_handles[6], Object_handles[140], 99999.000000f, 3.000000f, 2, Texture_indexes[4], 0.500000f, 2, 255, 255, 255, 0); aLightningCreate(Object_handles[4], Object_handles[142], 99999.000000f, 3.000000f, 2, Texture_indexes[4], 0.500000f, 2, 255, 255, 255, 0); aLightningCreate(Object_handles[7], Object_handles[139], 99999.000000f, 3.000000f, 2, Texture_indexes[4], 0.500000f, 2, 255, 255, 255, 0); aMiscShakeArea(Object_handles[150], 80.000000f, 500.000000f); // Increment the script action counter if (ScriptActionCtr_088 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_088++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_19A0::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 086: Shutdown Power if ((qObjIsPlayerWeapon(event_data->it_handle) == true) && (qUserFlag(6) == false)) { if (((ScriptActionCtr_084 > 0) == true) && ((ScriptActionCtr_083 > 0) == true) && ((ScriptActionCtr_082 > 0) == true) && ((ScriptActionCtr_019 > 0) == true)) { aObjSetLightingColor(Object_handles[157], 1.000000f, 0.200000f, 0.200000f); aObjSetLightingColor(Object_handles[158], 1.000000f, 0.200000f, 0.200000f); aRoomSetLightingPulse(Room_indexes[36], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[37], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[38], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[39], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[40], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[41], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[42], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[43], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[44], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[45], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[46], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[47], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[48], 20.000000f, 0.000000f); aRoomSetLightingPulse(Room_indexes[49], 20.000000f, 0.000000f); aMiscShakeArea(Object_handles[150], 80.000000f, 200.000000f); aTurnOnSpew(Object_handles[150], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, -1); aTurnOnSpew(Object_handles[147], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.100000f, -1.000000f, 2.500000f, 15.000000f, 0, -1); aGoalCompleted(Goal_indexes[4], 1); aUserFlagSet(6, 1); aAISetState(0, Object_handles[159]); aAISetState(0, Object_handles[160]); aAISetState(0, Object_handles[161]); aAISetState(0, Object_handles[162]); aTurnOffSpew(1); aTurnOffSpew(2); aTurnOffSpew(3); aTurnOffSpew(4); aObjDelete(Object_handles[149]); aObjDelete(Object_handles[148]); aObjSpark(Object_handles[150], 30.000000f, 99999.000000f); aObjSpark(Object_handles[147], 30.000000f, 99999.000000f); aShowHUDMessage(Message_strings[13]); aSoundPlayObject(Sound_indexes[4], Object_handles[158], 1.000000f); aSoundPlayObject(Sound_indexes[4], Object_handles[157], 1.000000f); aSoundPlayObject(Sound_indexes[10], data->me_handle, 1.000000f); aObjPlayAnim(data->me_handle, 0, 3, 3.000000f, 0); } else { if (qUserFlag(6) == false) { aShowHUDMessage(Message_strings[14]); } } // Increment the script action counter if (ScriptActionCtr_086 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_086++; } } break; case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 087: RestorePower2 if (1) { aObjPlayAnim(Object_handles[139], 0, 3, 3.000000f, 0); aObjPlayAnim(Object_handles[140], 0, 3, 3.000000f, 0); aObjPlayAnim(Object_handles[141], 0, 3, 3.000000f, 0); aObjPlayAnim(Object_handles[142], 0, 3, 3.000000f, 0); aObjSpark(Object_handles[139], 25.000000f, 5.000000f); aObjSpark(Object_handles[140], 25.000000f, 5.000000f); aObjSpark(Object_handles[141], 25.000000f, 5.000000f); aObjSpark(Object_handles[142], 25.000000f, 5.000000f); // Increment the script action counter if (ScriptActionCtr_087 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_087++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_09C9::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 025: EndMovie-1 if ((ScriptActionCtr_025 < 1) && (1)) { aSetObjectTimer(Object_handles[164], 1.200000f, -1); aTurnOnSpew(Object_handles[165], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[166], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 10.000000f, 4.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[167], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 10.000000f, 4.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[168], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 3.000000f, 20.000000f, 0, -1); aCinematicIntro(Path_indexes[10], Message_strings[2], Object_handles[39], Path_indexes[11], 8.000000f); // Increment the script action counter if (ScriptActionCtr_025 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_025++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1007::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 027: EndMovie-1 Door Open if (1) { aTurnOnSpew(Object_handles[166], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 10.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[167], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 10.000000f, 5.000000f, 30.000000f, 0, -1); aDoorSetPos(Door_handles[1], 1.000000f); // Increment the script action counter if (ScriptActionCtr_027 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_027++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short CustomObjectScript_1016::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 015: BrokenDoor if (1) { aEmitSparks(qRandomValue(10.000000f, 50.000000f), data->me_handle); // Increment the script action counter if (ScriptActionCtr_015 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_015++; return CONTINUE_DEFAULT; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000F::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 001: Rolling Ball Initiator if ((ScriptActionCtr_001 < 1) && (1)) { aShowHUDMessageObj(Message_strings[3], event_data->it_handle); aSoundPlayObject(Sound_indexes[0], Object_handles[14], 1.000000f); aMiscViewerShake(60.000000f); aSetLevelTimer(1.000000f, 13); // Increment the script action counter if (ScriptActionCtr_001 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_001++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_0000::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 004: Rolling Ball Detonation if ((ScriptActionCtr_004 < 1) && (event_data->it_handle == Object_handles[13])) { aTurnOnSpew(Object_handles[29], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 0.800000f, 32.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[29], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 0.500000f, 20.000000f, 110.000000f, 0, -1); aTurnOnSpew(Object_handles[30], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 0.700000f, 22.000000f, 100.000000f, 0, -1); aTurnOnSpew(Object_handles[31], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.400000f, 0.100000f, 0.700000f, 22.000000f, 100.000000f, 0, -1); aSetLevelTimer(0.300000f, 21); aRoomSetWind(Room_indexes[30], 0.000000f, 1.000000f, 0.000000f, 15.000000f); aObjMakeVulnerable(event_data->it_handle); aMiscViewerShake(100.000000f); aObjKill(event_data->it_handle, 0, 2, 524384, 0.000000f, 0.000000f); // Increment the script action counter if (ScriptActionCtr_004 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_004++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_0010::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 038: Exit Level if ((ScriptActionCtr_038 < 1) && ((qObjIsPlayer(event_data->it_handle) == 1) && ((ScriptActionCtr_085 > 0) == true))) { aCancelTimer(16); aGoalCompleted(Goal_indexes[5], 1); aGoalCompleted(Goal_indexes[6], 1); aSetObjectTimer(Object_handles[163], 0.000000f, -1); // Increment the script action counter if (ScriptActionCtr_038 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_038++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 071: Music-Level11 if (1) { aMusicSetRegion(5, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_071 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_071++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000D::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 070: Music-Level22 if (1) { aMusicSetRegion(4, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_070 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_070++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000B::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 069: Music-Level21 if (1) { aMusicSetRegion(4, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_069 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_069++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_0009::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 068: Music-Level32 if (1) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_068 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_068++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000C::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 067: Music-Level31 if (1) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_067 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_067++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_000A::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 066: Music-Temple21 if (1) { aMusicSetRegion(2, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_066 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_066++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_0007::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 065: Music-Temple1 if (1) { aMusicSetRegion(2, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_065 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_065++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } short TriggerScript_0008::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 064: Music-Outside1 if (1) { aMusicSetRegion(1, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_064 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_064++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } /********************************************************* Script Save Block: DO NOT TOUCH ANYTHING IN THIS BLOCK!!! ********************************************************** $$SCRIPT_BLOCK_START VERSION 3 NEXT_ID 89 // UserType value blocks $$UTYPE_VALS_START UserVar 0:TempValue 1:CrystalCenterMainRed 2:CrystalCenterMainBlue 3:CrystalCenterMainGreen 4:GadgetCinematicFrame 5:FinalCountdownTimer $$UTYPE_VALS_END $$UTYPE_VALS_START UserFlag 0:LeftTermInfected 1:RightTermInfected 6:PowerDeactivated 7:PowerRecharging 8:CreeperMid0Activated 9:CreeperMid1Activated 10:CreeperRL0Activated 11:CreeperRL1Activated 12:CreeperLLR0Activated 13:CreeperMid2Activated 14:LeftVirusPlaced 15:RightVirusPlaced 19:CreeperRL3Activated 20:CreeperRLJActivated 21:DoomedGadgetHelpless $$UTYPE_VALS_END $$UTYPE_VALS_START SpewHandle 0:hLeftLabHalonSpew0 1:hLeftLabHalonSpew1 2:hLeftLabHalonSpew2 3:hLeftLabHalonSpew3 4:hLeftLabHalonSpew4 5:hLeftLabHalonSpew5 6:hLeftLabHalonSpew6 7:hLeftLabHalonSpew7 8:hLeftLabHalonSpew8 9:hLeftLabHalonSpew9 10:hLeftLabHalonSpewA 11:hRightLabHalonSpew0 12:hRightLabHalonSpew1 13:hRightLabHalonSpew2 14:hRightLabHalonSpew3 15:hRightLabHalonSpew4 16:hRightLabHalonSpew5 17:hRightLabHalonSpew6 18:hRightLabHalonSpew7 19:hRightLabHalonSpew8 20:hRightLabHalonSpew9 21:hRightLabHalonSpewA 22:hRightLabHalonSpewB 23:hRightLabHalonSpewC 24:hPowerNodeSpewer $$UTYPE_VALS_END $$UTYPE_VALS_START TimerID 0:PowerNodeBeamTimer1 1:BoulderShakeTimer 2:CrystalCenterMainTimer 3:BoulderDropTimer 4:LeftLabInfectTimer 5:LeftLabInfectTimerOff 6:RightLabInfectTimer 7:RightLabInfectTimerOff 8:LeftLabDoorInfectTimer 9:HubCinematicTimer2 10:HubCinematicTimer0 11:HubCinematicTimer1 12:RightLabDoorInfectTimer 13:BoulderWallDetonateTimer 14:PowerStationDeadTimer 15:PowerStationDeadTimer2 16:FinalCountdownTimer 17:CrystalCenterDelayTimer 18:CrystalCenterDelayTimer2 19:FinalShakeTimer 20:CrystalTrapSpewTimer 21:BoulderHitWind 22:StartLowPatrol 23:Failed $$UTYPE_VALS_END $$UTYPE_VALS_START SavedObjectSlot 0:PowerNode4 1:PowerNode1 2:PowerNode2 3:PowerNode3 $$UTYPE_VALS_END $$UTYPE_VALS_START GoalID 0:DoomedGadgetPathComplete 1:GadgetKillerPathComplete $$UTYPE_VALS_END // Name Lists $$DOOR_LIST_START Door-Top1 Door-Escape $$DOOR_LIST_END $$OBJECT_LIST_START ReceptorNode-01 ReceptorNode-02 ReceptorNode-03 ReceptorNode-04 PowerNode-01 PowerNode-02 PowerNode-03 PowerNode-04 PSGadget0 PSGadget1 Virus Device PlayerIntroCamera Virus Device2 BigBoulder RockWallBoulder Drop2 TargetExt1 IntroSpark-1 IGIntro2 IntroSmoke2 IntroSmoke1 TargetInt2 IntroSmoke-4 IntroSmoke-3 TargetInt1 Drop1 TargetExt2 BoulderExplosion1 BoulderExplosion2 BHit1 Bhit3 BHit2 FlasherCrystal CrystalBar1 CrystalBar2 CrystralBar3 CrystalBar4 CrystalBarCenter CrystalCenter4 CrystalCenter3 CrystalCenter2 CrystalCenter1 BTSmoke3 BTLight BTSmoke5 BTSmoke4 BTSmoke1 BTSmoke2 CrystalMainTarget CFX5 CFX4 CFX3 CFX2 CFX1 CBCHit1 CBCHit2 CBCHit6 CBCHit5 CBCHit4 CBCHit3 CrystalCenterBeam MidBot5 MidBot4 MidBot3 MidBot2 MidBot1 HiBot4 HiBot3 HiBot2 HiBot1 LoBot6 LoBot5 LoBot4 LoBot3 LoBot2 LoBot1 RightTopInter RightHubBeam LeftTopInterface LeftHubBeam LeftVirusTerminal RightVirusTerminal DataArmLeftHub LeftBottomInterfac TopDoorSmoke2 LeftTurret-3 LeftTurret-2 LeftTurret-5 LeftTurret-6 LeftTurret-7 LeftTurret-9 LeftTurret-A LeftTurret-B LeftTurret-E LeftTurret-J LeftTurret-H LeftTurret-I LeftTurret-C SmokeHub2 SmokeHub1 LeftLabHalonSpew0 LeftLabHalonSpew1 LeftLabHalonSpew2 LeftLabHalonSpew3 LeftLabHalonSpew4 LeftLabHalonSpew5 LeftLabHalonSpew6 LeftLabHalonSpew7 LeftLabHalonSpew8 LeftLabHalonSpew9 LeftLabHalonSpewA RightDataArm RightBottomInter TDSmoke1 RightTurret-1 RightTurret-2 RightTurret-3 RightTurret-5 RightTurret-6 RightTurret-7 RightTurret-8 RightTurret-9 RightTurret-B RightTurret-C RightTurret-D SmokeRight2 SmokeRight1 RightLabHalonSpew0 RightLabHalonSpew1 RightLabHalonSpew2 RightLabHalonSpew3 EightLabHalonSpew4 RightLabHalonSpew5 RightLabHalonSpew6 RightLabHalonSpew7 RightLabHalonSpew9 RightLabHalonSpewA RightLabHalonSpewB RightLabHalonSpewC PowerBackup-04 PowerBackup-03 PowerBackup-02 PowerBackup-01 PNodeSmoker4 PNodeSmoker3 PNodeSmoker2 PNodeSmoker1 MainPowerBeam2 MainBeamTarget2 MainBeamTarget1 MainPowerBeam1 RecSwitch4 RecSwitch3 RecSwitch2 RecSwitch1 ReBootSwitch2 ReBootSwitch1 MainPowerWhite1 MainPowerWhite2 PT1 PT2 PT3 PT4 TargetExit1 Door-Escape ExitSmoke1 ExitSmoke3 ExitSmoke4 ExitSmoke2 Drop2Smoke2 Drop2Smoke1 Turret-Outer13 Turret-Outer12 Turret-Outer11 Door-Bottom2 $$OBJECT_LIST_END $$ROOM_LIST_START Creeper-Mid0 Creeper-Mid0A Creeper-Mid0B Creeper-Mid0C Creeper-Mid0D LeftLabRO Creeper-LLR0A Creeper-LLR0B Creeper-LLR0C Creeper-LLR0D Creeper-LLR0E Creeper-LLROF Creeper-Mid2 Creeper-Mid2A RightLabR3 Creeper-RL3-A Creeper-RL3-B Creeper-RL3-C Creeper-RL3-D RightLabRJ Creeper-RLJ-A Creeper-RLJ-B Creeper-RLJ-C Creeper-RLJ-D Creeper-RLJ-E Creeper-RLJ-F Creeper-RLJ-G Creeper-RLJ-H Creeper-Mid1 Creeper-Mid1A BoulderHitRoom CrystalCenterRoom NRGCreep LeftLabCreep1 LeftLabCreep0 LeftX1 PowerChute2 PowerLow8 PowerLow7 PowerLow6 PowerLow5 PowerLow4 PowerLow3 PowerLow2 PowerLow1 PowerChute PowerSide2 PowerDoor PowerSide1 PowerStation $$ROOM_LIST_END $$TRIGGER_LIST_START RollingBallWatchout RollingBallDetonate BeginEndSequence MusicLevel1-1 MusicLevel2-2 MusicLevel2-1 MusicLevel3-2 MusicLevel3-1 MusicTemple-2 MusicTemple-1 MusicOutside-1 $$TRIGGER_LIST_END $$SOUND_LIST_START AmbExplosionFarB RockBreakAway WpnEMDFireD AmbSteamHigh AmbSirenBRedAcrop ExpMissileLarge1 WpnPyroGLOmegaFire AmbSwitch21 Wall fade ??? AmbSwitch31 AmbSwitch11 $$SOUND_LIST_END $$TEXTURE_LIST_START FunkyEffectGreen FunkyEffect3 HellionBeam FunkyEffect1 FunkyEffectAntiV $$TEXTURE_LIST_END $$SPECNAME_LIST_START $$SPECNAME_LIST_END $$PATH_LIST_START PSGadget0Path PSGadget1Path IntroCam-Ext1 IGInt2 IntroCam-Int2 IntroCam-Int1 IntroCam-Ext2 MidPatrol1 LowPatrol2 LowPatrol1 ExitCam-1 ExitShip-1 ExitCam-2 ExitShip-2 $$PATH_LIST_END $$MATCEN_LIST_START $$MATCEN_LIST_END $$GOAL_LIST_START Blast Into the Laboratory Infect Computer Hub Delta Infect Computer Hub Gamma Reboot the System Shut Down the Main Power Infect the Lab System With Virus Data Escape Before the System Reboots $$GOAL_LIST_END $$STRM_AUDIO_LIST_START $$STRM_AUDIO_LIST_END // Script Tree Dump 00:0:Level INIT (Weather) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aRainTurnOn $$CHILD_BLOCK_START 10:9:0.900000:Density $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:5:Level INIT (CrystalCenter) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:15:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:14:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:12:Level INIT (Power Station) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:0:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:1:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:2:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:3:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:4:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:5:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:6:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:7:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:8:Object 10:16:0:Path 10:15:8392965:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:9:Object 10:16:1:Path 10:15:8392965:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aObjSetShields $$CHILD_BLOCK_START 10:1:0:8:Object 10:6:100.000000:Shields $$CHILD_BLOCK_END 08:aObjSetShields $$CHILD_BLOCK_START 10:1:0:9:Object 10:6:100.000000:Shields $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:10:Level INIT (Player Inventory) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:0:10:Object 06:qPlayerClosest:PlayerObject $$CHILD_BLOCK_START 10:1:0:11:Object 10:10:0:0:UserVar $$CHILD_BLOCK_END 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:0:12:Object 06:qPlayerClosest:PlayerObject $$CHILD_BLOCK_START 10:1:0:11:Object 10:10:0:0:UserVar $$CHILD_BLOCK_END 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:17:Level INIT (Terminals) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:0:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:1:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:40:Level INIT (Misc) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:13:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:14:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:13:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:10:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:11:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:8:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:9:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:13:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:12:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:42:Level FRAME (Left Creepers) $$CHILD_BLOCK_START 01:2:0 02:5 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:0:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:0:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:8:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:8:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:1:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:5.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:2:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:5.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:3:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:5.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:4:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:5.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:5:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:12:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:12:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:6:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:7:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:8:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:9:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:10:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:11:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:43:Level FRAME (Right Creepers) $$CHILD_BLOCK_START 01:2:0 02:5 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:1:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:12:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:13:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:13:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aPortalBreakGlass $$CHILD_BLOCK_START 10:4:0:PortalNum 10:2:13:Room $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:14:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:19:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:19:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:15:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:3.000000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:16:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:5.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:17:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:6.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:18:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:4.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:19:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:20:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:20:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:20:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:21:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:22:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:23:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:24:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:25:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:26:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:27:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:28:Room $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:9:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:0:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:9:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:cTimeGlassBreak $$CHILD_BLOCK_START 10:2:29:Room 10:4:0:PortalNum 06:qRandomValue:Seconds $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:8.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:72:IntroCam-1 $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 10:5:1:Literal 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:15:Object $$CHILD_BLOCK_END 08:aLightningTurnOn $$CHILD_BLOCK_START 10:6:0.100000:Seconds 10:9:0.080000:Probability $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:2:CameraPath 10:8:IntroMessage:Text 10:1:0:16:Target 10:6:8.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:73:IntroCam-2 $$CHILD_BLOCK_START 01:1:16 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegionAll $$CHILD_BLOCK_START 10:10:0:1:Region $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:17:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:0:18:Object 10:6:16.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:18:Object 10:16:3:Path 10:15:4352:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:19:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:20:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:4:CameraPath 10:8:EmptyMessage:Text 10:1:0:21:Target 10:6:8.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:77:Intro2 Spark $$CHILD_BLOCK_START 01:1:17 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:22:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:20.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:23:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:20.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:0:17:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:74:IntroCam-3 $$CHILD_BLOCK_START 01:1:21 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:5:CameraPath 10:8:EmptyMessage:Text 10:1:0:24:Target 10:6:9.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:75:IntroCam-4 $$CHILD_BLOCK_START 01:1:24 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aLightningTurnOn $$CHILD_BLOCK_START 10:6:0.150000:Seconds 10:9:0.080000:Probability $$CHILD_BLOCK_END 08:aAISetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:1:0:25:Object $$CHILD_BLOCK_END 08:aObjSetVelocity $$CHILD_BLOCK_START 10:1:0:25:Object 10:6:0.000000:X 10:6:0.000000:Y 10:6:-1.000000:Z 10:6:120.000000:Speed $$CHILD_BLOCK_END 08:aPhysFlags $$CHILD_BLOCK_START 10:10:0:1:Set/Clear 10:15:58787840:PhysicsFlags 10:1:0:25:Object $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:6:CameraPath 10:8:EmptyMessage:Text 10:1:0:26:Target 10:6:8.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:76:IntroCam-POST $$CHILD_BLOCK_START 01:1:26 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aLightningTurnOn $$CHILD_BLOCK_START 10:6:0.200000:Seconds 10:9:0.080000:Probability $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:25:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:1:Rolling Ball Initiator $$CHILD_BLOCK_START 01:0:0 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:Watchout:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:0:Sound 10:1:0:14:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:60.000000:Amount $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:1.000000:Time 10:10:0:13:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:2:RockWall Detonation $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:13:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:27:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:0.700000:SpewLife 10:6:14.000000:BlobSize 10:6:100.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:28:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:0.600000:SpewLife 10:6:22.000000:BlobSize 10:6:60.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjMakeVulnerable $$CHILD_BLOCK_START 10:1:0:14:Object $$CHILD_BLOCK_END 08:aObjDestroy $$CHILD_BLOCK_START 10:1:0:14:Object $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:1:Sound 10:1:0:13:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:50.000000:Amount $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:13:Object 10:6:0.350000:Time 10:10:0:3:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:13:Object 10:6:2.000000:Time 10:10:0:1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:8:Rolling Ball Drop $$CHILD_BLOCK_START 01:1:13 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:3:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:70.000000:Amount $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:28:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:0.800000:SpewLife 10:6:19.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:3:Rolling Ball Shaker $$CHILD_BLOCK_START 01:1:13 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:60.000000:Amount 10:6:400.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:2:-1:Object 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:1.000000:LowerLimit 10:6:2.500000:UpperLimit $$CHILD_BLOCK_END 10:10:0:1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:29:Rolling Ball Hit Something $$CHILD_BLOCK_START 01:1:13 02:0 03:0 $$CHILD_BLOCK_START 09:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayer:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qObjIsType:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:2:ObjectType $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjMakeVulnerable $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 08:aObjKill $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:0:DeathDelayType 10:10:0:1:DeathExplosionSize 10:15:196832:DeathFlags 10:6:0.000000:MinDelay 10:6:0.000000:MaxDelay $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:4:Rolling Ball Detonation $$CHILD_BLOCK_START 01:0:1 02:1 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:1:1:-1:Object 07:1:0 10:1:0:13:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:29:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:0.800000:SpewLife 10:6:32.000000:BlobSize 10:6:70.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:29:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:0.500000:SpewLife 10:6:20.000000:BlobSize 10:6:110.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:30:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:0.700000:SpewLife 10:6:22.000000:BlobSize 10:6:100.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:31:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:0.700000:SpewLife 10:6:22.000000:BlobSize 10:6:100.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:0.300000:Time 10:10:0:21:TimerID $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:30:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:15.000000:Speed $$CHILD_BLOCK_END 08:aObjMakeVulnerable $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:100.000000:Amount $$CHILD_BLOCK_END 08:aObjKill $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:0:DeathDelayType 10:10:0:2:DeathExplosionSize 10:15:524384:DeathFlags 10:6:0.000000:MinDelay 10:6:0.000000:MaxDelay $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:30:Rolling Ball Hit Part2 $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:21:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:30:Room 10:6:0.000000:X 10:6:0.000000:Y 10:6:0.000000:Z 10:6:1.000000:Speed $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:40.000000:Amount $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:31:INIT Crystal Bars $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aCloakObject $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:999999.000000:Seconds $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:32:Object $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:32:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:33:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:34:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:35:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:36:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:37:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:36:Object1 10:1:0:38:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:0:Texture 10:6:0.300000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:35:Object1 10:1:0:39:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:0:Texture 10:6:0.300000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:34:Object1 10:1:0:40:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:0:Texture 10:6:0.300000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:33:Object1 10:1:0:41:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:0:Texture 10:6:0.300000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:33:Crystal Hit 4 $$CHILD_BLOCK_START 01:1:36 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:2:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:37:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:30.000000:Number 10:1:0:37:Object $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:37:Object1 10:1:2:-1:Object2 10:6:99999.000000:Lifetime 10:6:1.500000:Thickness 10:4:2:NumTiles 10:14:0:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:2:-1:Object1 10:1:0:37:Object2 10:6:99999.000000:Lifetime 10:6:1.500000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:1.000000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:32:Crystal Hit 3 $$CHILD_BLOCK_START 01:1:35 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:2:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:37:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:30.000000:Number 10:1:0:37:Object $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:37:Object1 10:1:2:-1:Object2 10:6:99999.000000:Lifetime 10:6:2.500000:Thickness 10:4:2:NumTiles 10:14:0:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:2:-1:Object1 10:1:0:37:Object2 10:6:99999.000000:Lifetime 10:6:1.500000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:1.000000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:24:Crystal Hit 2 $$CHILD_BLOCK_START 01:1:34 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:2:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:37:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:30.000000:Number 10:1:0:37:Object $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:37:Object1 10:1:2:-1:Object2 10:6:99999.000000:Lifetime 10:6:2.500000:Thickness 10:4:2:NumTiles 10:14:0:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:2:-1:Object1 10:1:0:37:Object2 10:6:99999.000000:Lifetime 10:6:1.500000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:1.000000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:6:Crystal Hit 1 $$CHILD_BLOCK_START 01:1:33 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:2:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:37:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:30.000000:Number 10:1:0:37:Object $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:37:Object1 10:1:2:-1:Object2 10:6:99999.000000:Lifetime 10:6:2.500000:Thickness 10:4:2:NumTiles 10:14:0:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:180:Red 10:4:180:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:2:-1:Object1 10:1:0:37:Object2 10:6:99999.000000:Lifetime 10:6:1.500000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:1.000000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:58:Crystal Complete8 $$CHILD_BLOCK_START 01:1:32 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:3:Sound 10:1:0:42:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:4:Sound 10:1:0:43:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:0:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:44:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:45:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:46:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:47:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:42:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:43:Object 10:6:250.000000:Distance $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:0.000000:Distance $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:32:Object $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:31:Room 10:6:0.000000:X 10:6:0.000000:Y 10:6:0.000000:Z 10:6:1.000000:Speed $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:100.000000:Amount $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:48:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:0.600000:SpewLife 10:6:250.000000:BlobSize 10:6:50.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aPortalRenderToggle $$CHILD_BLOCK_START 10:4:0:PortalNum 10:2:31:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:57:Crystal Complete7 $$CHILD_BLOCK_START 01:1:48 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSoundStopObj $$CHILD_BLOCK_START 10:1:0:37:Object $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:5:Sound 10:1:0:32:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:0.250000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:100.000000:Amount $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:49:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:0.600000:SpewLife 10:6:300.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:50:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:0.600000:SpewLife 10:6:300.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:51:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:0.600000:SpewLife 10:6:300.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:52:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.000000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:0.600000:SpewLife 10:6:300.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:53:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.100000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:1.000000:SpewLife 10:6:300.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:54:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:0.900000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:0.400000:SpewLife 10:6:150.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:55:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:0.900000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:0.400000:SpewLife 10:6:150.000000:BlobSize 10:6:200.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:31:Room 10:6:0.000000:X 10:6:-1.000000:Y 10:6:0.000000:Z 10:6:40.000000:Speed $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:48:Crystal Complete6 $$CHILD_BLOCK_START 01:1:56 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:31:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.500000:Speed $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:48:Object 10:6:1.350000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:140.000000:Distance $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:1.700000:SpewLife 10:6:22.000000:BlobSize 10:6:60.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:46:Crystal Complete5 $$CHILD_BLOCK_START 01:1:57 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:56:Object 10:6:1.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:125.000000:Distance $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.200000:SpewLife 10:6:22.000000:BlobSize 10:6:60.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:45:Crystal Complete4 $$CHILD_BLOCK_START 01:1:58 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:57:Object 10:6:1.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:110.000000:Distance $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:4.700000:SpewLife 10:6:22.000000:BlobSize 10:6:60.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:44:Crystal Complete3 $$CHILD_BLOCK_START 01:1:59 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:58:Object 10:6:1.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:95.000000:Distance $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:6.200000:SpewLife 10:6:22.000000:BlobSize 10:6:60.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:7:Crystal Complete2 $$CHILD_BLOCK_START 01:1:60 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:6:Sound 10:1:0:37:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:59:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:32:Object $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:32:Object 10:6:80.000000:Distance $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:55:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:8.000000:SpewLife 10:6:12.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:54:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:8.000000:SpewLife 10:6:12.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:48:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:8.200000:SpewLife 10:6:14.000000:BlobSize 10:6:70.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:48:Object 10:4:-1:GunNum 10:10:0:2:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.300000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:8.200000:SpewLife 10:6:25.000000:BlobSize 10:6:50.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:48:Object1 10:1:0:60:Object2 10:6:8.100000:Lifetime 10:6:8.000000:Thickness 10:4:1:NumTiles 10:14:2:Texture 10:6:0.600000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:255:Green 10:4:150:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:47:Crystal Complete1 $$CHILD_BLOCK_START 01:1:37 02:9 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:6:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:24:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:32:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:33:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:60:Object 10:6:1.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:40.000000:Amount $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:48:Object1 10:1:0:37:Object2 10:6:9.200000:Lifetime 10:6:2.000000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:60:Object1 10:1:0:37:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:100:Red 10:4:200:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:37:INIT Patrols $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:61:Object 10:16:7:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:62:Object 10:16:7:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:63:Object 10:16:7:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:64:Object 10:16:7:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:65:Object 10:16:7:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:66:Object 10:16:8:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:67:Object 10:16:8:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:68:Object 10:16:8:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:69:Object 10:16:8:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:70:Object 10:16:9:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:71:Object 10:16:9:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:72:Object 10:16:9:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:73:Object 10:16:9:Path 10:15:8392704:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:74:Object 10:16:9:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:75:Object 10:16:9:Path 10:15:8392960:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:60:INIT Hub Terminals $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:76:Object1 10:1:0:77:Object2 10:6:99999.000000:Lifetime 10:6:5.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:150:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:76:Object1 10:1:0:77:Object2 10:6:99999.000000:Lifetime 10:6:3.500000:Thickness 10:4:1:NumTiles 10:14:3:Texture 10:6:0.800000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:78:Object1 10:1:0:79:Object2 10:6:99999.000000:Lifetime 10:6:5.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:150:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:78:Object1 10:1:0:79:Object2 10:6:99999.000000:Lifetime 10:6:3.500000:Thickness 10:4:1:NumTiles 10:14:3:Texture 10:6:0.800000:SlideTime 10:4:2:TimesDrawn 10:4:100:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:80:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:81:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:78:LeftDataArm Hit-1 $$CHILD_BLOCK_START 01:1:82 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:0 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:83:Object 10:6:50.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:78:Object 10:6:50.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:83:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:78:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:79:Object $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabInitData:Message $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:7:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:1:StartFrame 10:4:5:EndFrame 10:6:4.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:59:LeftDataArm Hit-2 $$CHILD_BLOCK_START 01:1:82 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qObjAnimFrame:Float $$CHILD_BLOCK_START 10:1:2:-1:Object $$CHILD_BLOCK_END 07:1:0 10:6:5.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qGoalCompleted:Bool $$CHILD_BLOCK_START 10:18:0:1:LevelGoal $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:0:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:14:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:84:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aPortalBreakGlass $$CHILD_BLOCK_START 10:4:0:PortalNum 10:2:32:Room $$CHILD_BLOCK_END 08:aPortalBreakGlass $$CHILD_BLOCK_START 10:4:0:PortalNum 10:2:33:Room $$CHILD_BLOCK_END 08:aPortalBreakGlass $$CHILD_BLOCK_START 10:4:0:PortalNum 10:2:34:Room $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:85:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:86:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:87:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:88:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:89:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:90:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:91:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:92:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:196608:Teams 10:1:0:93:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:94:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:95:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:96:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:97:Object $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:98:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:99:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:7:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:9:EndFrame 10:6:4.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:0:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:1:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:78:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:83:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:80:Object 10:6:60.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:83:Object1 10:1:0:78:Object2 10:6:99999.000000:Lifetime 10:6:5.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:150:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:78:Object1 10:1:0:80:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:4:Texture 10:6:0.600000:SlideTime 10:4:3:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:83:Object1 10:1:0:80:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:4:Texture 10:6:0.600000:SlideTime 10:4:3:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:4:TimerID $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:8:TimerID $$CHILD_BLOCK_END 08:aRoomFogSetState $$CHILD_BLOCK_START 10:10:0:1:On/Off 10:2:35:Room $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:35:Room 10:6:0.250000:Red 10:6:0.000000:Green 10:6:0.500000:Blue 10:6:300.000000:Depth $$CHILD_BLOCK_END 08:cFogRegion $$CHILD_BLOCK_START 10:10:0:0:LevelRegion 10:6:0.250000:Red 10:6:0.000000:Green 10:6:0.500000:Blue 10:6:1000.000000:Depth $$CHILD_BLOCK_END 08:cChangeFogRegion $$CHILD_BLOCK_START 10:10:0:0:LevelRegion 10:6:0.250000:Red 10:6:0.000000:Green 10:6:0.500000:Blue 10:6:300.000000:Depth 10:6:20.000000:Time $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:100:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:0:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:101:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:102:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:2:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:103:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:3:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:104:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:4:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:105:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:5:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:106:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:6:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:107:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:7:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:108:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:8:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:109:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:9:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:110:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:10:SpewHandle $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabInfected:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabNotReady:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:13:RightDataArm Hit-1 $$CHILD_BLOCK_START 01:1:111 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:0 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:76:Object 10:6:50.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:112:Object 10:6:50.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:76:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:112:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:77:Object $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabInitData:Message $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:7:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:1:StartFrame 10:4:5:EndFrame 10:6:4.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:14:RightDataArm Hit-2 $$CHILD_BLOCK_START 01:1:111 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qObjAnimFrame:Float $$CHILD_BLOCK_START 10:1:2:-1:Object $$CHILD_BLOCK_END 07:1:0 10:6:5.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qGoalCompleted:Bool $$CHILD_BLOCK_START 10:18:0:2:LevelGoal $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:1:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:15:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:113:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:114:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:115:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:116:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:117:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:118:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:119:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:196608:Teams 10:1:0:120:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:121:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:122:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 10:1:0:123:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:124:Object $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:131072:Teams 10:1:0:124:Object $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:80.000000:Amount $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:9:EndFrame 10:6:4.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:7:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:81:Object 10:6:60.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:76:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:112:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:76:Object1 10:1:0:81:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:4:Texture 10:6:0.600000:SlideTime 10:4:3:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:112:Object1 10:1:0:81:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:4:Texture 10:6:0.600000:SlideTime 10:4:3:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:112:Object1 10:1:0:76:Object2 10:6:99999.000000:Lifetime 10:6:5.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:150:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:1:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:2:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:6:TimerID $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:12:TimerID $$CHILD_BLOCK_END 08:cFogRegion $$CHILD_BLOCK_START 10:10:0:1:LevelRegion 10:6:0.500000:Red 10:6:0.000000:Green 10:6:0.250000:Blue 10:6:1000.000000:Depth $$CHILD_BLOCK_END 08:cChangeFogRegion $$CHILD_BLOCK_START 10:10:0:1:LevelRegion 10:6:0.500000:Red 10:6:0.000000:Green 10:6:0.250000:Blue 10:6:300.000000:Depth 10:6:20.000000:Time $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:125:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:126:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:127:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:11:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:128:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:12:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:129:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:13:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:130:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:14:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:131:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:15:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:132:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:16:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:133:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:17:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:134:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:18:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:135:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:20:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:136:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:21:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:137:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:22:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:138:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.150000:BlobInterval 10:6:-1.000000:SpewLife 10:6:4.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:1:Randomize 10:10:0:23:SpewHandle $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:RightLabInfected:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabNotReady:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:36:PICKUP Virus $$CHILD_BLOCK_START 01:1:10 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayer:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:2:-1:Object 10:1:1:-1:PlayerObject 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:50:PICKUP Virus 2 $$CHILD_BLOCK_START 01:1:12 02:0 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayer:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:2:-1:Object 10:1:1:-1:PlayerObject 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:18:Hub Virus Placement $$CHILD_BLOCK_START 01:1:10 02:25 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjGetDistance:Float $$CHILD_BLOCK_START 10:1:1:-1:Object1 10:1:0:80:Object2 $$CHILD_BLOCK_END 07:1:3 10:6:40.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:14:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:78:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabVirusPlaced:Message $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:14:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:0:80:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:80:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:0:80:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjGetDistance:Float $$CHILD_BLOCK_START 10:1:1:-1:Object1 10:1:0:81:Object2 $$CHILD_BLOCK_END 07:1:3 10:6:40.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:15:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:13:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabVirusPlaced:Message $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:15:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:0:81:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:81:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:0:81:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:2:-1:Object 10:1:1:-1:PlayerObject 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END 08:aShowColoredHUDMessageObj $$CHILD_BLOCK_START 10:4:255:Red 10:4:0:Green 10:4:0:Blue 10:8:VirusInfectFail:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:51:Hub Virus Placement 2 $$CHILD_BLOCK_START 01:1:12 02:25 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjGetDistance:Float $$CHILD_BLOCK_START 10:1:1:-1:Object1 10:1:0:80:Object2 $$CHILD_BLOCK_END 07:1:3 10:6:40.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:14:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:78:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabVirusPlaced:Message $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:14:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:0:80:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:80:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:0:80:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjGetDistance:Float $$CHILD_BLOCK_START 10:1:1:-1:Object1 10:1:0:81:Object2 $$CHILD_BLOCK_END 07:1:3 10:6:40.000000:Literal $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:15:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:13:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:LeftLabVirusPlaced:Message $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:15:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:0:81:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:81:Object $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:80.000000:Number 10:1:0:81:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:2:-1:Object $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:2:-1:Object 10:1:1:-1:PlayerObject 10:8:VirusDeviceName:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END 08:aShowColoredHUDMessageObj $$CHILD_BLOCK_START 10:4:255:Red 10:4:0:Green 10:4:0:Blue 10:8:VirusInfectFail:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:22:LeftLab Infection-On $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:4:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cRegionSetLightingFlicker $$CHILD_BLOCK_START 10:10:0:1:On/Off 10:10:0:0:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:2.000000:LowerLimit 10:6:4.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:5:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:9:LeftLab Infection-Off $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:5:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cRegionSetLightingFlicker $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:10:0:0:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:3.000000:LowerLimit 10:6:6.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:4:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:11:LeftLab Infection Door $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:8:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cMalfunctionRegionDoors $$CHILD_BLOCK_START 10:10:0:0:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:3.000000:LowerLimit 10:6:7.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:8:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:16:RightLab Infection-On $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:6:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cRegionSetLightingFlicker $$CHILD_BLOCK_START 10:10:0:1:On/Off 10:10:0:1:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:2.000000:LowerLimit 10:6:4.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:7:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:21:RightLab Infection-Off $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:7:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cRegionSetLightingFlicker $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:10:0:1:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:3.000000:LowerLimit 10:6:6.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:6:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:23:RightLab Infection Door $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:12:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cMalfunctionRegionDoors $$CHILD_BLOCK_START 10:10:0:1:LevelRegion $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:3.000000:LowerLimit 10:6:7.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:12:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:41:Both Hubs Infected $$CHILD_BLOCK_START 01:2:0 02:23 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:1:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:0:UserFlag $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:GetToPower:Message $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:0:0:Door 10:9:0.800000:Position $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:49:Creeper Timer Events $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:cExecTimerEvent $$CHILD_BLOCK_START 10:10:2:0:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:28:INIT Main Power Array $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:7:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:6:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:139:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:140:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:141:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:142:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:3:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:2:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:1:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:0:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:7:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:6:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:5:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:4:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:143:Object1 10:1:0:7:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:144:Object1 10:1:0:6:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:145:Object1 10:1:0:5:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:146:Object1 10:1:0:4:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:100:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:147:Object1 10:1:0:148:Object2 10:6:99999.000000:Lifetime 10:6:4.500000:Thickness 10:4:2:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:150:Green 10:4:100:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:149:Object1 10:1:0:150:Object2 10:6:99999.000000:Lifetime 10:6:3.500000:Thickness 10:4:2:NumTiles 10:14:0:Texture 10:6:0.500000:SlideTime 10:4:3:TimesDrawn 10:4:0:Red 10:4:150:Green 10:4:250:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:84:Receptor Switch4 $$CHILD_BLOCK_START 01:1:151 02:0 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:40.000000:Amount 10:6:200.000000:Dist $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:143:Object $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:3:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:2.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:7:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:4:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:3:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:9:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:4:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:83:Receptor Switch3 $$CHILD_BLOCK_START 01:1:152 02:0 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:40.000000:Amount 10:6:200.000000:Dist $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:144:Object $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:2:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:2.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:6:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:3:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:2:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:9:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:4:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:82:Receptor Switch2 $$CHILD_BLOCK_START 01:1:153 02:0 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:145:Object $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:1:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:2.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:5:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:2:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:1:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:9:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:4:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:40.000000:Amount 10:6:200.000000:Dist $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:19:Receptor Switch1 $$CHILD_BLOCK_START 01:1:154 02:0 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:146:Object $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:0:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:2.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:4:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:1:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:0:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:9:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:4:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:40.000000:Amount 10:6:200.000000:Dist $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:81:Receptor NodeShutdown4 $$CHILD_BLOCK_START 01:1:3 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:7:Object 10:4:1:StartFrame 10:4:2:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:SparkRate 10:6:2.000000:Time $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:6:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:80:Receptor NodeShutdown3 $$CHILD_BLOCK_START 01:1:2 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:6:Object 10:4:1:StartFrame 10:4:2:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:SparkRate 10:6:2.000000:Time $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:6:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:79:Receptor NodeShutdown2 $$CHILD_BLOCK_START 01:1:1 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:5:Object 10:4:1:StartFrame 10:4:2:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:SparkRate 10:6:2.000000:Time $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:6:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:20:Receptor NodeShutdown1 $$CHILD_BLOCK_START 01:1:0 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:4:Object 10:4:1:StartFrame 10:4:2:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:SparkRate 10:6:2.000000:Time $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:8:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:5:StartFrame 10:4:6:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:88:RestorePower3 $$CHILD_BLOCK_START 01:1:155 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:4.000000:Time 10:10:0:19:TimerID $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:7:Object 10:6:20.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:6:Object 10:6:20.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:5:Object 10:6:20.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:4:Object 10:6:20.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:5:Object1 10:1:0:141:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:2:NumTiles 10:14:4:Texture 10:6:0.500000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:6:Object1 10:1:0:140:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:2:NumTiles 10:14:4:Texture 10:6:0.500000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:4:Object1 10:1:0:142:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:2:NumTiles 10:14:4:Texture 10:6:0.500000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:7:Object1 10:1:0:139:Object2 10:6:99999.000000:Lifetime 10:6:3.000000:Thickness 10:4:2:NumTiles 10:14:4:Texture 10:6:0.500000:SlideTime 10:4:2:TimesDrawn 10:4:255:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:0:150:Object 10:6:80.000000:Amount 10:6:500.000000:Dist $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:87:RestorePower2 $$CHILD_BLOCK_START 01:1:156 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:139:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:140:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:141:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:142:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:139:Object 10:6:25.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:140:Object 10:6:25.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:141:Object 10:6:25.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:142:Object 10:6:25.000000:SparkRate 10:6:5.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:85:Restore Power $$CHILD_BLOCK_START 01:1:155 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:7:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:86:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:0 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:50.000000:Time 10:10:0:14:TimerID $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:60.000000:Time 10:10:0:16:TimerID $$CHILD_BLOCK_END 08:aTimerShow $$CHILD_BLOCK_START 10:10:0:16:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:156:Object 10:6:1.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:155:Object 10:6:4.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:0:0:Door 10:9:0.000000:Position $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:7:Object 10:4:2:StartFrame 10:4:3:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:6:Object 10:4:2:StartFrame 10:4:3:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:5:Object 10:4:2:StartFrame 10:4:3:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:4:Object 10:4:2:StartFrame 10:4:3:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:3:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:7:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:RechargeSucceed:Message $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:10:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:7:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:RechargeFail:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:86:Shutdown Power $$CHILD_BLOCK_START 01:1:156 02:0 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjIsPlayerWeapon:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:6:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:84:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:83:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:82:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:19:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:157:Object 10:6:1.000000:Red 10:6:0.200000:Green 10:6:0.200000:Blue $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:158:Object 10:6:1.000000:Red 10:6:0.200000:Green 10:6:0.200000:Blue $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:36:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:37:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:38:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:39:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:40:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:41:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:42:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:43:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:44:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:45:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:46:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:47:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:48:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aRoomSetLightingPulse $$CHILD_BLOCK_START 10:2:49:Room 10:6:20.000000:PulseTime 10:6:0.000000:PulseOffset $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:0:150:Object 10:6:80.000000:Amount 10:6:200.000000:Dist $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:150:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:147:Object 10:4:0:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.500000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:2.500000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:4:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:6:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aAISetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:1:0:159:Object $$CHILD_BLOCK_END 08:aAISetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:1:0:160:Object $$CHILD_BLOCK_END 08:aAISetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:1:0:161:Object $$CHILD_BLOCK_END 08:aAISetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:1:0:162:Object $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:2:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:3:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:4:SpewHandle $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:149:Object $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:148:Object $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:150:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:147:Object 10:6:30.000000:SparkRate 10:6:99999.000000:Time $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:DeactivateSucceed:Message $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:4:Sound 10:1:0:158:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:4:Sound 10:1:0:157:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:10:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:2:-1:Object 10:4:0:StartFrame 10:4:3:EndFrame 10:6:3.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:6:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:DeactivateFail:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:25:EndMovie-1 $$CHILD_BLOCK_START 01:1:163 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:164:Object 10:6:1.200000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:165:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:166:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:10.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:167:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:10.000000:SpewLife 10:6:4.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:168:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:3.000000:BlobSize 10:6:20.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aCinematicIntro $$CHILD_BLOCK_START 10:16:10:CameraPath 10:8:EmptyMessage:Text 10:1:0:39:TotallyNotUsedTarget 10:16:11:PlayerPath 10:6:8.000000:Seconds $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:27:EndMovie-1 Door Open $$CHILD_BLOCK_START 01:1:164 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:166:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:167:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:5.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:0:1:Door 10:9:1.000000:Position $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:26:EndMovie-2 $$CHILD_BLOCK_START 01:2:0 02:28 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:15:Object $$CHILD_BLOCK_END 08:aLightningTurnOn $$CHILD_BLOCK_START 10:6:0.100000:Seconds 10:9:0.080000:Probability $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:169:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:7.000000:BlobSize 10:6:50.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:170:Object 10:4:-1:GunNum 10:10:0:7:SpewType 10:6:0.000000:Mass 10:6:0.000000:Drag 10:15:65536:PhysicsFlags 10:5:0:IsRealObject 10:6:1.400000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:10.000000:SpewLife 10:6:7.000000:BlobSize 10:6:50.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:171:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:172:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:173:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aStartEndlevelSequencePath $$CHILD_BLOCK_START 10:16:12:CameraPath 10:16:13:PlayerPath 10:6:8.000000:Time 10:8:EmptyMessage:Text $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:38:Exit Level $$CHILD_BLOCK_START 01:0:2 02:1 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjIsPlayer:Bool $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 07:1:0 10:5:1:Bool $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:85:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aCancelTimer $$CHILD_BLOCK_START 10:10:0:16:TimerID $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:5:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:6:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:163:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:34:End Level in 10 seconds! $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:14:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aShowColoredHUDMessage $$CHILD_BLOCK_START 10:4:255:Red 10:4:0:Green 10:4:0:Blue 10:8:10Seconds:Message $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:35:Failed $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:23:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aGoalFailed $$CHILD_BLOCK_START 10:18:0:6:LevelGoal 10:10:0:1:Failed $$CHILD_BLOCK_END 08:aFailLevel $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:39:End Level Failure $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:16:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:3.800000:Time 10:10:0:23:TimerID $$CHILD_BLOCK_END 08:aFadeWhiteAndEndlevel $$CHILD_BLOCK_START 10:6:4.000000:Time 10:8:EmptyMessage:Text $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:54:Exit Shaker $$CHILD_BLOCK_START 01:2:0 02:9 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:2:0:TimerID 07:1:0 10:10:0:19:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMiscViewerShake $$CHILD_BLOCK_START 06:qRandomValue:Amount $$CHILD_BLOCK_START 10:6:40.000000:LowerLimit 10:6:70.000000:UpperLimit $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:1.500000:LowerLimit 10:6:3.500000:UpperLimit $$CHILD_BLOCK_END 10:10:0:19:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:63:Music-Level Start (Intro) $$CHILD_BLOCK_START 01:2:0 02:6 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegionAll $$CHILD_BLOCK_START 10:10:0:0:Region $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:71:Music-Level11 $$CHILD_BLOCK_START 01:0:3 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:5:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:70:Music-Level22 $$CHILD_BLOCK_START 01:0:4 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:4:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:69:Music-Level21 $$CHILD_BLOCK_START 01:0:5 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:4:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:68:Music-Level32 $$CHILD_BLOCK_START 01:0:6 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:3:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:67:Music-Level31 $$CHILD_BLOCK_START 01:0:7 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:3:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:66:Music-Temple21 $$CHILD_BLOCK_START 01:0:8 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:2:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:65:Music-Temple1 $$CHILD_BLOCK_START 01:0:9 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:2:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:64:Music-Outside1 $$CHILD_BLOCK_START 01:0:10 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMusicSetRegion $$CHILD_BLOCK_START 10:10:0:1:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:15:BrokenDoor $$CHILD_BLOCK_START 01:1:174 02:0 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:1:0 $$CHILD_BLOCK_START 08:aEmitSparks $$CHILD_BLOCK_START 06:qRandomValue:Number $$CHILD_BLOCK_START 10:6:10.000000:LowerLimit 10:6:50.000000:UpperLimit $$CHILD_BLOCK_END 10:1:2:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$SCRIPT_BLOCK_END *********************************************************/