/* * 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: Merc7.cpp // Version: 3 ///////////////////////////////////////////////////////////////////// #include #include #include #include #include "osiris_import.h" #include "osiris_common.h" #include "DallasFuncs.h" #include "module.h" #ifdef __cplusplus extern "C" { #endif DLLEXPORT char STDCALL InitializeDLL(tOSIRISModuleInit *func_list); DLLEXPORT void STDCALL ShutdownDLL(void); DLLEXPORT int STDCALL GetGOScriptID(const char *name, uint8_t is_door); DLLEXPORT void STDCALLPTR CreateInstance(int id); DLLEXPORT void STDCALL DestroyInstance(int id, void *ptr); DLLEXPORT int16_t STDCALL CallInstanceEvent(int id, void *ptr, int event, tOSIRISEventInfo *data); DLLEXPORT int STDCALL GetTriggerScriptID(int trigger_room, int trigger_face); DLLEXPORT int STDCALL GetCOScriptList(int **list, int **id_list); DLLEXPORT int STDCALL SaveRestoreState(void *file_ptr, uint8_t saving_state); #ifdef __cplusplus } #endif // ================= // Script ID Numbers // ================= #define ID_LEVEL_0000 0x000 #define ID_CUSTOM_OBJECT_0885 0x001 #define ID_CUSTOM_OBJECT_0884 0x002 #define ID_CUSTOM_OBJECT_0903 0x003 #define ID_CUSTOM_OBJECT_0902 0x004 #define ID_CUSTOM_OBJECT_0901 0x005 #define ID_CUSTOM_OBJECT_1025 0x006 #define ID_CUSTOM_OBJECT_103B 0x007 #define ID_CUSTOM_OBJECT_1038 0x008 #define ID_CUSTOM_OBJECT_2022 0x009 #define ID_CUSTOM_OBJECT_10AF 0x00a #define ID_CUSTOM_OBJECT_20AA 0x00b #define ID_CUSTOM_OBJECT_1031 0x00c #define ID_CUSTOM_OBJECT_0833 0x00d #define ID_CUSTOM_OBJECT_0951 0x00e #define ID_CUSTOM_OBJECT_0952 0x00f #define ID_CUSTOM_OBJECT_0953 0x010 #define ID_CUSTOM_OBJECT_0954 0x011 #define ID_CUSTOM_OBJECT_095F 0x012 #define ID_CUSTOM_OBJECT_0960 0x013 #define ID_CUSTOM_OBJECT_0961 0x014 #define ID_CUSTOM_OBJECT_0962 0x015 #define ID_CUSTOM_OBJECT_0869 0x016 #define ID_CUSTOM_OBJECT_0963 0x017 #define ID_CUSTOM_OBJECT_0964 0x018 #define ID_CUSTOM_OBJECT_0965 0x019 #define ID_CUSTOM_OBJECT_0966 0x01a #define ID_CUSTOM_OBJECT_0995 0x01b #define ID_CUSTOM_OBJECT_0994 0x01c #define ID_CUSTOM_OBJECT_0993 0x01d #define ID_CUSTOM_OBJECT_0992 0x01e #define ID_CUSTOM_OBJECT_1191 0x01f #define ID_CUSTOM_OBJECT_083D 0x020 #define ID_CUSTOM_OBJECT_103C 0x021 #define ID_CUSTOM_OBJECT_103E 0x022 #define ID_CUSTOM_OBJECT_0841 0x023 #define ID_CUSTOM_OBJECT_097A 0x024 #define ID_CUSTOM_OBJECT_0997 0x025 #define ID_CUSTOM_OBJECT_0996 0x026 #define ID_CUSTOM_OBJECT_0805 0x027 #define ID_CUSTOM_OBJECT_0804 0x028 #define ID_CUSTOM_OBJECT_0998 0x029 #define ID_CUSTOM_OBJECT_087E 0x02a #define ID_CUSTOM_OBJECT_1834 0x02b #define ID_CUSTOM_OBJECT_1877 0x02c #define ID_CUSTOM_OBJECT_1078 0x02d #define ID_CUSTOM_OBJECT_1070 0x02e #define ID_CUSTOM_OBJECT_2075 0x02f #define ID_CUSTOM_OBJECT_2076 0x030 #define ID_CUSTOM_OBJECT_2863 0x031 #define ID_CUSTOM_OBJECT_207A 0x032 #define ID_CUSTOM_OBJECT_206D 0x033 #define ID_CUSTOM_OBJECT_1079 0x034 #define ID_CUSTOM_OBJECT_09BF 0x035 #define ID_CUSTOM_OBJECT_09BE 0x036 #define ID_CUSTOM_OBJECT_09BD 0x037 #define ID_CUSTOM_OBJECT_09BC 0x038 #define ID_CUSTOM_OBJECT_1071 0x039 #define ID_CUSTOM_OBJECT_09CA 0x03a #define ID_CUSTOM_OBJECT_09C9 0x03b #define ID_CUSTOM_OBJECT_09C8 0x03c #define ID_CUSTOM_OBJECT_09C7 0x03d #define ID_CUSTOM_OBJECT_09C6 0x03e #define ID_CUSTOM_OBJECT_09C5 0x03f #define ID_CUSTOM_OBJECT_09C4 0x040 #define ID_CUSTOM_OBJECT_09C3 0x041 #define ID_CUSTOM_OBJECT_09C2 0x042 #define ID_CUSTOM_OBJECT_286E 0x043 #define ID_TRIGGER_0005 0x044 #define ID_TRIGGER_0000 0x045 #define ID_TRIGGER_0006 0x046 #define ID_TRIGGER_0004 0x047 #define ID_TRIGGER_0008 0x048 #define ID_TRIGGER_0009 0x049 #define ID_TRIGGER_000F 0x04a #define ID_TRIGGER_0013 0x04b #define ID_TRIGGER_0012 0x04c #define ID_TRIGGER_0011 0x04d #define ID_TRIGGER_0010 0x04e #define ID_TRIGGER_000E 0x04f #define ID_TRIGGER_000C 0x050 #define ID_TRIGGER_000D 0x051 #define ID_TRIGGER_000A 0x052 #define ID_TRIGGER_000B 0x053 // ======================== // Script Class Definitions // ======================== class BaseScript { public: virtual ~BaseScript() = default; virtual int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class LevelScript_0000 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0885 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0884 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0903 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0902 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0901 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1025 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_103B final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1038 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_2022 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_10AF final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_20AA final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1031 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0833 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0951 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0952 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0953 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0954 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_095F final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0960 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0961 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0962 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0869 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0963 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0964 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0965 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0966 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0995 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0994 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0993 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0992 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1191 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_083D final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_103C final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_103E final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0841 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_097A final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0997 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0996 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0805 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0804 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_0998 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_087E final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1834 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1877 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1078 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1070 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_2075 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_2076 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_2863 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_207A final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_206D final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1079 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09BF final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09BE final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09BD final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09BC final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_1071 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09CA final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C9 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C8 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C7 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C6 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C5 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C4 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C3 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_09C2 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class CustomObjectScript_286E final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0005 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0000 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0006 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0004 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0008 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0009 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000F final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0013 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0012 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0011 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_0010 final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000E final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000C final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000D final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000A final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; class TriggerScript_000B final : public BaseScript { public: int16_t CallEvent(int event, tOSIRISEventInfo *data); }; // ====================== // Global Action Counters // ====================== #define MAX_ACTION_CTR_VALUE 100000 int ScriptActionCtr_074 = 0; int ScriptActionCtr_088 = 0; int ScriptActionCtr_089 = 0; int ScriptActionCtr_087 = 0; int ScriptActionCtr_019 = 0; int ScriptActionCtr_105 = 0; int ScriptActionCtr_001 = 0; int ScriptActionCtr_100 = 0; int ScriptActionCtr_099 = 0; int ScriptActionCtr_098 = 0; int ScriptActionCtr_097 = 0; int ScriptActionCtr_096 = 0; int ScriptActionCtr_095 = 0; int ScriptActionCtr_094 = 0; int ScriptActionCtr_093 = 0; int ScriptActionCtr_092 = 0; int ScriptActionCtr_091 = 0; int ScriptActionCtr_090 = 0; int ScriptActionCtr_002 = 0; int ScriptActionCtr_018 = 0; int ScriptActionCtr_005 = 0; int ScriptActionCtr_065 = 0; int ScriptActionCtr_006 = 0; int ScriptActionCtr_008 = 0; int ScriptActionCtr_106 = 0; int ScriptActionCtr_059 = 0; int ScriptActionCtr_016 = 0; int ScriptActionCtr_010 = 0; int ScriptActionCtr_011 = 0; int ScriptActionCtr_014 = 0; int ScriptActionCtr_015 = 0; int ScriptActionCtr_017 = 0; int ScriptActionCtr_058 = 0; int ScriptActionCtr_060 = 0; int ScriptActionCtr_061 = 0; int ScriptActionCtr_062 = 0; int ScriptActionCtr_063 = 0; int ScriptActionCtr_067 = 0; int ScriptActionCtr_064 = 0; int ScriptActionCtr_066 = 0; int ScriptActionCtr_068 = 0; int ScriptActionCtr_101 = 0; int ScriptActionCtr_102 = 0; int ScriptActionCtr_103 = 0; int ScriptActionCtr_104 = 0; int ScriptActionCtr_003 = 0; int ScriptActionCtr_031 = 0; int ScriptActionCtr_030 = 0; int ScriptActionCtr_029 = 0; int ScriptActionCtr_028 = 0; int ScriptActionCtr_024 = 0; int ScriptActionCtr_027 = 0; int ScriptActionCtr_026 = 0; int ScriptActionCtr_025 = 0; int ScriptActionCtr_023 = 0; int ScriptActionCtr_112 = 0; int ScriptActionCtr_107 = 0; int ScriptActionCtr_033 = 0; int ScriptActionCtr_108 = 0; int ScriptActionCtr_034 = 0; int ScriptActionCtr_109 = 0; int ScriptActionCtr_035 = 0; int ScriptActionCtr_111 = 0; int ScriptActionCtr_110 = 0; int ScriptActionCtr_036 = 0; int ScriptActionCtr_032 = 0; int ScriptActionCtr_113 = 0; int ScriptActionCtr_118 = 0; int ScriptActionCtr_117 = 0; int ScriptActionCtr_116 = 0; int ScriptActionCtr_115 = 0; int ScriptActionCtr_114 = 0; int ScriptActionCtr_038 = 0; int ScriptActionCtr_039 = 0; int ScriptActionCtr_044 = 0; int ScriptActionCtr_040 = 0; int ScriptActionCtr_041 = 0; int ScriptActionCtr_042 = 0; int ScriptActionCtr_043 = 0; int ScriptActionCtr_131 = 0; int ScriptActionCtr_050 = 0; int ScriptActionCtr_072 = 0; int ScriptActionCtr_022 = 0; int ScriptActionCtr_075 = 0; int ScriptActionCtr_037 = 0; int ScriptActionCtr_020 = 0; int ScriptActionCtr_045 = 0; int ScriptActionCtr_046 = 0; int ScriptActionCtr_049 = 0; int ScriptActionCtr_048 = 0; int ScriptActionCtr_077 = 0; int ScriptActionCtr_057 = 0; int ScriptActionCtr_056 = 0; int ScriptActionCtr_055 = 0; int ScriptActionCtr_054 = 0; int ScriptActionCtr_047 = 0; int ScriptActionCtr_076 = 0; int ScriptActionCtr_071 = 0; int ScriptActionCtr_070 = 0; int ScriptActionCtr_069 = 0; int ScriptActionCtr_051 = 0; int ScriptActionCtr_086 = 0; int ScriptActionCtr_085 = 0; int ScriptActionCtr_084 = 0; int ScriptActionCtr_083 = 0; int ScriptActionCtr_082 = 0; int ScriptActionCtr_081 = 0; int ScriptActionCtr_080 = 0; int ScriptActionCtr_079 = 0; int ScriptActionCtr_078 = 0; int ScriptActionCtr_073 = 0; int ScriptActionCtr_053 = 0; int ScriptActionCtr_052 = 0; int ScriptActionCtr_004 = 0; int ScriptActionCtr_007 = 0; int ScriptActionCtr_009 = 0; int ScriptActionCtr_012 = 0; int ScriptActionCtr_013 = 0; int ScriptActionCtr_119 = 0; int ScriptActionCtr_000 = 0; int ScriptActionCtr_120 = 0; int ScriptActionCtr_130 = 0; int ScriptActionCtr_129 = 0; int ScriptActionCtr_128 = 0; int ScriptActionCtr_127 = 0; int ScriptActionCtr_126 = 0; int ScriptActionCtr_125 = 0; int ScriptActionCtr_124 = 0; int ScriptActionCtr_123 = 0; int ScriptActionCtr_122 = 0; int ScriptActionCtr_121 = 0; int ScriptActionCtr_021 = 0; // ======================================== // Function to Clear Global Action Counters // ======================================== void ClearGlobalActionCtrs(void) { ScriptActionCtr_074 = 0; ScriptActionCtr_088 = 0; ScriptActionCtr_089 = 0; ScriptActionCtr_087 = 0; ScriptActionCtr_019 = 0; ScriptActionCtr_105 = 0; ScriptActionCtr_001 = 0; ScriptActionCtr_100 = 0; ScriptActionCtr_099 = 0; ScriptActionCtr_098 = 0; ScriptActionCtr_097 = 0; ScriptActionCtr_096 = 0; ScriptActionCtr_095 = 0; ScriptActionCtr_094 = 0; ScriptActionCtr_093 = 0; ScriptActionCtr_092 = 0; ScriptActionCtr_091 = 0; ScriptActionCtr_090 = 0; ScriptActionCtr_002 = 0; ScriptActionCtr_018 = 0; ScriptActionCtr_005 = 0; ScriptActionCtr_065 = 0; ScriptActionCtr_006 = 0; ScriptActionCtr_008 = 0; ScriptActionCtr_106 = 0; ScriptActionCtr_059 = 0; ScriptActionCtr_016 = 0; ScriptActionCtr_010 = 0; ScriptActionCtr_011 = 0; ScriptActionCtr_014 = 0; ScriptActionCtr_015 = 0; ScriptActionCtr_017 = 0; ScriptActionCtr_058 = 0; ScriptActionCtr_060 = 0; ScriptActionCtr_061 = 0; ScriptActionCtr_062 = 0; ScriptActionCtr_063 = 0; ScriptActionCtr_067 = 0; ScriptActionCtr_064 = 0; ScriptActionCtr_066 = 0; ScriptActionCtr_068 = 0; ScriptActionCtr_101 = 0; ScriptActionCtr_102 = 0; ScriptActionCtr_103 = 0; ScriptActionCtr_104 = 0; ScriptActionCtr_003 = 0; ScriptActionCtr_031 = 0; ScriptActionCtr_030 = 0; ScriptActionCtr_029 = 0; ScriptActionCtr_028 = 0; ScriptActionCtr_024 = 0; ScriptActionCtr_027 = 0; ScriptActionCtr_026 = 0; ScriptActionCtr_025 = 0; ScriptActionCtr_023 = 0; ScriptActionCtr_112 = 0; ScriptActionCtr_107 = 0; ScriptActionCtr_033 = 0; ScriptActionCtr_108 = 0; ScriptActionCtr_034 = 0; ScriptActionCtr_109 = 0; ScriptActionCtr_035 = 0; ScriptActionCtr_111 = 0; ScriptActionCtr_110 = 0; ScriptActionCtr_036 = 0; ScriptActionCtr_032 = 0; ScriptActionCtr_113 = 0; ScriptActionCtr_118 = 0; ScriptActionCtr_117 = 0; ScriptActionCtr_116 = 0; ScriptActionCtr_115 = 0; ScriptActionCtr_114 = 0; ScriptActionCtr_038 = 0; ScriptActionCtr_039 = 0; ScriptActionCtr_044 = 0; ScriptActionCtr_040 = 0; ScriptActionCtr_041 = 0; ScriptActionCtr_042 = 0; ScriptActionCtr_043 = 0; ScriptActionCtr_131 = 0; ScriptActionCtr_050 = 0; ScriptActionCtr_072 = 0; ScriptActionCtr_022 = 0; ScriptActionCtr_075 = 0; ScriptActionCtr_037 = 0; ScriptActionCtr_020 = 0; ScriptActionCtr_045 = 0; ScriptActionCtr_046 = 0; ScriptActionCtr_049 = 0; ScriptActionCtr_048 = 0; ScriptActionCtr_077 = 0; ScriptActionCtr_057 = 0; ScriptActionCtr_056 = 0; ScriptActionCtr_055 = 0; ScriptActionCtr_054 = 0; ScriptActionCtr_047 = 0; ScriptActionCtr_076 = 0; ScriptActionCtr_071 = 0; ScriptActionCtr_070 = 0; ScriptActionCtr_069 = 0; ScriptActionCtr_051 = 0; ScriptActionCtr_086 = 0; ScriptActionCtr_085 = 0; ScriptActionCtr_084 = 0; ScriptActionCtr_083 = 0; ScriptActionCtr_082 = 0; ScriptActionCtr_081 = 0; ScriptActionCtr_080 = 0; ScriptActionCtr_079 = 0; ScriptActionCtr_078 = 0; ScriptActionCtr_073 = 0; ScriptActionCtr_053 = 0; ScriptActionCtr_052 = 0; ScriptActionCtr_004 = 0; ScriptActionCtr_007 = 0; ScriptActionCtr_009 = 0; ScriptActionCtr_012 = 0; ScriptActionCtr_013 = 0; ScriptActionCtr_119 = 0; ScriptActionCtr_000 = 0; ScriptActionCtr_120 = 0; ScriptActionCtr_130 = 0; ScriptActionCtr_129 = 0; ScriptActionCtr_128 = 0; ScriptActionCtr_127 = 0; ScriptActionCtr_126 = 0; ScriptActionCtr_125 = 0; ScriptActionCtr_124 = 0; ScriptActionCtr_123 = 0; ScriptActionCtr_122 = 0; ScriptActionCtr_121 = 0; ScriptActionCtr_021 = 0; } // ======================================== // Function to Save Global Action Counters // ======================================== void SaveGlobalActionCtrs(void *file_ptr) { File_WriteInt(ScriptActionCtr_074, file_ptr); File_WriteInt(ScriptActionCtr_088, file_ptr); File_WriteInt(ScriptActionCtr_089, file_ptr); File_WriteInt(ScriptActionCtr_087, file_ptr); File_WriteInt(ScriptActionCtr_019, file_ptr); File_WriteInt(ScriptActionCtr_105, file_ptr); File_WriteInt(ScriptActionCtr_001, file_ptr); File_WriteInt(ScriptActionCtr_100, file_ptr); File_WriteInt(ScriptActionCtr_099, file_ptr); File_WriteInt(ScriptActionCtr_098, file_ptr); File_WriteInt(ScriptActionCtr_097, file_ptr); File_WriteInt(ScriptActionCtr_096, file_ptr); File_WriteInt(ScriptActionCtr_095, file_ptr); File_WriteInt(ScriptActionCtr_094, file_ptr); File_WriteInt(ScriptActionCtr_093, file_ptr); File_WriteInt(ScriptActionCtr_092, file_ptr); File_WriteInt(ScriptActionCtr_091, file_ptr); File_WriteInt(ScriptActionCtr_090, file_ptr); File_WriteInt(ScriptActionCtr_002, file_ptr); File_WriteInt(ScriptActionCtr_018, file_ptr); File_WriteInt(ScriptActionCtr_005, file_ptr); File_WriteInt(ScriptActionCtr_065, file_ptr); File_WriteInt(ScriptActionCtr_006, file_ptr); File_WriteInt(ScriptActionCtr_008, file_ptr); File_WriteInt(ScriptActionCtr_106, file_ptr); File_WriteInt(ScriptActionCtr_059, file_ptr); File_WriteInt(ScriptActionCtr_016, file_ptr); File_WriteInt(ScriptActionCtr_010, file_ptr); File_WriteInt(ScriptActionCtr_011, file_ptr); File_WriteInt(ScriptActionCtr_014, file_ptr); File_WriteInt(ScriptActionCtr_015, file_ptr); File_WriteInt(ScriptActionCtr_017, file_ptr); File_WriteInt(ScriptActionCtr_058, file_ptr); File_WriteInt(ScriptActionCtr_060, file_ptr); File_WriteInt(ScriptActionCtr_061, file_ptr); File_WriteInt(ScriptActionCtr_062, file_ptr); File_WriteInt(ScriptActionCtr_063, file_ptr); File_WriteInt(ScriptActionCtr_067, file_ptr); File_WriteInt(ScriptActionCtr_064, file_ptr); File_WriteInt(ScriptActionCtr_066, file_ptr); File_WriteInt(ScriptActionCtr_068, file_ptr); File_WriteInt(ScriptActionCtr_101, file_ptr); File_WriteInt(ScriptActionCtr_102, file_ptr); File_WriteInt(ScriptActionCtr_103, file_ptr); File_WriteInt(ScriptActionCtr_104, file_ptr); File_WriteInt(ScriptActionCtr_003, file_ptr); File_WriteInt(ScriptActionCtr_031, file_ptr); File_WriteInt(ScriptActionCtr_030, file_ptr); File_WriteInt(ScriptActionCtr_029, file_ptr); File_WriteInt(ScriptActionCtr_028, file_ptr); File_WriteInt(ScriptActionCtr_024, file_ptr); File_WriteInt(ScriptActionCtr_027, file_ptr); File_WriteInt(ScriptActionCtr_026, file_ptr); File_WriteInt(ScriptActionCtr_025, file_ptr); File_WriteInt(ScriptActionCtr_023, file_ptr); File_WriteInt(ScriptActionCtr_112, file_ptr); File_WriteInt(ScriptActionCtr_107, file_ptr); File_WriteInt(ScriptActionCtr_033, file_ptr); File_WriteInt(ScriptActionCtr_108, file_ptr); File_WriteInt(ScriptActionCtr_034, file_ptr); File_WriteInt(ScriptActionCtr_109, file_ptr); File_WriteInt(ScriptActionCtr_035, file_ptr); File_WriteInt(ScriptActionCtr_111, file_ptr); File_WriteInt(ScriptActionCtr_110, file_ptr); File_WriteInt(ScriptActionCtr_036, file_ptr); File_WriteInt(ScriptActionCtr_032, file_ptr); File_WriteInt(ScriptActionCtr_113, file_ptr); File_WriteInt(ScriptActionCtr_118, file_ptr); File_WriteInt(ScriptActionCtr_117, file_ptr); File_WriteInt(ScriptActionCtr_116, file_ptr); File_WriteInt(ScriptActionCtr_115, file_ptr); File_WriteInt(ScriptActionCtr_114, file_ptr); File_WriteInt(ScriptActionCtr_038, file_ptr); File_WriteInt(ScriptActionCtr_039, file_ptr); File_WriteInt(ScriptActionCtr_044, file_ptr); File_WriteInt(ScriptActionCtr_040, file_ptr); File_WriteInt(ScriptActionCtr_041, file_ptr); File_WriteInt(ScriptActionCtr_042, file_ptr); File_WriteInt(ScriptActionCtr_043, file_ptr); File_WriteInt(ScriptActionCtr_131, file_ptr); File_WriteInt(ScriptActionCtr_050, file_ptr); File_WriteInt(ScriptActionCtr_072, file_ptr); File_WriteInt(ScriptActionCtr_022, file_ptr); File_WriteInt(ScriptActionCtr_075, file_ptr); File_WriteInt(ScriptActionCtr_037, file_ptr); File_WriteInt(ScriptActionCtr_020, file_ptr); File_WriteInt(ScriptActionCtr_045, file_ptr); File_WriteInt(ScriptActionCtr_046, file_ptr); File_WriteInt(ScriptActionCtr_049, file_ptr); File_WriteInt(ScriptActionCtr_048, file_ptr); File_WriteInt(ScriptActionCtr_077, file_ptr); File_WriteInt(ScriptActionCtr_057, file_ptr); File_WriteInt(ScriptActionCtr_056, file_ptr); File_WriteInt(ScriptActionCtr_055, file_ptr); File_WriteInt(ScriptActionCtr_054, file_ptr); File_WriteInt(ScriptActionCtr_047, file_ptr); File_WriteInt(ScriptActionCtr_076, file_ptr); File_WriteInt(ScriptActionCtr_071, file_ptr); File_WriteInt(ScriptActionCtr_070, file_ptr); File_WriteInt(ScriptActionCtr_069, file_ptr); File_WriteInt(ScriptActionCtr_051, file_ptr); File_WriteInt(ScriptActionCtr_086, file_ptr); File_WriteInt(ScriptActionCtr_085, file_ptr); File_WriteInt(ScriptActionCtr_084, file_ptr); File_WriteInt(ScriptActionCtr_083, file_ptr); File_WriteInt(ScriptActionCtr_082, file_ptr); File_WriteInt(ScriptActionCtr_081, file_ptr); File_WriteInt(ScriptActionCtr_080, file_ptr); File_WriteInt(ScriptActionCtr_079, file_ptr); File_WriteInt(ScriptActionCtr_078, file_ptr); File_WriteInt(ScriptActionCtr_073, file_ptr); File_WriteInt(ScriptActionCtr_053, file_ptr); File_WriteInt(ScriptActionCtr_052, file_ptr); File_WriteInt(ScriptActionCtr_004, file_ptr); File_WriteInt(ScriptActionCtr_007, file_ptr); File_WriteInt(ScriptActionCtr_009, file_ptr); File_WriteInt(ScriptActionCtr_012, file_ptr); File_WriteInt(ScriptActionCtr_013, file_ptr); File_WriteInt(ScriptActionCtr_119, file_ptr); File_WriteInt(ScriptActionCtr_000, file_ptr); File_WriteInt(ScriptActionCtr_120, file_ptr); File_WriteInt(ScriptActionCtr_130, file_ptr); File_WriteInt(ScriptActionCtr_129, file_ptr); File_WriteInt(ScriptActionCtr_128, file_ptr); File_WriteInt(ScriptActionCtr_127, file_ptr); File_WriteInt(ScriptActionCtr_126, file_ptr); File_WriteInt(ScriptActionCtr_125, file_ptr); File_WriteInt(ScriptActionCtr_124, file_ptr); File_WriteInt(ScriptActionCtr_123, file_ptr); File_WriteInt(ScriptActionCtr_122, file_ptr); File_WriteInt(ScriptActionCtr_121, file_ptr); File_WriteInt(ScriptActionCtr_021, file_ptr); } // =========================================== // Function to Restore Global Action Counters // =========================================== void RestoreGlobalActionCtrs(void *file_ptr) { ScriptActionCtr_074 = File_ReadInt(file_ptr); ScriptActionCtr_088 = File_ReadInt(file_ptr); ScriptActionCtr_089 = File_ReadInt(file_ptr); ScriptActionCtr_087 = File_ReadInt(file_ptr); ScriptActionCtr_019 = File_ReadInt(file_ptr); ScriptActionCtr_105 = File_ReadInt(file_ptr); ScriptActionCtr_001 = File_ReadInt(file_ptr); ScriptActionCtr_100 = File_ReadInt(file_ptr); ScriptActionCtr_099 = File_ReadInt(file_ptr); ScriptActionCtr_098 = File_ReadInt(file_ptr); ScriptActionCtr_097 = File_ReadInt(file_ptr); ScriptActionCtr_096 = File_ReadInt(file_ptr); ScriptActionCtr_095 = File_ReadInt(file_ptr); ScriptActionCtr_094 = File_ReadInt(file_ptr); ScriptActionCtr_093 = File_ReadInt(file_ptr); ScriptActionCtr_092 = File_ReadInt(file_ptr); ScriptActionCtr_091 = File_ReadInt(file_ptr); ScriptActionCtr_090 = File_ReadInt(file_ptr); ScriptActionCtr_002 = File_ReadInt(file_ptr); ScriptActionCtr_018 = File_ReadInt(file_ptr); ScriptActionCtr_005 = File_ReadInt(file_ptr); ScriptActionCtr_065 = File_ReadInt(file_ptr); ScriptActionCtr_006 = File_ReadInt(file_ptr); ScriptActionCtr_008 = File_ReadInt(file_ptr); ScriptActionCtr_106 = File_ReadInt(file_ptr); ScriptActionCtr_059 = File_ReadInt(file_ptr); ScriptActionCtr_016 = File_ReadInt(file_ptr); ScriptActionCtr_010 = File_ReadInt(file_ptr); ScriptActionCtr_011 = File_ReadInt(file_ptr); ScriptActionCtr_014 = File_ReadInt(file_ptr); ScriptActionCtr_015 = File_ReadInt(file_ptr); ScriptActionCtr_017 = File_ReadInt(file_ptr); ScriptActionCtr_058 = File_ReadInt(file_ptr); ScriptActionCtr_060 = File_ReadInt(file_ptr); ScriptActionCtr_061 = File_ReadInt(file_ptr); ScriptActionCtr_062 = File_ReadInt(file_ptr); ScriptActionCtr_063 = File_ReadInt(file_ptr); ScriptActionCtr_067 = File_ReadInt(file_ptr); ScriptActionCtr_064 = File_ReadInt(file_ptr); ScriptActionCtr_066 = File_ReadInt(file_ptr); ScriptActionCtr_068 = File_ReadInt(file_ptr); ScriptActionCtr_101 = File_ReadInt(file_ptr); ScriptActionCtr_102 = File_ReadInt(file_ptr); ScriptActionCtr_103 = File_ReadInt(file_ptr); ScriptActionCtr_104 = File_ReadInt(file_ptr); ScriptActionCtr_003 = File_ReadInt(file_ptr); ScriptActionCtr_031 = File_ReadInt(file_ptr); ScriptActionCtr_030 = File_ReadInt(file_ptr); ScriptActionCtr_029 = File_ReadInt(file_ptr); ScriptActionCtr_028 = File_ReadInt(file_ptr); ScriptActionCtr_024 = File_ReadInt(file_ptr); ScriptActionCtr_027 = File_ReadInt(file_ptr); ScriptActionCtr_026 = File_ReadInt(file_ptr); ScriptActionCtr_025 = File_ReadInt(file_ptr); ScriptActionCtr_023 = File_ReadInt(file_ptr); ScriptActionCtr_112 = File_ReadInt(file_ptr); ScriptActionCtr_107 = File_ReadInt(file_ptr); ScriptActionCtr_033 = File_ReadInt(file_ptr); ScriptActionCtr_108 = File_ReadInt(file_ptr); ScriptActionCtr_034 = File_ReadInt(file_ptr); ScriptActionCtr_109 = File_ReadInt(file_ptr); ScriptActionCtr_035 = File_ReadInt(file_ptr); ScriptActionCtr_111 = File_ReadInt(file_ptr); ScriptActionCtr_110 = File_ReadInt(file_ptr); ScriptActionCtr_036 = File_ReadInt(file_ptr); ScriptActionCtr_032 = File_ReadInt(file_ptr); ScriptActionCtr_113 = File_ReadInt(file_ptr); ScriptActionCtr_118 = File_ReadInt(file_ptr); ScriptActionCtr_117 = File_ReadInt(file_ptr); ScriptActionCtr_116 = File_ReadInt(file_ptr); ScriptActionCtr_115 = File_ReadInt(file_ptr); ScriptActionCtr_114 = File_ReadInt(file_ptr); ScriptActionCtr_038 = File_ReadInt(file_ptr); ScriptActionCtr_039 = File_ReadInt(file_ptr); ScriptActionCtr_044 = File_ReadInt(file_ptr); ScriptActionCtr_040 = File_ReadInt(file_ptr); ScriptActionCtr_041 = File_ReadInt(file_ptr); ScriptActionCtr_042 = File_ReadInt(file_ptr); ScriptActionCtr_043 = File_ReadInt(file_ptr); ScriptActionCtr_131 = File_ReadInt(file_ptr); ScriptActionCtr_050 = File_ReadInt(file_ptr); ScriptActionCtr_072 = File_ReadInt(file_ptr); ScriptActionCtr_022 = File_ReadInt(file_ptr); ScriptActionCtr_075 = File_ReadInt(file_ptr); ScriptActionCtr_037 = File_ReadInt(file_ptr); ScriptActionCtr_020 = File_ReadInt(file_ptr); ScriptActionCtr_045 = File_ReadInt(file_ptr); ScriptActionCtr_046 = File_ReadInt(file_ptr); ScriptActionCtr_049 = File_ReadInt(file_ptr); ScriptActionCtr_048 = File_ReadInt(file_ptr); ScriptActionCtr_077 = File_ReadInt(file_ptr); ScriptActionCtr_057 = File_ReadInt(file_ptr); ScriptActionCtr_056 = File_ReadInt(file_ptr); ScriptActionCtr_055 = File_ReadInt(file_ptr); ScriptActionCtr_054 = File_ReadInt(file_ptr); ScriptActionCtr_047 = File_ReadInt(file_ptr); ScriptActionCtr_076 = File_ReadInt(file_ptr); ScriptActionCtr_071 = File_ReadInt(file_ptr); ScriptActionCtr_070 = File_ReadInt(file_ptr); ScriptActionCtr_069 = File_ReadInt(file_ptr); ScriptActionCtr_051 = File_ReadInt(file_ptr); ScriptActionCtr_086 = File_ReadInt(file_ptr); ScriptActionCtr_085 = File_ReadInt(file_ptr); ScriptActionCtr_084 = File_ReadInt(file_ptr); ScriptActionCtr_083 = File_ReadInt(file_ptr); ScriptActionCtr_082 = File_ReadInt(file_ptr); ScriptActionCtr_081 = File_ReadInt(file_ptr); ScriptActionCtr_080 = File_ReadInt(file_ptr); ScriptActionCtr_079 = File_ReadInt(file_ptr); ScriptActionCtr_078 = File_ReadInt(file_ptr); ScriptActionCtr_073 = File_ReadInt(file_ptr); ScriptActionCtr_053 = File_ReadInt(file_ptr); ScriptActionCtr_052 = File_ReadInt(file_ptr); ScriptActionCtr_004 = File_ReadInt(file_ptr); ScriptActionCtr_007 = File_ReadInt(file_ptr); ScriptActionCtr_009 = File_ReadInt(file_ptr); ScriptActionCtr_012 = File_ReadInt(file_ptr); ScriptActionCtr_013 = File_ReadInt(file_ptr); ScriptActionCtr_119 = File_ReadInt(file_ptr); ScriptActionCtr_000 = File_ReadInt(file_ptr); ScriptActionCtr_120 = File_ReadInt(file_ptr); ScriptActionCtr_130 = File_ReadInt(file_ptr); ScriptActionCtr_129 = File_ReadInt(file_ptr); ScriptActionCtr_128 = File_ReadInt(file_ptr); ScriptActionCtr_127 = File_ReadInt(file_ptr); ScriptActionCtr_126 = File_ReadInt(file_ptr); ScriptActionCtr_125 = File_ReadInt(file_ptr); ScriptActionCtr_124 = File_ReadInt(file_ptr); ScriptActionCtr_123 = File_ReadInt(file_ptr); ScriptActionCtr_122 = File_ReadInt(file_ptr); ScriptActionCtr_121 = File_ReadInt(file_ptr); ScriptActionCtr_021 = File_ReadInt(file_ptr); } // =============================================================== // Start of Custom Script Block - DO NOT EDIT ANYTHING BEFORE THIS // =============================================================== /**{CUSTOM_SCRIPT_BLOCK_START}** DO NOT EDIT! **/ /* $$ENUM Region 0:Intro 1:Sewer 2:Maintenence 3:MidSection 4:Tower 5:Bomb 6:Boss $$END */ /* $$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 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(uint8_t timer_class, uint8_t index) { return (SPECIAL_TIMER_ID_BASE + (timer_class % SPECIAL_TIMER_CLASSES) * SPECIAL_TIMER_MAX + index); } /* $$ACTION Custom Timer [e:Enable/Disable] forcefield at portal [i:PortalNum] in room [r:Room]; Double-sided = [b:DoublesidedFlag=1], time = [f:Time] cTimedEnableForcefield Delayed enabling/disabling of forcefield. Delays enabling/disabling of forcefield for a specified time Parameters: Enable/Disable: Forcefield state PortalNum: portal number of forcefield Room: room number Double-sided: do on both sides of portal Time: In seconds $$END */ static uint8_t ff_index = 0; static struct t_ff_enable_data { int16_t room_number; int16_t portal_num; bool state; bool double_sided; } ff_enable_data[8]; void cTimedEnableForcefield(int state, int portal_num, int room_number, bool double_sided, float time) { mprintf(0, "hello....\n"); if (ff_index >= 8) ff_index = 0; ff_enable_data[ff_index].room_number = room_number; ff_enable_data[ff_index].portal_num = portal_num; ff_enable_data[ff_index].state = (bool)(state ? true : false); ff_enable_data[ff_index].double_sided = double_sided; aSetLevelTimer(time, LEVEL_TIMER_UID(0, ff_index++)); } /* $$ACTION Custom Timer delay of wind in room [r:Room], direction = <[f:X],[f:Y],[f:Z]>, speed = [f:Speed=1.0], time = [f:Time] cTimedRoomSetWind Set wind in room after delay Sets the wind after specified delay. Parameters: Room: the room in which to set the wind X,Y,Z: the direction vector for the wind Speed: the speed of the wind (10.0 is faster than the player ship) Time: delay time. $$END */ static uint8_t wind_fx_index = 0; static struct t_wind_fx_data { int room_number; float x, y, z; float speed; } wind_fx_data[8]; void cTimedRoomSetWind(int room_number, float x, float y, float z, float speed, float time) { if (wind_fx_index >= 8) wind_fx_index = 0; wind_fx_data[wind_fx_index].room_number = room_number; wind_fx_data[wind_fx_index].x = x; wind_fx_data[wind_fx_index].y = y; wind_fx_data[wind_fx_index].z = z; wind_fx_data[wind_fx_index].speed = speed; aSetLevelTimer(time, LEVEL_TIMER_UID(1, wind_fx_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 < 8 && index >= 0) { aPortalRenderSet(ff_enable_data[index].state, ff_enable_data[index].portal_num, ff_enable_data[index].room_number, ff_enable_data[index].double_sided); } break; case 1: // timed wind delay if (index < 8 && index >= 0) { aRoomSetWind(wind_fx_data[index].room_number, wind_fx_data[index].x, wind_fx_data[index].y, wind_fx_data[index].z, wind_fx_data[index].speed); } break; } } // DROID CENTRAL AI // Essentially, lifters will be scurrying around droid central exiting, forming, etc. // stopping at terminals. // // X is a value from 1 to ??? // EQC is equilibrium counter // // DALLAS SCRIPT // // To switch to a terminal, choose one object DCPath-X // tell lifter to go to DCPath-X, custom goal // call custom goal handler for custom goal when reached from DALLAS // query every so often to switch to either exit or new terminal // // To exit, choose one object DCExit-X // let DALLAS handle DCExit-X triggers X1-XN // call custom trigger handler for trigger // this handler will tell bot to go to object DCDead-X, custom goal // call custom goal handler for custom goal when reached from DALLAS // when goal is reached, kill object, adjust equilibrium counter EQC // custom goal id base number #define SPECIAL_GOAL_ID_BASE 1000 #define SPECIAL_GOAL_CLASSES 1 #define SPECIAL_GOAL_MAX 256 #define GOAL_PRIORITY_HIGH 3 #define GOAL_PRIORITY_LOW 0 inline int LEVEL_GOAL_UID(uint8_t goal_class, uint8_t index) { return (SPECIAL_TIMER_ID_BASE + (goal_class % SPECIAL_GOAL_CLASSES) * SPECIAL_GOAL_MAX + index); } static uint8_t DC_Goal_Index = 0; #define DC_N_DROIDS 32 #define DC_EXIT_GOAL 0 #define DC_TERM_GOAL 1 #define DC_END_GOAL 2 static struct t_dc_node { int handle; // OBJECT_HANDLE_NONE = free node. int type; // -1 = free goal. int type_index; // data value for goal type (term = terminal number) int goalid; float timer; float orig_maxspeed; // original maxspeed. } dc_nodes[DC_N_DROIDS]; static float DC_Time_Since_Last_Create = 0.0f; static float DC_Last_Game_Time = 0.0f; #define DC_N_VALID_EXITS 4 const char *DC_Valid_Exits[DC_N_VALID_EXITS] = {"DCExit-1", "DCExit-2", "DCExit-3", "DCExit-2"}; static int DC_Valid_Exit_Handles[DC_N_VALID_EXITS]; static int DC_Valid_Exit_RoomHandles[DC_N_VALID_EXITS]; static unsigned DC_Exit_Mask = 0; // used to exclude slots to prevent conflicts const char *DC_Valid_Ends[DC_N_VALID_EXITS] = {"DCEnd-1", "DCEnd-2", "DCEnd-3", "DCEnd-4"}; static int DC_Valid_End_Handles[DC_N_VALID_EXITS]; #define DC_N_VALID_TERMS 5 const char *DC_Valid_Terms[DC_N_VALID_TERMS] = {"DCPath-1", "DCPath-2", "DCPath-3", "DCPath-4", "DCPath-5"}; static int DC_Valid_Term_Handles[DC_N_VALID_TERMS]; static unsigned DC_Term_Mask = 0; // used to exclude slots to prevent conflicts #define DC_N_VALID_MATCENS 4 const char *DC_Valid_Matcens[DC_N_VALID_MATCENS] = {"DCMatcen-1", "DCMatcen-2", "DCMatcen-3", "DCMatcen-4"}; static int DC_Valid_Matcen_Handles[DC_N_VALID_MATCENS]; static unsigned DC_Matcen_Mask = 0; // used to exclude slots to prevent conflicts static int DC_EQR = -5; // droid equilibrium register. // if < 0, that's how many droids we're int16_t // if > 0, this means we must tell some droids to leave! void DCDetermineObjFate(int objhandle, bool new_droid); // this function will return a random free index in a max (bit must be 0) // if there are none, then return a random index?? inline int FIND_FREE_INDEX(unsigned mask, unsigned max_items, bool allow_duplicates) { int i; int8_t indices[32]; int8_t nindices = 0; for (i = 0; i < max_items; i++) { if ((mask & (1 << i)) == 0) { indices[nindices++] = i; } } if (nindices == 0) { if (allow_duplicates) { return (rand() % max_items); } else { return -1; } } else { return (int)(indices[rand() % nindices]); } } /* $$ACTION Custom Reset Droid Central cResetDroidCentral Resets droid central resets droid central Parameters: None $$END */ void cResetDroidCentral() { int i; for (i = 0; i < DC_N_DROIDS; i++) { dc_nodes[i].handle = OBJECT_HANDLE_NONE; dc_nodes[i].type = -1; dc_nodes[i].goalid = -1; dc_nodes[i].timer = 0.0f; } for (i = 0; i < DC_N_VALID_EXITS; i++) { DC_Valid_Exit_Handles[i] = Scrpt_FindObjectName(DC_Valid_Exits[i]); DC_Valid_Exit_RoomHandles[i] = Scrpt_FindRoomName(DC_Valid_Exits[i]); DC_Valid_End_Handles[i] = Scrpt_FindObjectName(DC_Valid_Ends[i]); } for (i = 0; i < DC_N_VALID_TERMS; i++) { DC_Valid_Term_Handles[i] = Scrpt_FindObjectName(DC_Valid_Terms[i]); } for (i = 0; i < DC_N_VALID_MATCENS; i++) { DC_Valid_Matcen_Handles[i] = Scrpt_FindMatcenName(DC_Valid_Matcens[i]); } DC_EQR = -5; DC_Time_Since_Last_Create = 0.0f; DC_Last_Game_Time = Game_GetTime(); mprintf(0, "DC: RESETTING DROID MANAGER\n"); } /* $$ACTION Custom Destroy Droid Central cDestroyDroidCentral Destroys Droid Central stops and destroys all active droids. Parameters: None $$END */ void cDestroyDroidCentral() { int i; for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle != OBJECT_HANDLE_NONE) { aObjDestroy(dc_nodes[i].handle); } } cResetDroidCentral(); DC_EQR = -100; } /* $$ACTION Custom Add [o:Object] to Droid Manager cAddObjToDroidManager Adds an object (robot) to droid manager. manually adds an object to the droid manager, usually matcened so that manager can send it events. Parameters: Object: A robot (usually lifter matcened) $$END */ void cAddObjToDroidManager(int objhandle) { int i; if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle == OBJECT_HANDLE_NONE) { dc_nodes[i].handle = objhandle; dc_nodes[i].type = -1; dc_nodes[i].goalid = -1; dc_nodes[i].timer = 0.0f; dc_nodes[i].orig_maxspeed = qAIQueryMaxSpeed(objhandle); aAISetMaxSpeed(objhandle, dc_nodes[i].orig_maxspeed * 1.5f); // set new max speed DC_EQR++; // increment droid register break; } } if (i == DC_N_DROIDS) { mprintf(0, "DC:TOO MANY DROIDS!!!\n"); } } /* $$ACTION Custom Remove [o:Object] from Droid Manager cRemoveObjFromDroidManager Remove an object (robot) from droid manager. manually removes an object to the droid manager. Parameters: Object: A robot (usually lifter matcened) $$END */ void cRemoveObjFromDroidManager(int objhandle) { int i; if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle == objhandle) { dc_nodes[i].handle = OBJECT_HANDLE_NONE; dc_nodes[i].type = -1; dc_nodes[i].goalid = -1; aAISetMaxSpeed(objhandle, dc_nodes[i].orig_maxspeed); // restore speed DC_EQR--; // decrement droid register break; } } if (i == DC_N_DROIDS) { mprintf(0, "DC:OBJECT NOT MANAGED, CAN'T DELETE IT!!\n"); } } /* $$ACTION Custom Create new droid at a Matcen cDroidManagerCreateNew Forces droid manager to create a new droid itself. Droid manager will create a new droid and assign it a task. Parameters: None $$END */ void cDroidManagerCreateNew() { if (DC_EQR == -100) { return; } // activates a chosen matcen int matc = FIND_FREE_INDEX(DC_Matcen_Mask, DC_N_VALID_MATCENS, true); int matcenid = DC_Valid_Matcen_Handles[matc]; aMatcenSetState(1, matcenid); // activate matcen. DC_Matcen_Mask |= (1 << matc); DC_Time_Since_Last_Create = 0.0f; mprintf(0, "DC: CREATING NEW DROID\n"); } /* $$ACTION Custom Droid Manager Handle Matcen [m:Matcen] Generate of Object [o:Object]. cDroidManagerHandleMatcen Handles all droid matcen events should be called whenever a matcen event is generated. this call will determine if it's a managed matcen Parameters: Matcen: Matcen ID Object: Object to add to droid manager. $$END */ void cDroidManagerHandleMatcen(int matcenid, int objhandle) { int i; for (i = 0; i < DC_N_VALID_MATCENS; i++) { if (matcenid == DC_Valid_Matcen_Handles[i]) { cAddObjToDroidManager(objhandle); // add object to manager DCDetermineObjFate(objhandle, true); // supplementary AI for droid aMatcenSetState(0, matcenid); // deactivate matcen. DC_Matcen_Mask &= ~(1 << i); break; } } if (i == DC_N_VALID_MATCENS) { mprintf(0, "DC: MATCEN NOT IN LIST!!!\n"); } } /* $$ACTION Custom Droid Manager Handle GoalID [e:GoalID=-1] for Droid [o:Object]. cDroidManagerHandleGoals Handles all droid goal events. function is the complement for Droid Manager Frame Interval, handles goals like exit, terminal and end goals. Parameters: GoalID: Goal ID Object: Object that triggered the goal. $$END */ void cDroidManagerHandleGoals(int goalid, int objhandle) { int i, goalid2; if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { // alright, check if object is in list. then check if the goal is there too. if (dc_nodes[i].handle == objhandle && dc_nodes[i].goalid == goalid && dc_nodes[i].type != -1) { switch (dc_nodes[i].type) { case DC_EXIT_GOAL: // deactivate forcefield (should be portal 1 of room) // send object to the end goal, if there is one. otherwise just kill it now (BAD design) // end and exit and exit room handle indices should match up always aPortalRenderSet(0, 1, DC_Valid_Exit_RoomHandles[dc_nodes[i].type_index], true); DC_Exit_Mask &= ~(1 << dc_nodes[i].type_index); goalid2 = LEVEL_GOAL_UID(0, DC_Goal_Index++); aAIGoalGotoObject(objhandle, DC_Valid_End_Handles[dc_nodes[i].type_index], GOAL_PRIORITY_LOW, GF_FORCE_AWARENESS | GF_ORIENT_VELOCITY, goalid2); dc_nodes[i].type = DC_END_GOAL; // specify end to be allocated. dc_nodes[i].goalid = goalid2; dc_nodes[i].timer = 0.0f; mprintf(0, "DC: DROID [%d] REACHES EXIT %d\n", i, dc_nodes[i].type_index); break; case DC_END_GOAL: // reactivate forcefield // kill droid, it has met its end. aPortalRenderSet(1, 1, DC_Valid_Exit_RoomHandles[dc_nodes[i].type_index], true); aObjDelete(dc_nodes[i].handle); cRemoveObjFromDroidManager(dc_nodes[i].handle); mprintf(0, "DC: DROID [%d] REACHES ITS END\n", i); break; case DC_TERM_GOAL: // if i can think of anything nice, i'll put it here, but this should be unnecessary. mprintf(0, "DC: DROID [%d] REACHES TERMINAL %d\n", i, dc_nodes[i].type_index); dc_nodes[i].goalid = -1; dc_nodes[i].timer = 0.0f; break; } } } } /* $$ACTION Custom Tell droid [o:Object] to find an exit from Droid Central. cSendDroidObjToExit Sends a message to a droid to find an exit. Sends droid out of Droid Central. If object is not a member of droid central, it adds it. Parameters: Object: A robot $$END */ void cSendDroidObjToExit(int objhandle) { int i; bool free_slot = false; if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle == objhandle) { // okay, find a free exit int exit = FIND_FREE_INDEX(DC_Exit_Mask, DC_N_VALID_EXITS, true); int goalid = LEVEL_GOAL_UID(0, DC_Goal_Index++); // deallocate terminal if this droid was working at one!! if (dc_nodes[i].type == DC_TERM_GOAL) { DC_Term_Mask &= ~(1 << dc_nodes[i].type_index); } mprintf(0, "DC: SENDING DROID [%d] to exit %d (%x)\n", i, exit, DC_Valid_Exit_Handles[exit]); aAIGoalGotoObject(objhandle, DC_Valid_Exit_Handles[exit], GOAL_PRIORITY_LOW, GF_FORCE_AWARENESS | GF_ORIENT_VELOCITY, goalid); dc_nodes[i].type = DC_EXIT_GOAL; dc_nodes[i].type_index = exit; dc_nodes[i].goalid = goalid; dc_nodes[i].timer = 0.0f; DC_Exit_Mask |= (1 << exit); // reserve index break; } if (dc_nodes[i].handle == OBJECT_HANDLE_NONE) { free_slot = true; } } if (i == DC_N_DROIDS) { if (free_slot) { mprintf(0, "DC: Sending an unmanaged droid to exit. Adding...\n"); cAddObjToDroidManager(objhandle); cSendDroidObjToExit(objhandle); // recursive... safeguards should be already implemented above } else { // THING TO DO: should be force an object to leave here?? mprintf(0, "DC: Droid Manager is Full!! We should force a droid to exit.\n"); } } } /* $$ACTION Custom Tell droid [o:Object] to find a computer terminal in Droid Central. cSendDroidObjToTerm Sends a message to a droid to find an exit. Sends droid out of Droid Central. If object is not a member of droid central, it adds it. Parameters: Object: A robot $$END */ void cSendDroidObjToTerm(int objhandle) { int i; bool free_slot = false; if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { int j; if (dc_nodes[i].handle == objhandle) { // okay, find a free terminal int term = FIND_FREE_INDEX(DC_Term_Mask, DC_N_VALID_TERMS, false); int goalid = LEVEL_GOAL_UID(0, DC_Goal_Index++); if (term == -1) { // the terminals are full. tell a droid to take a break (exit) // and put this droid in its place. for (j = 0; j < DC_N_DROIDS; j++) { if (dc_nodes[i].handle != OBJECT_HANDLE_NONE && dc_nodes[i].type == DC_TERM_GOAL) { cSendDroidObjToExit(dc_nodes[i].handle); term = dc_nodes[i].type_index; break; } } if (j == DC_N_DROIDS) { // this is IMPOSSIBLE if the sequencing and logic i have is right. // if there was no terminal, the above code checks for a full terminal and deallocates it. // but just in case... term = rand() % DC_N_VALID_TERMS; } } // just in case, deallocate exit if this droid was leaving before... if (dc_nodes[i].type == DC_EXIT_GOAL) { DC_Exit_Mask &= ~(1 << dc_nodes[i].type_index); } mprintf(0, "DC: SENDING DROID [%d] to term %d (%x)\n", i, term, DC_Valid_Term_Handles[term]); aAIGoalGotoObject(objhandle, DC_Valid_Term_Handles[term], GOAL_PRIORITY_LOW, GF_FORCE_AWARENESS | GF_ORIENT_VELOCITY, goalid); dc_nodes[i].type = DC_TERM_GOAL; // specify terminal to be allocated. dc_nodes[i].type_index = term; dc_nodes[i].goalid = goalid; dc_nodes[i].timer = 0.0f; DC_Term_Mask |= (1 << term); break; } if (dc_nodes[i].handle == OBJECT_HANDLE_NONE) { free_slot = true; } } if (i == DC_N_DROIDS) { if (free_slot) { mprintf(0, "DC: Sending an unmanaged droid to term. Adding...\n"); cAddObjToDroidManager(objhandle); cSendDroidObjToTerm(objhandle); // recursive... safeguards should be already implemented above } else { // THING TO DO: should be force an object to leave here?? mprintf(0, "DC: Droid Manager is Full!! We should force a droid to exit.\n"); } } } /* $$ACTION Custom Droid Manager Frame Interval cDroidManagerInterval Manages the droid center This will 'intelligently' assign, create and destroy droids. Parameters: None $$END */ void cDroidManagerInterval() { // we should check if any object in our list still exists // if not, and we didn't free it, then the player did // and we should update DC_EQR to reflect this. int i; float roll; float saving_throw; float gametime = Game_GetTime(); if (DC_EQR == -100) { return; } for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle != OBJECT_HANDLE_NONE) { if (!qObjExists(dc_nodes[i].handle)) { cRemoveObjFromDroidManager(dc_nodes[i].handle); } else { dc_nodes[i].timer += (gametime - DC_Last_Game_Time); } } } // okay, sometimes we need to create droids, and other times kill them. if (DC_EQR < 0) { // tell a matcen to create a droid. cDroidManagerCreateNew(); } else if (DC_EQR >= 0) { int ndroids = 0; int droids[DC_N_DROIDS]; for (i = 0; i < DC_N_DROIDS; i++) { if (dc_nodes[i].handle != OBJECT_HANDLE_NONE) { droids[ndroids++] = i; } } if (ndroids) { // if we have droids, do a random fate choice roll for them DCDetermineObjFate(dc_nodes[droids[rand() % ndroids]].handle, false); // randomly decide whether to add another bot. roll = (float)(rand() / (float)(RAND_MAX)); saving_throw = (DC_Time_Since_Last_Create / 60.0f) * 0.5f; if (roll < saving_throw && DC_EQR == 0) { cDroidManagerCreateNew(); mprintf(0, "DC: RANDOMLY CREATING NEW DROID.\n"); } } } mprintf(0, "DC: Frame Interval DC_EQR = %d\n", DC_EQR); DC_Time_Since_Last_Create += (gametime - DC_Last_Game_Time); DC_Last_Game_Time = gametime; } // given an object, check if on list, then determine whether it should be assigned a goal // and WHICH goal to assign it. // new droids should be put to work preferably instead of exiting, but add a little randomness to // this. also take into account the current DC_EQR!!! void DCDetermineObjFate(int objhandle, bool new_droid) { int idx; for (idx = 0; idx < DC_N_DROIDS; idx++) { if (objhandle == dc_nodes[idx].handle) { if (dc_nodes[idx].type == -1) { float roll = (float)(rand() / (float)(RAND_MAX)); float saving_throw = 0.30f + (DC_EQR * 0.15f); mprintf(0, "DC: Determining fate of DROID [%d] that has no goal.\n", idx); if (roll < saving_throw && !new_droid) { // droid will leave droid central cSendDroidObjToExit(objhandle); } else { // droid will go to a free terminal and bump someone off if there are none. cSendDroidObjToTerm(objhandle); } } else if (dc_nodes[idx].goalid == -1) { // robots already at goal. float roll = (float)(rand() / (float)(RAND_MAX)); float saving_throw = (dc_nodes[idx].timer / 45.0f) * 0.40f; mprintf(0, "DC: Determining fate of DROID [%d] after %.2f seconds!\n", idx, dc_nodes[idx].timer); if (dc_nodes[idx].type == DC_TERM_GOAL) { if (roll < saving_throw) { // droid will leave droid central cSendDroidObjToExit(objhandle); } else { // droid will go to a free terminal and bump someone off if there are none. cSendDroidObjToTerm(objhandle); } } } // else { // mprintf(0, "DC: DROID FATE IS ALREADY SEALED. NO CHANGE.\n"); //} break; } } if (idx == DC_N_DROIDS) { mprintf(0, "DC: DROID NOT IN LIST!!!\n"); } } // Tell the code to call our functions #define ENABLE_CUSTOM_SAVE_AND_RESTORE // Save custom data for this script void dsCustomSave(void *fileptr) { int i; // write out timed events File_WriteByte(ff_index, fileptr); for (i = 0; i < 8; i++) { File_WriteShort(ff_enable_data[i].room_number, fileptr); File_WriteShort(ff_enable_data[i].portal_num, fileptr); File_WriteByte((int8_t)(ff_enable_data[i].state), fileptr); File_WriteByte((int8_t)(ff_enable_data[i].double_sided), fileptr); } File_WriteByte(wind_fx_index, fileptr); for (i = 0; i < 8; i++) { File_WriteInt(wind_fx_data[i].room_number, fileptr); File_WriteFloat(wind_fx_data[i].x, fileptr); File_WriteFloat(wind_fx_data[i].y, fileptr); File_WriteFloat(wind_fx_data[i].z, fileptr); File_WriteFloat(wind_fx_data[i].speed, fileptr); } // write DC_EQR File_WriteInt(DC_EQR, fileptr); // write all nodes File_WriteByte(DC_Goal_Index, fileptr); for (i = 0; i < DC_N_DROIDS; i++) { File_WriteInt(dc_nodes[i].handle, fileptr); File_WriteInt(dc_nodes[i].type, fileptr); File_WriteInt(dc_nodes[i].type_index, fileptr); File_WriteInt(dc_nodes[i].goalid, fileptr); File_WriteFloat(dc_nodes[i].timer, fileptr); File_WriteFloat(dc_nodes[i].orig_maxspeed, fileptr); } File_WriteFloat(DC_Time_Since_Last_Create, fileptr); File_WriteFloat(DC_Last_Game_Time, fileptr); File_WriteInt(DC_Exit_Mask, fileptr); File_WriteInt(DC_Term_Mask, fileptr); File_WriteInt(DC_Matcen_Mask, fileptr); } // Restore custom data for this script void dsCustomRestore(void *fileptr) { int i; // read in timed events ff_index = File_ReadByte(fileptr); for (i = 0; i < 8; i++) { ff_enable_data[i].room_number = File_ReadShort(fileptr); ff_enable_data[i].portal_num = File_ReadShort(fileptr); ff_enable_data[i].state = (bool)File_ReadByte(fileptr); ff_enable_data[i].double_sided = (bool)File_ReadByte(fileptr); } wind_fx_index = File_ReadByte(fileptr); for (i = 0; i < 8; i++) { wind_fx_data[i].room_number = File_ReadInt(fileptr); wind_fx_data[i].x = File_ReadFloat(fileptr); wind_fx_data[i].y = File_ReadFloat(fileptr); wind_fx_data[i].z = File_ReadFloat(fileptr); wind_fx_data[i].speed = File_ReadFloat(fileptr); } // dc cResetDroidCentral(); // read in DC_EQR DC_EQR = File_ReadInt(fileptr); // read in all nodes DC_Goal_Index = File_ReadByte(fileptr); for (i = 0; i < DC_N_DROIDS; i++) { dc_nodes[i].handle = File_ReadInt(fileptr); dc_nodes[i].type = File_ReadInt(fileptr); dc_nodes[i].type_index = File_ReadInt(fileptr); dc_nodes[i].goalid = File_ReadInt(fileptr); dc_nodes[i].timer = File_ReadFloat(fileptr); dc_nodes[i].orig_maxspeed = File_ReadFloat(fileptr); } DC_Time_Since_Last_Create = File_ReadFloat(fileptr); DC_Last_Game_Time = File_ReadFloat(fileptr); DC_Exit_Mask = File_ReadInt(fileptr); DC_Term_Mask = File_ReadInt(fileptr); DC_Matcen_Mask = File_ReadInt(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 struct tScriptMessage { char *name; // the name of the message char *message; // the actual message text }; // 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(const 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 const char *GetMessage(const 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 const char *Door_names[NUM_DOOR_NAMES] = {"BossDoor", "DroidDoor2"}; int Door_handles[NUM_DOOR_NAMES]; #define NUM_OBJECT_NAMES 152 const char *Object_names[NUM_OBJECT_NAMES] = {"ParkSpew1", "ParkSpew2", "ParkSpew3", "ParkSpew4", "TargetIntro2", "TargetIntro1", "IntroSpew1", "IntroSpew2", "TheBomb", "BST-1", "BST-2", "BST-3", "BST-C6", "BST-C5", "BST-C4", "BST-C3", "BST-C2", "BST-C1", "BST-A-A", "BST-A-B", "BST-A-C", "BST-B-A", "BST-B-B", "IG3C", "IG3B", "IG3A", "IG2D", "IG2C", "IG2B", "IG2A", "IG1B", "IG1A", "TPower10", "TGun10", "TPower9", "TGun9", "TPower8", "TGun8", "TPower7", "TGun7", "TPower6", "TGun6", "TPower5", "TGun5", "TPower4", "TGun4", "TPower3", "TGun3", "TPower2", "TGun2", "TPower1", "TGun1", "MntLifterMatcenA", "LoEnter1", "LoEnter2", "LoExit1", "LoExit2", "HiUpEntry1", "HiUpEntry2", "HiUpExit1", "HiUpExit2", "TopLifterMatcen", "HiDnEntry1", "HiDnEntry2", "HiDnExit1", "HiDnExit2", "FireMan1", "FireMan2", "FireLight", "BoxFire2B", "BoxFire2A", "BoxFire1B", "BoxFire1A", "NFire2B", "NFire2A", "NFire1B", "NFire1A", "Napalm2B", "Napalm2A", "Napalm1B", "Napalm1A", "FireSpew1", "FireSpew2", "FireHandle2", "FireHandle1", "HalonSpewer1", "HalonSpewer-2", "HalonSpewer3", "HalonSpewer4", "DroidDoor2", "DroidFireDoor1", "MGuard6", "MGuard5", "MGuard-4", "MGuard-3", "MGuard-2", "MGuard-1", "TPowerX", "TGunX4", "TGunX3", "TGunX2", "TGunX1", "TGunX", "EBarPlace", "DaBomb", "EndBoss", "Julian", "ShowBomb", "PBomb", "RedFlashBar", "PNode3", "PBar3", "PNode2", "PBar2", "PNode1", "PBar1", "Suzuki", "SZTarget1", "SZTarget3", "SZTarget2", "SZSpot1", "SZSpot2", "PNode4", "SZTarget4", "PX1", "PX2", "PX3", "PX4", "PExplode1", "PExplode2", "PExplode3", "SZ5Fire4", "SZ5Fire3", "SZ5Fire2", "SZ5Fire1", "SZTarget5", "SZ5Fire2A", "SZF1", "SZF2", "SZF3", "SZF4", "SZF5", "SZF6", "SZF7", "SZF8", "SZF9", "SZF10", "SZTarget6", "SZF15", "SZF13", "SZF14", "Start End Boss Cin"}; int Object_handles[NUM_OBJECT_NAMES]; #define NUM_ROOM_NAMES 18 const char *Room_names[NUM_ROOM_NAMES] = {"BossRoom", "HiDnShaft", "HiUpShaft", "LoShaft", "LoEntrance", "LoExit", "HiUpEntrance", "HiUpExit", "HiDnEntrance", "HiDnExit", "FireRoom", "PreBoss", "SuzukiOffice", "DroidExplode1", "DroidExplosion", "DroidCommand", "ElevatorRoom", "PreFireRoom"}; int Room_indexes[NUM_ROOM_NAMES]; #define NUM_TRIGGER_NAMES 16 const char *Trigger_names[NUM_TRIGGER_NAMES] = {"EnterMaintenence", "MntLifterInit", "StartUpperLifters", "BossRoomEntrance", "RoboDestroy", "DestroyMe", "MusicBoss", "MusicSuzuki2", "MusicSuzuki1", "MusicMid4", "MusicMid3", "MusicMid2", "MusicMid1", "MusicMaint2", "MusicMaint1", "MusicSewer1"}; int Trigger_indexes[NUM_TRIGGER_NAMES]; int Trigger_faces[NUM_TRIGGER_NAMES]; int Trigger_rooms[NUM_TRIGGER_NAMES]; #define NUM_SOUND_NAMES 2 const char *Sound_names[NUM_SOUND_NAMES] = {"AmbSirenIntense", "AmbSwitch31"}; int Sound_indexes[NUM_SOUND_NAMES]; #define NUM_TEXTURE_NAMES 3 const char *Texture_names[NUM_TEXTURE_NAMES] = {"MeshGlass1", "FunkyEffectGreen", "FunkyEffect3"}; int Texture_indexes[NUM_TEXTURE_NAMES]; #define NUM_PATH_NAMES 57 const char *Path_names[NUM_PATH_NAMES] = {"IntroCam-2", "IntroCam-1", "IntroCam-Ship", "IntroPlayerPath", "BST-1", "BST-2", "BST-3", "BST-C6", "BST-C5", "BST-C4", "BST-C3", "BST-C2", "BST-C1", "BST-A-1", "BST-A-2", "BST-A-3", "BST-B-1", "BST-B-2", "IG-3", "IG-2", "IG-1", "LoLeft1", "LoRight1", "LoEntry", "LoExit", "HiUp1", "HiUpEntry", "HiUpExit", "HiRight1", "HiLeft1", "DnEntry", "DnExit", "FirePathIn", "Fire2", "Fire1", "FirePathOut", "Guards", "BombPickup2", "BombPickup1", "BombTake", "BossCam", "SZCam1", "SZCam2", "BombDelivery", "SZCam3", "BombAfterDevlier", "SZCam4", "SuzukiFinalPath", "SZCam6", "DBorn1", "DBorn2", "DBorn3", "DBorn4", "DDie1", "DDie2", "DDie3", "DDie4"}; int Path_indexes[NUM_PATH_NAMES]; #define NUM_MATCEN_NAMES 10 const char *Matcen_names[NUM_MATCEN_NAMES] = {"MntMatcenA", "MntMatcenB", "TopLifterMatcen", "BombMatcen", "BomberMatcen-2", "BomberMatcen-1", "DCMatcen-1", "DCMatcen-2", "DCMatcen-3", "DCMatcen-4"}; int Matcen_indexes[NUM_MATCEN_NAMES]; #define NUM_GOAL_NAMES 6 const char *Goal_names[NUM_GOAL_NAMES] = { "Destroy the PTMC Assault Bot", "Create a Disturbance to Summon Droids", "Wait for Droids to Open Central Command", "Place Bomb on Delivery Pad", "Get a Safe Distance from Bomb", "Assasinate President Suzuki of PTMC"}; int Goal_indexes[NUM_GOAL_NAMES]; #define NUM_MESSAGE_NAMES 14 const char *Message_names[NUM_MESSAGE_NAMES] = {"IntroMessage", "EmptyMessage", "BombInventory", "FiremenSummoning", "FiremenDone", "DroidOnlyDoor", "DeliveryReady", "BombPadFull", "BombDropSuccess", "BombDropFail", "BossName", "SafeFromBomb", "ActivateBomb", "SuzukiDead"}; const 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 + 32]; char english_filename[(_MAX_PATH + 32) * 2]; 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, "Merc7.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(const char *name, uint8_t isdoor) { return -1; } // ================ // CreateInstance() // ================ void STDCALLPTR CreateInstance(int id) { switch (id) { case ID_LEVEL_0000: return new LevelScript_0000; break; case ID_CUSTOM_OBJECT_0885: return new CustomObjectScript_0885; break; case ID_CUSTOM_OBJECT_0884: return new CustomObjectScript_0884; break; case ID_CUSTOM_OBJECT_0903: return new CustomObjectScript_0903; break; case ID_CUSTOM_OBJECT_0902: return new CustomObjectScript_0902; break; case ID_CUSTOM_OBJECT_0901: return new CustomObjectScript_0901; break; case ID_CUSTOM_OBJECT_1025: return new CustomObjectScript_1025; break; case ID_CUSTOM_OBJECT_103B: return new CustomObjectScript_103B; break; case ID_CUSTOM_OBJECT_1038: return new CustomObjectScript_1038; break; case ID_CUSTOM_OBJECT_2022: return new CustomObjectScript_2022; break; case ID_CUSTOM_OBJECT_10AF: return new CustomObjectScript_10AF; break; case ID_CUSTOM_OBJECT_20AA: return new CustomObjectScript_20AA; break; case ID_CUSTOM_OBJECT_1031: return new CustomObjectScript_1031; break; case ID_CUSTOM_OBJECT_0833: return new CustomObjectScript_0833; break; case ID_CUSTOM_OBJECT_0951: return new CustomObjectScript_0951; break; case ID_CUSTOM_OBJECT_0952: return new CustomObjectScript_0952; break; case ID_CUSTOM_OBJECT_0953: return new CustomObjectScript_0953; break; case ID_CUSTOM_OBJECT_0954: return new CustomObjectScript_0954; break; case ID_CUSTOM_OBJECT_095F: return new CustomObjectScript_095F; break; case ID_CUSTOM_OBJECT_0960: return new CustomObjectScript_0960; break; case ID_CUSTOM_OBJECT_0961: return new CustomObjectScript_0961; break; case ID_CUSTOM_OBJECT_0962: return new CustomObjectScript_0962; break; case ID_CUSTOM_OBJECT_0869: return new CustomObjectScript_0869; break; case ID_CUSTOM_OBJECT_0963: return new CustomObjectScript_0963; break; case ID_CUSTOM_OBJECT_0964: return new CustomObjectScript_0964; break; case ID_CUSTOM_OBJECT_0965: return new CustomObjectScript_0965; break; case ID_CUSTOM_OBJECT_0966: return new CustomObjectScript_0966; break; case ID_CUSTOM_OBJECT_0995: return new CustomObjectScript_0995; break; case ID_CUSTOM_OBJECT_0994: return new CustomObjectScript_0994; break; case ID_CUSTOM_OBJECT_0993: return new CustomObjectScript_0993; break; case ID_CUSTOM_OBJECT_0992: return new CustomObjectScript_0992; break; case ID_CUSTOM_OBJECT_1191: return new CustomObjectScript_1191; break; case ID_CUSTOM_OBJECT_083D: return new CustomObjectScript_083D; break; case ID_CUSTOM_OBJECT_103C: return new CustomObjectScript_103C; break; case ID_CUSTOM_OBJECT_103E: return new CustomObjectScript_103E; break; case ID_CUSTOM_OBJECT_0841: return new CustomObjectScript_0841; break; case ID_CUSTOM_OBJECT_097A: return new CustomObjectScript_097A; break; case ID_CUSTOM_OBJECT_0997: return new CustomObjectScript_0997; break; case ID_CUSTOM_OBJECT_0996: return new CustomObjectScript_0996; break; case ID_CUSTOM_OBJECT_0805: return new CustomObjectScript_0805; break; case ID_CUSTOM_OBJECT_0804: return new CustomObjectScript_0804; break; case ID_CUSTOM_OBJECT_0998: return new CustomObjectScript_0998; break; case ID_CUSTOM_OBJECT_087E: return new CustomObjectScript_087E; break; case ID_CUSTOM_OBJECT_1834: return new CustomObjectScript_1834; break; case ID_CUSTOM_OBJECT_1877: return new CustomObjectScript_1877; break; case ID_CUSTOM_OBJECT_1078: return new CustomObjectScript_1078; break; case ID_CUSTOM_OBJECT_1070: return new CustomObjectScript_1070; break; case ID_CUSTOM_OBJECT_2075: return new CustomObjectScript_2075; break; case ID_CUSTOM_OBJECT_2076: return new CustomObjectScript_2076; break; case ID_CUSTOM_OBJECT_2863: return new CustomObjectScript_2863; break; case ID_CUSTOM_OBJECT_207A: return new CustomObjectScript_207A; break; case ID_CUSTOM_OBJECT_206D: return new CustomObjectScript_206D; break; case ID_CUSTOM_OBJECT_1079: return new CustomObjectScript_1079; break; case ID_CUSTOM_OBJECT_09BF: return new CustomObjectScript_09BF; break; case ID_CUSTOM_OBJECT_09BE: return new CustomObjectScript_09BE; break; case ID_CUSTOM_OBJECT_09BD: return new CustomObjectScript_09BD; break; case ID_CUSTOM_OBJECT_09BC: return new CustomObjectScript_09BC; break; case ID_CUSTOM_OBJECT_1071: return new CustomObjectScript_1071; break; case ID_CUSTOM_OBJECT_09CA: return new CustomObjectScript_09CA; break; case ID_CUSTOM_OBJECT_09C9: return new CustomObjectScript_09C9; break; case ID_CUSTOM_OBJECT_09C8: return new CustomObjectScript_09C8; break; case ID_CUSTOM_OBJECT_09C7: return new CustomObjectScript_09C7; break; case ID_CUSTOM_OBJECT_09C6: return new CustomObjectScript_09C6; break; case ID_CUSTOM_OBJECT_09C5: return new CustomObjectScript_09C5; break; case ID_CUSTOM_OBJECT_09C4: return new CustomObjectScript_09C4; break; case ID_CUSTOM_OBJECT_09C3: return new CustomObjectScript_09C3; break; case ID_CUSTOM_OBJECT_09C2: return new CustomObjectScript_09C2; break; case ID_CUSTOM_OBJECT_286E: return new CustomObjectScript_286E; break; case ID_TRIGGER_0005: return new TriggerScript_0005; break; case ID_TRIGGER_0000: return new TriggerScript_0000; break; case ID_TRIGGER_0006: return new TriggerScript_0006; break; case ID_TRIGGER_0004: return new TriggerScript_0004; break; case ID_TRIGGER_0008: return new TriggerScript_0008; break; case ID_TRIGGER_0009: return new TriggerScript_0009; break; case ID_TRIGGER_000F: return new TriggerScript_000F; break; case ID_TRIGGER_0013: return new TriggerScript_0013; break; case ID_TRIGGER_0012: return new TriggerScript_0012; break; case ID_TRIGGER_0011: return new TriggerScript_0011; break; case ID_TRIGGER_0010: return new TriggerScript_0010; break; case ID_TRIGGER_000E: return new TriggerScript_000E; break; case ID_TRIGGER_000C: return new TriggerScript_000C; break; case ID_TRIGGER_000D: return new TriggerScript_000D; break; case ID_TRIGGER_000A: return new TriggerScript_000A; break; case ID_TRIGGER_000B: return new TriggerScript_000B; 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_0885: delete ((CustomObjectScript_0885 *)ptr); break; case ID_CUSTOM_OBJECT_0884: delete ((CustomObjectScript_0884 *)ptr); break; case ID_CUSTOM_OBJECT_0903: delete ((CustomObjectScript_0903 *)ptr); break; case ID_CUSTOM_OBJECT_0902: delete ((CustomObjectScript_0902 *)ptr); break; case ID_CUSTOM_OBJECT_0901: delete ((CustomObjectScript_0901 *)ptr); break; case ID_CUSTOM_OBJECT_1025: delete ((CustomObjectScript_1025 *)ptr); break; case ID_CUSTOM_OBJECT_103B: delete ((CustomObjectScript_103B *)ptr); break; case ID_CUSTOM_OBJECT_1038: delete ((CustomObjectScript_1038 *)ptr); break; case ID_CUSTOM_OBJECT_2022: delete ((CustomObjectScript_2022 *)ptr); break; case ID_CUSTOM_OBJECT_10AF: delete ((CustomObjectScript_10AF *)ptr); break; case ID_CUSTOM_OBJECT_20AA: delete ((CustomObjectScript_20AA *)ptr); break; case ID_CUSTOM_OBJECT_1031: delete ((CustomObjectScript_1031 *)ptr); break; case ID_CUSTOM_OBJECT_0833: delete ((CustomObjectScript_0833 *)ptr); break; case ID_CUSTOM_OBJECT_0951: delete ((CustomObjectScript_0951 *)ptr); break; case ID_CUSTOM_OBJECT_0952: delete ((CustomObjectScript_0952 *)ptr); break; case ID_CUSTOM_OBJECT_0953: delete ((CustomObjectScript_0953 *)ptr); break; case ID_CUSTOM_OBJECT_0954: delete ((CustomObjectScript_0954 *)ptr); break; case ID_CUSTOM_OBJECT_095F: delete ((CustomObjectScript_095F *)ptr); break; case ID_CUSTOM_OBJECT_0960: delete ((CustomObjectScript_0960 *)ptr); break; case ID_CUSTOM_OBJECT_0961: delete ((CustomObjectScript_0961 *)ptr); break; case ID_CUSTOM_OBJECT_0962: delete ((CustomObjectScript_0962 *)ptr); break; case ID_CUSTOM_OBJECT_0869: delete ((CustomObjectScript_0869 *)ptr); break; case ID_CUSTOM_OBJECT_0963: delete ((CustomObjectScript_0963 *)ptr); break; case ID_CUSTOM_OBJECT_0964: delete ((CustomObjectScript_0964 *)ptr); break; case ID_CUSTOM_OBJECT_0965: delete ((CustomObjectScript_0965 *)ptr); break; case ID_CUSTOM_OBJECT_0966: delete ((CustomObjectScript_0966 *)ptr); break; case ID_CUSTOM_OBJECT_0995: delete ((CustomObjectScript_0995 *)ptr); break; case ID_CUSTOM_OBJECT_0994: delete ((CustomObjectScript_0994 *)ptr); break; case ID_CUSTOM_OBJECT_0993: delete ((CustomObjectScript_0993 *)ptr); break; case ID_CUSTOM_OBJECT_0992: delete ((CustomObjectScript_0992 *)ptr); break; case ID_CUSTOM_OBJECT_1191: delete ((CustomObjectScript_1191 *)ptr); break; case ID_CUSTOM_OBJECT_083D: delete ((CustomObjectScript_083D *)ptr); break; case ID_CUSTOM_OBJECT_103C: delete ((CustomObjectScript_103C *)ptr); break; case ID_CUSTOM_OBJECT_103E: delete ((CustomObjectScript_103E *)ptr); break; case ID_CUSTOM_OBJECT_0841: delete ((CustomObjectScript_0841 *)ptr); break; case ID_CUSTOM_OBJECT_097A: delete ((CustomObjectScript_097A *)ptr); break; case ID_CUSTOM_OBJECT_0997: delete ((CustomObjectScript_0997 *)ptr); break; case ID_CUSTOM_OBJECT_0996: delete ((CustomObjectScript_0996 *)ptr); break; case ID_CUSTOM_OBJECT_0805: delete ((CustomObjectScript_0805 *)ptr); break; case ID_CUSTOM_OBJECT_0804: delete ((CustomObjectScript_0804 *)ptr); break; case ID_CUSTOM_OBJECT_0998: delete ((CustomObjectScript_0998 *)ptr); break; case ID_CUSTOM_OBJECT_087E: delete ((CustomObjectScript_087E *)ptr); break; case ID_CUSTOM_OBJECT_1834: delete ((CustomObjectScript_1834 *)ptr); break; case ID_CUSTOM_OBJECT_1877: delete ((CustomObjectScript_1877 *)ptr); break; case ID_CUSTOM_OBJECT_1078: delete ((CustomObjectScript_1078 *)ptr); break; case ID_CUSTOM_OBJECT_1070: delete ((CustomObjectScript_1070 *)ptr); break; case ID_CUSTOM_OBJECT_2075: delete ((CustomObjectScript_2075 *)ptr); break; case ID_CUSTOM_OBJECT_2076: delete ((CustomObjectScript_2076 *)ptr); break; case ID_CUSTOM_OBJECT_2863: delete ((CustomObjectScript_2863 *)ptr); break; case ID_CUSTOM_OBJECT_207A: delete ((CustomObjectScript_207A *)ptr); break; case ID_CUSTOM_OBJECT_206D: delete ((CustomObjectScript_206D *)ptr); break; case ID_CUSTOM_OBJECT_1079: delete ((CustomObjectScript_1079 *)ptr); break; case ID_CUSTOM_OBJECT_09BF: delete ((CustomObjectScript_09BF *)ptr); break; case ID_CUSTOM_OBJECT_09BE: delete ((CustomObjectScript_09BE *)ptr); break; case ID_CUSTOM_OBJECT_09BD: delete ((CustomObjectScript_09BD *)ptr); break; case ID_CUSTOM_OBJECT_09BC: delete ((CustomObjectScript_09BC *)ptr); break; case ID_CUSTOM_OBJECT_1071: delete ((CustomObjectScript_1071 *)ptr); break; case ID_CUSTOM_OBJECT_09CA: delete ((CustomObjectScript_09CA *)ptr); break; case ID_CUSTOM_OBJECT_09C9: delete ((CustomObjectScript_09C9 *)ptr); break; case ID_CUSTOM_OBJECT_09C8: delete ((CustomObjectScript_09C8 *)ptr); break; case ID_CUSTOM_OBJECT_09C7: delete ((CustomObjectScript_09C7 *)ptr); break; case ID_CUSTOM_OBJECT_09C6: delete ((CustomObjectScript_09C6 *)ptr); break; case ID_CUSTOM_OBJECT_09C5: delete ((CustomObjectScript_09C5 *)ptr); break; case ID_CUSTOM_OBJECT_09C4: delete ((CustomObjectScript_09C4 *)ptr); break; case ID_CUSTOM_OBJECT_09C3: delete ((CustomObjectScript_09C3 *)ptr); break; case ID_CUSTOM_OBJECT_09C2: delete ((CustomObjectScript_09C2 *)ptr); break; case ID_CUSTOM_OBJECT_286E: delete ((CustomObjectScript_286E *)ptr); break; case ID_TRIGGER_0005: delete ((TriggerScript_0005 *)ptr); break; case ID_TRIGGER_0000: delete ((TriggerScript_0000 *)ptr); break; case ID_TRIGGER_0006: delete ((TriggerScript_0006 *)ptr); break; case ID_TRIGGER_0004: delete ((TriggerScript_0004 *)ptr); break; case ID_TRIGGER_0008: delete ((TriggerScript_0008 *)ptr); break; case ID_TRIGGER_0009: delete ((TriggerScript_0009 *)ptr); break; case ID_TRIGGER_000F: delete ((TriggerScript_000F *)ptr); break; case ID_TRIGGER_0013: delete ((TriggerScript_0013 *)ptr); break; case ID_TRIGGER_0012: delete ((TriggerScript_0012 *)ptr); break; case ID_TRIGGER_0011: delete ((TriggerScript_0011 *)ptr); break; case ID_TRIGGER_0010: delete ((TriggerScript_0010 *)ptr); break; case ID_TRIGGER_000E: delete ((TriggerScript_000E *)ptr); break; case ID_TRIGGER_000C: delete ((TriggerScript_000C *)ptr); break; case ID_TRIGGER_000D: delete ((TriggerScript_000D *)ptr); break; case ID_TRIGGER_000A: delete ((TriggerScript_000A *)ptr); break; case ID_TRIGGER_000B: delete ((TriggerScript_000B *)ptr); break; default: mprintf(0, "SCRIPT: Illegal ID (%d)\n", id); break; } } // =================== // CallInstanceEvent() // =================== int16_t STDCALL CallInstanceEvent(int id, void *ptr, int event, tOSIRISEventInfo *data) { switch (id) { case ID_LEVEL_0000: case ID_CUSTOM_OBJECT_0885: case ID_CUSTOM_OBJECT_0884: case ID_CUSTOM_OBJECT_0903: case ID_CUSTOM_OBJECT_0902: case ID_CUSTOM_OBJECT_0901: case ID_CUSTOM_OBJECT_1025: case ID_CUSTOM_OBJECT_103B: case ID_CUSTOM_OBJECT_1038: case ID_CUSTOM_OBJECT_2022: case ID_CUSTOM_OBJECT_10AF: case ID_CUSTOM_OBJECT_20AA: case ID_CUSTOM_OBJECT_1031: case ID_CUSTOM_OBJECT_0833: case ID_CUSTOM_OBJECT_0951: case ID_CUSTOM_OBJECT_0952: case ID_CUSTOM_OBJECT_0953: case ID_CUSTOM_OBJECT_0954: case ID_CUSTOM_OBJECT_095F: case ID_CUSTOM_OBJECT_0960: case ID_CUSTOM_OBJECT_0961: case ID_CUSTOM_OBJECT_0962: case ID_CUSTOM_OBJECT_0869: case ID_CUSTOM_OBJECT_0963: case ID_CUSTOM_OBJECT_0964: case ID_CUSTOM_OBJECT_0965: case ID_CUSTOM_OBJECT_0966: case ID_CUSTOM_OBJECT_0995: case ID_CUSTOM_OBJECT_0994: case ID_CUSTOM_OBJECT_0993: case ID_CUSTOM_OBJECT_0992: case ID_CUSTOM_OBJECT_1191: case ID_CUSTOM_OBJECT_083D: case ID_CUSTOM_OBJECT_103C: case ID_CUSTOM_OBJECT_103E: case ID_CUSTOM_OBJECT_0841: case ID_CUSTOM_OBJECT_097A: case ID_CUSTOM_OBJECT_0997: case ID_CUSTOM_OBJECT_0996: case ID_CUSTOM_OBJECT_0805: case ID_CUSTOM_OBJECT_0804: case ID_CUSTOM_OBJECT_0998: case ID_CUSTOM_OBJECT_087E: case ID_CUSTOM_OBJECT_1834: case ID_CUSTOM_OBJECT_1877: case ID_CUSTOM_OBJECT_1078: case ID_CUSTOM_OBJECT_1070: case ID_CUSTOM_OBJECT_2075: case ID_CUSTOM_OBJECT_2076: case ID_CUSTOM_OBJECT_2863: case ID_CUSTOM_OBJECT_207A: case ID_CUSTOM_OBJECT_206D: case ID_CUSTOM_OBJECT_1079: case ID_CUSTOM_OBJECT_09BF: case ID_CUSTOM_OBJECT_09BE: case ID_CUSTOM_OBJECT_09BD: case ID_CUSTOM_OBJECT_09BC: case ID_CUSTOM_OBJECT_1071: case ID_CUSTOM_OBJECT_09CA: case ID_CUSTOM_OBJECT_09C9: case ID_CUSTOM_OBJECT_09C8: case ID_CUSTOM_OBJECT_09C7: case ID_CUSTOM_OBJECT_09C6: case ID_CUSTOM_OBJECT_09C5: case ID_CUSTOM_OBJECT_09C4: case ID_CUSTOM_OBJECT_09C3: case ID_CUSTOM_OBJECT_09C2: case ID_CUSTOM_OBJECT_286E: case ID_TRIGGER_0005: case ID_TRIGGER_0000: case ID_TRIGGER_0006: case ID_TRIGGER_0004: case ID_TRIGGER_0008: case ID_TRIGGER_0009: case ID_TRIGGER_000F: case ID_TRIGGER_0013: case ID_TRIGGER_0012: case ID_TRIGGER_0011: case ID_TRIGGER_0010: case ID_TRIGGER_000E: case ID_TRIGGER_000C: case ID_TRIGGER_000D: case ID_TRIGGER_000A: case ID_TRIGGER_000B: 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, uint8_t 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_0005; 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_0006; if (trigger_room == Trigger_rooms[3] && trigger_face == Trigger_faces[3]) return ID_TRIGGER_0004; if (trigger_room == Trigger_rooms[4] && trigger_face == Trigger_faces[4]) return ID_TRIGGER_0008; if (trigger_room == Trigger_rooms[5] && trigger_face == Trigger_faces[5]) return ID_TRIGGER_0009; if (trigger_room == Trigger_rooms[6] && trigger_face == Trigger_faces[6]) return ID_TRIGGER_000F; if (trigger_room == Trigger_rooms[7] && trigger_face == Trigger_faces[7]) return ID_TRIGGER_0013; if (trigger_room == Trigger_rooms[8] && trigger_face == Trigger_faces[8]) return ID_TRIGGER_0012; if (trigger_room == Trigger_rooms[9] && trigger_face == Trigger_faces[9]) return ID_TRIGGER_0011; if (trigger_room == Trigger_rooms[10] && trigger_face == Trigger_faces[10]) return ID_TRIGGER_0010; if (trigger_room == Trigger_rooms[11] && trigger_face == Trigger_faces[11]) return ID_TRIGGER_000E; if (trigger_room == Trigger_rooms[12] && trigger_face == Trigger_faces[12]) return ID_TRIGGER_000C; if (trigger_room == Trigger_rooms[13] && trigger_face == Trigger_faces[13]) return ID_TRIGGER_000D; if (trigger_room == Trigger_rooms[14] && trigger_face == Trigger_faces[14]) return ID_TRIGGER_000A; if (trigger_room == Trigger_rooms[15] && trigger_face == Trigger_faces[15]) return ID_TRIGGER_000B; return -1; } // ================= // GetCOScriptList() // ================= int STDCALL GetCOScriptList(int **list, int **id_list) { static int cust_handle_list[67]; static int cust_id_list[67] = { ID_CUSTOM_OBJECT_0885, ID_CUSTOM_OBJECT_0884, ID_CUSTOM_OBJECT_0903, ID_CUSTOM_OBJECT_0902, ID_CUSTOM_OBJECT_0901, ID_CUSTOM_OBJECT_1025, ID_CUSTOM_OBJECT_103B, ID_CUSTOM_OBJECT_1038, ID_CUSTOM_OBJECT_2022, ID_CUSTOM_OBJECT_10AF, ID_CUSTOM_OBJECT_20AA, ID_CUSTOM_OBJECT_1031, ID_CUSTOM_OBJECT_0833, ID_CUSTOM_OBJECT_0951, ID_CUSTOM_OBJECT_0952, ID_CUSTOM_OBJECT_0953, ID_CUSTOM_OBJECT_0954, ID_CUSTOM_OBJECT_095F, ID_CUSTOM_OBJECT_0960, ID_CUSTOM_OBJECT_0961, ID_CUSTOM_OBJECT_0962, ID_CUSTOM_OBJECT_0869, ID_CUSTOM_OBJECT_0963, ID_CUSTOM_OBJECT_0964, ID_CUSTOM_OBJECT_0965, ID_CUSTOM_OBJECT_0966, ID_CUSTOM_OBJECT_0995, ID_CUSTOM_OBJECT_0994, ID_CUSTOM_OBJECT_0993, ID_CUSTOM_OBJECT_0992, ID_CUSTOM_OBJECT_1191, ID_CUSTOM_OBJECT_083D, ID_CUSTOM_OBJECT_103C, ID_CUSTOM_OBJECT_103E, ID_CUSTOM_OBJECT_0841, ID_CUSTOM_OBJECT_097A, ID_CUSTOM_OBJECT_0997, ID_CUSTOM_OBJECT_0996, ID_CUSTOM_OBJECT_0805, ID_CUSTOM_OBJECT_0804, ID_CUSTOM_OBJECT_0998, ID_CUSTOM_OBJECT_087E, ID_CUSTOM_OBJECT_1834, ID_CUSTOM_OBJECT_1877, ID_CUSTOM_OBJECT_1078, ID_CUSTOM_OBJECT_1070, ID_CUSTOM_OBJECT_2075, ID_CUSTOM_OBJECT_2076, ID_CUSTOM_OBJECT_2863, ID_CUSTOM_OBJECT_207A, ID_CUSTOM_OBJECT_206D, ID_CUSTOM_OBJECT_1079, ID_CUSTOM_OBJECT_09BF, ID_CUSTOM_OBJECT_09BE, ID_CUSTOM_OBJECT_09BD, ID_CUSTOM_OBJECT_09BC, ID_CUSTOM_OBJECT_1071, ID_CUSTOM_OBJECT_09CA, ID_CUSTOM_OBJECT_09C9, ID_CUSTOM_OBJECT_09C8, ID_CUSTOM_OBJECT_09C7, ID_CUSTOM_OBJECT_09C6, ID_CUSTOM_OBJECT_09C5, ID_CUSTOM_OBJECT_09C4, ID_CUSTOM_OBJECT_09C3, ID_CUSTOM_OBJECT_09C2, ID_CUSTOM_OBJECT_286E}; // Fill in the custom handle list cust_handle_list[0] = Object_handles[4]; cust_handle_list[1] = Object_handles[5]; cust_handle_list[2] = Object_handles[32]; cust_handle_list[3] = Object_handles[34]; cust_handle_list[4] = Object_handles[36]; cust_handle_list[5] = Object_handles[38]; cust_handle_list[6] = Object_handles[40]; cust_handle_list[7] = Object_handles[42]; cust_handle_list[8] = Object_handles[44]; cust_handle_list[9] = Object_handles[46]; cust_handle_list[10] = Object_handles[48]; cust_handle_list[11] = Object_handles[50]; cust_handle_list[12] = Object_handles[52]; cust_handle_list[13] = Object_handles[53]; cust_handle_list[14] = Object_handles[54]; cust_handle_list[15] = Object_handles[55]; cust_handle_list[16] = Object_handles[56]; cust_handle_list[17] = Object_handles[57]; cust_handle_list[18] = Object_handles[58]; cust_handle_list[19] = Object_handles[59]; cust_handle_list[20] = Object_handles[60]; cust_handle_list[21] = Object_handles[61]; cust_handle_list[22] = Object_handles[62]; cust_handle_list[23] = Object_handles[63]; cust_handle_list[24] = Object_handles[64]; cust_handle_list[25] = Object_handles[65]; cust_handle_list[26] = Object_handles[68]; cust_handle_list[27] = Object_handles[69]; cust_handle_list[28] = Object_handles[70]; cust_handle_list[29] = Object_handles[71]; cust_handle_list[30] = Object_handles[72]; cust_handle_list[31] = Object_handles[77]; cust_handle_list[32] = Object_handles[78]; cust_handle_list[33] = Object_handles[79]; cust_handle_list[34] = Object_handles[80]; cust_handle_list[35] = Object_handles[81]; cust_handle_list[36] = Object_handles[67]; cust_handle_list[37] = Object_handles[66]; cust_handle_list[38] = Object_handles[89]; cust_handle_list[39] = Object_handles[90]; cust_handle_list[40] = Object_handles[97]; cust_handle_list[41] = Object_handles[8]; cust_handle_list[42] = Object_handles[105]; cust_handle_list[43] = Object_handles[118]; cust_handle_list[44] = Object_handles[117]; cust_handle_list[45] = Object_handles[119]; cust_handle_list[46] = Object_handles[108]; cust_handle_list[47] = Object_handles[122]; cust_handle_list[48] = Object_handles[114]; cust_handle_list[49] = Object_handles[112]; cust_handle_list[50] = Object_handles[110]; cust_handle_list[51] = Object_handles[123]; cust_handle_list[52] = Object_handles[131]; cust_handle_list[53] = Object_handles[132]; cust_handle_list[54] = Object_handles[133]; cust_handle_list[55] = Object_handles[134]; cust_handle_list[56] = Object_handles[135]; cust_handle_list[57] = Object_handles[146]; cust_handle_list[58] = Object_handles[145]; cust_handle_list[59] = Object_handles[144]; cust_handle_list[60] = Object_handles[143]; cust_handle_list[61] = Object_handles[142]; cust_handle_list[62] = Object_handles[141]; cust_handle_list[63] = Object_handles[140]; cust_handle_list[64] = Object_handles[139]; cust_handle_list[65] = Object_handles[138]; cust_handle_list[66] = Object_handles[147]; *list = cust_handle_list; *id_list = cust_id_list; return 67; } //======================= // Script Implementation //======================= int16_t BaseScript::CallEvent(int event, tOSIRISEventInfo *data) { mprintf(0, "BaseScript::CallEvent()\n"); return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t 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: { // Script 037: Start Bomb Sequence if ((ScriptActionCtr_037 < 1) && ((qUserFlag(7) == true) && (qRoomHasPlayer(Room_indexes[11]) == true))) { aGoalCompleted(Goal_indexes[4], 1); aDoorSetPos(Door_handles[1], 0.000000f); aShowHUDMessage(Message_strings[12]); aSetLevelTimer(3.000000f, 12); // Increment the script action counter if (ScriptActionCtr_037 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_037++; } } break; case EVT_LEVELSTART: { ClearGlobalActionCtrs(); dfInit(); // Script 074: IntroCam-1 if (1 == true) { aTurnOnSpew(Object_handles[0], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[1], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[2], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aTurnOnSpew(Object_handles[3], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, -1.000000f, 5.000000f, 30.000000f, 0, -1); aCinematicSimple(Path_indexes[0], Message_strings[0], Object_handles[4], 9.000000f, 1); // Increment the script action counter if (ScriptActionCtr_074 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_074++; } // Script 087: INIT GlassWindows if (1) { aRoomSetFaceTexture(Room_indexes[0], 15, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 14, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 13, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 12, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 11, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 10, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 9, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 8, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 7, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 6, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 5, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 4, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 3, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 2, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 1, Texture_indexes[0]); aRoomSetFaceTexture(Room_indexes[0], 0, Texture_indexes[0]); // Increment the script action counter if (ScriptActionCtr_087 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_087++; } // Script 019: INIT Variables/Flags if (1) { aGoalEnableDisable(0, Goal_indexes[0]); aUserFlagSet(7, 0); aUserFlagSet(0, 0); aUserVarSet(0, 0.000000f); aAddObjectToInventoryNamed(Object_handles[8], qPlayerClosest(Object_handles[8], -1), Message_strings[2], 0); aUserFlagSet(2, 0); aUserFlagSet(3, 0); aUserFlagSet(4, 0); aUserFlagSet(5, 0); aUserFlagSet(6, 0); // Increment the script action counter if (ScriptActionCtr_019 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_019++; } // Script 105: BST Patrols (Sewer) if ((ScriptActionCtr_105 < 1) && (1)) { aAIGoalFollowPathSimple(Object_handles[9], Path_indexes[4], 10490113, -1, 0); aAIGoalFollowPathSimple(Object_handles[10], Path_indexes[5], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[11], Path_indexes[6], 10490113, -1, 0); // Increment the script action counter if (ScriptActionCtr_105 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_105++; } // Script 002: INIT ElevDroids if ((ScriptActionCtr_002 < 1) && (1)) { aPortalRenderSet(0, 0, Room_indexes[1], 1); aPortalRenderSet(0, 1, Room_indexes[1], 1); aPortalRenderSet(0, 0, Room_indexes[2], 1); aPortalRenderSet(0, 1, Room_indexes[2], 1); aPortalRenderSet(0, 0, Room_indexes[3], 1); aPortalRenderSet(0, 1, Room_indexes[3], 1); // Increment the script action counter if (ScriptActionCtr_002 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_002++; } // Script 003: INIT Fire if (1) { aAISetMaxSpeed(Object_handles[66], 25.000000f); aAISetMaxSpeed(Object_handles[67], 25.000000f); aObjSetMovementType(Object_handles[68], 0); aObjSetLightingColor(Object_handles[68], 1.000000f, 0.250000f, 0.000000f); aObjSetLightingDist(Object_handles[68], 0.000000f); aObjMakeInvuln(Object_handles[66], 99999); aObjMakeInvuln(Object_handles[67], 99999); aObjMakeInvuln(Object_handles[69], 99999); aObjMakeInvuln(Object_handles[70], 99999); aObjMakeInvuln(Object_handles[71], 99999); aObjMakeInvuln(Object_handles[72], 99999); aObjGhostSet(1, Object_handles[69]); aObjGhostSet(1, Object_handles[70]); aObjGhostSet(1, Object_handles[71]); aObjGhostSet(1, Object_handles[72]); // Increment the script action counter if (ScriptActionCtr_003 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_003++; } // Script 038: INIT Bomb Delivery if (1) { aUserFlagSet(8, 0); aMatcenSetState(1, Matcen_indexes[3]); aObjGhostSet(1, Object_handles[103]); aObjGhostSet(1, Object_handles[104]); // Increment the script action counter if (ScriptActionCtr_038 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_038++; } // Script 020: INIT Suzuki's Death if (1) { aObjSaveHandle(Object_handles[106], 11); aAIGoalPickUpObjectRad(Object_handles[106], 0, Object_handles[107], 0.600000f, 3, 256, -1); aAISetMaxSpeed(qObjSavedHandle(11), 20.000000f); aObjGhostSet(1, Object_handles[108]); aObjGhostSet(1, Object_handles[109]); // Increment the script action counter if (ScriptActionCtr_020 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_020++; } // Script 004: INIT Droid Central if (1) { aSetLevelTimer(2.000000f, 13); // Increment the script action counter if (ScriptActionCtr_004 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_004++; } // Script 119: Hide the end boss cinematic inv. powerup if (1) { aObjHide(Object_handles[151]); // Increment the script action counter if (ScriptActionCtr_119 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_119++; } // Script 000: MusicIntro if (1) { aSetLevelTimer(2.000000f, 1); aMusicSetRegionAll(0); // Increment the script action counter if (ScriptActionCtr_000 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_000++; } } break; case EVT_TIMER: { tOSIRISEVTTIMER *event_data = &data->evt_timer; // Script 045: Suzuki Cam 1 if ((ScriptActionCtr_045 < 1) && (event_data->id == 12)) { aLightningCreate(Object_handles[110], Object_handles[111], 99999.000000f, 2.000000f, 1, Texture_indexes[1], 0.400000f, 3, 200, 255, 150, 0); aLightningCreate(Object_handles[112], Object_handles[113], 99999.000000f, 2.000000f, 1, Texture_indexes[1], 0.400000f, 3, 200, 255, 150, 0); aLightningCreate(Object_handles[114], Object_handles[115], 99999.000000f, 2.000000f, 1, Texture_indexes[1], 0.400000f, 3, 200, 255, 150, 0); aObjPlayAnim(Object_handles[116], 0, 54, 6.000000f, 0); aCinematicSimple(Path_indexes[41], Message_strings[1], Object_handles[117], 6.000000f, 1); // Increment the script action counter if (ScriptActionCtr_045 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_045++; } // Script 007: Create A New Droid if (event_data->id == 13) { aSetLevelTimer(qRandomValue(2.000000f, 12.000000f), 13); if (qRandomChance(0.250000f) == true) { aMatcenSetState(1, Matcen_indexes[6]); } else { if (qRandomChance(0.333333f) == true) { aMatcenSetState(1, Matcen_indexes[7]); } else { if (qRandomChance(0.500000f) == true) { aMatcenSetState(1, Matcen_indexes[8]); } else { aMatcenSetState(1, Matcen_indexes[9]); } } } // Increment the script action counter if (ScriptActionCtr_007 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_007++; } // Script 120: MusicSewer (Intro2) if ((ScriptActionCtr_120 < 1) && (event_data->id == 1)) { aMusicSetRegionAll(1); // Increment the script action counter if (ScriptActionCtr_120 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_120++; } // Script 021: End Level if (event_data->id == 14) { aEndLevel(); // Increment the script action counter if (ScriptActionCtr_021 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_021++; } } break; case EVT_AIN_GOALCOMPLETE: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_goalcomplete; // Script 008: ElevDroids Reached OutsideLo if (event_data->goal_uid == 0) { aSetObjectTimer(Object_handles[53], 5.000000f, -1); aTurnOnSpew(Object_handles[53], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[54], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aPortalRenderSet(0, 0, Room_indexes[4], 1); aPortalRenderSet(1, 0, Room_indexes[3], 1); aPortalRenderSet(1, 1, Room_indexes[3], 1); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[23], 4352, 1, 3); // Increment the script action counter if (ScriptActionCtr_008 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_008++; } // Script 106: ElevDroids Reached InsideHiDn if (event_data->goal_uid == 6) { aObjSaveHandle(event_data->it_handle, 9); // Increment the script action counter if (ScriptActionCtr_106 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_106++; } // Script 059: ElevDroids Reached InsideHiUp if (event_data->goal_uid == 3) { aObjSaveHandle(event_data->it_handle, 7); // Increment the script action counter if (ScriptActionCtr_059 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_059++; } // Script 016: ElevDroids Reached InsideLo if (event_data->goal_uid == 1) { aObjSaveHandle(event_data->it_handle, 6); // Increment the script action counter if (ScriptActionCtr_016 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_016++; } // Script 017: ElevDroids Reached End Of Line if (event_data->goal_uid == 4) { aObjDelete(event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_017 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_017++; } // Script 058: ElevDroids Reached OutsideHiUp if (event_data->goal_uid == 2) { aSetObjectTimer(Object_handles[57], 5.000000f, -1); aTurnOnSpew(Object_handles[57], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[58], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aPortalRenderSet(0, 0, Room_indexes[6], 1); aPortalRenderSet(1, 0, Room_indexes[2], 1); aPortalRenderSet(1, 1, Room_indexes[2], 1); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[26], 2101504, 3, 3); // Increment the script action counter if (ScriptActionCtr_058 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_058++; } // Script 068: ElevDroids Reached OutsideHiDn if (event_data->goal_uid == 5) { aSetObjectTimer(Object_handles[62], 5.000000f, -1); aTurnOnSpew(Object_handles[62], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[63], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aPortalRenderSet(0, 0, Room_indexes[8], 1); aPortalRenderSet(1, 0, Room_indexes[1], 1); aPortalRenderSet(1, 1, Room_indexes[1], 1); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[30], 4352, 6, 3); // Increment the script action counter if (ScriptActionCtr_068 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_068++; } // Script 041: BomberReadyToPickup if (event_data->goal_uid == 21) { if (qObjExists(qObjSavedHandle(4)) == true) { aAIGoalPickUpObjectRad(event_data->it_handle, 0, qObjSavedHandle(4), 1.000000f, 3, 256, 20); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[39], 4352, 22, 0); } else { if (qUserFlag(4) == true) { aUserFlagSet(7, 1); aShowHUDMessage(Message_strings[6]); aAIGoalPickUpObjectRad(event_data->it_handle, 0, Object_handles[104], 0.600000f, 3, 256, 20); } else { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[39], 4352, 22, 3); } } // Increment the script action counter if (ScriptActionCtr_041 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_041++; } // Script 042: BomberPickedUp if (event_data->goal_uid == 20) { if (qUserFlag(4) == true) { aUserFlagSet(3, 1); aUserFlagSet(4, 0); } aUserFlagSet(2, 1); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[39], 4352, 22, 3); // Increment the script action counter if (ScriptActionCtr_042 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_042++; } // Script 043: BomberDoneRun if (event_data->goal_uid == 22) { if (qUserFlag(4) == false) { aUserFlagSet(8, 1); aMatcenSetState(1, Matcen_indexes[3]); } else { aMatcenSetState(1, Matcen_indexes[5]); } if (qUserFlag(3) == false) { if (qObjExists(qGetAtachedChild(event_data->it_handle, 0)) == true) { aObjDelete(qGetAtachedChild(event_data->it_handle, 0)); } aObjDelete(event_data->it_handle); } else { aUserFlagSet(3, 0); } aUserFlagSet(2, 0); // Increment the script action counter if (ScriptActionCtr_043 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_043++; } // Script 012: Droid Choose A Death if (event_data->goal_uid == 7) { if (qRandomChance(0.250000f) == true) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[53], 4352, 8, 0); } else { if (qRandomChance(0.333333f) == true) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[54], 4352, 8, 0); } else { if (qRandomChance(0.500000f) == true) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[55], 4352, 8, 0); } else { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[56], 4352, 8, 0); } } } // Increment the script action counter if (ScriptActionCtr_012 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_012++; } // Script 013: Droid Die if (event_data->goal_uid == 8) { aObjDelete(event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_013 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_013++; } } break; case EVT_MATCEN_CREATE: { tOSIRISEVTMATCENCREATE *event_data = &data->evt_matcen_create; // Script 065: ElevDroids Created Left if (event_data->id == Matcen_indexes[1]) { aObjSaveHandle(event_data->it_handle, 10); aMatcenSetState(0, event_data->id); aAIGoalSetCircleDistance(event_data->it_handle, 3, 5.000000f); aAISetMaxSpeed(event_data->it_handle, 25.000000f); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[21], 4352, 0, 3); // Increment the script action counter if (ScriptActionCtr_065 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_065++; } // Script 006: ElevDroids Created Right if (event_data->id == Matcen_indexes[0]) { aObjSaveHandle(event_data->it_handle, 10); aMatcenSetState(0, event_data->id); aAIGoalSetCircleDistance(event_data->it_handle, 3, 5.000000f); aAISetMaxSpeed(event_data->it_handle, 25.000000f); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[22], 4352, 0, 3); // Increment the script action counter if (ScriptActionCtr_006 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_006++; } // Script 066: ElevDroids Created Tower if (event_data->id == Matcen_indexes[2]) { aMatcenSetState(0, event_data->id); aAIGoalSetCircleDistance(event_data->it_handle, 3, 5.000000f); aAISetMaxSpeed(event_data->it_handle, 25.000000f); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[29], 4352, 5, 3); // Increment the script action counter if (ScriptActionCtr_066 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_066++; } // Script 039: Created New Bomb if (event_data->id == Matcen_indexes[3]) { aMatcenSetState(0, Matcen_indexes[3]); aUserFlagSet(8, 0); aStoreObjectInPositionClipboard(Object_handles[103]); aMoveObjectToPositionClipboard(event_data->it_handle); aObjSaveHandle(event_data->it_handle, 4); if (qRandomChance(0.550000f) == true) { aMatcenSetState(1, Matcen_indexes[4]); } else { aMatcenSetState(1, Matcen_indexes[5]); } aObjSpark(event_data->it_handle, 30.000000f, 3.000000f); aEmitSparks(50.000000f, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_039 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_039++; } // Script 044: Bomber Created-2 if (event_data->id == Matcen_indexes[4]) { aObjSaveHandle(event_data->it_handle, 3); aMatcenSetState(0, event_data->id); aObjMakeInvuln(event_data->it_handle, 99999); aAISetMaxSpeed(event_data->it_handle, 25.000000f); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[37], 2101504, 21, 3); // Increment the script action counter if (ScriptActionCtr_044 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_044++; } // Script 040: Bomber Created-1 if (event_data->id == Matcen_indexes[5]) { aObjSaveHandle(event_data->it_handle, 3); aMatcenSetState(0, event_data->id); aObjMakeInvuln(event_data->it_handle, 99999); aAISetMaxSpeed(event_data->it_handle, 25.000000f); aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[38], 2101504, 21, 3); // Increment the script action counter if (ScriptActionCtr_040 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_040++; } // Script 009: Send New Droid To Command if ((event_data->id == Matcen_indexes[6]) || (event_data->id == Matcen_indexes[7]) || (event_data->id == Matcen_indexes[8]) || (event_data->id == Matcen_indexes[9])) { if (event_data->id == Matcen_indexes[6]) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[49], 4352, 7, 0); } if (event_data->id == Matcen_indexes[7]) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[50], 4352, 7, 0); } if (event_data->id == Matcen_indexes[8]) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[51], 4352, 7, 0); } if (event_data->id == Matcen_indexes[9]) { aAIGoalFollowPathSimple(event_data->it_handle, Path_indexes[52], 4352, 7, 0); } aMatcenSetState(0, event_data->id); aAISetMaxSpeed(event_data->it_handle, 30.000000f); // Increment the script action counter if (ScriptActionCtr_009 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_009++; } } break; case EVT_LEVEL_GOAL_COMPLETE: { tOSIRISEVTLEVELGOALCOMPLETE *event_data = &data->evt_level_goal_complete; // Script 113: IntruderAlert! if ((ScriptActionCtr_113 < 1) && (event_data->level_goal_index == Goal_indexes[2])) { aAIGoalFollowPathSimple(Object_handles[91], Path_indexes[36], 4353, -1, 0); aAIGoalFollowPathSimple(Object_handles[92], Path_indexes[36], 4353, -1, 0); aAIGoalFollowPathSimple(Object_handles[93], Path_indexes[36], 4353, -1, 0); aAIGoalFollowPathSimple(Object_handles[94], Path_indexes[36], 4353, -1, 0); aAIGoalFollowPathSimple(Object_handles[95], Path_indexes[36], 4353, -1, 0); aAIGoalFollowPathSimple(Object_handles[96], Path_indexes[36], 4353, -1, 0); // Increment the script action counter if (ScriptActionCtr_113 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_113++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0885::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 088: IntroCam-2 if ((ScriptActionCtr_088 < 1) && (1)) { aCinematicSimple(Path_indexes[1], Message_strings[1], Object_handles[5], 9.000000f, 1); // Increment the script action counter if (ScriptActionCtr_088 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_088++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0884::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 089: IntroCam-3 if ((ScriptActionCtr_089 < 1) && (1)) { aTurnOnSpew(Object_handles[6], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.100000f, 0.100000f, -1.000000f, 3.000000f, 25.000000f, 0, -1); aTurnOnSpew(Object_handles[7], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.100000f, 0.100000f, -1.000000f, 3.000000f, 25.000000f, 0, -1); aCinematicIntro(Path_indexes[2], Message_strings[1], data->me_handle, Path_indexes[3], 8.000000f); // Increment the script action counter if (ScriptActionCtr_089 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_089++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0903::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 099: Turret Power-10 if (1) { aObjSaveHandle(Object_handles[33], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_099 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_099++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0902::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 098: Turret Power-9 if (1) { aObjSaveHandle(Object_handles[35], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_098 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_098++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0901::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 097: Turret Power-8 if (1) { aObjSaveHandle(Object_handles[37], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_097 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_097++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1025::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 096: Turret Power-7 if (1) { aObjSaveHandle(Object_handles[39], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_096 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_096++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_103B::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 095: Turret Power-6 if (1) { aObjSaveHandle(Object_handles[41], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_095 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_095++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1038::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 094: Turret Power-5 if (1) { aObjSaveHandle(Object_handles[43], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_094 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_094++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_2022::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 093: Turret Power-4 if (1) { aObjSaveHandle(Object_handles[45], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_093 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_093++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_10AF::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 092: Turret Power-3 if (1) { aObjSaveHandle(Object_handles[47], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_092 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_092++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_20AA::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 091: Turret Power-2 if (1) { aObjSaveHandle(Object_handles[49], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetTeam(65536, qObjSavedHandle(8)); aAISetFOV(qObjSavedHandle(8), 360.000000f); // Increment the script action counter if (ScriptActionCtr_091 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_091++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1031::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 090: Turret Power-1 if (1) { aObjSaveHandle(Object_handles[51], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_090 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_090++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0833::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 018: ElevDroids MakeNew if (1) { if (qRandomChance(0.500000f) == true) { aMatcenSetState(1, Matcen_indexes[0]); } else { aMatcenSetState(1, Matcen_indexes[1]); } aSetObjectTimer(Object_handles[52], 40.000000f, 0); // Increment the script action counter if (ScriptActionCtr_018 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_018++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0951::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 010: ElevLoPart2 if (1) { aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[54], 3.000000f, -1); aPortalRenderSet(1, 1, Room_indexes[5], 1); aPortalRenderSet(1, 0, Room_indexes[4], 1); aRoomChangeFog(Room_indexes[5], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); aRoomChangeFog(Room_indexes[3], 0.200000f, 1.000000f, 1.000000f, 160.000000f, 3.000000f); aRoomChangeFog(Room_indexes[4], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_010 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_010++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0952::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 011: ElevLoPart3 if (1) { aPortalRenderSet(0, 1, Room_indexes[3], 1); aPortalRenderSet(0, 0, Room_indexes[3], 1); aAIGoalFollowPathSimple(qObjSavedHandle(6), Path_indexes[24], 131328, -1, 3); aMiscShakeArea(data->me_handle, 50.000000f, 300.000000f); aRoomSetWind(Room_indexes[5], 0.000000f, 1.000000f, 0.000000f, 10.000000f); aRoomSetWind(Room_indexes[4], 0.000000f, 1.000000f, 0.000000f, 40.000000f); aRoomSetWind(Room_indexes[3], 0.000000f, 1.000000f, 0.000000f, 20.000000f); aSetObjectTimer(Object_handles[55], 8.000000f, -1); // Increment the script action counter if (ScriptActionCtr_011 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_011++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0953::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 014: ElevLoPart4 if (1) { aTurnOnSpew(Object_handles[56], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[55], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[56], 3.000000f, -1); aPortalRenderSet(1, 1, Room_indexes[3], 1); aPortalRenderSet(1, 0, Room_indexes[3], 1); aRoomSetWind(Room_indexes[5], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[3], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[4], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomChangeFog(Room_indexes[5], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[3], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[4], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_014 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_014++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0954::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 015: ElevLoPart5 if (1) { aPortalRenderSet(0, 1, Room_indexes[5], 1); aAIGoalFollowPathSimple(qObjSavedHandle(6), Path_indexes[25], 4352, 2, 3); // Increment the script action counter if (ScriptActionCtr_015 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_015++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_095F::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 060: ElevHiUpPart2 if (1) { aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[58], 3.000000f, -1); aPortalRenderSet(1, 0, Room_indexes[7], 1); aPortalRenderSet(1, 0, Room_indexes[6], 1); aRoomChangeFog(Room_indexes[7], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); aRoomChangeFog(Room_indexes[2], 0.200000f, 1.000000f, 1.000000f, 160.000000f, 3.000000f); aRoomChangeFog(Room_indexes[7], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_060 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_060++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0960::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 061: ElevHiUpPart3 if (1) { aPortalRenderSet(0, 1, Room_indexes[2], 1); aPortalRenderSet(0, 0, Room_indexes[2], 1); aAIGoalFollowPathSimple(qObjSavedHandle(7), Path_indexes[27], 131328, -1, 3); aMiscShakeArea(data->me_handle, 50.000000f, 300.000000f); aRoomSetWind(Room_indexes[7], 0.000000f, 1.000000f, 0.000000f, 10.000000f); aRoomSetWind(Room_indexes[6], 0.000000f, 1.000000f, 0.000000f, 40.000000f); aRoomSetWind(Room_indexes[2], 0.000000f, 1.000000f, 0.000000f, 20.000000f); aSetObjectTimer(Object_handles[59], 10.000000f, -1); // Increment the script action counter if (ScriptActionCtr_061 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_061++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0961::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 062: ElevHiUpPart4 if (1) { aTurnOnSpew(Object_handles[59], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[60], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[60], 3.000000f, -1); aPortalRenderSet(1, 1, Room_indexes[2], 1); aPortalRenderSet(1, 0, Room_indexes[2], 1); aRoomSetWind(Room_indexes[7], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[2], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[6], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomChangeFog(Room_indexes[7], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[2], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[6], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_062 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_062++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0962::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 063: ElevHiUpPart5 if (1) { aPortalRenderSet(0, 0, Room_indexes[7], 1); aAIGoalFollowPathSimple(qObjSavedHandle(7), Path_indexes[28], 4352, 4, 3); // Increment the script action counter if (ScriptActionCtr_063 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_063++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0869::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 067: ElevDroids Make AnotherTower if (1) { aSetObjectTimer(Object_handles[61], 40.000000f, -1); aMatcenSetState(1, Matcen_indexes[2]); // Increment the script action counter if (ScriptActionCtr_067 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_067++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0963::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 101: ElevHiDnPart2 if (1) { aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[63], 3.000000f, -1); aPortalRenderSet(1, 0, Room_indexes[9], 1); aPortalRenderSet(1, 0, Room_indexes[8], 1); aRoomChangeFog(Room_indexes[8], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); aRoomChangeFog(Room_indexes[1], 0.200000f, 1.000000f, 1.000000f, 160.000000f, 3.000000f); aRoomChangeFog(Room_indexes[9], 0.200000f, 1.000000f, 1.000000f, 80.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_101 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_101++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0964::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 102: ElevHiDnPart3 if (1) { aPortalRenderSet(0, 1, Room_indexes[1], 1); aPortalRenderSet(0, 0, Room_indexes[1], 1); aAIGoalFollowPathSimple(qObjSavedHandle(9), Path_indexes[31], 131328, -1, 3); aMiscShakeArea(data->me_handle, 50.000000f, 300.000000f); aRoomSetWind(Room_indexes[9], 0.000000f, -1.000000f, 0.000000f, 10.000000f); aRoomSetWind(Room_indexes[8], 0.000000f, -1.000000f, 0.000000f, 40.000000f); aRoomSetWind(Room_indexes[1], 0.000000f, -1.000000f, 0.000000f, 20.000000f); aSetObjectTimer(Object_handles[64], 10.000000f, -1); // Increment the script action counter if (ScriptActionCtr_102 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_102++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0965::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 103: ElevHiDnPart4 if (1) { aTurnOnSpew(Object_handles[64], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aTurnOnSpew(Object_handles[65], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 8.000000f, 3.000000f, 20.000000f, 0, -1); aMiscShakeArea(data->me_handle, 30.000000f, 300.000000f); aSetObjectTimer(Object_handles[65], 3.000000f, -1); aPortalRenderSet(1, 1, Room_indexes[1], 1); aPortalRenderSet(1, 0, Room_indexes[1], 1); aRoomSetWind(Room_indexes[9], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[1], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomSetWind(Room_indexes[8], 0.000000f, 1.000000f, 0.000000f, 0.000000f); aRoomChangeFog(Room_indexes[9], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[1], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); aRoomChangeFog(Room_indexes[8], 0.200000f, 1.000000f, 1.000000f, 2000.000000f, 3.000000f); // Increment the script action counter if (ScriptActionCtr_103 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_103++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0966::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 104: ElevHiDnPart5 if (1) { aPortalRenderSet(0, 0, Room_indexes[9], 1); aAIGoalFollowPathSimple(qObjSavedHandle(9), Path_indexes[25], 4352, 2, 3); // Increment the script action counter if (ScriptActionCtr_104 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_104++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0995::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 031: FIRE! if (((ScriptActionCtr_027 > 0) == true) && ((ScriptActionCtr_026 > 0) == true) && ((ScriptActionCtr_025 > 0) == true) && ((ScriptActionCtr_023 > 0) == true)) { aGoalCompleted(Goal_indexes[1], 1); aSoundPlayObject(Sound_indexes[0], data->me_handle, 1.000000f); aShowColoredHUDMessage(255, 0, 0, Message_strings[3]); aAIGoalFollowPathSimple(Object_handles[66], Path_indexes[32], 4352, 11, 3); aAIGoalFollowPathSimple(Object_handles[67], Path_indexes[32], 4352, 12, 3); aObjSetMovementType(data->me_handle, 1); aObjSetLightingDist(Object_handles[68], 120.000000f); aRoomSetFog(Room_indexes[10], 0.500000f, 0.200000f, 0.100000f, 1100.000000f); aRoomFogSetState(1, Room_indexes[10]); aRoomChangeFog(Room_indexes[10], 0.500000f, 0.200000f, 0.100000f, 300.000000f, 20.000000f); // Increment the script action counter if (ScriptActionCtr_031 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_031++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0994::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 030: Napalm Box Fire 2B if (1) { aSetObjectOnFire(data->me_handle, 99999.000000f, 0.000000f); aTurnOnSpew(Object_handles[73], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, -1.000000f, 8.000000f, 45.000000f, 0, 7); aTurnOnSpew(Object_handles[73], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.120000f, -1.000000f, 15.000000f, 15.000000f, 0, 11); // Increment the script action counter if (ScriptActionCtr_030 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_030++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0993::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 029: Napalm Box Fire 2A if (1) { aSetObjectOnFire(data->me_handle, 99999.000000f, 0.000000f); aTurnOnSpew(Object_handles[74], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, -1.000000f, 8.000000f, 45.000000f, 0, 6); aTurnOnSpew(Object_handles[74], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.120000f, -1.000000f, 15.000000f, 15.000000f, 0, 10); // Increment the script action counter if (ScriptActionCtr_029 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_029++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0992::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 028: Napalm Box Fire 1B if (1) { aSetObjectOnFire(data->me_handle, 99999.000000f, 0.000000f); aTurnOnSpew(Object_handles[75], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, -1.000000f, 8.000000f, 45.000000f, 0, 5); aTurnOnSpew(Object_handles[75], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.120000f, -1.000000f, 15.000000f, 15.000000f, 0, 9); // Increment the script action counter if (ScriptActionCtr_028 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_028++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1191::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 024: Napalm Box Fire 1A if (1) { aSetObjectOnFire(data->me_handle, 99999.000000f, 0.000000f); aTurnOnSpew(Object_handles[76], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, -1.000000f, 8.000000f, 45.000000f, 0, 4); aTurnOnSpew(Object_handles[76], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.120000f, -1.000000f, 15.000000f, 15.000000f, 0, 8); // Increment the script action counter if (ScriptActionCtr_024 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_024++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_083D::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 027: Napalm Destroyed 2B if (1) { aSetObjectTimer(Object_handles[68], 0.000000f, -1); aSetObjectTimer(Object_handles[69], 5.000000f, -1); aTurnOnSpew(Object_handles[73], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 6.000000f, 5.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_027 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_027++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_103C::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 026: Napalm Destroyed 2A if (1) { aSetObjectTimer(Object_handles[68], 0.000000f, -1); aSetObjectTimer(Object_handles[70], 5.000000f, -1); aTurnOnSpew(Object_handles[74], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 6.000000f, 5.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_026 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_026++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_103E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 025: Napalm Destroyed 1B if (1) { aSetObjectTimer(Object_handles[68], 0.000000f, -1); aSetObjectTimer(Object_handles[71], 5.000000f, -1); aTurnOnSpew(Object_handles[75], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 6.000000f, 5.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_025 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_025++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0841::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 023: Napalm Destroyed 1A if (1) { aSetObjectTimer(Object_handles[68], 0.000000f, -1); aSetObjectTimer(Object_handles[72], 5.000000f, -1); aTurnOnSpew(Object_handles[76], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 6.000000f, 5.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_023 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_023++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_097A::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 112: FireOut! if (1) { aSoundStopObj(Object_handles[68]); aShowColoredHUDMessage(255, 0, 0, Message_strings[4]); aRoomChangeFog(Room_indexes[10], 0.300000f, 0.300000f, 0.300000f, 300.000000f, 10.000000f); // Increment the script action counter if (ScriptActionCtr_112 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_112++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0997::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 109: DroidsFoughtFireGoHome 2 if ((ScriptActionCtr_109 < 1) && (1)) { aSetObjectTimer(Object_handles[81], 3.000000f, -1); aTurnOnSpew(Object_handles[85], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 4.000000f, 25.000000f, 1, -1); aTurnOnSpew(Object_handles[86], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 4.000000f, 25.000000f, 1, -1); aTurnOffSpew(10); aTurnOffSpew(11); aAIGoalFollowPathSimple(data->me_handle, Path_indexes[35], 4352, 18, 3); // Increment the script action counter if (ScriptActionCtr_109 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_109++; } } break; case EVT_AIN_GOALCOMPLETE: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_goalcomplete; // Script 107: DroidsAtFireRoom 2 if ((ScriptActionCtr_107 < 1) && (event_data->goal_uid == 12)) { aAIGoalFollowPathSimple(data->me_handle, Path_indexes[33], 4352, 15, 3); // Increment the script action counter if (ScriptActionCtr_107 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_107++; } // Script 108: DroidsAtFireTurnOnGas 2 if ((ScriptActionCtr_108 < 1) && (event_data->goal_uid == 15)) { aObjDelete(Object_handles[70]); aObjDelete(Object_handles[69]); aTurnOffSpew(6); aTurnOffSpew(7); aTurnOnSpew(Object_handles[82], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, -1.000000f, 6.000000f, 30.000000f, 1, -1); aSetObjectTimer(data->me_handle, 2.000000f, -1); aSoundPlayObject(Sound_indexes[1], Object_handles[83], 1.000000f); aObjPlayAnim(Object_handles[83], 0, 1, 2.000000f, 0); // Increment the script action counter if (ScriptActionCtr_108 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_108++; } // Script 111: DroidsGotHome2 if ((ScriptActionCtr_111 < 1) && (event_data->goal_uid == 18)) { aObjDelete(data->me_handle); // Increment the script action counter if (ScriptActionCtr_111 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_111++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0996::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 035: DroidsFoughtFireGoHome 1 if ((ScriptActionCtr_035 < 1) && (1)) { aSetObjectTimer(Object_handles[81], 3.000000f, -1); aTurnOnSpew(Object_handles[87], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 4.000000f, 25.000000f, 1, -1); aTurnOnSpew(Object_handles[88], -1, 7, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, -1.000000f, 4.000000f, 25.000000f, 1, -1); aTurnOffSpew(9); aTurnOffSpew(8); aAIGoalFollowPathSimple(data->me_handle, Path_indexes[35], 4352, 17, 3); // Increment the script action counter if (ScriptActionCtr_035 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_035++; } } break; case EVT_AIN_GOALCOMPLETE: { tOSIRISEVTAINOTIFY *event_data = &data->evt_ain_goalcomplete; // Script 033: DroidsAtFireRoom 1 if ((ScriptActionCtr_033 < 1) && (event_data->goal_uid == 11)) { aAIGoalFollowPathSimple(data->me_handle, Path_indexes[34], 4352, 14, 3); // Increment the script action counter if (ScriptActionCtr_033 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_033++; } // Script 034: DroidsAtFireTurnOnGas 1 if ((ScriptActionCtr_034 < 1) && (event_data->goal_uid == 14)) { aObjDelete(Object_handles[72]); aObjDelete(Object_handles[71]); aTurnOffSpew(4); aTurnOffSpew(5); aTurnOnSpew(Object_handles[81], 0, 7, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, -1.000000f, 6.000000f, 30.000000f, 1, -1); aSetObjectTimer(data->me_handle, 2.000000f, -1); aSoundPlayObject(Sound_indexes[1], Object_handles[84], 1.000000f); aObjPlayAnim(Object_handles[84], 0, 1, 2.000000f, 0); // Increment the script action counter if (ScriptActionCtr_034 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_034++; } // Script 110: DroidsGotHome if ((ScriptActionCtr_110 < 1) && (event_data->goal_uid == 17)) { aObjDelete(data->me_handle); // Increment the script action counter if (ScriptActionCtr_110 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_110++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0805::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 036: FireDoor2 if (1) { if (((event_data->it_handle == Object_handles[66]) || (event_data->it_handle == Object_handles[67])) && ((ScriptActionCtr_031 > 0) == true)) { aGoalCompleted(Goal_indexes[2], 1); aDoorSetPos(data->me_handle, 1.000000f); } else { aShowHUDMessageObj(Message_strings[5], event_data->it_handle); } // Increment the script action counter if (ScriptActionCtr_036 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_036++; return CONTINUE_DEFAULT; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0804::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 032: FireDoor if (1) { if (((event_data->it_handle == Object_handles[66]) || (event_data->it_handle == Object_handles[67])) && ((ScriptActionCtr_031 > 0) == true)) { aDoorSetPos(data->me_handle, 1.000000f); } else { aShowHUDMessageObj(Message_strings[5], event_data->it_handle); } // Increment the script action counter if (ScriptActionCtr_032 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_032++; return CONTINUE_DEFAULT; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_0998::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 118: Turret Power-X4 if (1) { aObjSaveHandle(Object_handles[98], 8); aObjSpark(qObjSavedHandle(8), 10.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_118 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_118++; } // Script 117: Turret Power-X3 if (1) { aObjSaveHandle(Object_handles[99], 8); aObjSpark(qObjSavedHandle(8), 10.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_117 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_117++; } // Script 116: Turret Power-X2 if (1) { aObjSaveHandle(Object_handles[100], 8); aObjSpark(qObjSavedHandle(8), 10.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_116 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_116++; } // Script 115: Turret Power-X1 if (1) { aObjSaveHandle(Object_handles[101], 8); aObjSpark(qObjSavedHandle(8), 10.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_115 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_115++; } // Script 114: Turret Power-X if (1) { aObjSaveHandle(Object_handles[102], 8); aObjSpark(qObjSavedHandle(8), 50.000000f, 10.000000f); aAISetFOV(qObjSavedHandle(8), 360.000000f); aAISetTeam(65536, qObjSavedHandle(8)); // Increment the script action counter if (ScriptActionCtr_114 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_114++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_087E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 131: PICKUP Bomb if (qObjIsPlayer(event_data->it_handle) == true) { aAddObjectToInventoryNamed(data->me_handle, event_data->it_handle, Message_strings[2], 0); // Increment the script action counter if (ScriptActionCtr_131 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_131++; } } break; case EVT_USE: { tOSIRISEVTUSE *event_data = &data->evt_use; // Script 050: USED Bomb if (qObjIsPlayer(event_data->it_handle) == true) { if (qObjGetDistance(event_data->it_handle, Object_handles[104]) <= 50.000000f) { if (((qObjExists(qObjSavedHandle(4)) == true) && (qUserFlag(2) == false)) || (qUserFlag(8) == true)) { aShowHUDMessageObj(Message_strings[7], event_data->it_handle); aAddObjectToInventoryNamed(Object_handles[8], event_data->it_handle, Message_strings[2], 0); } else { aGoalCompleted(Goal_indexes[3], 1); aMusicSetRegionAll(5); aObjSaveHandle(event_data->it_handle, 12); aObjGhostSet(0, Object_handles[104]); aObjSpark(Object_handles[104], 50.000000f, 3.000000f); aEmitSparks(70.000000f, Object_handles[104]); aShowHUDMessageObj(Message_strings[8], event_data->it_handle); aUserFlagSet(4, 1); } } else { aShowHUDMessageObj(Message_strings[9], event_data->it_handle); aAddObjectToInventoryNamed(Object_handles[8], event_data->it_handle, Message_strings[2], 0); } // Increment the script action counter if (ScriptActionCtr_050 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_050++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1834::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_DESTROY: { tOSIRISEVTDESTROY *event_data = &data->evt_destroy; // If destroy event is due to level ending, don't run scripts if (!event_data->is_dying) break; // Script 075: End Boss - Died if (1) { aSetLevelTimer(10.000000f, 14); aGoalCompleted(Goal_indexes[0], 1); aObjMakeInvuln(qPlayerClosest(Object_handles[105], -1), 1000); aMiscViewerShake(90.000000f); // Increment the script action counter if (ScriptActionCtr_075 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_075++; } } break; case EVT_AIN_MOVIE_END: { // Script 022: End Boss - Cinematic End if ((ScriptActionCtr_022 < 1) && (1)) { aShowHUDMessage(Message_strings[11]); aRoomFogSetState(0, Room_indexes[0]); // Increment the script action counter if (ScriptActionCtr_022 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_022++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1877::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 046: Suzuki Cam 3 if ((ScriptActionCtr_046 < 1) && (1)) { aObjPlayAnim(Object_handles[116], 0, 54, 6.000000f, 0); aCinematicSimple(Path_indexes[42], Message_strings[1], Object_handles[119], 5.000000f, 1); // Increment the script action counter if (ScriptActionCtr_046 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_046++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1078::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 049: Suzuki Cam 2 if ((ScriptActionCtr_049 < 1) && (1)) { aStoreObjectInPositionClipboard(Object_handles[120]); aMoveObjectToPositionClipboard(qObjSavedHandle(11)); aAIGoalFollowPathSimple(qObjSavedHandle(11), Path_indexes[43], 4352, -1, 3); aCinematicSimple(Path_indexes[44], Message_strings[1], Object_handles[118], 7.000000f, 1); // Increment the script action counter if (ScriptActionCtr_049 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_049++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1070::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 048: Suzuki Cam 4 if ((ScriptActionCtr_048 < 1) && (1)) { aObjGhostSet(0, Object_handles[108]); aObjDelete(Object_handles[107]); aRoomSetFog(Room_indexes[12], 0.600000f, 0.200000f, 0.100000f, 2000.000000f); aStoreObjectInPositionClipboard(Object_handles[121]); aMoveObjectToPositionClipboard(qObjSavedHandle(11)); aAIGoalFollowPathSimple(qObjSavedHandle(11), Path_indexes[45], 4352, -1, 3); aSetObjectTimer(Object_handles[108], 2.500000f, -1); aSetObjectTimer(Object_handles[110], 4.000000f, -1); aSetObjectTimer(Object_handles[112], 5.500000f, -1); aSetObjectTimer(Object_handles[114], 7.000000f, -1); aSetObjectTimer(Object_handles[122], 8.500000f, -1); aObjPlayAnim(Object_handles[116], 54, 55, 1.000000f, 0); aCinematicSimple(Path_indexes[46], Message_strings[1], Object_handles[123], 10.000000f, 1); // Increment the script action counter if (ScriptActionCtr_048 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_048++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_2075::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 077: Suzuki Cam 4 Part0 if (1) { aEmitSparks(50.000000f, data->me_handle); aEmitSparks(50.000000f, Object_handles[122]); aRoomChangeFog(Room_indexes[12], 0.600000f, 0.200000f, 0.100000f, 500.000000f, 7.500000f); aLightningCreate(Object_handles[122], Object_handles[108], 10.000000f, 3.000000f, 1, Texture_indexes[2], 0.400000f, 3, 50, 255, 255, 0); aObjSpark(Object_handles[114], 30.000000f, 10.000000f); aObjSpark(Object_handles[112], 30.000000f, 10.000000f); aObjSpark(Object_handles[110], 30.000000f, 10.000000f); aObjSpark(Object_handles[122], 30.000000f, 10.000000f); // Increment the script action counter if (ScriptActionCtr_077 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_077++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_2076::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 057: Suzuki Cam 4 Part4 if (1) { aTurnOnSpew(Object_handles[124], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 20.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[125], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 20.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[126], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 20.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[127], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 20.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[128], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.130000f, 10.000000f, 20.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_057 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_057++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_2863::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 056: Suzuki Cam 4 Part3 if (1) { aObjKill(data->me_handle, 1, 2, 2293876, 1.900000f, 1.900000f); aObjSetLightingDist(Object_handles[115], 80.000000f); aObjSetLightingColor(Object_handles[115], 1.000000f, 0.500000f, 0.250000f); aTurnOnSpew(Object_handles[128], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 10.000000f, 80.000000f, 0, -1); aTurnOnSpew(Object_handles[124], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 2.000000f, 12.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[127], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 2.000000f, 12.000000f, 70.000000f, 0, -1); aTurnOnSpew(Object_handles[129], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.130000f, 10.000000f, 20.000000f, 25.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_056 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_056++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_207A::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 055: Suzuki Cam 4 Part2 if (1) { aObjKill(data->me_handle, 1, 2, 2293876, 1.900000f, 1.900000f); aObjSetLightingDist(Object_handles[113], 80.000000f); aObjSetLightingColor(Object_handles[113], 1.000000f, 0.500000f, 0.250000f); aTurnOnSpew(Object_handles[130], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.130000f, 10.000000f, 20.000000f, 25.000000f, 0, -1); aTurnOnSpew(Object_handles[129], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 10.000000f, 80.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_055 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_055++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_206D::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 054: Suzuki Cam 4 Part1 if (1) { aObjSetLightingDist(Object_handles[111], 80.000000f); aObjSetLightingColor(Object_handles[111], 1.000000f, 0.500000f, 0.250000f); aObjKill(data->me_handle, 1, 2, 2293876, 1.900000f, 1.900000f); aTurnOnSpew(Object_handles[130], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 10.000000f, 10.000000f, 80.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_054 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_054++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1079::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 047: Suzuki Cam 5 if ((ScriptActionCtr_047 < 1) && (1)) { aSetObjectTimer(Object_handles[131], 2.500000f, -1); aSetObjectTimer(Object_handles[132], 1.500000f, -1); aSetObjectTimer(Object_handles[133], 0.000000f, -1); aSetObjectTimer(Object_handles[134], 3.500000f, -1); aRoomChangeFog(Room_indexes[12], 0.800000f, 0.400000f, 0.100000f, 60.000000f, 5.000000f); aObjGhostSet(0, Object_handles[109]); aObjSetLightingDist(Object_handles[109], 200.000000f); aObjSetLightingColor(Object_handles[109], 1.000000f, 0.500000f, 0.250000f); aObjPlayAnim(Object_handles[116], 55, 74, 3.500000f, 0); aCinematicSimple(Path_indexes[47], Message_strings[1], Object_handles[135], 5.000000f, 1); // Increment the script action counter if (ScriptActionCtr_047 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_047++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09BF::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 076: Suzuki Cam 5 Part4 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 5.000000f, 8.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_076 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_076++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09BE::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 071: Suzuki Cam 5 Part3 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 5.000000f, 10.000000f, 90.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_071 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_071++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09BD::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 070: Suzuki Cam 5 Part2 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 5.000000f, 30.000000f, 100.000000f, 0, -1); aTurnOnSpew(Object_handles[136], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.130000f, 5.000000f, 50.000000f, 120.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_070 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_070++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09BC::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 069: Suzuki Cam 5 Part1 if (1) { aObjSetMovementType(Object_handles[116], 1); aObjKill(Object_handles[116], 1, 2, 2294000, 1.000000f, 1.000000f); aObjSetVelocity(Object_handles[116], 0.700000f, 0.000000f, 0.700000f, 40.000000f); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.100000f, 0.100000f, 5.000000f, 8.000000f, 100.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.100000f, 5.000000f, 12.000000f, 60.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_069 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_069++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_1071::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 051: Suzuki Cam 6 if ((ScriptActionCtr_051 < 1) && (1)) { aMiscViewerShake(100.000000f); aTurnOnSpew(Object_handles[137], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 4.000000f, 30.000000f, 100.000000f, 0, -1); aTurnOnSpew(Object_handles[137], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 4.000000f, 15.000000f, 160.000000f, 0, -1); aSetObjectTimer(Object_handles[138], 1.500000f, -1); aSetObjectTimer(Object_handles[139], 3.000000f, -1); aSetObjectTimer(Object_handles[140], 6.500000f, -1); aSetObjectTimer(Object_handles[141], 4.000000f, -1); aSetObjectTimer(Object_handles[142], 4.500000f, -1); aSetObjectTimer(Object_handles[143], 5.500000f, -1); aSetObjectTimer(Object_handles[144], 6.000000f, -1); aSetObjectTimer(Object_handles[145], 7.000000f, -1); aSetObjectTimer(Object_handles[146], 7.500000f, -1); aRoomSetWind(Room_indexes[13], 1.000000f, 0.000000f, 0.000000f, 20.000000f); aRoomSetWind(Room_indexes[14], 1.000000f, 0.000000f, 0.000000f, 20.000000f); aRoomSetWind(Room_indexes[15], 1.000000f, 0.000000f, 0.000000f, 20.000000f); aRoomSetFog(Room_indexes[15], 0.600000f, 0.200000f, 0.100000f, 2000.000000f); aRoomSetFog(Room_indexes[14], 0.600000f, 0.200000f, 0.100000f, 2000.000000f); aRoomChangeFog(Room_indexes[14], 0.800000f, 0.400000f, 0.100000f, 150.000000f, 9.000000f); aRoomChangeFog(Room_indexes[15], 0.800000f, 0.400000f, 0.100000f, 150.000000f, 9.000000f); aObjDelete(Object_handles[109]); aCinematicSimple(Path_indexes[48], Message_strings[1], Object_handles[147], 9.000000f, 1); // Increment the script action counter if (ScriptActionCtr_051 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_051++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09CA::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 086: Suzuki Cam 6 Part10 if (1) { aTurnOnSpew(Object_handles[148], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 5.000000f, 40.000000f, 180.000000f, 0, -1); aTurnOnSpew(Object_handles[140], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.140000f, 5.000000f, 60.000000f, 150.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 5.000000f, 30.000000f, 160.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_086 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_086++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C9::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 085: Suzuki Cam 6 Part9 if (1) { aTurnOnSpew(Object_handles[149], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, 5.000000f, 60.000000f, 150.000000f, 0, -1); aTurnOnSpew(Object_handles[150], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, 5.000000f, 60.000000f, 150.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 5.000000f, 30.000000f, 160.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_085 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_085++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C8::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 084: Suzuki Cam 6 Part8 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 6.000000f, 30.000000f, 160.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_084 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_084++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C7::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 083: Suzuki Cam 6 Part7 if (1) { aTurnOnSpew(Object_handles[139], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.140000f, 4.000000f, 60.000000f, 150.000000f, 0, -1); aTurnOnSpew(Object_handles[149], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, 3.000000f, 40.000000f, 120.000000f, 0, -1); aTurnOnSpew(Object_handles[150], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, 3.000000f, 40.000000f, 120.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 6.000000f, 30.000000f, 160.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_083 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_083++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C6::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 082: Suzuki Cam 6 Part6 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 6.000000f, 30.000000f, 160.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_082 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_082++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C5::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 081: Suzuki Cam 6 Part5 if (1) { if ((qObjExists(qObjSavedHandle(4)) == true) && (1)) { aObjDestroy(qObjSavedHandle(4)); } aTurnOnSpew(Object_handles[139], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.120000f, 3.000000f, 30.000000f, 120.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.090000f, 3.000000f, 18.000000f, 300.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.500000f, 0.160000f, 5.000000f, 30.000000f, 160.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_081 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_081++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C4::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 080: Suzuki Cam 6 Part3 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.100000f, 3.000000f, 20.000000f, 130.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.000000f, 0.120000f, 3.000000f, 35.000000f, 80.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_080 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_080++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C3::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 079: Suzuki Cam 6 Part2 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.200000f, 0.120000f, 3.000000f, 12.000000f, 130.000000f, 0, -1); aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.140000f, 3.000000f, 30.000000f, 80.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_079 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_079++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_09C2::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_TIMER: { // Script 078: Suzuki Cam 6 Part1 if (1) { aTurnOnSpew(data->me_handle, -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 4.000000f, 25.000000f, 80.000000f, 0, -1); aTurnOnSpew(Object_handles[139], -1, 2, 0.000000f, 0.000000f, 65536, 0, 1.300000f, 0.120000f, 4.000000f, 10.000000f, 120.000000f, 0, -1); // Increment the script action counter if (ScriptActionCtr_078 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_078++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t CustomObjectScript_286E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_AIN_MOVIE_END: { // Script 073: Suzuki Post Production if (1) { aGoalCompleted(Goal_indexes[5], 1); aDoorLockUnlock(0, Door_handles[0]); aShowHUDMessage(Message_strings[13]); aRoomSetFog(Room_indexes[16], 0.200000f, 0.150000f, 0.100000f, 400.000000f); aRoomSetFog(Room_indexes[10], 0.200000f, 0.150000f, 0.100000f, 400.000000f); aRoomSetFog(Room_indexes[17], 0.200000f, 0.150000f, 0.100000f, 400.000000f); // Increment the script action counter if (ScriptActionCtr_073 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_073++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0005::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { // Script 001: BST Patrols (Mnt) if ((ScriptActionCtr_001 < 1) && (1)) { aAIGoalFollowPathSimple(Object_handles[12], Path_indexes[7], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[13], Path_indexes[8], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[14], Path_indexes[9], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[15], Path_indexes[10], 8392961, -1, 0); aAIGoalFollowPathSimple(Object_handles[16], Path_indexes[11], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[17], Path_indexes[12], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[18], Path_indexes[13], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[19], Path_indexes[14], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[20], Path_indexes[15], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[21], Path_indexes[16], 6295809, -1, 0); aAIGoalFollowPathSimple(Object_handles[22], Path_indexes[17], 6295809, -1, 0); // Increment the script action counter if (ScriptActionCtr_001 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_001++; } // Script 100: IG Patrols if ((ScriptActionCtr_100 < 1) && (1)) { aAIGoalFollowPathSimple(Object_handles[23], Path_indexes[18], 4198400, -1, 3); aAIGoalFollowPathSimple(Object_handles[24], Path_indexes[18], 4198400, -1, 3); aAIGoalFollowPathSimple(Object_handles[25], Path_indexes[18], 4198400, -1, 3); aAIGoalFollowPathSimple(Object_handles[26], Path_indexes[19], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[27], Path_indexes[19], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[28], Path_indexes[19], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[29], Path_indexes[19], 8392704, -1, 3); aAIGoalFollowPathSimple(Object_handles[30], Path_indexes[20], 4198400, -1, 3); aAIGoalFollowPathSimple(Object_handles[31], Path_indexes[20], 4198400, -1, 3); // Increment the script action counter if (ScriptActionCtr_100 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_100++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0000::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { // Script 005: ElevDroids PlayerIsHere if ((ScriptActionCtr_005 < 1) && (1)) { aSetObjectTimer(Object_handles[52], 40.000000f, 0); aMatcenSetState(1, Matcen_indexes[0]); // Increment the script action counter if (ScriptActionCtr_005 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_005++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0006::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { // Script 064: ElevDroids PlayerInTower if ((ScriptActionCtr_064 < 1) && (1)) { aObjDelete(qObjSavedHandle(6)); aObjDelete(qObjSavedHandle(10)); aCancelTimer(0); aSetObjectTimer(Object_handles[61], 40.000000f, -1); aMatcenSetState(1, Matcen_indexes[2]); // Increment the script action counter if (ScriptActionCtr_064 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_064++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0004::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 072: End Boss - Start Cinematic if ((ScriptActionCtr_072 < 1) && (4 == qObjType(event_data->it_handle))) { aGoalEnableDisable(1, Goal_indexes[0]); aCancelTimer(0); aRoomChangeFog(Room_indexes[0], 0.000000f, 0.000000f, 0.000000f, 800.000000f, 9.000000f); aCinematicSimple(Path_indexes[40], Message_strings[10], Object_handles[105], 8.000000f, 1); aDoorSetPos(Door_handles[0], 0.000000f); aDoorLockUnlock(1, Door_handles[0]); // Increment the script action counter if (ScriptActionCtr_072 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_072++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0008::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 053: Destroy Bots2 if ((ScriptActionCtr_047 > 0) == true) { aObjKill(qGetAtachedChild(event_data->it_handle, 0), 1, 1, 2293872, 1.000000f, 1.400000f); aObjKill(event_data->it_handle, 1, 1, 2293872, 1.400000f, 1.800000f); // Increment the script action counter if (ScriptActionCtr_053 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_053++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0009::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 052: Destroy Bots1 if ((ScriptActionCtr_047 > 0) == true) { aObjKill(event_data->it_handle, 1, 1, 2302192, 0.000000f, 0.100000f); // Increment the script action counter if (ScriptActionCtr_052 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_052++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000F::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 130: MusicBoss if (1) { aMusicSetRegion(6, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_130 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_130++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0013::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 129: MusicTower2 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(4, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_129 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_129++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0012::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 128: MusicTower1 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(4, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_128 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_128++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0011::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 127: MusicMid4 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_127 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_127++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_0010::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 126: MusicMid3 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_126 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_126++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000E::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 125: MusicMid2 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_125 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_125++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000C::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 124: MusicMid1 if ((ScriptActionCtr_050 > 0) == false) { aMusicSetRegion(3, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_124 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_124++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000D::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 123: MusicMaint2 if (1) { aMusicSetRegion(2, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_123 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_123++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000A::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 122: MusicMaint1 if (1) { aMusicSetRegion(2, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_122 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_122++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } int16_t TriggerScript_000B::CallEvent(int event, tOSIRISEventInfo *data) { switch (event) { case EVT_COLLIDE: { tOSIRISEVTCOLLIDE *event_data = &data->evt_collide; // Script 121: MusicSewer1 if (1) { aMusicSetRegion(1, event_data->it_handle); // Increment the script action counter if (ScriptActionCtr_121 < MAX_ACTION_CTR_VALUE) ScriptActionCtr_121++; } } break; } return CONTINUE_CHAIN | CONTINUE_DEFAULT; } /********************************************************* Script Save Block: DO NOT TOUCH ANYTHING IN THIS BLOCK!!! ********************************************************** $$SCRIPT_BLOCK_START VERSION 3 NEXT_ID 132 // UserType value blocks $$UTYPE_VALS_START UserVar 0:FireRoomCounter 1:CurFireRoomNapalm 2:LifterMaxSpeed 3:BombDropRadius $$UTYPE_VALS_END $$UTYPE_VALS_START UserFlag 0:TopLevelTriggered 1:FireRoomTriggered 2:BomberHasSomething 3:BomberHasRealBomb 4:BombDroppedOntoMatcen 5:PackageMatcened 6:BombIsPlanted 7:SpecialDelivery 8:BombMatActive 9:TopAmbientLifterMatcened 11:PlayerEscapedBomb $$UTYPE_VALS_END $$UTYPE_VALS_START SpewHandle 0:HalonSpewer1 1:HalonSpewer2 2:HalonSpewer3 3:HalonSpewer4 4:FireSpewer1A 5:FireSpewer1B 6:FireSpewer2A 7:FireSpewer2B 8:BigFire1A 9:BigFire1B 10:BigFire2A 11:BigFire2B $$UTYPE_VALS_END $$UTYPE_VALS_START TimerID 0:LowDroids 1:Music 2:LifterFiremenTimer 3:FireroomTimer 4:FiremanHalon1 5:FiremanHalon2 6:FiremanHalon3 7:DroidManagerUpdate 8:BombMatcenInit 9:BomberPickupDelay 10:SuzukiCinematicTimer 11:BomberMakeTimer 12:BombDetonationTimer 13:Droid Central 14:EndLevelTimer $$UTYPE_VALS_END $$UTYPE_VALS_START SavedObjectSlot 0:Fireman1 1:Fireman2 2:Fireman3 3:Bomber 4:Package 5:Bomb 6:LoDroid 7:HiUpDroid 8:CurrentTurret 9:HiDnDroid 10:PreLoDroid 11:RealBomber 12:GuyWhoDroppedBomb $$UTYPE_VALS_END $$UTYPE_VALS_START GoalID 0:DroidPreLo 1:DroidInLo 2:DroidPreUp 3:DroidInUp 4:DroidExitUp 5:DroidPreDn 6:DroidInDn 7:DroidBorn 8:DroidDie 11:Fireman1 12:Fireman2 14:Fireman1AtFire 15:Fireman2AtFire 17:Fireman1AtDoor 18:Fireman2AtDoor 20:PackagePickedup 21:BomberAtPickup 22:BomberFinishedRun 23:BomberFinishedRealRun 24:SuzukiPreForceField 25:SuzukiPostForceField 26:SuzukiBombPlanted 27:AtBombDropoff $$UTYPE_VALS_END // Name Lists $$DOOR_LIST_START BossDoor DroidDoor2 $$DOOR_LIST_END $$OBJECT_LIST_START ParkSpew1 ParkSpew2 ParkSpew3 ParkSpew4 TargetIntro2 TargetIntro1 IntroSpew1 IntroSpew2 TheBomb BST-1 BST-2 BST-3 BST-C6 BST-C5 BST-C4 BST-C3 BST-C2 BST-C1 BST-A-A BST-A-B BST-A-C BST-B-A BST-B-B IG3C IG3B IG3A IG2D IG2C IG2B IG2A IG1B IG1A TPower10 TGun10 TPower9 TGun9 TPower8 TGun8 TPower7 TGun7 TPower6 TGun6 TPower5 TGun5 TPower4 TGun4 TPower3 TGun3 TPower2 TGun2 TPower1 TGun1 MntLifterMatcenA LoEnter1 LoEnter2 LoExit1 LoExit2 HiUpEntry1 HiUpEntry2 HiUpExit1 HiUpExit2 TopLifterMatcen HiDnEntry1 HiDnEntry2 HiDnExit1 HiDnExit2 FireMan1 FireMan2 FireLight BoxFire2B BoxFire2A BoxFire1B BoxFire1A NFire2B NFire2A NFire1B NFire1A Napalm2B Napalm2A Napalm1B Napalm1A FireSpew1 FireSpew2 FireHandle2 FireHandle1 HalonSpewer1 HalonSpewer-2 HalonSpewer3 HalonSpewer4 DroidDoor2 DroidFireDoor1 MGuard6 MGuard5 MGuard-4 MGuard-3 MGuard-2 MGuard-1 TPowerX TGunX4 TGunX3 TGunX2 TGunX1 TGunX EBarPlace DaBomb EndBoss Julian ShowBomb PBomb RedFlashBar PNode3 PBar3 PNode2 PBar2 PNode1 PBar1 Suzuki SZTarget1 SZTarget3 SZTarget2 SZSpot1 SZSpot2 PNode4 SZTarget4 PX1 PX2 PX3 PX4 PExplode1 PExplode2 PExplode3 SZ5Fire4 SZ5Fire3 SZ5Fire2 SZ5Fire1 SZTarget5 SZ5Fire2A SZF1 SZF2 SZF3 SZF4 SZF5 SZF6 SZF7 SZF8 SZF9 SZF10 SZTarget6 SZF15 SZF13 SZF14 Start End Boss Cin $$OBJECT_LIST_END $$ROOM_LIST_START BossRoom HiDnShaft HiUpShaft LoShaft LoEntrance LoExit HiUpEntrance HiUpExit HiDnEntrance HiDnExit FireRoom PreBoss SuzukiOffice DroidExplode1 DroidExplosion DroidCommand ElevatorRoom PreFireRoom $$ROOM_LIST_END $$TRIGGER_LIST_START EnterMaintenence MntLifterInit StartUpperLifters BossRoomEntrance RoboDestroy DestroyMe MusicBoss MusicSuzuki2 MusicSuzuki1 MusicMid4 MusicMid3 MusicMid2 MusicMid1 MusicMaint2 MusicMaint1 MusicSewer1 $$TRIGGER_LIST_END $$SOUND_LIST_START AmbSirenIntense AmbSwitch31 $$SOUND_LIST_END $$TEXTURE_LIST_START MeshGlass1 FunkyEffectGreen FunkyEffect3 $$TEXTURE_LIST_END $$SPECNAME_LIST_START $$SPECNAME_LIST_END $$PATH_LIST_START IntroCam-2 IntroCam-1 IntroCam-Ship IntroPlayerPath BST-1 BST-2 BST-3 BST-C6 BST-C5 BST-C4 BST-C3 BST-C2 BST-C1 BST-A-1 BST-A-2 BST-A-3 BST-B-1 BST-B-2 IG-3 IG-2 IG-1 LoLeft1 LoRight1 LoEntry LoExit HiUp1 HiUpEntry HiUpExit HiRight1 HiLeft1 DnEntry DnExit FirePathIn Fire2 Fire1 FirePathOut Guards BombPickup2 BombPickup1 BombTake BossCam SZCam1 SZCam2 BombDelivery SZCam3 BombAfterDevlier SZCam4 SuzukiFinalPath SZCam6 DBorn1 DBorn2 DBorn3 DBorn4 DDie1 DDie2 DDie3 DDie4 $$PATH_LIST_END $$MATCEN_LIST_START MntMatcenA MntMatcenB TopLifterMatcen BombMatcen BomberMatcen-2 BomberMatcen-1 DCMatcen-1 DCMatcen-2 DCMatcen-3 DCMatcen-4 $$MATCEN_LIST_END $$GOAL_LIST_START Destroy the PTMC Assault Bot Create a Disturbance to Summon Droids Wait for Droids to Open Central Command Place Bomb on Delivery Pad Get a Safe Distance from Bomb Assasinate President Suzuki of PTMC $$GOAL_LIST_END $$STRM_AUDIO_LIST_START $$STRM_AUDIO_LIST_END // Script Tree Dump 00:74: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: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.300000:BlobLifetime 10:6:0.120000: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: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.300000:BlobLifetime 10:6:0.120000: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: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.300000:BlobLifetime 10:6:0.120000: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: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.300000:BlobLifetime 10:6:0.120000: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:aCinematicSimple $$CHILD_BLOCK_START 10:16:0:CameraPath 10:8:IntroMessage:Text 10:1:0:4:Target 10:6:9.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:88:IntroCam-2 $$CHILD_BLOCK_START 01:1:4 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:1:CameraPath 10:8:EmptyMessage:Text 10:1:0:5:Target 10:6:9.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:89:IntroCam-3 $$CHILD_BLOCK_START 01:1:5 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:6: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.100000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:25.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:-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.100000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:-1.000000:SpewLife 10:6:3.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aCinematicIntro $$CHILD_BLOCK_START 10:16:2:CameraPath 10:8:EmptyMessage:Text 10:1:2:-1:TotallyNotUsedTarget 10:16:3:PlayerPath 10:6:8.000000:Seconds $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:87:INIT GlassWindows $$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:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:15:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:14:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:13:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:12:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:11:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:10:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:9:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:8:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:7:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:6:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:5:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:4:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:3:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:2:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:1:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END 08:aRoomSetFaceTexture $$CHILD_BLOCK_START 10:2:0:Room 10:4:0:FaceNum 10:14:0:Texture $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:19:INIT Variables/Flags $$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:aGoalEnableDisable $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:18:0:0:LevelGoal $$CHILD_BLOCK_END 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:0:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserVarSet $$CHILD_BLOCK_START 10:10:0:0:UserVar 10:6:0.000000:value $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:0:8:Object 06:qPlayerClosest:PlayerObject $$CHILD_BLOCK_START 10:1:0:8:Object 10:10:0:-1:UserVar $$CHILD_BLOCK_END 10:8:BombInventory:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:2:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:3:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:4:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:5: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 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:105:BST Patrols (Sewer) $$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:9:Object 10:16:4:Path 10:15:10490113:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:10:Object 10:16:5:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:11:Object 10:16:6:Path 10:15:10490113:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:1:BST Patrols (Mnt) $$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:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:12:Object 10:16:7:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:13:Object 10:16:8:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:14:Object 10:16:9:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:15:Object 10:16:10:Path 10:15:8392961:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:16:Object 10:16:11:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:17:Object 10:16:12:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:18:Object 10:16:13:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:19:Object 10:16:14:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:20:Object 10:16:15:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:21:Object 10:16:16:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:22:Object 10:16:17:Path 10:15:6295809:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:100:IG Patrols $$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:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:23:Object 10:16:18:Path 10:15:4198400:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:24:Object 10:16:18:Path 10:15:4198400:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:25:Object 10:16:18:Path 10:15:4198400:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:26:Object 10:16:19: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:27:Object 10:16:19: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:28:Object 10:16:19: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:29:Object 10:16:19: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:30:Object 10:16:20:Path 10:15:4198400:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:31:Object 10:16:20:Path 10:15:4198400:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:99:Turret Power-10 $$CHILD_BLOCK_START 01:1:32 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:33:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:98:Turret Power-9 $$CHILD_BLOCK_START 01:1:34 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:35:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:97:Turret Power-8 $$CHILD_BLOCK_START 01:1:36 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:37:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:96:Turret Power-7 $$CHILD_BLOCK_START 01:1:38 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:39:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:95:Turret Power-6 $$CHILD_BLOCK_START 01:1:40 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:41:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:94:Turret Power-5 $$CHILD_BLOCK_START 01:1:42 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:43:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:93:Turret Power-4 $$CHILD_BLOCK_START 01:1:44 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:45:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:92:Turret Power-3 $$CHILD_BLOCK_START 01:1:46 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:47:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:91:Turret Power-2 $$CHILD_BLOCK_START 01:1:48 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:49:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:90:Turret Power-1 $$CHILD_BLOCK_START 01:1:50 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:51:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:2:INIT ElevDroids $$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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:18:ElevDroids MakeNew $$CHILD_BLOCK_START 01:1:52 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.500000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:0:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:1:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:52:Object 10:6:40.000000:Time 10:10:0:0:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:5:ElevDroids PlayerIsHere $$CHILD_BLOCK_START 01:0:1 02:1 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:52:Object 10:6:40.000000:Time 10:10:0:0:TimerID $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:0:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:65:ElevDroids Created Left $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:1:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:10:SavedObjectSlot $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:-1:Matcen $$CHILD_BLOCK_END 08:aAIGoalSetCircleDistance $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:3:GoalPriority 10:6:5.000000:distance $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:21:Path 10:15:4352:AIGoalFlags 10:10:0:0:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:6:ElevDroids Created Right $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:0:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:10:SavedObjectSlot $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:-1:Matcen $$CHILD_BLOCK_END 08:aAIGoalSetCircleDistance $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:3:GoalPriority 10:6:5.000000:distance $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:22:Path 10:15:4352:AIGoalFlags 10:10:0:0:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:8:ElevDroids Reached OutsideLo $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:0:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:53:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:53: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:8.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:54: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:8.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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:4:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:23:Path 10:15:4352:AIGoalFlags 10:10:0:1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:106:ElevDroids Reached InsideHiDn $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:6:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:9:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:59:ElevDroids Reached InsideHiUp $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:3:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:7:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:16:ElevDroids Reached InsideLo $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:1:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:6:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:10:ElevLoPart2 $$CHILD_BLOCK_START 01:1:53 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:54:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:5:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:4:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:5:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:3:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:160.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:4:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:11:ElevLoPart3 $$CHILD_BLOCK_START 01:1:54 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:6:SavedObjectSlot $$CHILD_BLOCK_END 10:16:24:Path 10:15:131328:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:5:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:10.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:4:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:40.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:3:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:55:Object 10:6:8.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:14:ElevLoPart4 $$CHILD_BLOCK_START 01:1:55 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:56: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:8.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:55: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:8.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:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:56:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:3:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:5:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:3:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:4:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:5:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:3:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:4:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:15:ElevLoPart5 $$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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:5:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:6:SavedObjectSlot $$CHILD_BLOCK_END 10:16:25:Path 10:15:4352:AIGoalFlags 10:10:0:2:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:17:ElevDroids Reached End Of Line $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:4:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:58:ElevDroids Reached OutsideHiUp $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:2:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:57:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:57: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:8.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:58: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:8.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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:6:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:26:Path 10:15:2101504:AIGoalFlags 10:10:0:3:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:60:ElevHiUpPart2 $$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:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:58:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:7:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:6:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:7:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:2:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:160.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:7:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:61:ElevHiUpPart3 $$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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:7:SavedObjectSlot $$CHILD_BLOCK_END 10:16:27:Path 10:15:131328:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:7:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:10.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:6:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:40.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:2:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:59:Object 10:6:10.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:62:ElevHiUpPart4 $$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:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:59: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:8.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:60: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:8.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:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:60:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:2:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:7:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:2:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:6:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:7:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:2:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:6:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:63:ElevHiUpPart5 $$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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:7:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:7:SavedObjectSlot $$CHILD_BLOCK_END 10:16:28:Path 10:15:4352:AIGoalFlags 10:10:0:4:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:67:ElevDroids Make AnotherTower $$CHILD_BLOCK_START 01:1:61 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:61:Object 10:6:40.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:2:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:64:ElevDroids PlayerInTower $$CHILD_BLOCK_START 01:0:2 02:1 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:6:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:10:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aCancelTimer $$CHILD_BLOCK_START 10:10:0:0:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:61:Object 10:6:40.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:2:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:66:ElevDroids Created Tower $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:2:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:-1:Matcen $$CHILD_BLOCK_END 08:aAIGoalSetCircleDistance $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:3:GoalPriority 10:6:5.000000:distance $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:29:Path 10:15:4352:AIGoalFlags 10:10:0:5:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:68:ElevDroids Reached OutsideHiDn $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:5:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:62:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:62: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:8.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:63: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:8.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:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:8:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:30:Path 10:15:4352:AIGoalFlags 10:10:0:6:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:101:ElevHiDnPart2 $$CHILD_BLOCK_START 01:1:62 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:63:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:9:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:8:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:8:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:1:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:160.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:9:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:80.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:102:ElevHiDnPart3 $$CHILD_BLOCK_START 01:1:63 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:1:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:9:SavedObjectSlot $$CHILD_BLOCK_END 10:16:31:Path 10:15:131328:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:50.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:9:Room 10:6:0.000000:X 10:6:-1.000000:Y 10:6:0.000000:Z 10:6:10.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:8:Room 10:6:0.000000:X 10:6:-1.000000:Y 10:6:0.000000:Z 10:6:40.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:1:Room 10:6:0.000000:X 10:6:-1.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:64:Object 10:6:10.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:103:ElevHiDnPart4 $$CHILD_BLOCK_START 01:1:64 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:64: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:8.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:65: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:8.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:aMiscShakeArea $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:30.000000:Amount 10:6:300.000000:Dist $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:65:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:1:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:4:0:PortalNum 10:2:1:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:9:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:1:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:8:Room 10:6:0.000000:X 10:6:1.000000:Y 10:6:0.000000:Z 10:6:0.000000:Speed $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:9:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:1:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:8:Room 10:6:0.200000:Red 10:6:1.000000:Green 10:6:1.000000:Blue 10:6:2000.000000:Depth 10:6:3.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:104:ElevHiDnPart5 $$CHILD_BLOCK_START 01:1:65 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aPortalRenderSet $$CHILD_BLOCK_START 10:10:0:0:Enable/Disable 10:4:0:PortalNum 10:2:9:Room 10:5:1:DoublesidedFlag $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:9:SavedObjectSlot $$CHILD_BLOCK_END 10:16:25:Path 10:15:4352:AIGoalFlags 10:10:0:2:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:3:INIT Fire $$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:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:0:66:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:0:67:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:68:Object 10:10:0:0:MovementType $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:68:Object 10:6:1.000000:Red 10:6:0.250000:Green 10:6:0.000000:Blue $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:68:Object 10:6:0.000000:Distance $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:66:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:67:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:69:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:70:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:71:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:0:72:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:69:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:70:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:71:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:72:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:31:FIRE! $$CHILD_BLOCK_START 01:1:68 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:27:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:26:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:25:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:23:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:1:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:0:Sound 10:1:2:-1:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aShowColoredHUDMessage $$CHILD_BLOCK_START 10:4:255:Red 10:4:0:Green 10:4:0:Blue 10:8:FiremenSummoning:Message $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:66:Object 10:16:32:Path 10:15:4352:AIGoalFlags 10:10:0:11:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:67:Object 10:16:32:Path 10:15:4352:AIGoalFlags 10:10:0:12:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:68:Object 10:6:120.000000:Distance $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:10:Room 10:6:0.500000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:1100.000000:Depth $$CHILD_BLOCK_END 08:aRoomFogSetState $$CHILD_BLOCK_START 10:10:0:1:On/Off 10:2:10:Room $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:10:Room 10:6:0.500000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:300.000000:Depth 10:6:20.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:30:Napalm Box Fire 2B $$CHILD_BLOCK_START 01:1:69 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectOnFire $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:99999.000000:Seconds 10:6:0.000000:Damage $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:73: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:8.000000:BlobSize 10:6:45.000000:BlobSpeed 10:5:0:Randomize 10:10:0:7:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:73: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:15.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:11:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:29:Napalm Box Fire 2A $$CHILD_BLOCK_START 01:1:70 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectOnFire $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:99999.000000:Seconds 10:6:0.000000:Damage $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:74: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:8.000000:BlobSize 10:6:45.000000:BlobSpeed 10:5:0:Randomize 10:10:0:6:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:74: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:15.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:10:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:28:Napalm Box Fire 1B $$CHILD_BLOCK_START 01:1:71 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectOnFire $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:99999.000000:Seconds 10:6:0.000000:Damage $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:75: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:8.000000:BlobSize 10:6:45.000000:BlobSpeed 10:5:0:Randomize 10:10:0:5:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:75: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:15.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:9:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:24:Napalm Box Fire 1A $$CHILD_BLOCK_START 01:1:72 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetObjectOnFire $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:99999.000000:Seconds 10:6:0.000000:Damage $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:76: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:8.000000:BlobSize 10:6:45.000000:BlobSpeed 10:5:0:Randomize 10:10:0:4:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:76: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:15.000000:BlobSize 10:6:15.000000:BlobSpeed 10:5:0:Randomize 10:10:0:8:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:27:Napalm Destroyed 2B $$CHILD_BLOCK_START 01:1:77 02:4 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:68:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:69:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:73: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:6.000000:SpewLife 10:6:5.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:26:Napalm Destroyed 2A $$CHILD_BLOCK_START 01:1:78 02:4 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:68:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:70:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:74: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:6.000000:SpewLife 10:6:5.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:25:Napalm Destroyed 1B $$CHILD_BLOCK_START 01:1:79 02:4 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:68:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:71:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:75: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:6.000000:SpewLife 10:6:5.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:23:Napalm Destroyed 1A $$CHILD_BLOCK_START 01:1:80 02:4 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:68:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:72:Object 10:6:5.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:76: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:6.000000:SpewLife 10:6:5.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:112:FireOut! $$CHILD_BLOCK_START 01:1:81 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:68:Object $$CHILD_BLOCK_END 08:aShowColoredHUDMessage $$CHILD_BLOCK_START 10:4:255:Red 10:4:0:Green 10:4:0:Blue 10:8:FiremenDone:Message $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:10:Room 10:6:0.300000:Red 10:6:0.300000:Green 10:6:0.300000:Blue 10:6:300.000000:Depth 10:6:10.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:107:DroidsAtFireRoom 2 $$CHILD_BLOCK_START 01:1:67 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:12:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:2:-1:Object 10:16:33:Path 10:15:4352:AIGoalFlags 10:10:0:15:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:33:DroidsAtFireRoom 1 $$CHILD_BLOCK_START 01:1:66 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:11:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:2:-1:Object 10:16:34:Path 10:15:4352:AIGoalFlags 10:10:0:14:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:108:DroidsAtFireTurnOnGas 2 $$CHILD_BLOCK_START 01:1:67 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:15:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:70:Object $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:69:Object $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:6:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:7:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:82: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:6.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:1:Sound 10:1:0:83:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:83:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:34:DroidsAtFireTurnOnGas 1 $$CHILD_BLOCK_START 01:1:66 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:14:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:72:Object $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:71:Object $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:4:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:5:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:81: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.120000:BlobInterval 10:6:-1.000000:SpewLife 10:6:6.000000:BlobSize 10:6:30.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:2:-1:Object 10:6:2.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSoundPlayObject $$CHILD_BLOCK_START 10:12:1:Sound 10:1:0:84:Object 10:9:1.000000:Volume $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:84:Object 10:4:0:StartFrame 10:4:1:EndFrame 10:6:2.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:109:DroidsFoughtFireGoHome 2 $$CHILD_BLOCK_START 01:1:67 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:81:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:85: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:4.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:86: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:4.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:10:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:11:SpewHandle $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:2:-1:Object 10:16:35:Path 10:15:4352:AIGoalFlags 10:10:0:18:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:35:DroidsFoughtFireGoHome 1 $$CHILD_BLOCK_START 01:1:66 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:81:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:87: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:4.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:88: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:4.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:1:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:9:SpewHandle $$CHILD_BLOCK_END 08:aTurnOffSpew $$CHILD_BLOCK_START 10:10:0:8:SpewHandle $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:2:-1:Object 10:16:35:Path 10:15:4352:AIGoalFlags 10:10:0:17:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:111:DroidsGotHome2 $$CHILD_BLOCK_START 01:1:67 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:18:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:2:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:110:DroidsGotHome $$CHILD_BLOCK_START 01:1:66 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:17:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:2:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:36:FireDoor2 $$CHILD_BLOCK_START 01:1:89 02:0 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:1:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 09:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:1:1:-1:Object 07:1:0 10:1:0:66:Object $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 10:1:1:-1:Object 07:1:0 10:1:0:67:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:31:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:2:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:2:-1:Door 10:9:1.000000:Position $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:DroidOnlyDoor:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:32:FireDoor $$CHILD_BLOCK_START 01:1:90 02:0 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:1:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 09:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:1:1:-1:Object 07:1:0 10:1:0:66:Object $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 10:1:1:-1:Object 07:1:0 10:1:0:67:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:31:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:2:-1:Door 10:9:1.000000:Position $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:DroidOnlyDoor:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:113:IntruderAlert! $$CHILD_BLOCK_START 01:2:0 02:23 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:18:1:-1:Level Goal 07:1:0 10:18:0:2:Level Goal $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:91:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:92:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:93:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:94:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:95:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:0:96:Object 10:16:36:Path 10:15:4353:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:118:Turret Power-X4 $$CHILD_BLOCK_START 01:1:97 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:98:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:10.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:117:Turret Power-X3 $$CHILD_BLOCK_START 01:1:97 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:99:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:10.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:116:Turret Power-X2 $$CHILD_BLOCK_START 01:1:97 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:100:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:10.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:115:Turret Power-X1 $$CHILD_BLOCK_START 01:1:97 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:101:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:10.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:114:Turret Power-X $$CHILD_BLOCK_START 01:1:97 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:102:Object 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:50.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aAISetFOV $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END 10:6:360.000000:FOV $$CHILD_BLOCK_END 08:aAISetTeam $$CHILD_BLOCK_START 10:10:0:65536:Teams 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:8:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:38:INIT Bomb Delivery $$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:8:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:3:Matcen $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:103:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:104:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:39:Created New Bomb $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:3:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:0:3:Matcen $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:8:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END 08:aStoreObjectInPositionClipboard $$CHILD_BLOCK_START 10:1:0:103:Object $$CHILD_BLOCK_END 08:aMoveObjectToPositionClipboard $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.550000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:4:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:5:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:30.000000:SparkRate 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:50.000000:Number 10:1:1:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:44:Bomber Created-2 $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:4:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:3:SavedObjectSlot $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:2:Matcen $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:1:-1:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:37:Path 10:15:2101504:AIGoalFlags 10:10:0:21:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:40:Bomber Created-1 $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:-1:Matcen 07:1:0 10:17:0:5:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:3:SavedObjectSlot $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:2:Matcen $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 10:1:1:-1:Object 10:4:99999:Time $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:25.000000:MaxSpeed $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:38:Path 10:15:2101504:AIGoalFlags 10:10:0:21:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:41:BomberReadyToPickup $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:21:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjExists:Bool $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalPickUpObjectRad $$CHILD_BLOCK_START 10:1:1:-1:Picker 10:4:0:PickerPoint 06:qObjSavedHandle:Pickee $$CHILD_BLOCK_START 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END 10:9:1.000000:RadiusRatio 10:10:0:3:GoalPriority 10:15:256:AIGoalFlags 10:10:0:20:GoalID $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:39:Path 10:15:4352:AIGoalFlags 10:10:0:22:GoalID 10:10:0:0:GoalPriority $$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:4:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 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:DeliveryReady:Message $$CHILD_BLOCK_END 08:aAIGoalPickUpObjectRad $$CHILD_BLOCK_START 10:1:1:-1:Picker 10:4:0:PickerPoint 10:1:0:104:Pickee 10:9:0.600000:RadiusRatio 10:10:0:3:GoalPriority 10:15:256:AIGoalFlags 10:10:0:20:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:39:Path 10:15:4352:AIGoalFlags 10:10:0:22:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:42:BomberPickedUp $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:20:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:4:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:3:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:4:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:2:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:39:Path 10:15:4352:AIGoalFlags 10:10:0:22:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:43:BomberDoneRun $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:22:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:4:UserFlag $$CHILD_BLOCK_END 07:0:7 $$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:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:3:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:5:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:3:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjExists:Bool $$CHILD_BLOCK_START 06:qGetAtachedChild:Object $$CHILD_BLOCK_START 10:1:1:-1:Object 10:4:0:AttachPoint $$CHILD_BLOCK_END $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 06:qGetAtachedChild:Object $$CHILD_BLOCK_START 10:1:1:-1:Object 10:4:0:AttachPoint $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:3:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:2:UserFlag 10:5:0:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:131:PICKUP Bomb $$CHILD_BLOCK_START 01:1:8 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:BombInventory:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:50:USED Bomb $$CHILD_BLOCK_START 01:1:8 02:25 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 03:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 06:qObjGetDistance:Float $$CHILD_BLOCK_START 10:1:1:-1:Object1 10:1:0:104:Object2 $$CHILD_BLOCK_END 07:1:5 10:6:50.000000:Float $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 09:1 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qObjExists:Bool $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:2:UserFlag $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:8:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:BombPadFull:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:0:8:Object 10:1:1:-1:PlayerObject 10:8:BombInventory:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:3:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aMusicSetRegionAll $$CHILD_BLOCK_START 10:10:0:5:Region $$CHILD_BLOCK_END 08:aObjSaveHandle $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:12:SavedObjectSlot $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:104:Object $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:104:Object 10:6:50.000000:SparkRate 10:6:3.000000:Time $$CHILD_BLOCK_END 08:aEmitSparks $$CHILD_BLOCK_START 10:6:70.000000:Number 10:1:0:104:Object $$CHILD_BLOCK_END 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:BombDropSuccess:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END 08:aUserFlagSet $$CHILD_BLOCK_START 10:10:0:4:UserFlag 10:5:1:True/False $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessageObj $$CHILD_BLOCK_START 10:8:BombDropFail:Message 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END 08:aAddObjectToInventoryNamed $$CHILD_BLOCK_START 10:1:0:8:Object 10:1:1:-1:PlayerObject 10:8:BombInventory:ItemName 10:5:0:Spewable $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:72:End Boss - Start Cinematic $$CHILD_BLOCK_START 01:0:3 02:1 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:0:4:ObjectType 07:1:0 06:qObjType:ObjectType $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aGoalEnableDisable $$CHILD_BLOCK_START 10:10:0:1:Enable/Disable 10:18:0:0:LevelGoal $$CHILD_BLOCK_END 08:aCancelTimer $$CHILD_BLOCK_START 10:10:0:0:TimerID $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:0:Room 10:6:0.000000:Red 10:6:0.000000:Green 10:6:0.000000:Blue 10:6:800.000000:Depth 10:6:9.000000:Time $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:40:CameraPath 10:8:BossName:Text 10:1:0:105:Target 10:6:8.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:0:0:Door 10:9:0.000000:Position $$CHILD_BLOCK_END 08:aDoorLockUnlock $$CHILD_BLOCK_START 10:10:0:1:Lock/Unlock 10:0:0:0:DoorName $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:22:End Boss - Cinematic End $$CHILD_BLOCK_START 01:1:105 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:SafeFromBomb:Message $$CHILD_BLOCK_END 08:aRoomFogSetState $$CHILD_BLOCK_START 10:10:0:0:On/Off 10:2:0:Room $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:75:End Boss - Died $$CHILD_BLOCK_START 01:1:105 02:4 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:10.000000:Time 10:10:0:14:TimerID $$CHILD_BLOCK_END 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:0:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aObjMakeInvuln $$CHILD_BLOCK_START 06:qPlayerClosest:Object $$CHILD_BLOCK_START 10:1:0:105:Object 10:10:0:-1:UserVar $$CHILD_BLOCK_END 10:4:1000:Time $$CHILD_BLOCK_END 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:90.000000:Amount $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:37:Start Bomb Sequence $$CHILD_BLOCK_START 01:2:0 02:5 03:0 $$CHILD_BLOCK_START 09:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qUserFlag:Bool $$CHILD_BLOCK_START 10:10:0:7:UserFlag $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END 05:1 $$CHILD_BLOCK_START 06:qRoomHasPlayer:Bool $$CHILD_BLOCK_START 10:2:11:Room $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:4:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aDoorSetPos $$CHILD_BLOCK_START 10:0:0:1:Door 10:9:0.000000:Position $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:ActivateBomb:Message $$CHILD_BLOCK_END 08:aSetLevelTimer $$CHILD_BLOCK_START 10:6:3.000000:Time 10:10:0:12:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:20:INIT Suzuki's Death $$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:aObjSaveHandle $$CHILD_BLOCK_START 10:1:0:106:Object 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END 08:aAIGoalPickUpObjectRad $$CHILD_BLOCK_START 10:1:0:106:Picker 10:4:0:PickerPoint 10:1:0:107:Pickee 10:9:0.600000:RadiusRatio 10:10:0:3:GoalPriority 10:15:256:AIGoalFlags 10:10:0:-1:GoalID $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END 10:6:20.000000:MaxSpeed $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:108:Object $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:1:Ghost/Unghost 10:1:0:109:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:45:Suzuki Cam 1 $$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:1 $$CHILD_BLOCK_START 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:110:Object1 10:1:0:111:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:255:Green 10:4:150:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:112:Object1 10:1:0:113:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:255:Green 10:4:150:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:114:Object1 10:1:0:115:Object2 10:6:99999.000000:Lifetime 10:6:2.000000:Thickness 10:4:1:NumTiles 10:14:1:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:200:Red 10:4:255:Green 10:4:150:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:116:Object 10:4:0:StartFrame 10:4:54:EndFrame 10:6:6.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:41:CameraPath 10:8:EmptyMessage:Text 10:1:0:117:Target 10:6:6.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:46:Suzuki Cam 3 $$CHILD_BLOCK_START 01:1:118 02:18 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:116:Object 10:4:0:StartFrame 10:4:54:EndFrame 10:6:6.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:42:CameraPath 10:8:EmptyMessage:Text 10:1:0:119:Target 10:6:5.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:49:Suzuki Cam 2 $$CHILD_BLOCK_START 01:1:117 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aStoreObjectInPositionClipboard $$CHILD_BLOCK_START 10:1:0:120:Object $$CHILD_BLOCK_END 08:aMoveObjectToPositionClipboard $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END 10:16:43:Path 10:15:4352:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:44:CameraPath 10:8:EmptyMessage:Text 10:1:0:118:Target 10:6:7.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:48:Suzuki Cam 4 $$CHILD_BLOCK_START 01:1:119 02:18 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:108:Object $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:107:Object $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:12:Room 10:6:0.600000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:2000.000000:Depth $$CHILD_BLOCK_END 08:aStoreObjectInPositionClipboard $$CHILD_BLOCK_START 10:1:0:121:Object $$CHILD_BLOCK_END 08:aMoveObjectToPositionClipboard $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:11:SavedObjectSlot $$CHILD_BLOCK_END 10:16:45:Path 10:15:4352:AIGoalFlags 10:10:0:-1:GoalID 10:10:0:3:GoalPriority $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:108:Object 10:6:2.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:110:Object 10:6:4.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:112:Object 10:6:5.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:114:Object 10:6:7.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:122:Object 10:6:8.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:116:Object 10:4:54:StartFrame 10:4:55:EndFrame 10:6:1.000000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:46:CameraPath 10:8:EmptyMessage:Text 10:1:0:123:Target 10:6:10.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:77:Suzuki Cam 4 Part0 $$CHILD_BLOCK_START 01:1:108 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 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:50.000000:Number 10:1:0:122:Object $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:12:Room 10:6:0.600000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:500.000000:Depth 10:6:7.500000:Time $$CHILD_BLOCK_END 08:aLightningCreate $$CHILD_BLOCK_START 10:1:0:122:Object1 10:1:0:108:Object2 10:6:10.000000:Lifetime 10:6:3.000000:Thickness 10:4:1:NumTiles 10:14:2:Texture 10:6:0.400000:SlideTime 10:4:3:TimesDrawn 10:4:50:Red 10:4:255:Green 10:4:255:Blue 10:5:0:AutoTile $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:114:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:112:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:110:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END 08:aObjSpark $$CHILD_BLOCK_START 10:1:0:122:Object 10:6:30.000000:SparkRate 10:6:10.000000:Time $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:57:Suzuki Cam 4 Part4 $$CHILD_BLOCK_START 01:1:122 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:124: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:10.000000:SpewLife 10:6:20.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:125: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:10.000000:SpewLife 10:6:20.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:126: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:10.000000:SpewLife 10:6:20.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:127: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:10.000000:SpewLife 10:6:20.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:128: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.130000:BlobInterval 10:6:10.000000:SpewLife 10:6:20.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:56:Suzuki Cam 4 Part3 $$CHILD_BLOCK_START 01:1:114 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjKill $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:DeathDelayType 10:10:0:2:DeathExplosionSize 10:15:2293876:DeathFlags 10:6:1.900000:MinDelay 10:6:1.900000:MaxDelay $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:115:Object 10:6:80.000000:Distance $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:115:Object 10:6:1.000000:Red 10:6:0.500000:Green 10:6:0.250000:Blue $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:128: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:10.000000:SpewLife 10:6:10.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:124: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:2.000000:SpewLife 10:6:12.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:127: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:2.000000:SpewLife 10:6:12.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:129: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.130000:BlobInterval 10:6:10.000000:SpewLife 10:6:20.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:55:Suzuki Cam 4 Part2 $$CHILD_BLOCK_START 01:1:112 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjKill $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:DeathDelayType 10:10:0:2:DeathExplosionSize 10:15:2293876:DeathFlags 10:6:1.900000:MinDelay 10:6:1.900000:MaxDelay $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:113:Object 10:6:80.000000:Distance $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:113:Object 10:6:1.000000:Red 10:6:0.500000:Green 10:6:0.250000:Blue $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:130: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.130000:BlobInterval 10:6:10.000000:SpewLife 10:6:20.000000:BlobSize 10:6:25.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:129: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:10.000000:SpewLife 10:6:10.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:54:Suzuki Cam 4 Part1 $$CHILD_BLOCK_START 01:1:110 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:111:Object 10:6:80.000000:Distance $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:111:Object 10:6:1.000000:Red 10:6:0.500000:Green 10:6:0.250000:Blue $$CHILD_BLOCK_END 08:aObjKill $$CHILD_BLOCK_START 10:1:2:-1:Object 10:10:0:1:DeathDelayType 10:10:0:2:DeathExplosionSize 10:15:2293876:DeathFlags 10:6:1.900000:MinDelay 10:6:1.900000:MaxDelay $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:130: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:10.000000:SpewLife 10:6:10.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:47:Suzuki Cam 5 $$CHILD_BLOCK_START 01:1:123 02:18 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:131:Object 10:6:2.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:132:Object 10:6:1.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:133:Object 10:6:0.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:134:Object 10:6:3.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:12:Room 10:6:0.800000:Red 10:6:0.400000:Green 10:6:0.100000:Blue 10:6:60.000000:Depth 10:6:5.000000:Time $$CHILD_BLOCK_END 08:aObjGhostSet $$CHILD_BLOCK_START 10:10:0:0:Ghost/Unghost 10:1:0:109:Object $$CHILD_BLOCK_END 08:aObjSetLightingDist $$CHILD_BLOCK_START 10:1:0:109:Object 10:6:200.000000:Distance $$CHILD_BLOCK_END 08:aObjSetLightingColor $$CHILD_BLOCK_START 10:1:0:109:Object 10:6:1.000000:Red 10:6:0.500000:Green 10:6:0.250000:Blue $$CHILD_BLOCK_END 08:aObjPlayAnim $$CHILD_BLOCK_START 10:1:0:116:Object 10:4:55:StartFrame 10:4:74:EndFrame 10:6:3.500000:CycleTime 10:5:0:Looping $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:47:CameraPath 10:8:EmptyMessage:Text 10:1:0:135:Target 10:6:5.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:76:Suzuki Cam 5 Part4 $$CHILD_BLOCK_START 01:1:131 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: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.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:8.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:71:Suzuki Cam 5 Part3 $$CHILD_BLOCK_START 01:1:132 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: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.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:10.000000:BlobSize 10:6:90.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:70:Suzuki Cam 5 Part2 $$CHILD_BLOCK_START 01:1:133 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: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.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:30.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:136: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.130000:BlobInterval 10:6:5.000000:SpewLife 10:6:50.000000:BlobSize 10:6:120.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:69:Suzuki Cam 5 Part1 $$CHILD_BLOCK_START 01:1:134 02:9 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjSetMovementType $$CHILD_BLOCK_START 10:1:0:116:Object 10:10:0:1:MovementType $$CHILD_BLOCK_END 08:aObjKill $$CHILD_BLOCK_START 10:1:0:116:Object 10:10:0:1:DeathDelayType 10:10:0:2:DeathExplosionSize 10:15:2294000:DeathFlags 10:6:1.000000:MinDelay 10:6:1.000000:MaxDelay $$CHILD_BLOCK_END 08:aObjSetVelocity $$CHILD_BLOCK_START 10:1:0:116:Object 10:6:0.700000:X 10:6:0.000000:Y 10:6:0.700000:Z 10:6:40.000000:Speed $$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.100000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:8.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: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.300000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:12.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:51:Suzuki Cam 6 $$CHILD_BLOCK_START 01:1:135 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aMiscViewerShake $$CHILD_BLOCK_START 10:6:100.000000:Amount $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:137: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:4.000000:SpewLife 10:6:30.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:137: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:4.000000:SpewLife 10:6:15.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:138:Object 10:6:1.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:139:Object 10:6:3.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:140:Object 10:6:6.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:141:Object 10:6:4.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:142:Object 10:6:4.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:143:Object 10:6:5.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:144:Object 10:6:6.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:145:Object 10:6:7.000000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aSetObjectTimer $$CHILD_BLOCK_START 10:1:0:146:Object 10:6:7.500000:Time 10:10:0:-1:TimerID $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:13:Room 10:6:1.000000:X 10:6:0.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:14:Room 10:6:1.000000:X 10:6:0.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetWind $$CHILD_BLOCK_START 10:2:15:Room 10:6:1.000000:X 10:6:0.000000:Y 10:6:0.000000:Z 10:6:20.000000:Speed $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:15:Room 10:6:0.600000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:2000.000000:Depth $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:14:Room 10:6:0.600000:Red 10:6:0.200000:Green 10:6:0.100000:Blue 10:6:2000.000000:Depth $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:14:Room 10:6:0.800000:Red 10:6:0.400000:Green 10:6:0.100000:Blue 10:6:150.000000:Depth 10:6:9.000000:Time $$CHILD_BLOCK_END 08:aRoomChangeFog $$CHILD_BLOCK_START 10:2:15:Room 10:6:0.800000:Red 10:6:0.400000:Green 10:6:0.100000:Blue 10:6:150.000000:Depth 10:6:9.000000:Time $$CHILD_BLOCK_END 08:aObjDelete $$CHILD_BLOCK_START 10:1:0:109:Object $$CHILD_BLOCK_END 08:aCinematicSimple $$CHILD_BLOCK_START 10:16:48:CameraPath 10:8:EmptyMessage:Text 10:1:0:147:Target 10:6:9.000000:Seconds 10:5:1:FadeIn $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:86:Suzuki Cam 6 Part10 $$CHILD_BLOCK_START 01:1:146 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:148: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.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:5.000000:SpewLife 10:6:40.000000:BlobSize 10:6:180.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:140: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.140000:BlobInterval 10:6:5.000000:SpewLife 10:6:60.000000:BlobSize 10:6:150.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:5.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:85:Suzuki Cam 6 Part9 $$CHILD_BLOCK_START 01:1:145 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:149: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.120000:BlobInterval 10:6:5.000000:SpewLife 10:6:60.000000:BlobSize 10:6:150.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:150: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.120000:BlobInterval 10:6:5.000000:SpewLife 10:6:60.000000:BlobSize 10:6:150.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:5.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:84:Suzuki Cam 6 Part8 $$CHILD_BLOCK_START 01:1:144 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: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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:6.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:83:Suzuki Cam 6 Part7 $$CHILD_BLOCK_START 01:1:143 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:139: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.140000:BlobInterval 10:6:4.000000:SpewLife 10:6:60.000000:BlobSize 10:6:150.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:149: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.120000:BlobInterval 10:6:3.000000:SpewLife 10:6:40.000000:BlobSize 10:6:120.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:150: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.120000:BlobInterval 10:6:3.000000:SpewLife 10:6:40.000000:BlobSize 10:6:120.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:6.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:82:Suzuki Cam 6 Part6 $$CHILD_BLOCK_START 01:1:142 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: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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:6.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:81:Suzuki Cam 6 Part5 $$CHILD_BLOCK_START 01:1:141 02:9 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:1 $$CHILD_BLOCK_START 06:qObjExists:Bool $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END $$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:aObjDestroy $$CHILD_BLOCK_START 06:qObjSavedHandle:Object $$CHILD_BLOCK_START 10:10:0:4:SavedObjectSlot $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aTurnOnSpew $$CHILD_BLOCK_START 10:1:0:139: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.120000:BlobInterval 10:6:3.000000:SpewLife 10:6:30.000000:BlobSize 10:6:120.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.200000:BlobLifetime 10:6:0.090000:BlobInterval 10:6:3.000000:SpewLife 10:6:18.000000:BlobSize 10:6:300.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.500000:BlobLifetime 10:6:0.160000:BlobInterval 10:6:5.000000:SpewLife 10:6:30.000000:BlobSize 10:6:160.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:80:Suzuki Cam 6 Part3 $$CHILD_BLOCK_START 01:1:140 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: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.200000:BlobLifetime 10:6:0.100000:BlobInterval 10:6:3.000000:SpewLife 10:6:20.000000:BlobSize 10:6:130.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.000000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:3.000000:SpewLife 10:6:35.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:79:Suzuki Cam 6 Part2 $$CHILD_BLOCK_START 01:1:139 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: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.200000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:3.000000:SpewLife 10:6:12.000000:BlobSize 10:6:130.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$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.300000:BlobLifetime 10:6:0.140000:BlobInterval 10:6:3.000000:SpewLife 10:6:30.000000:BlobSize 10:6:80.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:78:Suzuki Cam 6 Part1 $$CHILD_BLOCK_START 01:1:138 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: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.300000:BlobLifetime 10:6:0.120000:BlobInterval 10:6:4.000000:SpewLife 10:6:25.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:139: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:4.000000:SpewLife 10:6:10.000000:BlobSize 10:6:120.000000:BlobSpeed 10:5:0:Randomize 10:10:0:-1:SpewHandle $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:73:Suzuki Post Production $$CHILD_BLOCK_START 01:1:147 02:18 03:0 $$CHILD_BLOCK_START 05:0 $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aGoalCompleted $$CHILD_BLOCK_START 10:18:0:5:LevelGoal 10:10:0:1:Completed $$CHILD_BLOCK_END 08:aDoorLockUnlock $$CHILD_BLOCK_START 10:10:0:0:Lock/Unlock 10:0:0:0:DoorName $$CHILD_BLOCK_END 08:aShowHUDMessage $$CHILD_BLOCK_START 10:8:SuzukiDead:Message $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:16:Room 10:6:0.200000:Red 10:6:0.150000:Green 10:6:0.100000:Blue 10:6:400.000000:Depth $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:10:Room 10:6:0.200000:Red 10:6:0.150000:Green 10:6:0.100000:Blue 10:6:400.000000:Depth $$CHILD_BLOCK_END 08:aRoomSetFog $$CHILD_BLOCK_START 10:2:17:Room 10:6:0.200000:Red 10:6:0.150000:Green 10:6:0.100000:Blue 10:6:400.000000:Depth $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:53:Destroy Bots2 $$CHILD_BLOCK_START 01:0:4 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:47:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjKill $$CHILD_BLOCK_START 06:qGetAtachedChild:Object $$CHILD_BLOCK_START 10:1:1:-1:Object 10:4:0:AttachPoint $$CHILD_BLOCK_END 10:10:0:1:DeathDelayType 10:10:0:1:DeathExplosionSize 10:15:2293872:DeathFlags 10:6:1.000000:MinDelay 10:6:1.400000:MaxDelay $$CHILD_BLOCK_END 08:aObjKill $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:1:DeathDelayType 10:10:0:1:DeathExplosionSize 10:15:2293872:DeathFlags 10:6:1.400000:MinDelay 10:6:1.800000:MaxDelay $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:52:Destroy Bots1 $$CHILD_BLOCK_START 01:0:5 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:47:ScriptID $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjKill $$CHILD_BLOCK_START 10:1:1:-1:Object 10:10:0:1:DeathDelayType 10:10:0:1:DeathExplosionSize 10:15:2302192:DeathFlags 10:6:0.000000:MinDelay 10:6:0.100000:MaxDelay $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:4:INIT Droid Central $$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:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:13:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:7:Create A New Droid $$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:aSetLevelTimer $$CHILD_BLOCK_START 06:qRandomValue:Time $$CHILD_BLOCK_START 10:6:2.000000:LowerLimit 10:6:12.000000:UpperLimit $$CHILD_BLOCK_END 10:10:0:13:TimerID $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.250000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:6:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.333333:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:7:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.500000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:8:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:1:Activate/Deactivate 10:17:0:9:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:9:Send New Droid To Command $$CHILD_BLOCK_START 01:2:0 02:21 03:0 $$CHILD_BLOCK_START 09:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:6:Matcen $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:7:Matcen $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:8:Matcen $$CHILD_BLOCK_END 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:9:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:6:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:49:Path 10:15:4352:AIGoalFlags 10:10:0:7:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:7:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:50:Path 10:15:4352:AIGoalFlags 10:10:0:7:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:8:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:51:Path 10:15:4352:AIGoalFlags 10:10:0:7:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 03:1 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:17:1:6:Matcen 07:1:0 10:17:0:9:Matcen $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:52:Path 10:15:4352:AIGoalFlags 10:10:0:7:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 08:aMatcenSetState $$CHILD_BLOCK_START 10:10:0:0:Activate/Deactivate 10:17:1:6:Matcen $$CHILD_BLOCK_END 08:aAISetMaxSpeed $$CHILD_BLOCK_START 10:1:1:-1:Object 10:6:30.000000:MaxSpeed $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:12:Droid Choose A Death $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:7:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.250000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:53:Path 10:15:4352:AIGoalFlags 10:10:0:8:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.333333:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:54:Path 10:15:4352:AIGoalFlags 10:10:0:8:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 03:1 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qRandomChance:Bool $$CHILD_BLOCK_START 10:9:0.500000:Probability $$CHILD_BLOCK_END 07:0:6 $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:0 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:55:Path 10:15:4352:AIGoalFlags 10:10:0:8:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:1:0:1 $$CHILD_BLOCK_START 08:aAIGoalFollowPathSimple $$CHILD_BLOCK_START 10:1:1:-1:Object 10:16:56:Path 10:15:4352:AIGoalFlags 10:10:0:8:GoalID 10:10:0:0:GoalPriority $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:13:Droid Die $$CHILD_BLOCK_START 01:2:0 02:13 03:0 $$CHILD_BLOCK_START 05:2 $$CHILD_BLOCK_START 10:10:1:0:GoalID 07:1:0 10:10:0:8:GoalID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:0 $$CHILD_BLOCK_START 08:aObjDelete $$CHILD_BLOCK_START 10:1:1:-1:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:119:Hide the end boss cinematic inv. powerup $$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:aObjHide $$CHILD_BLOCK_START 10:1:0:151:Object $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:0:MusicIntro $$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:aSetLevelTimer $$CHILD_BLOCK_START 10:6:2.000000:Time 10:10:0:1:TimerID $$CHILD_BLOCK_END 08:aMusicSetRegionAll $$CHILD_BLOCK_START 10:10:0:0:Region $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:120:MusicSewer (Intro2) $$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:1:TimerID $$CHILD_BLOCK_END $$CHILD_BLOCK_END 04:0:0:1 $$CHILD_BLOCK_START 08:aMusicSetRegionAll $$CHILD_BLOCK_START 10:10:0:1:Region $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:130:MusicBoss $$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:6:Region 10:1:1:-1:PlayerObject $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$CHILD_BLOCK_END 00:129:MusicTower2 $$CHILD_BLOCK_START 01:0:7 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:128:MusicTower1 $$CHILD_BLOCK_START 01:0:8 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:127:MusicMid4 $$CHILD_BLOCK_START 01:0:9 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:126:MusicMid3 $$CHILD_BLOCK_START 01:0:10 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:125:MusicMid2 $$CHILD_BLOCK_START 01:0:11 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:124:MusicMid1 $$CHILD_BLOCK_START 01:0:12 02:1 03:0 $$CHILD_BLOCK_START 05:1 $$CHILD_BLOCK_START 06:qScriptExecuted_DALLAS:Bool $$CHILD_BLOCK_START 10:11:50:ScriptID $$CHILD_BLOCK_END 07:0:7 $$CHILD_BLOCK_END $$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:123:MusicMaint2 $$CHILD_BLOCK_START 01:0:13 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:122:MusicMaint1 $$CHILD_BLOCK_START 01:0:14 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:121:MusicSewer1 $$CHILD_BLOCK_START 01:0:15 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:21:End Level $$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:aEndLevel $$CHILD_BLOCK_END $$CHILD_BLOCK_END $$SCRIPT_BLOCK_END *********************************************************/