3230 lines
117 KiB
ArmAsm
3230 lines
117 KiB
ArmAsm
#
|
|
# Chicago
|
|
#
|
|
|
|
.set HEADERLEN, 0x20
|
|
.include "asm/include/setup.inc"
|
|
|
|
// Characters
|
|
.set CHR_TOPSTAIRS, 0x07
|
|
.set CHR_SEALER1, 0x0d
|
|
.set CHR_SEALER2, 0x0e
|
|
.set CHR_SEALER3, 0x0f
|
|
.set CHR_SEALER4, 0x10
|
|
.set CHR_FBI1, 0x17
|
|
.set CHR_FBI2, 0x18
|
|
.set CHR_FBI3, 0x19
|
|
.set CHR_CIA1, 0x1a
|
|
.set CHR_CIA2, 0x1b // bug spotter
|
|
.set CHR_CIA3, 0x1c
|
|
.set CHR_CIA4, 0x1d
|
|
.set CHR_HIDDENGUY, 0x1e // positioned just behind Jo's starting place, never unhidden, and used for distance checks and something related to the robot
|
|
.set CHR_ROBOT, 0x1f
|
|
|
|
// Objects
|
|
.set OBJ_CAR1, 0x00
|
|
.set OBJ_CAR2, 0x01
|
|
.set OBJ_CAR3, 0x02
|
|
.set OBJ_CAR4, 0x03
|
|
.set OBJ_CAR5, 0x05
|
|
.set OBJ_BRIEFCASE1, 0x06
|
|
.set OBJ_BRIEFCASE2, 0x07
|
|
.set OBJ_FIREDOORTOP, 0x08
|
|
.set OBJ_FIREDOORBOTTOM, 0x09
|
|
.set OBJ_TAXI, 0x0a
|
|
.set OBJ_LIMO, 0x0c
|
|
.set OBJ_SWITCH, 0x0e
|
|
.set OBJ_BRIEFCASE3, 0x0f
|
|
.set OBJ_MINE1, 0x12
|
|
.set OBJ_MINE2, 0x13
|
|
.set OBJ_BRIEFCASE4, 0x1b
|
|
.set OBJ_BRIEFCASE5, 0x1d
|
|
.set OBJ_BRIEFCASE6, 0x1e
|
|
.set OBJ_WIREFENCE, 0x21
|
|
.set OBJ_FALCON2, 0x22
|
|
.set OBJ_DUMPSTER, 0x25
|
|
|
|
// Stage flags
|
|
.set STAGEFLAG_ALARM_GROUP1_DEAD, 0x00000001
|
|
.set STAGEFLAG_ALARM_GROUP2_DEAD, 0x00000002
|
|
.set STAGEFLAG_ALARM_GROUP3_DEAD, 0x00000004
|
|
.set STAGEFLAG_TRACERBUG_SPOTTED, 0x00000008
|
|
.set STAGEFLAG_CRASH_FINISHED, 0x00000010
|
|
.set STAGEFLAG_TRIGGER_CRASH, 0x00000020
|
|
.set STAGEFLAG_ROBOT_NEAR_CORNER, 0x00000040
|
|
.set STAGEFLAG_TRACERBUG_SAFE, 0x00000080
|
|
.set STAGEFLAG_ONE_BUG_REMAINING, 0x00000100
|
|
.set STAGEFLAG_MINE_PLACED, 0x00000200
|
|
.set STAGEFLAG_MINE_WASTED, 0x00000400
|
|
.set STAGEFLAG_TAXI_REPROGRAMMED, 0x00000800
|
|
.set STAGEFLAG_TRACERBUG_PLACED, 0x00001000
|
|
.set STAGEFLAG_TRACERBUG_WASTED, 0x00002000
|
|
.set STAGEFLAG_LIMO_DESTROYED, 0x00004000
|
|
.set STAGEFLAG_TAXI_DESTROYED, 0x00008000
|
|
.set STAGEFLAG_ROBOT_DESTROYED, 0x00010000
|
|
.set STAGEFLAG_IN_ELEVATOR, 0x00020000
|
|
.set STAGEFLAG_LIMO_READY_TO_LEAVE, 0x00040000
|
|
.set STAGEFLAG_LIMO_READY_15SEC_AGO, 0x00080000
|
|
.set STAGEFLAG_TRIGGER_TAXI_LEAVE, 0x00100000
|
|
.set STAGEFLAG_TAXI_ALMOST_READY_TO_CRASH, 0x00200000
|
|
.set STAGEFLAG_ALARM_SOUNDED, 0x00400000
|
|
.set STAGEFLAG_ROBOT_NEAR_HOME, 0x00800000
|
|
.set STAGEFLAG_ROBOT_ON_DRAIN_STREET, 0x01000000
|
|
.set STAGEFLAG_TRIGGER_INTRO, 0x02000000
|
|
.set STAGEFLAG_LIMO_ESCAPED, 0x04000000
|
|
.set STAGEFLAG_CIVILIAN_DEAD, 0x08000000
|
|
.set STAGEFLAG_ELEVATOR_SEALED, 0x10000000
|
|
.set STAGEFLAG_INTRO_FINISHED, 0x20000000
|
|
.set STAGEFLAG_DIVERSION_CREATED, 0x40000000
|
|
.set STAGEFLAG_TAXI_READY_TO_CRASH, 0x80000000
|
|
|
|
// Functions
|
|
.set FUNC_OUTRO, 0x040b
|
|
.set FUNC_CIA, 0x0412
|
|
.set FUNC_BUGSPOTTER, 0x0413
|
|
.set FUNC_INIT_CIA1, 0x0419
|
|
.set FUNC_ROBOT, 0x041a
|
|
.set FUNC_INIT_ROBOT, 0x041b
|
|
.set FUNC_HIDDENGUY, 0x041c
|
|
.set FUNC_FBI, 0x041d
|
|
.set FUNC_SEALER1, 0x041e
|
|
.set FUNC_ALARM_RESPONDER, 0x041f
|
|
.set FUNC_JOG_TO_ACCIDENT, 0x0420
|
|
|
|
// Other
|
|
.set GROUP_ALARM_RESPONDER, 0x09
|
|
|
|
props:
|
|
briefing 0, 0x3201
|
|
briefing 1, 0x3200
|
|
briefing 2, 0x3202
|
|
briefing 3, 0x3203
|
|
|
|
beginobjective 0, 0x3209, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Retrieve drop point equipment"
|
|
require_object_collected OBJ_BRIEFCASE1
|
|
require_object_collected OBJ_BRIEFCASE2
|
|
endobjective
|
|
|
|
beginobjective 1, 0x320a, DIFFBIT_PA | DIFFBIT_PD // "Attach tracer to limousine"
|
|
complete_flags STAGEFLAG_TRACERBUG_PLACED
|
|
fail_flags STAGEFLAG_TRACERBUG_WASTED
|
|
fail_flags STAGEFLAG_LIMO_DESTROYED
|
|
fail_flags STAGEFLAG_LIMO_ESCAPED
|
|
fail_flags STAGEFLAG_TRACERBUG_SPOTTED
|
|
endobjective
|
|
|
|
beginobjective 2, 0x320b, DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Prepare escape route"
|
|
complete_flags STAGEFLAG_MINE_PLACED
|
|
fail_flags STAGEFLAG_MINE_WASTED
|
|
endobjective
|
|
|
|
beginobjective 3, 0x320d, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Create vehicular diversion"
|
|
complete_flags STAGEFLAG_DIVERSION_CREATED
|
|
fail_flags STAGEFLAG_TAXI_DESTROYED
|
|
fail_flags STAGEFLAG_ROBOT_DESTROYED
|
|
endobjective
|
|
|
|
beginobjective 4, 0x320e, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Gain entry to G5 building"
|
|
complete_flags STAGEFLAG_IN_ELEVATOR
|
|
fail_flags STAGEFLAG_CIVILIAN_DEAD
|
|
fail_flags STAGEFLAG_ELEVATOR_SEALED
|
|
endobjective
|
|
|
|
chr 0x00010c00, 0x1a, 0x00a9, BODY_CIAGUY, HEAD_RANDOM, FUNC_INIT_CIA1, -1, -1, 1000, 6, 0x80004000, 0x00000000, 0x20, 0x00, -1, 0, 0x00000000
|
|
chr 0x00000200, 0x00, 0x00aa, BODY_G5_GUARD, HEAD_RANDOM, 0x0414, -1, -1, 1000, 10, 0xa0004408, 0x00000000, 0x20, 0x00, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x000000c0, 0x17, 0x00ab, BODY_FBIGUY, HEAD_RANDOM, 0x0411, -1, -1, 800, 30, 0x8000a000, 0x00000000, 0x20, 0x00, -1, 0, 0x00000000
|
|
chr 0x00000200, 0x01, 0x00ac, BODY_G5_GUARD, HEAD_RANDOM, 0x0415, -1, -1, 1000, 10, 0xa0004408, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0001, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000080, 0x18, 0x00af, BODY_FBIGUY, HEAD_RANDOM, 0x0411, -1, -1, 500, 30, 0x8000e008, 0x00000000, 0x20, 0x01, -1, 0, 0x01000000
|
|
chr 0x00000200, 0x02, 0x00ad, BODY_G5_GUARD, HEAD_RANDOM, 0x0416, -1, -1, 1000, 10, 0xa0004008, 0x00000000, 0x20, 0x02, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0002, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x03, 0x00ae, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 1000, 50, 0xc0004008, 0x00000000, 0x20, 0x03, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0003, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x04, 0x00b0, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 1000, 50, 0xc0004008, 0x00000000, 0x20, 0x03, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0004, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x05, 0x00b1, BODY_G5_GUARD, HEAD_RANDOM, 0x0417, -1, -1, 1000, 50, 0xa0004008, 0x00000000, 0x20, 0x03, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0005, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000000, 0x19, 0x00b3, BODY_FBIGUY, HEAD_RANDOM, 0x0411, -1, -1, 500, 20, 0xc000a000, 0x00000000, 0x20, 0x04, -1, 0, 0x02000000
|
|
chr 0x00000200, 0x06, 0x00b4, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xc0004008, 0x00000000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0006, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000300, 0x0a, 0x00b6, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xd0002008, 0x00000000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x07, 0x00b5, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xd0002008, 0x00001000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0007, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x0b, 0x00b7, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xc0004008, 0x00000000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000240, 0x08, 0x00cb, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xd0002008, 0x00000000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0009, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000280, 0x09, 0x00cc, BODY_G5_GUARD, HEAD_RANDOM, 0x040f, -1, -1, 1000, 10, 0xd0002008, 0x00000000, 0x20, 0x04, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0009, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x0c, 0x00b8, BODY_G5_GUARD, HEAD_RANDOM, 0x0418, -1, -1, 500, 10, 0xc0004008, 0x00000000, 0x20, 0x05, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00010c00, 0x1c, 0x00b9, BODY_CIAGUY, HEAD_RANDOM, FUNC_CIA, -1, -1, 1000, 6, 0x80000008, 0x00000000, 0x20, 0x05, -1, 0, 0x01000000
|
|
chr 0x00010c00, 0x1d, 0x0042, BODY_CIAGUY, HEAD_RANDOM, FUNC_CIA, -1, -1, 1000, 6, 0x80002000, 0x00000000, 0x20, 0x05, -1, 0, 0x02000000
|
|
chr 0x00000400, 0x0d, 0x00bf, BODY_G5_GUARD, HEAD_RANDOM, FUNC_SEALER1, -1, -1, 1000, 15, 0xc0004008, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000600, 0x0e, 0x00bc, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, 0x00c5, -1, 1000, 15, 0xc0084008, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000600, 0x0f, 0x00bd, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, 0x00c6, -1, 1000, 15, 0xc0084008, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x000f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000600, 0x10, 0x00be, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, 0x00c7, -1, 1000, 15, 0xc0084008, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0010, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00010c00, 0x1b, 0x00b2, BODY_CIAGUY, HEAD_RANDOM, FUNC_BUGSPOTTER, -1, -1, 1000, 6, 0x80000000, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
chr 0x00000000, 0x11, 0x00c9, BODY_G5_GUARD, HEAD_RANDOM, GFUNC_IDLE, 0x00c9, -1, 1000, 30, 0xc1086008, 0x00000000, 0x20, 0x07, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0011, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000000, 0x12, 0x00ca, BODY_G5_GUARD, HEAD_RANDOM, GFUNC_IDLE, 0x00ca, -1, 1000, 30, 0xc1086008, 0x00000000, 0x20, 0x07, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0012, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000400, 0x1f, 0x0020, BODY_CHICROB, 0x00, FUNC_INIT_ROBOT, -1, -1, 1000, 15, 0x00000000, 0x00000000, 0x20, 0x00, -1, 0, 0x00000000
|
|
chr 0x00000000, 0x1e, 0x0063, BODY_G5_GUARD, HEAD_RANDOM, FUNC_HIDDENGUY, 0x00c8, -1, 1000, 15, 0x40084008, 0x00000000, 0x20, 0x01, -1, 0, 0x00000000
|
|
chr 0x00000200, 0x13, 0x00cd, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 500, 10, 0xc0004208, 0x00000000, 0x20, 0x08, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0013, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x14, 0x00ce, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 500, 10, 0xc0004208, 0x00000000, 0x20, 0x08, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0014, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x15, 0x00cf, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 500, 10, 0xc0004208, 0x00000000, 0x20, 0x08, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0015, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
chr 0x00000200, 0x16, 0x00d1, BODY_G5_GUARD, HEAD_RANDOM, 0x040e, -1, -1, 1, 10, 0xc0004008, 0x00000000, 0x20, 0x08, -1, 0, 0x00000000
|
|
weapon 0x0100, MODEL_CHRCMP150, 0x0016, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000
|
|
tag 0x00, 1
|
|
object 0x0100, MODEL_TAXICAB, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x01, 1
|
|
object 0x0100, MODEL_TAXICAB, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x02, 1
|
|
object 0x0100, MODEL_TAXICAB, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x03, 1
|
|
object 0x0100, MODEL_POLICECAR, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x05, 1
|
|
object 0x0100, MODEL_POLICECAR, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x06, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0x00a6, 0x00422001, 0x00000001, 0x20400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REMOTEMINE, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x22, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a, 0x0000, 0x0000 // "Obtain Remote Mine."
|
|
tag 0x0f, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0xffff, 0x00000001, 0x00000001, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_TRACERBUG, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x3e, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x0000, 0x0000 // "Obtain Tracer Bug."
|
|
tag 0x1d, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0xffff, 0x00000001, 0x00000001, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_TRACERBUG, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x3e, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x0000, 0x0000 // "Obtain Tracer Bug."
|
|
tag 0x0e, 1
|
|
singlemonitor 0x0019, MODEL_G5_LASER_SWITCH, 0x00eb, 0x00000002, 0x00002301, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff13
|
|
tag 0x07, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0x00a6, 0x00462001, 0x00000001, 0x20400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_DATAUPLINK, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x36, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x0000, 0x0000 // "Obtain Reprogrammer."
|
|
tag 0x1b, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0x001c, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_FALCON2_SCOPE, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x04, 0x3237, 0x3238, 0x3239, 0x323a, 0x323b, 0x0000, 0x0000 // "Obtain Remote Mine."
|
|
tag 0x1e, 1
|
|
weapon 0x0180, MODEL_CHRBRIEFCASE, 0x001c, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_FALCON2_SCOPE, 0x00ffffff, 0x00000000
|
|
rename_object -1, 0x04, 0x3237, 0x3238, 0x3239, 0x323a, 0x323b, 0x0000, 0x0000 // "Obtain Remote Mine."
|
|
tag 0x1f, 1
|
|
object 0x0100, MODEL_CHRBRIEFCASE, 0x009c, 0x012004e1, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x0a, 1
|
|
hover_vehicle 0x0100, MODEL_TAXICAB, 0x00a3, 0x20000108, 0x00000001, 0x10010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000002bc, 0x00000000, 0x00000000, 0x0fff0000, 0x0000040c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x0c, 1
|
|
hover_vehicle 0x00cc, MODEL_LIMO, 0x00a4, 0x20000108, 0x00000001, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000002bc, 0x00000000, 0x00000000, 0x0fff0000, 0x0000040d, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x21, 1
|
|
object 0x0100, MODEL_WIREFENCE, 0xffff, 0x00021501, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x08, 1
|
|
door 0x0100, MODEL_G5_ESCDOORUP, 0x00fb, 0x13520d00, 0x20304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0x00000000, 0x00000080, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x09, 1
|
|
door 0x0100, MODEL_G5_ESCDOORDOWN, 0x00fc, 0x13520d00, 0x20304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0x00000000, 0x00000080, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x10, 2
|
|
tag 0x11, 2
|
|
door 0x0100, MODEL_G5CARLIFTDOOR, 0x00ec, 0x10000000, 0x00000000, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x00000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001800, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_G5CARLIFTDOOR, 0x00ed, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x00080000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x14, 1
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00ee, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x00040004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x1a, 1
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00ef, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x00040004, 0x00000000, 0x00000708, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f0, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x00040004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f1, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x00040004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x15, 2
|
|
tag 0x16, 2
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f2, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f3, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x19, 1
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x17, 2
|
|
tag 0x18, 2
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f5, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f6, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_CH_SHUTTER1, 0x00f7, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000f5c2, 0x0000f333, 0x00003333, 0x00014000, 0x00001333, 0x000c0004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x12, 1
|
|
object 0x0100, MODEL_CHRREMOTEMINE, 0x0067, 0x012004e1, 0x00086001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
tag 0x13, 1
|
|
object 0x0100, MODEL_CHRREMOTEMINE, 0x0067, 0x012004e1, 0x00086001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
door 0x0100, MODEL_DOOR2A_G5, 0x00fd, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x00040000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_DOOR2A_G5, 0x00fe, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x00040000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_DD_OFFICEDOOR, 0x0104, 0x00000000, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x005a0000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0x00000005, 0x00000001, 0x000005dc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000800, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_DD_OFFICEDOOR, 0x0105, 0x20000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x005a0000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0x00000005, 0x00000001, 0x000005dc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x25, 1
|
|
object 0x0100, MODEL_DUMPSTER, 0x011e, 0x004001e1, 0x00004000, 0x00000801, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
weapon 0x0100, MODEL_CHRBRIEFCASE, 0xffff, 0x40008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CAMSPY, 0x00ffffff, 0x00000000
|
|
tag 0x24, -1
|
|
object 0x0100, MODEL_BARREL, 0x010b, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x010c, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x010e, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x010f, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0110, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0111, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0112, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0113, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0114, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0115, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0116, 0x000001e1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0117, 0x000001e8, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0119, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x011d, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x011c, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x011b, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x0118, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_BARREL, 0x011a, 0x000000e8, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_DUMPSTER, 0x0106, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_DUMPSTER, 0x0107, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_DUMPSTER, 0x0108, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_DUMPSTER, 0x0109, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
object 0x0100, MODEL_DUMPSTER, 0x010a, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000
|
|
door 0x0100, MODEL_DD_GRATE, 0x00f8, 0x10000400, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000fd70, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x08000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_DD_GRATE, 0x00f9, 0x10000400, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000fd70, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x08000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
door 0x0100, MODEL_DD_GRATE, 0x00fa, 0x10000400, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000fd70, 0x00010000, 0x00003333, 0x00014000, 0x00001333, 0x08000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000
|
|
tag 0x22, 2
|
|
tag 0x23, 2
|
|
weapon 0x0100, MODEL_CHRFALCON2, 0x011f, 0x00420001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_FALCON2_SCOPE, 0x00ffffff, 0x00000000
|
|
weapon 0x0100, MODEL_CHRFALCON2, 0x011f, 0x00420001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_FALCON2_SCOPE, 0x00ffffff, 0x00000000
|
|
link_collectibles -1, -2
|
|
tag 0x1c, 1
|
|
shield 0x0100, MODEL_CHRSHIELD, 0x0121, 0x00000001, 0x000000e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000
|
|
tag 0x20, 1
|
|
shield 0x0100, MODEL_CHRSHIELD, 0x0122, 0x00000001, 0x000000c0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000
|
|
tinted_glass 0x0100, MODEL_DD_WINDOW, 0x0123, 0x14000b62, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x04b007d0, 0x0000ffff, 0x00000000
|
|
tinted_glass 0x0100, MODEL_DD_WINDOW, 0x0124, 0x14000b62, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x04b007d0, 0x0000ffff, 0x00000000
|
|
tinted_glass 0x0100, MODEL_DD_WINDOW, 0x0125, 0x14000b62, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x04b007d0, 0x0000ffff, 0x00000000
|
|
pad_effect PADEFFECT_SPLASH, 0x009b
|
|
pad_effect PADEFFECT_SPLASH, 0x009c
|
|
pad_effect PADEFFECT_SPLASH, 0x009d
|
|
pad_effect PADEFFECT_SPLASH, 0x009e
|
|
endprops
|
|
|
|
intro:
|
|
ammo AMMOTYPE_PISTOL, 50
|
|
outfit OUTFIT_TRENCH
|
|
spawn 0x0063
|
|
endintro
|
|
|
|
path00:
|
|
pad 0x00d3
|
|
pad 0x00d4
|
|
pad 0x00d9
|
|
pad 0x00d6
|
|
pad 0x00d7
|
|
pad 0x0036
|
|
pad 0x00d7
|
|
pad 0x00d6
|
|
pad 0x00d9
|
|
pad 0x00d4
|
|
pad 0x00d3
|
|
endpath
|
|
|
|
path01:
|
|
pad 0x00da
|
|
pad 0x00d7
|
|
pad 0x00d7
|
|
pad 0x00d6
|
|
pad 0x00d9
|
|
pad 0x00d5
|
|
pad 0x00d4
|
|
pad 0x00db
|
|
pad 0x00de
|
|
pad 0x00d3
|
|
endpath
|
|
|
|
path02:
|
|
pad 0x00a4
|
|
pad 0x00a4
|
|
pad 0x00a4
|
|
pad 0x00a4
|
|
pad 0x00a4
|
|
endpath
|
|
|
|
path03:
|
|
pad 0x00e3
|
|
endpath
|
|
|
|
path04:
|
|
pad 0x00a3
|
|
pad 0x00a3
|
|
pad 0x00a3
|
|
pad 0x00a3
|
|
pad 0x00a3
|
|
endpath
|
|
|
|
path05:
|
|
pad 0x00e8
|
|
endpath
|
|
|
|
path06:
|
|
pad 0x00ea
|
|
pad 0x00ea
|
|
pad 0x00ea
|
|
pad 0x00e8
|
|
endpath
|
|
|
|
path07:
|
|
pad 0x0061
|
|
pad 0x0060
|
|
pad 0x0065
|
|
pad 0x005f
|
|
pad 0x005e
|
|
pad 0x005d
|
|
pad 0x005e
|
|
pad 0x005f
|
|
pad 0x0065
|
|
pad 0x0060
|
|
endpath
|
|
|
|
path08:
|
|
pad 0x0038
|
|
pad 0x002e
|
|
pad 0x000c
|
|
pad 0x002e
|
|
pad 0x0038
|
|
pad 0x0037
|
|
endpath
|
|
|
|
path09:
|
|
pad 0x0033
|
|
pad 0x0035
|
|
pad 0x0034
|
|
pad 0x002d
|
|
pad 0x0028
|
|
pad 0x002a
|
|
pad 0x001d
|
|
pad 0x002a
|
|
pad 0x0028
|
|
pad 0x002d
|
|
pad 0x0034
|
|
pad 0x0035
|
|
endpath
|
|
|
|
path10:
|
|
pad 0x0047
|
|
pad 0x0046
|
|
pad 0x0047
|
|
endpath
|
|
|
|
path11:
|
|
pad 0x0034
|
|
pad 0x0043
|
|
pad 0x0041
|
|
pad 0x0051
|
|
pad 0x0041
|
|
pad 0x0043
|
|
pad 0x0034
|
|
endpath
|
|
|
|
path12:
|
|
pad 0x0061
|
|
pad 0x0060
|
|
pad 0x0066
|
|
pad 0x0062
|
|
pad 0x0063
|
|
pad 0x0064
|
|
pad 0x0063
|
|
pad 0x0062
|
|
pad 0x0066
|
|
pad 0x0060
|
|
endpath
|
|
|
|
path13:
|
|
pad 0x00da
|
|
pad 0x00d7
|
|
pad 0x00d7
|
|
pad 0x00d6
|
|
pad 0x00d9
|
|
pad 0x00d5
|
|
pad 0x00d4
|
|
pad 0x00db
|
|
pad 0x00de
|
|
pad 0x00d3
|
|
endpath
|
|
|
|
.macro chicago_car_do_animation object animation
|
|
show_object \object
|
|
set_object_flag_bank1 \object, OBJECTFLAG1_04000000
|
|
set_object_flag_bank2 \object, OBJECTFLAG2_00000010
|
|
object_do_animation \animation, \object, 0x04ff, 0xff
|
|
.endm
|
|
|
|
.macro chicago_wait_for_camera
|
|
beginloop 0x05
|
|
if_camera_animating /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
if_controller_button_pressed /*goto*/ 0x04
|
|
goto_first 0x05
|
|
label 0x04
|
|
.endm
|
|
|
|
func0401_3ae8:
|
|
set_stage_flag STAGEFLAG_TRIGGER_INTRO
|
|
if_controller_button_pressed /*goto*/ 0x00
|
|
camera_movement 0x00cf
|
|
set_music_track MUSIC_CHICAGO_INTRO
|
|
set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
|
|
chicago_car_do_animation OBJ_CAR1, 0x00d6
|
|
chicago_car_do_animation OBJ_CAR2, 0x00d7
|
|
chicago_car_do_animation OBJ_CAR3, 0x00d8
|
|
chicago_car_do_animation OBJ_CAR4, 0x00d5
|
|
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
fade_to_color 0x000000ff, 0
|
|
fade_to_color 0x00000000, 90
|
|
|
|
chicago_wait_for_camera
|
|
|
|
unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
hide_object OBJ_CAR1
|
|
hide_object OBJ_CAR2
|
|
hide_object OBJ_CAR3
|
|
hide_object OBJ_CAR4
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
label 0x00
|
|
return
|
|
endfunction
|
|
|
|
func0402_3bb4:
|
|
set_chr_flag_bank3 CHR_VELVET, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN
|
|
if_controller_button_pressed /*goto*/ 0x00
|
|
camera_movement 0x00d0
|
|
set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
|
|
chicago_car_do_animation OBJ_CAR1, 0x00dc
|
|
chicago_car_do_animation OBJ_CAR2, 0x00dd
|
|
chicago_car_do_animation OBJ_CAR4, 0x00d9
|
|
chicago_car_do_animation OBJ_CAR5, 0x00db
|
|
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
|
|
chicago_wait_for_camera
|
|
|
|
unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
hide_object OBJ_CAR1
|
|
hide_object OBJ_CAR2
|
|
hide_object OBJ_CAR4
|
|
hide_object OBJ_CAR5
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
label 0x00
|
|
return
|
|
endfunction
|
|
|
|
func0403_3c74:
|
|
if_controller_button_pressed /*goto*/ 0x00
|
|
camera_movement 0x00d1
|
|
set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
show_object OBJ_CAR4
|
|
set_object_flag_bank1 OBJ_CAR4, OBJECTFLAG1_04000000
|
|
set_object_flag_bank2 OBJ_CAR4, OBJECTFLAG2_00000010
|
|
object_do_animation 0x00de, OBJ_CAR4, 0x04ff, 0xff
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
|
|
set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE
|
|
yield
|
|
set_cutscene_weapon CHR_JOANNA, WEAPON_FALCON2_SCOPE, WEAPON_NONE
|
|
|
|
chicago_wait_for_camera
|
|
|
|
unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_HIDDEN
|
|
hide_object OBJ_CAR4
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
label 0x00
|
|
return
|
|
endfunction
|
|
|
|
func0404_3ce0:
|
|
show_object OBJ_WIREFENCE
|
|
set_object_flag_bank1 OBJ_WIREFENCE, OBJECTFLAG1_04000000
|
|
set_object_flag_bank2 OBJ_WIREFENCE, OBJECTFLAG2_00000010
|
|
object_do_animation 0x0470, OBJ_WIREFENCE, 0x01ff, 0xff
|
|
|
|
if_controller_button_pressed /*goto*/ 0x00
|
|
camera_movement 0x00e0
|
|
set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE
|
|
set_chr_flag_bank2 CHR_JOANNA, CHRFLAG2_00020000
|
|
animation 0x00e1, -1, -1, 0x0600, CHR_JOANNA, 4
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
|
|
chicago_wait_for_camera
|
|
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE
|
|
label 0x00
|
|
return
|
|
endfunction
|
|
|
|
func0405_3d50:
|
|
camera_movement 0x00d2
|
|
cmd0175 60
|
|
if_controller_button_pressed /*goto*/ 0x00
|
|
set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE
|
|
set_chr_flag_bank2 CHR_JOANNA, CHRFLAG2_00020000
|
|
animation 0x00df, -1, -1, 0x0600, CHR_JOANNA, 4
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
|
|
restart_timer
|
|
|
|
beginloop 0x2d
|
|
if_controller_button_pressed /*goto*/ 0x2f
|
|
if_timer_gt 480, /*goto*/ 0x04
|
|
endloop 0x2d
|
|
|
|
label 0x04
|
|
set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE
|
|
yield
|
|
set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE
|
|
|
|
beginloop 0x2f
|
|
if_controller_button_pressed /*goto*/ 0x04
|
|
if_timer_gt 910, /*goto*/ 0x04
|
|
endloop 0x2f
|
|
|
|
label 0x04
|
|
chicago_wait_for_camera
|
|
|
|
label 0x00
|
|
unset_chr_flag_bank3 CHR_VELVET, CHRFLAG3_HIDDEN
|
|
unset_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN
|
|
mute_channel CHANNEL_7
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_HIDDEN
|
|
|
|
unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE
|
|
set_chr_flag_bank2 CHR_JOANNA, CHRFLAG2_00020000
|
|
animation 0x00df, -2, -1, 0x0600, CHR_JOANNA, 2
|
|
|
|
restart_default_music
|
|
reset_ambience
|
|
set_stage_flag STAGEFLAG_INTRO_FINISHED
|
|
enter_firstperson
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
unregistered_function1:
|
|
set_return_function CHR_SELF, GFUNC_END_CINEMA
|
|
set_function CHR_SELF, 0x0401
|
|
endfunction
|
|
|
|
unregistered_function2:
|
|
set_return_function CHR_SELF, GFUNC_END_CINEMA
|
|
set_function CHR_SELF, 0x0402
|
|
endfunction
|
|
|
|
unregistered_function3:
|
|
set_return_function CHR_SELF, GFUNC_END_CINEMA
|
|
set_function CHR_SELF, 0x0403
|
|
endfunction
|
|
|
|
unregistered_function4:
|
|
set_return_function CHR_SELF, GFUNC_END_CINEMA
|
|
set_function CHR_SELF, 0x0404
|
|
endfunction
|
|
|
|
unregistered_function5:
|
|
set_function CHR_SELF, 0x0405
|
|
endfunction
|
|
|
|
func040a_intro:
|
|
set_return_function CHR_SELF, 0x0406
|
|
set_function CHR_SELF, 0x0401
|
|
endfunction
|
|
|
|
func0406_3e54:
|
|
set_return_function CHR_SELF, 0x0407
|
|
set_function CHR_SELF, 0x0402
|
|
endfunction
|
|
|
|
func0407_3e60:
|
|
set_return_function CHR_SELF, 0x0408
|
|
set_function CHR_SELF, 0x0403
|
|
endfunction
|
|
|
|
func0408_3e6c:
|
|
set_return_function CHR_SELF, 0x0409
|
|
set_function CHR_SELF, 0x0404
|
|
endfunction
|
|
|
|
func0409_3e78:
|
|
set_function CHR_SELF, 0x0405
|
|
endfunction
|
|
|
|
func100f_check_mine:
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x0a
|
|
|
|
// SA and PA
|
|
yield
|
|
beginloop 0x08
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_has_object CHR_P1P2, OBJ_BRIEFCASE1, /*goto*/ 0x03
|
|
reloop 0x08
|
|
|
|
label 0x03
|
|
set_target_chr CHR_P1P2
|
|
|
|
beginloop 0x11
|
|
dprint "MAIN\n"
|
|
if_chr_death_animation_finished TARGET_CHR, /*goto*/ 0x29
|
|
if_chr_dying TARGET_CHR, /*goto*/ 0x29
|
|
if_chr_unloaded TARGET_CHR, /*goto*/ 0x29
|
|
if_ammo_quantity_lt TARGET_CHR, AMMOTYPE_REMOTE_MINE, 1, /*goto*/ 0x03
|
|
endloop 0x11
|
|
|
|
label 0x29
|
|
label 0x54
|
|
yield
|
|
dprint "DEAD\n"
|
|
if_chr_death_animation_finished TARGET_CHR, /*goto*/ 0x28
|
|
if_chr_dying TARGET_CHR, /*goto*/ 0x28
|
|
if_chr_unloaded TARGET_CHR, /*goto*/ 0x28
|
|
yield
|
|
dprint "NOTDEAD\n"
|
|
if_ammo_quantity_lt CHR_JOANNA, AMMOTYPE_REMOTE_MINE, 1, /*goto*/ 0x29
|
|
reloop 0x08
|
|
|
|
label 0x29
|
|
if_ammo_quantity_lt CHR_VELVET, AMMOTYPE_REMOTE_MINE, 1, /*goto*/ 0x29
|
|
endloop 0x08
|
|
|
|
label 0x29
|
|
dprint "NOAMMO\n"
|
|
label 0x28
|
|
dprint "STILLDEAD\n"
|
|
goto_first 0x54
|
|
|
|
label 0x03
|
|
dprint "FAIL\n"
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
if_weapon_thrown WEAPON_REMOTEMINE, /*goto*/ 0x04
|
|
goto_first 0x11
|
|
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_weapon_thrown_on_object WEAPON_REMOTEMINE, OBJ_FIREDOORTOP, /*goto*/ 0x06
|
|
if_weapon_thrown_on_object WEAPON_REMOTEMINE, OBJ_FIREDOORBOTTOM, /*goto*/ 0x08
|
|
if_timer_gt 120, /*goto*/ 0x07
|
|
endloop 0x05
|
|
|
|
label 0x08
|
|
unset_eeprom_flag EEPROMFLAG_G5_MINE
|
|
goto_next 0x03
|
|
label 0x06
|
|
set_eeprom_flag EEPROMFLAG_G5_MINE
|
|
|
|
label 0x03
|
|
set_stage_flag STAGEFLAG_MINE_PLACED
|
|
message CHR_P1P2, 0x320f // "Mine placed correctly."
|
|
|
|
// Check that the player hasn't detonated the mine
|
|
beginloop 0x2d
|
|
if_weapon_thrown_on_object WEAPON_REMOTEMINE, OBJ_FIREDOORTOP, /*goto*/ 0x03
|
|
if_weapon_thrown_on_object WEAPON_REMOTEMINE, OBJ_FIREDOORBOTTOM, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
endloop 0x2d
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_MINE_WASTED
|
|
message CHR_P1P2, 0x3248 // "Remote Mine has been wasted."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x07
|
|
set_stage_flag STAGEFLAG_MINE_WASTED
|
|
message CHR_P1P2, 0x3210 // "Mine placed incorrectly."
|
|
|
|
label 0x0a
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1026_uplink:
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_activated_object CHR_P1P2, OBJ_TAXI, /*goto*/ 0x03
|
|
reloop 0x10
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TAXI_REPROGRAMMED, FALSE, /*goto*/ 0x04
|
|
message CHR_P1P2, 0x3211 // "Virus already downloaded into NavComp."
|
|
reloop 0x10
|
|
|
|
label 0x04
|
|
if_chr_weapon_equipped CHR_P1P2, WEAPON_DATAUPLINK, /*goto*/ 0x03
|
|
message CHR_P1P2, 0x3212 // "Hovcab is unresponsive - need Reprogrammer."
|
|
reloop 0x10
|
|
|
|
// Uplinking
|
|
label 0x03
|
|
message CHR_P1P2, 0x3213 // "Accessing hovercab navigation systems."
|
|
assign_sound 0x0456, CHANNEL_7
|
|
control_sound_from_object CHANNEL_7, OBJ_TAXI, TRUE
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_timer_gt 300, /*goto*/ 0x04
|
|
if_chr_distance_to_pad_gt CHR_P1P2, 350, 0x00a3, /*goto*/ 0x06
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
message CHR_P1P2, 0x3214 // "Virus downloaded successfully."
|
|
yield
|
|
message CHR_P1P2, 0x3215 // "Hovercab navigation systems reprogrammed."
|
|
mute_channel CHANNEL_7
|
|
assign_sound 0x01c1, CHANNEL_7
|
|
control_sound_from_object CHANNEL_7, OBJ_TAXI, TRUE
|
|
yield
|
|
set_stage_flag STAGEFLAG_TAXI_REPROGRAMMED
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// Moved away while uplinking
|
|
label 0x06
|
|
message CHR_P1P2, 0x3216 // "Connection to hovercab broken."
|
|
mute_channel CHANNEL_7
|
|
yield
|
|
yield
|
|
yield
|
|
assign_sound 0x0457, CHANNEL_4
|
|
play_sound_from_object CHANNEL_4, OBJ_TAXI, 0x012c, 0x0190
|
|
restart_timer
|
|
|
|
beginloop 0x1d
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
endloop 0x1d
|
|
|
|
label 0x04
|
|
mute_channel CHANNEL_4
|
|
endloop 0x10
|
|
|
|
endfunction
|
|
|
|
func040d_limo:
|
|
begin_hovercar_path 0x02
|
|
set_vehicle_speed SPEED_WALK, 0
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x03
|
|
|
|
// SA and PA
|
|
set_chr_health CHR_SELF, 34464
|
|
goto_next 0x04
|
|
|
|
// A
|
|
label 0x03
|
|
set_chr_health CHR_SELF, 65456
|
|
|
|
// All difficulties
|
|
label 0x04
|
|
|
|
// Wait for flag set, provided limo not destroyed
|
|
beginloop 0x05
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
|
|
// Wait until not in room
|
|
beginloop 0x2d
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0002, /*goto*/ 0x03
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0010, /*goto*/ 0x03
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0012, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
endloop 0x2d
|
|
|
|
label 0x04
|
|
set_object_flag_bank1 OBJ_LIMO, OBJECTFLAG1_04000000
|
|
set_object_flag_bank2 OBJ_LIMO, OBJECTFLAG2_00000010
|
|
object_do_animation 0x02d6, OBJ_LIMO, 0x04ff, 0xff
|
|
|
|
assign_sound 0x01b4, CHANNEL_1
|
|
play_sound_from_object CHANNEL_1, OBJ_LIMO, 0x0960, 0x0c80
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_PLACED, TRUE, /*goto*/ 0x03
|
|
if_difficulty_lt DIFF_PA, /*goto*/ 0x03
|
|
set_stage_flag STAGEFLAG_LIMO_ESCAPED
|
|
message CHR_JOANNA, 0x321c // "DataDyne limo has escaped."
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040c_taxi:
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x03
|
|
|
|
// SA and PA
|
|
set_chr_health CHR_SELF, 34464
|
|
goto_next 0x04
|
|
|
|
// A
|
|
label 0x03
|
|
set_chr_health CHR_SELF, 65456
|
|
begin_hovercar_path 0x04
|
|
set_vehicle_speed SPEED_WALK, 0
|
|
|
|
// All difficulties
|
|
label 0x04
|
|
|
|
beginloop 0x05
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_TAXI_LEAVE, TRUE, /*goto*/ 0x04
|
|
label 0x03
|
|
endloop 0x05
|
|
|
|
// Check taxi healthy
|
|
label 0x04
|
|
if_object_in_good_condition OBJ_TAXI, /*goto*/ 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// Take off
|
|
label 0x03
|
|
assign_sound 0x8000, CHANNEL_0
|
|
play_sound_from_object CHANNEL_0, OBJ_TAXI, 0x0960, 0x0c80
|
|
object_do_animation 0x0168, OBJ_TAXI, 0x04ff, 0xff
|
|
set_object_flag_bank1 OBJ_TAXI, OBJECTFLAG1_04000000
|
|
|
|
// Wait for flag
|
|
beginloop 0x06
|
|
if_stage_flag_eq STAGEFLAG_TAXI_ALMOST_READY_TO_CRASH, TRUE, /*goto*/ 0x04
|
|
endloop 0x06
|
|
|
|
// Check taxi healthy
|
|
label 0x04
|
|
if_object_in_good_condition OBJ_TAXI, /*goto*/ 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
set_stage_flag STAGEFLAG_TAXI_READY_TO_CRASH
|
|
|
|
// Wait for another flag
|
|
beginloop 0x07
|
|
if_stage_flag_eq STAGEFLAG_ROBOT_NEAR_CORNER, TRUE, /*goto*/ 0x04
|
|
endloop 0x07
|
|
|
|
label 0x04
|
|
label 0x38
|
|
dprint "GO FOR CRASH\n"
|
|
set_stage_flag STAGEFLAG_TRIGGER_CRASH
|
|
yield
|
|
mute_channel CHANNEL_0
|
|
object_do_animation 0x0169, OBJ_TAXI, 0x04ff, 0xff
|
|
label 0x0a
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
.macro tracerbug_logic chr chr2
|
|
set_follow_chr \chr
|
|
if_difficulty_lt DIFF_PA, /*goto*/ 0x54
|
|
goto_next 0x04
|
|
|
|
// A or SA
|
|
label 0x54
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// PA
|
|
label 0x04
|
|
yield
|
|
|
|
beginloop 0x11
|
|
dprint "BUG C1\n"
|
|
set_target_chr \chr2
|
|
if_chr_death_animation_finished \chr, /*goto*/ 0x2f
|
|
if_chr_dying \chr, /*goto*/ 0x2f
|
|
if_chr_unloaded \chr, /*goto*/ 0x2f
|
|
if_ammo_quantity_lt \chr, AMMOTYPE_BUG, 1, /*goto*/ 0x03
|
|
label 0x04
|
|
endloop 0x11
|
|
|
|
// Dead - not sure why it checks this a second time
|
|
beginloop 0x2f
|
|
dprint "BUG DO\n"
|
|
set_target_chr \chr2
|
|
if_chr_death_animation_finished \chr, /*goto*/ 0x30
|
|
if_chr_dying \chr, /*goto*/ 0x30
|
|
if_chr_unloaded \chr, /*goto*/ 0x30
|
|
label 0x31
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
goto_first 0x11
|
|
|
|
label 0x30
|
|
endloop 0x2f
|
|
|
|
// Alive but has no bug
|
|
label 0x03
|
|
dprint "BUG C2\n"
|
|
yield
|
|
if_weapon_thrown WEAPON_TRACERBUG, /*goto*/ 0x04
|
|
goto_first 0x03
|
|
|
|
// Check limo healthy
|
|
label 0x04
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
dprint "BUG C3\n"
|
|
if_weapon_thrown_on_object WEAPON_TRACERBUG, OBJ_LIMO, /*goto*/ 0x06
|
|
if_timer_gt 120, /*goto*/ 0x07
|
|
endloop 0x05
|
|
|
|
label 0x06
|
|
set_stage_flag STAGEFLAG_TRACERBUG_PLACED
|
|
unset_stage_flag STAGEFLAG_TRACERBUG_WASTED
|
|
message \chr, 0x3217 // "Tracer Bug placed correctly."
|
|
restart_timer
|
|
|
|
beginloop 0x08
|
|
dprint "BUG C4\n"
|
|
if_timer_gt 300, /*goto*/ 0x04
|
|
goto_first 0x08
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_TRACERBUG_SAFE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// Bug wasted
|
|
label 0x07
|
|
dprint "WRONG1\n"
|
|
if_stage_flag_eq STAGEFLAG_ONE_BUG_REMAINING, TRUE, /*goto*/ 0x03
|
|
dprint "WRONG2\n"
|
|
set_stage_flag STAGEFLAG_ONE_BUG_REMAINING
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
dprint "WRONG3\n"
|
|
set_stage_flag STAGEFLAG_TRACERBUG_WASTED
|
|
message \chr, 0x3218 // "Tracer Bug placed incorrectly."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
.endm
|
|
|
|
func1004_tracerbug_joanna:
|
|
tracerbug_logic CHR_JOANNA, CHR_JOANNA
|
|
endfunction
|
|
|
|
func1011_trackerbug_velvet:
|
|
yield
|
|
if_chr_death_animation_finished CHR_VELVET, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
|
|
label 0x03
|
|
set_stage_flag STAGEFLAG_ONE_BUG_REMAINING
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x04
|
|
tracerbug_logic CHR_VELVET, FOLLOW_CHR
|
|
endfunction
|
|
|
|
func1005_check_things_destroyed:
|
|
beginloop 0x10
|
|
// Check limo
|
|
if_stage_flag_eq STAGEFLAG_LIMO_DESTROYED, TRUE, /*goto*/ 0x03
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
set_stage_flag STAGEFLAG_LIMO_DESTROYED
|
|
mute_channel CHANNEL_1
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x03
|
|
message CHR_JOANNA, 0x3219 // "Mission critical vehicle destroyed."
|
|
|
|
// Check taxi
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_DIVERSION_CREATED, TRUE, /*goto*/ 0x03
|
|
if_stage_flag_eq STAGEFLAG_TAXI_DESTROYED, TRUE, /*goto*/ 0x03
|
|
if_object_in_good_condition OBJ_TAXI, /*goto*/ 0x03
|
|
mute_channel CHANNEL_0
|
|
set_stage_flag STAGEFLAG_TAXI_DESTROYED
|
|
message CHR_JOANNA, 0x3219 // "Mission critical vehicle destroyed."
|
|
|
|
// Check robot
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_DIVERSION_CREATED, TRUE, /*goto*/ 0x03
|
|
if_stage_flag_eq STAGEFLAG_ROBOT_DESTROYED, TRUE, /*goto*/ 0x03
|
|
if_chr_dying CHR_ROBOT, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_ROBOT_DESTROYED
|
|
message CHR_JOANNA, 0x3219 // "Mission critical vehicle destroyed."
|
|
label 0x03
|
|
endloop 0x10
|
|
|
|
endfunction
|
|
|
|
func1006_check_for_end:
|
|
beginloop 0x05
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_objective_complete 0, /*goto*/ 0x03
|
|
reloop 0x05
|
|
|
|
label 0x03
|
|
if_objective_complete 3, /*goto*/ 0x03
|
|
reloop 0x05
|
|
|
|
label 0x03
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x0a
|
|
if_objective_complete 2, /*goto*/ 0x03
|
|
reloop 0x05
|
|
|
|
label 0x03
|
|
if_difficulty_lt DIFF_PA, /*goto*/ 0x0a
|
|
if_objective_complete 1, /*goto*/ 0x0a
|
|
reloop 0x05
|
|
|
|
label 0x0a
|
|
dprint "PAD CHECK\n"
|
|
if_chr_distance_to_pad_lt CHR_P1P2, 350, 0x00a7, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_IN_ELEVATOR
|
|
dprint "IN THE ELEVATOR\n"
|
|
yield
|
|
yield
|
|
set_invincible CHR_JOANNA
|
|
revoke_control CHR_JOANNA, 4
|
|
|
|
// But there is no countdown timer...
|
|
hide_countdown_timer
|
|
stop_countdown_timer
|
|
|
|
if_all_objectives_complete /*goto*/ 0x05
|
|
|
|
// Objectives failed
|
|
message CHR_P1P2, 0x321a // "MISSION FAILED"
|
|
label 0x03
|
|
restart_timer
|
|
|
|
beginloop 0x13
|
|
if_timer_gt 280, /*goto*/ 0x12
|
|
endloop 0x13
|
|
|
|
label 0x12
|
|
end_level
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// Objectives complete
|
|
label 0x05
|
|
if_chr_death_animation_finished CHR_JOANNA, /*goto*/ 0x03
|
|
if_chr_dying CHR_JOANNA, /*goto*/ 0x03
|
|
if_chr_unloaded CHR_JOANNA, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
|
|
label 0x03
|
|
if_chr_death_animation_finished CHR_VELVET, /*goto*/ 0x03
|
|
if_chr_dying CHR_VELVET, /*goto*/ 0x03
|
|
if_chr_unloaded CHR_VELVET, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
|
|
label 0x03
|
|
end_level
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, FUNC_OUTRO
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040d_limo_timing:
|
|
// Wait for any of the following:
|
|
// - Taxi reprogrammed
|
|
// - Tracer bug placed and robot on drain street
|
|
// - 2 minutes elapsed and robot on drain street (3 mins on Agent)
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_stage_flag_eq STAGEFLAG_TAXI_REPROGRAMMED, TRUE, /*goto*/ 0x04
|
|
if_stage_flag_eq STAGEFLAG_ROBOT_ON_DRAIN_STREET, TRUE, /*goto*/ 0x03
|
|
reloop 0x05
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_PLACED, TRUE, /*goto*/ 0x04
|
|
if_difficulty_gt DIFF_SA, /*goto*/ 0x07
|
|
if_difficulty_gt DIFF_A, /*goto*/ 0x06
|
|
|
|
// A - 3 minute timer
|
|
if_timer_gt 10800, /*goto*/ 0x04
|
|
reloop 0x05
|
|
|
|
// SA - 2 minute timer
|
|
label 0x06
|
|
if_timer_gt 7200, /*goto*/ 0x04
|
|
reloop 0x05
|
|
|
|
// PA - 2 minute timer
|
|
label 0x07
|
|
if_timer_gt 7200, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
// Ready to leave
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_LIMO_READY_TO_LEAVE
|
|
dprint "LIMO READY TO GO\n"
|
|
restart_timer
|
|
|
|
// Wait 15 seconds
|
|
beginloop 0x0a
|
|
if_timer_gt 900, /*goto*/ 0x04
|
|
endloop 0x0a
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_LIMO_READY_15SEC_AGO
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040c_taxi_timing:
|
|
// Wait for both conditions
|
|
beginloop 0x07
|
|
if_stage_flag_eq STAGEFLAG_ROBOT_ON_DRAIN_STREET, TRUE, /*goto*/ 0x03
|
|
reloop 0x07
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TAXI_REPROGRAMMED, TRUE, /*goto*/ 0x03
|
|
endloop 0x07
|
|
|
|
// Wait 3.3 seconds
|
|
label 0x03
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_timer_gt 200, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_TRIGGER_TAXI_LEAVE
|
|
restart_timer
|
|
|
|
// Wait 10 seconds
|
|
beginloop 0x06
|
|
if_timer_gt 600, /*goto*/ 0x04
|
|
endloop 0x06
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_TAXI_ALMOST_READY_TO_CRASH
|
|
unset_object_flag_bank1 OBJ_TAXI, OBJECTFLAG1_04000000
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func0412_cia:
|
|
set_return_function CHR_SELF, FUNC_CIA
|
|
set_onshot_function FUNC_CIA
|
|
if_chr_dying CHR_SELF, /*goto*/ 0x04
|
|
if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x04
|
|
if_chr_unloaded CHR_SELF, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
if_chr_idle /*goto*/ 0x43
|
|
if_num_times_shot_lt 1, /*goto*/ 0x10
|
|
|
|
// Has been shot
|
|
beginloop 0x0d
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x0d
|
|
|
|
label 0x04
|
|
goto_next 0x0c
|
|
|
|
// Unreachable
|
|
restart_timer
|
|
|
|
// Chr is idle
|
|
beginloop 0x43
|
|
if_saw_death 0x00, /*goto*/ 0x1d
|
|
if_shot_near_chr 0x00, /*goto*/ 0x1e
|
|
dprint "DURINGTALK\n"
|
|
if_timer_gt 180, /*goto*/ 0x04
|
|
endloop 0x43
|
|
|
|
// Idle + 3 seconds
|
|
label 0x04
|
|
if_self_flag_bankx_eq CHRFLAG0_00004000, TRUE, BANK_0, /*goto*/ 0x54
|
|
dprint "NOT A PATROLLER\n"
|
|
stop_chr
|
|
goto_next 0x10
|
|
|
|
// Patroller
|
|
label 0x54
|
|
dprint "PAT RET\n"
|
|
start_path
|
|
|
|
// Not shot, not a patroller, or patroller who has started his path
|
|
label 0x10
|
|
yield
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_self_flag_bankx_eq CHRFLAG0_00004000, TRUE, BANK_0, /*goto*/ 0x37
|
|
call_rng
|
|
if_rand_gt 128, /*goto*/ 0x37
|
|
label 0x2d
|
|
restart_timer
|
|
label 0x08
|
|
stop_chr
|
|
if_self_flag_bankx_eq CHRFLAG1_DONE_SEARCH_ANIM, TRUE, BANK_1, /*goto*/ 0x03
|
|
call_rng
|
|
if_rand_gt 128, /*goto*/ 0x03
|
|
call_rng
|
|
if_rand_lt 64, /*goto*/ 0x50
|
|
if_rand_lt 128, /*goto*/ 0x51
|
|
if_rand_lt 196, /*goto*/ 0x52
|
|
set_self_flag_bankx CHRFLAG1_DONE_SEARCH_ANIM, BANK_1
|
|
animation ANIM_SMOKE_CIGARETTE, 0, -1, 0x100a, CHR_SELF, 2
|
|
goto_next 0x36
|
|
|
|
label 0x50
|
|
animation ANIM_SCRATCH_HEAD, 0, -1, 0x100a, CHR_SELF, 2
|
|
goto_next 0x36
|
|
|
|
label 0x51
|
|
animation ANIM_YAWN, 0, -1, 0x100a, CHR_SELF, 2
|
|
goto_next 0x36
|
|
|
|
label 0x52
|
|
animation ANIM_GRAB_CROTCH, 0, -1, 0x100a, CHR_SELF, 2
|
|
goto_next 0x36
|
|
|
|
label 0x53
|
|
animation ANIM_TWO_GUN_HOLD, 0, 100, 0x100a, CHR_SELF, 2
|
|
goto_next 0x36
|
|
|
|
label 0x03
|
|
unset_self_flag_bankx CHRFLAG1_DONE_SEARCH_ANIM, BANK_1
|
|
cmd0049 0x003e, /*goto*/ 0x04
|
|
set_target_pad 0x00ba
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
call_rng
|
|
if_rand_lt 64, /*goto*/ 0x50
|
|
if_rand_lt 128, /*goto*/ 0x51
|
|
if_rand_lt 196, /*goto*/ 0x52
|
|
try_set_target_pad_to_something 0x08, /*goto*/ 0x03
|
|
label 0x50
|
|
try_set_target_pad_to_something 0x02, /*goto*/ 0x03
|
|
label 0x51
|
|
try_set_target_pad_to_something 0x04, /*goto*/ 0x03
|
|
label 0x52
|
|
try_set_target_pad_to_something 0x08, /*goto*/ 0x03
|
|
goto_next 0x36
|
|
|
|
label 0x03
|
|
go_to_target_pad SPEED_WALK
|
|
|
|
beginloop 0x36
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_saw_death 0x00, /*goto*/ 0x1d
|
|
if_shot_near_chr 0x00, /*goto*/ 0x1e
|
|
if_target_chr_in_sight /*goto*/ 0x04
|
|
if_chr_stopped /*goto*/ 0x35
|
|
endloop 0x36
|
|
|
|
label 0x35
|
|
goto_first 0x10
|
|
|
|
label 0x37
|
|
if_saw_death 0x00, /*goto*/ 0x1d
|
|
if_shot_near_chr 0x00, /*goto*/ 0x1e
|
|
if_target_chr_in_sight /*goto*/ 0x04
|
|
goto_first 0x10
|
|
|
|
label 0x04
|
|
restart_timer
|
|
label 0x05
|
|
yield
|
|
if_saw_death 0x00, /*goto*/ 0x1d
|
|
if_shot_near_chr 0x00, /*goto*/ 0x1e
|
|
if_chr_weapon_equipped CHR_P1P2, WEAPON_UNARMED, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
|
|
label 0x03
|
|
if_self_flag_bankx_eq CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x03
|
|
if_chr_distance_gt 450, /*goto*/ 0x03
|
|
set_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
set_return_function CHR_SELF, FUNC_CIA
|
|
set_function CHR_SELF, GFUNC_CIVILIAN_SAY_COMMENT
|
|
|
|
label 0x03
|
|
if_timer_lt 600, /*goto*/ 0x03
|
|
unset_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
label 0x03
|
|
dprint "LIMO READY TO GO\n"
|
|
goto_first 0x10
|
|
|
|
label 0x1e
|
|
restart_timer
|
|
try_face_entity 0x0200, 0x0000, /*goto*/ 0x09
|
|
|
|
beginloop 0x09
|
|
if_angle_to_target_chr_lt 10, /*goto*/ 0x04
|
|
if_timer_gt 40, /*goto*/ 0x04
|
|
endloop 0x09
|
|
|
|
// Saw a death
|
|
label 0x1d
|
|
restart_timer
|
|
animation ANIM_LOOK_AROUND_FRANTIC, 0, 193, 0x1010, CHR_SELF, 2
|
|
|
|
// Shot near chr, or follow through from above
|
|
beginloop 0x1e
|
|
if_timer_gt 90, /*goto*/ 0x0c
|
|
endloop 0x1e
|
|
|
|
label 0x04
|
|
set_group_alertness 100
|
|
|
|
beginloop 0x38
|
|
if_any_chr_doing_action ACTION_COWER, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
// A civilian is cowering
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x3a
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
endloop 0x3a
|
|
|
|
label 0x04
|
|
set_self_flag_bankx CHRFLAG0_00000080, BANK_0
|
|
set_group 0x03
|
|
endloop 0x38
|
|
|
|
label 0x03
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
set_action ACTION_COWER, FALSE
|
|
say_quip CHR_JOANNA, 0x18, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00
|
|
animation ANIM_SURRENDER_002E, 0, 193, 0x1010, CHR_SELF, 2
|
|
|
|
beginloop 0x0a
|
|
if_timer_gt 120, /*goto*/ 0x0c
|
|
endloop 0x0a
|
|
|
|
// Alerted
|
|
label 0x0c
|
|
set_action ACTION_SCAN, FALSE
|
|
if_self_flag_bankx_eq CHRFLAG0_00000080, FALSE, BANK_0, /*goto*/ 0x03
|
|
set_group 0x04
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
label 0x03
|
|
set_chr_alliance CHR_SELF, ALLIANCE_ALLY
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
try_target_chr_in_same_group /*goto*/ 0x04
|
|
goto_next 0x0b
|
|
|
|
label 0x03
|
|
goto_first 0x05
|
|
|
|
label 0x04
|
|
set_chr_alliance CHR_SELF, 0x80
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
try_run_to_chr FOLLOW_CHR, /*goto*/ 0x06
|
|
|
|
beginloop 0x06
|
|
if_self_distance_to_chr_lt 2520, CHR_HIDDENGUY, /*goto*/ 0x03
|
|
reloop 0x06
|
|
|
|
label 0x03
|
|
if_detected_chr FOLLOW_CHR, /*goto*/ 0x04
|
|
endloop 0x06
|
|
|
|
label 0x04
|
|
set_group_alertness 100
|
|
say_quip CHR_JOANNA, 0x19, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00
|
|
label 0x0b
|
|
set_chr_alliance CHR_SELF, 0x80
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
if_self_flag_bankx_eq CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x2d
|
|
if_self_flag_bankx_eq CHRFLAG0_00004000, TRUE, BANK_0, /*goto*/ 0x2f
|
|
run_to_pad 0x00c8
|
|
goto_next 0x07
|
|
|
|
label 0x2d
|
|
run_to_pad 0x005a
|
|
goto_next 0x07
|
|
|
|
label 0x2f
|
|
run_to_pad 0x0026
|
|
label 0x07
|
|
yield
|
|
if_chr_stopped /*goto*/ 0x04
|
|
label 0x03
|
|
goto_first 0x07
|
|
|
|
label 0x04
|
|
|
|
label 0x0e
|
|
animation ANIM_COWER_0229, -1, -1, 0x100a, CHR_SELF, 2
|
|
|
|
beginloop 0x0f
|
|
if_chr_stopped /*goto*/ 0x03
|
|
endloop 0x0f
|
|
|
|
label 0x03
|
|
goto_first 0x0e
|
|
|
|
endfunction
|
|
|
|
func0413_bugspotter:
|
|
.set LABEL_RUN_AWAY, 0x0d
|
|
|
|
set_alertness 255
|
|
set_onshot_function FUNC_BUGSPOTTER
|
|
if_chr_dying CHR_SELF, /*goto*/ 0x04
|
|
if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x04
|
|
if_chr_unloaded CHR_SELF, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
|
|
// Wait until player in sight (mainly)
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_target_chr_in_sight /*goto*/ 0x04
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_PLACED, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TAXI_READY_TO_CRASH, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
goto_next LABEL_RUN_AWAY
|
|
label 0x03
|
|
endloop 0x10
|
|
|
|
// Player in sight - face them
|
|
label 0x04
|
|
restart_timer
|
|
try_face_entity 0x0200, 0x0000, /*goto*/ 0x04
|
|
|
|
beginloop 0x09
|
|
if_angle_to_target_chr_lt 10, /*goto*/ 0x04
|
|
if_timer_gt 40, /*goto*/ 0x04
|
|
endloop 0x09
|
|
|
|
// Make a comment
|
|
label 0x04
|
|
if_chr_weapon_equipped CHR_P1P2, WEAPON_UNARMED, /*goto*/ 0x03
|
|
if_chr_weapon_equipped CHR_P1P2, WEAPON_NONE, /*goto*/ 0x03
|
|
say_quip CHR_JOANNA, 0x1a, 0xff, 0x0a, 0xff, 0x81, 0x00, 0x00
|
|
goto_next 0x04
|
|
label 0x03
|
|
say_quip CHR_JOANNA, 0x17, 0xff, 0x0a, 0xff, 0x81, 0x00, 0x00
|
|
label 0x04
|
|
animation ANIM_TALKING_00A3, 0, -1, 0x0010, CHR_SELF, 2
|
|
|
|
// Looks like he spots if the tracer bug if he sees Jo within 8.3 seconds of
|
|
// the bug landing on the limo.
|
|
beginloop 0x08
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TAXI_READY_TO_CRASH, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
goto_next LABEL_RUN_AWAY
|
|
|
|
label 0x03
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_target_chr_in_sight /*goto*/ 0x03
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_target_chr_in_sight /*goto*/ 0x03
|
|
goto_next 0x0a
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_SAFE, TRUE, /*goto*/ 0x0a
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_PLACED, TRUE, /*goto*/ 0x04
|
|
label 0x0a
|
|
if_timer_gt 500, /*goto*/ 0x03
|
|
endloop 0x08
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TRACERBUG_PLACED, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
goto_first 0x10
|
|
|
|
// Bug was thrown recently
|
|
label 0x04
|
|
animation ANIM_TALKING_00A3, 0, -1, 0x0010, CHR_SELF, 2
|
|
assign_sound 0x044a, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
set_stage_flag STAGEFLAG_TRACERBUG_SPOTTED
|
|
message CHR_JOANNA, 0x3243 // "Tracer Bug has been spotted."
|
|
|
|
// Wait for talking animation to finish
|
|
beginloop 0x05
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TAXI_READY_TO_CRASH, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
goto_next LABEL_RUN_AWAY
|
|
label 0x03
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
// Find another guard and run to them
|
|
label 0x04
|
|
try_target_chr_in_same_group /*goto*/ 0x04
|
|
goto_next 0x0b
|
|
|
|
label 0x04
|
|
try_run_to_chr FOLLOW_CHR, /*goto*/ 0x06
|
|
|
|
// Wait until detected target guard
|
|
beginloop 0x06
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TAXI_READY_TO_CRASH, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
goto_next LABEL_RUN_AWAY
|
|
label 0x03
|
|
if_detected_chr FOLLOW_CHR, /*goto*/ 0x04
|
|
endloop 0x06
|
|
|
|
// Alert everyone in group
|
|
label 0x04
|
|
set_group_alertness 100
|
|
assign_sound 0x0467, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
|
|
// No other guard to run to
|
|
label 0x0b
|
|
retreat 0x02, 0x02
|
|
|
|
beginloop 0x07
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_stage_flag_eq STAGEFLAG_TAXI_READY_TO_CRASH, TRUE, /*goto*/ LABEL_RUN_AWAY
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
goto_next LABEL_RUN_AWAY
|
|
label 0x03
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_within_units_of_sight 30, /*goto*/ 0x03
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_within_units_of_sight 30, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
goto_first 0x07
|
|
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x0e
|
|
if_timer_gt 10, /*goto*/ 0x03
|
|
endloop 0x0e
|
|
|
|
label 0x03
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_within_units_of_sight 30, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
goto_first 0x07
|
|
|
|
label 0x04
|
|
unset_self_flag_bank3 CHRFLAG3_KILLCOUNTABLE
|
|
set_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
yield
|
|
drop_gun_and_fade_out
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label LABEL_RUN_AWAY
|
|
jog_to_pad 0x004f
|
|
|
|
beginloop 0x0e
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x0e
|
|
|
|
label 0x04
|
|
stop_chr
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
.macro init_patroller pathid
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 4
|
|
set_reaction_speed 30
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
assign_path \pathid
|
|
start_path
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
|
|
beginloop 0x04
|
|
endloop 0x04
|
|
.endm
|
|
|
|
func0414_start_path07:
|
|
init_patroller 0x07
|
|
endfunction
|
|
|
|
func0415_start_path08:
|
|
init_patroller 0x08
|
|
endfunction
|
|
|
|
func0416_start_path09:
|
|
init_patroller 0x09
|
|
endfunction
|
|
|
|
func0417_start_path10:
|
|
init_patroller 0x0a
|
|
endfunction
|
|
|
|
func0418_start_path11:
|
|
init_patroller 0x0b
|
|
endfunction
|
|
|
|
/**
|
|
* This chr waits 2 seconds before starting his path.
|
|
*/
|
|
func0419_init_cia1:
|
|
restart_timer
|
|
|
|
beginloop 0x05
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
assign_path 12
|
|
start_path
|
|
set_function CHR_SELF, FUNC_CIA
|
|
|
|
beginloop 0x04
|
|
endloop 0x04
|
|
|
|
endfunction
|
|
|
|
func041d_fbi:
|
|
set_onshot_function FUNC_FBI
|
|
if_chr_dying CHR_SELF, /*goto*/ 0x04
|
|
if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x04
|
|
if_chr_unloaded CHR_SELF, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x03
|
|
if_num_times_shot_lt 1, /*goto*/ 0x19
|
|
|
|
// Shot - wait for animation to finish
|
|
beginloop 0x05
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x05
|
|
|
|
label 0x04
|
|
goto_next 0x17
|
|
|
|
// Unreachable
|
|
label 0x04
|
|
say_quip CHR_JOANNA, 0x1b, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00
|
|
set_group_alertness 100
|
|
goto_next 0x16
|
|
|
|
// Not shot
|
|
label 0x19
|
|
set_action ACTION_SCAN, TRUE
|
|
yield
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_alertness 100, OPERATOR_LESS_THAN, /*goto*/ 0x04
|
|
goto_next 0x16
|
|
|
|
label 0x04
|
|
if_target_chr_in_sight /*goto*/ 0x18
|
|
if_near_miss /*goto*/ 0x18
|
|
if_num_times_shot_gt 0, /*goto*/ 0x18
|
|
if_hears_gunfire /*goto*/ 0x16
|
|
if_shot_near_chr 0x00, /*goto*/ 0x16
|
|
if_saw_death 0x00, /*goto*/ 0x16
|
|
if_dying /*goto*/ 0x16
|
|
endloop 0x19
|
|
|
|
label 0x16
|
|
if_stage_flag_eq STAGEFLAG_ALARM_SOUNDED, FALSE, /*goto*/ 0x04
|
|
|
|
// Draw magnum and go after player
|
|
label 0x17
|
|
try_draw_weapon MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000, /*goto*/ 0x03
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_ALERTED
|
|
|
|
label 0x04
|
|
dprint "TRACK PLAYER\n"
|
|
try_run_to_target_chr_with_hand_up /*goto*/ 0x06
|
|
|
|
beginloop 0x06
|
|
if_chr_distance_lt 500, /*goto*/ 0x18
|
|
if_target_chr_in_sight /*goto*/ 0x18
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_target_chr_in_sight /*goto*/ 0x18
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
endloop 0x06
|
|
|
|
label 0x18
|
|
if_stage_flag_eq STAGEFLAG_ALARM_SOUNDED, FALSE, /*goto*/ 0x04
|
|
try_draw_weapon MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000, /*goto*/ 0x03
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_ALERTED
|
|
|
|
label 0x04
|
|
restart_timer
|
|
try_face_entity 0x0200, 0x0000, /*goto*/ 0x0d
|
|
|
|
beginloop 0x0d
|
|
if_angle_to_target_chr_lt 10, /*goto*/ 0x04
|
|
if_timer_gt 40, /*goto*/ 0x04
|
|
endloop 0x0d
|
|
|
|
label 0x04
|
|
say_quip CHR_JOANNA, 0x1b, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00
|
|
animation 0x0266, 0, 193, 0x0010, CHR_SELF, 2
|
|
|
|
beginloop 0x0e
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x03
|
|
if_chr_propsoundcount_zero CHR_SELF, /*goto*/ 0x04
|
|
label 0x03
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x0e
|
|
|
|
label 0x04
|
|
dprint "CREATED WEAP\n"
|
|
try_draw_weapon MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000, /*goto*/ 0x04
|
|
label 0x04
|
|
yield
|
|
set_stage_flag STAGEFLAG_ALARM_SOUNDED
|
|
activate_alarm
|
|
dprint "CREATED WEAP\n"
|
|
set_function CHR_SELF, GFUNC_ALERTED
|
|
endfunction
|
|
|
|
.macro check_cia_dead chr
|
|
beginloop 0x10
|
|
if_chr_dying \chr, /*goto*/ 0x05
|
|
endloop 0x10
|
|
|
|
// Unreachable
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x05
|
|
set_stage_flag STAGEFLAG_CIVILIAN_DEAD
|
|
message CHR_JOANNA, 0x321d // "Mission failed - unacceptable civilian casualties."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
.endm
|
|
|
|
func1009_check_cia1_dead:
|
|
check_cia_dead CHR_CIA1
|
|
endfunction
|
|
|
|
/**
|
|
* This guy is allowed to be killed once he has a certain flag.
|
|
*/
|
|
func100a_check_cia2_dead:
|
|
beginloop 0x10
|
|
if_chr_flag_bankx CHR_CIA2, CHRFLAG0_00002000, BANK_0, /*goto*/ 0x03
|
|
if_chr_dying CHR_CIA2, /*goto*/ 0x05
|
|
endloop 0x10
|
|
|
|
// Stop checking this chr
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x05
|
|
set_stage_flag STAGEFLAG_CIVILIAN_DEAD
|
|
message CHR_JOANNA, 0x321d // "Mission failed - unacceptable civilian casualties."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func100b_check_cia3_dead:
|
|
check_cia_dead CHR_CIA3
|
|
endfunction
|
|
|
|
func100c_check_cia4_dead:
|
|
check_cia_dead CHR_CIA4
|
|
endfunction
|
|
|
|
func041b_init_robot:
|
|
set_accuracy 40
|
|
set_shield 100
|
|
set_chr_flag_bank2 CHR_SELF, CHRFLAG2_10000000
|
|
set_function CHR_SELF, FUNC_ROBOT
|
|
endfunction
|
|
|
|
func041a_robot:
|
|
set_self_flag_bank3 CHRFLAG3_00040000
|
|
set_chr_health CHR_SELF, 1
|
|
if_chr_dying CHR_SELF, /*goto*/ 0x0c
|
|
assign_path 0
|
|
start_path
|
|
|
|
beginloop 0x02
|
|
set_target_chr CHR_HIDDENGUY
|
|
if_something_chicago_robot /*goto*/ 0x03
|
|
unset_stage_flag STAGEFLAG_ROBOT_NEAR_HOME
|
|
goto_next 0x04
|
|
|
|
label 0x03
|
|
set_stage_flag STAGEFLAG_ROBOT_NEAR_HOME
|
|
|
|
label 0x04
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_CRASH, TRUE, /*goto*/ 0x01
|
|
if_target_chr_in_sight /*goto*/ 0x08
|
|
call_rng
|
|
if_rand_gt 5, /*goto*/ 0x03
|
|
if_sound_finished CHANNEL_5, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
call_rng
|
|
if_rand_lt 86, /*goto*/ 0x06
|
|
if_rand_lt 172, /*goto*/ 0x07
|
|
assign_sound 0x046a, CHANNEL_5
|
|
play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
goto_next 0x03
|
|
|
|
label 0x06
|
|
assign_sound 0x046b, CHANNEL_5
|
|
play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
goto_next 0x03
|
|
|
|
label 0x07
|
|
assign_sound 0x046c, CHANNEL_5
|
|
play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
label 0x03
|
|
|
|
if_path_started /*goto*/ 0x03
|
|
start_path
|
|
label 0x03
|
|
reloop 0x02
|
|
|
|
label 0x08
|
|
restart_timer
|
|
stop_chr
|
|
if_self_flag_bankx_eq CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x05
|
|
play_sound 0x1aeb, -1
|
|
set_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
label 0x05
|
|
try_unset_chr_flag_bank3_02000000 CHR_SELF, /*goto*/ 0x03
|
|
goto_next 0x05
|
|
|
|
label 0x03
|
|
if_self_flag_bankx_eq CHRFLAG0_00004000, TRUE, BANK_0, /*goto*/ 0x05
|
|
play_sound 0x1aec, -1
|
|
set_self_flag_bankx CHRFLAG0_00004000, BANK_0
|
|
|
|
beginloop 0x05
|
|
set_target_chr CHR_HIDDENGUY
|
|
if_something_chicago_robot /*goto*/ 0x03
|
|
unset_stage_flag STAGEFLAG_ROBOT_NEAR_HOME
|
|
goto_next 0x04
|
|
label 0x03
|
|
set_stage_flag STAGEFLAG_ROBOT_NEAR_HOME
|
|
label 0x04
|
|
set_target_chr CHR_P1P2
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_CRASH, TRUE, /*goto*/ 0x01
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
if_self_flag_bankx_eq CHRFLAG0_00002000, FALSE, BANK_0, /*goto*/ 0x2a
|
|
if_target_chr_in_sight /*goto*/ 0x03
|
|
label 0x2a
|
|
endloop 0x05
|
|
|
|
label 0x03
|
|
set_target_chr CHR_P1P2
|
|
restart_timer
|
|
try_aim_and_shoot_thing1 0x0200, 0x0000, /*goto*/ 0x09
|
|
reloop 0x02
|
|
|
|
beginloop 0x09
|
|
unset_stage_flag STAGEFLAG_ROBOT_NEAR_HOME
|
|
set_target_chr CHR_P1P2
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_CRASH, TRUE, /*goto*/ 0x01
|
|
if_timer_gt 60, /*goto*/ 0x04
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x09
|
|
|
|
label 0x04
|
|
set_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
start_path
|
|
endloop 0x02
|
|
|
|
label 0x0c
|
|
assign_sound 0x1aec, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
label 0x01
|
|
label 0x04
|
|
label 0x38
|
|
set_chr_flag_bank3 CHR_ROBOT, CHRFLAG3_UNPLAYABLE
|
|
unset_chr_flag_bank3 CHR_ROBOT, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank2 CHR_ROBOT, CHRFLAG2_00020000
|
|
set_self_flag_bank3 CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
unset_chr_flag_bank2 CHR_SELF, CHRFLAG2_10000000
|
|
set_function CHR_ROBOT, GFUNC_IDLE
|
|
set_shield 0
|
|
animation 0x016a, 0, -1, 0x0600, CHR_SELF, 4
|
|
|
|
beginloop 0x2d
|
|
dprint "PART 4\n"
|
|
if_chr_stopped /*goto*/ 0x04
|
|
goto_first 0x2d
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func041e_sealer1:
|
|
.set LABEL_ALERTED, 0x18
|
|
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 4
|
|
set_reaction_speed 30
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
set_onshot_function GFUNC_IDLE
|
|
|
|
beginloop 0x19
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
set_target_chr CHR_P1P2
|
|
if_stage_flag_eq STAGEFLAG_CRASH_FINISHED, TRUE, /*goto*/ 0x03
|
|
if_alertness 100, OPERATOR_LESS_THAN, /*goto*/ 0x04
|
|
goto_next LABEL_ALERTED
|
|
|
|
label 0x04
|
|
if_target_chr_in_sight /*goto*/ LABEL_ALERTED
|
|
if_near_miss /*goto*/ LABEL_ALERTED
|
|
if_num_times_shot_gt 0, /*goto*/ LABEL_ALERTED
|
|
if_hears_gunfire /*goto*/ LABEL_ALERTED
|
|
if_shot_near_chr 0x00, /*goto*/ LABEL_ALERTED
|
|
if_saw_death 0x00, /*goto*/ LABEL_ALERTED
|
|
if_dying /*goto*/ LABEL_ALERTED
|
|
endloop 0x19
|
|
|
|
// Crash happened
|
|
label 0x03
|
|
unset_chr_flag_bank2 CHR_SELF, CHRFLAG2_00000400
|
|
jog_to_pad 0x00c4
|
|
set_function CHR_SEALER2, FUNC_JOG_TO_ACCIDENT
|
|
set_function CHR_SEALER3, FUNC_JOG_TO_ACCIDENT
|
|
set_function CHR_SEALER4, FUNC_JOG_TO_ACCIDENT
|
|
|
|
beginloop 0x0d
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x03
|
|
if_chr_stopped /*goto*/ 0x04
|
|
endloop 0x0d
|
|
|
|
// At crash site
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x0c
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x03
|
|
if_timer_gt 120, /*goto*/ 0x04
|
|
endloop 0x0c
|
|
|
|
label 0x03
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
|
|
// Conversation
|
|
label 0x04
|
|
assign_sound 0x814b, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
animation ANIM_TALKING_0098, -1, -1, 0x0200, CHR_SELF, 2
|
|
restart_timer
|
|
|
|
beginloop 0x07
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x04
|
|
if_timer_gt 120, /*goto*/ 0x03
|
|
endloop 0x07
|
|
|
|
label 0x03
|
|
assign_sound 0x044f, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
animation ANIM_TALKING_0231, -1, -1, 0x0200, CHR_SEALER1, 2
|
|
animation ANIM_TWO_GUN_HOLD, -1, -1, 0x0200, CHR_SELF, 2
|
|
|
|
beginloop 0x08
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x04
|
|
if_sound_finished CHANNEL_6, /*goto*/ 0x03
|
|
goto_first 0x08
|
|
|
|
label 0x03
|
|
assign_sound 0x0450, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
animation ANIM_TALKING_0233, -1, -1, 0x0200, CHR_SEALER3, 2
|
|
animation ANIM_TWO_GUN_HOLD, -1, -1, 0x0200, CHR_SEALER1, 2
|
|
restart_timer
|
|
|
|
beginloop 0x09
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x04
|
|
if_timer_gt 180, /*goto*/ 0x03
|
|
goto_first 0x09
|
|
|
|
label 0x03
|
|
assign_sound 0x0451, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
animation ANIM_TALKING_0232, -1, -1, 0x0200, CHR_SEALER1, 2
|
|
animation ANIM_TWO_GUN_HOLD, -1, -1, 0x0200, CHR_SEALER3, 2
|
|
restart_timer
|
|
|
|
beginloop 0x0a
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x04
|
|
if_timer_gt 120, /*goto*/ 0x03
|
|
goto_first 0x0a
|
|
|
|
label 0x03
|
|
assign_sound 0x0452, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
animation ANIM_TALKING_0234, -1, -1, 0x0200, CHR_SEALER3, 2
|
|
animation ANIM_TWO_GUN_HOLD, -1, -1, 0x0200, CHR_SEALER1, 2
|
|
|
|
beginloop 0x0b
|
|
if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x04
|
|
if_shot_near_chr 0x00, /*goto*/ 0x04
|
|
if_sound_finished CHANNEL_6, /*goto*/ 0x04
|
|
endloop 0x0b
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
|
|
// Alerted - seal elevator
|
|
label LABEL_ALERTED
|
|
label 0x04
|
|
close_door 0x10
|
|
close_door 0x11
|
|
lock_door 0x10, 0x02
|
|
lock_door 0x11, 0x02
|
|
set_stage_flag STAGEFLAG_ELEVATOR_SEALED
|
|
assign_sound 0x0469, CHANNEL_6
|
|
play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01
|
|
message CHR_JOANNA, 0x3221 // "Elevator access sealed."
|
|
animation ANIM_STANDING_TYPE_ONE_HAND, 0, 193, 0x1010, CHR_SELF, 2
|
|
|
|
beginloop 0x06
|
|
if_chr_stopped /*goto*/ 0x04
|
|
goto_first 0x06
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_ALERTED
|
|
endfunction
|
|
|
|
func100d_spawn_alarm_responders:
|
|
restart_timer
|
|
beginloop 0x05
|
|
if_stage_flag_eq STAGEFLAG_ALARM_SOUNDED, TRUE, /*goto*/ 0x03
|
|
endloop 0x05
|
|
|
|
label 0x03
|
|
restart_timer
|
|
play_sound 0x7af0, -1 // "Attention all personnel"
|
|
|
|
beginloop 0x1d
|
|
if_timer_gt 200, /*goto*/ 0x03
|
|
endloop 0x1d
|
|
|
|
label 0x03
|
|
restart_timer
|
|
play_sound 0x7af1, -1 // "Locate and apprehend fugitive"
|
|
|
|
beginloop 0x1e
|
|
if_timer_gt 120, /*goto*/ 0x03
|
|
endloop 0x1e
|
|
|
|
label 0x03
|
|
play_x_music CHANNEL_10, 60
|
|
goto_next 0x04
|
|
|
|
// When the alarm sounds, there are 4 groups of people who respond.
|
|
// Each group has 4 guards, and the entire group must be dead before the
|
|
// next group is spawned. There is a 15 second delay between groups.
|
|
// Each group spawns at a different location.
|
|
|
|
.macro spawn_group pad
|
|
try_spawn_chr BODY_G5_SWAT_GUARD, HEAD_RANDOM, \pad, FUNC_ALARM_RESPONDER, 0x00000200, /*goto*/ 0x04
|
|
label 0x04
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
try_spawn_chr BODY_G5_SWAT_GUARD, HEAD_RANDOM, \pad, FUNC_ALARM_RESPONDER, 0x00000200, /*goto*/ 0x04
|
|
label 0x04
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
try_spawn_chr BODY_G5_SWAT_GUARD, HEAD_RANDOM, \pad, FUNC_ALARM_RESPONDER, 0x00000200, /*goto*/ 0x04
|
|
label 0x04
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
try_spawn_chr BODY_G5_SWAT_GUARD, HEAD_RANDOM, \pad, FUNC_ALARM_RESPONDER, 0x00000200, /*goto*/ 0x04
|
|
label 0x04
|
|
.endm
|
|
|
|
label 0x07
|
|
unlock_door 0x14, 0x04
|
|
restart_timer
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP1_DEAD, TRUE, /*goto*/ 0x08
|
|
|
|
// Spawn group 1
|
|
spawn_group 0x0067
|
|
goto_next 0x06
|
|
|
|
// Group 1 is already done
|
|
label 0x08
|
|
unlock_door 0x15, 0x04
|
|
unlock_door 0x16, 0x04
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP2_DEAD, TRUE, /*goto*/ 0x09
|
|
|
|
// Spawn group 2
|
|
spawn_group 0x00c2
|
|
goto_next 0x06
|
|
|
|
// Groups 1 and 2 are done
|
|
label 0x09
|
|
unlock_door 0x17, 0x04
|
|
unlock_door 0x18, 0x04
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP3_DEAD, TRUE, /*goto*/ 0x0a
|
|
|
|
// Spawn group 3
|
|
spawn_group 0x00c3
|
|
goto_next 0x06
|
|
|
|
// Groups 1, 2 and 3 are done
|
|
// Spawn group 3
|
|
label 0x0a
|
|
unlock_door 0x19, 0x04
|
|
spawn_group 0x00c1
|
|
goto_next 0x06
|
|
|
|
// Wait until group is dead
|
|
beginloop 0x06
|
|
if_all_chrs_in_group_are_dead GROUP_ALARM_RESPONDER, /*goto*/ 0x04
|
|
endloop 0x06
|
|
|
|
// Set this group as dead
|
|
label 0x04
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP1_DEAD, TRUE, /*goto*/ 0x04
|
|
set_stage_flag STAGEFLAG_ALARM_GROUP1_DEAD
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP2_DEAD, TRUE, /*goto*/ 0x04
|
|
set_stage_flag STAGEFLAG_ALARM_GROUP2_DEAD
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
if_stage_flag_eq STAGEFLAG_ALARM_GROUP3_DEAD, TRUE, /*goto*/ 0x04
|
|
set_stage_flag STAGEFLAG_ALARM_GROUP3_DEAD
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
|
|
// Wait 15 seconds
|
|
label 0x03
|
|
restart_timer
|
|
|
|
beginloop 0x2d
|
|
if_timer_gt 900, /*goto*/ 0x04
|
|
endloop 0x2d
|
|
|
|
// Loop again to trigger next group
|
|
label 0x04
|
|
goto_first 0x07
|
|
|
|
endfunction
|
|
|
|
func041f_alarm_responder:
|
|
set_self_flag_bankx CHRFLAG1_00080000, BANK_1
|
|
set_self_flag_bankx CHRFLAG0_80000000, BANK_0
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 14
|
|
set_reaction_speed 20
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
try_draw_weapon MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x00000000, /*goto*/ 0x04
|
|
label 0x04
|
|
set_chr_alliance CHR_SELF, 0x20
|
|
set_group GROUP_ALARM_RESPONDER
|
|
set_self_flag_bankx CHRFLAG0_00002000, BANK_0
|
|
set_self_flag_bankx CHRFLAG0_00008000, BANK_0
|
|
set_alertness 90
|
|
set_self_flag_bank3 CHRFLAG3_00000200
|
|
cmd0145_rebuild_groups
|
|
cmd0146_rebuild_groups
|
|
set_function CHR_SELF, GFUNC_SEARCH_FOR_PLAYER
|
|
endfunction
|
|
|
|
func0420_jog_to_accident:
|
|
unset_chr_flag_bank2 CHR_SELF, CHRFLAG2_00000400
|
|
label 0x03
|
|
go_to_target_pad SPEED_JOG
|
|
|
|
// This is a bit weird. I'm pretty sure the set_function causes this
|
|
// function to stop. But because the guard has been issued the
|
|
// go_to_target_pad command, he'll continue to do so while running the
|
|
// unalerted function.
|
|
label 0x0d
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
yield
|
|
if_chr_stopped /*goto*/ 0x04
|
|
goto_first 0x0d
|
|
|
|
label 0x04
|
|
endfunction
|
|
|
|
func040a_intro_from_gameplay:
|
|
set_function CHR_SELF, 0x040a
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func101f_setup_robot_noise:
|
|
play_sound_from_object2 CHANNEL_2, CHR_ROBOT, 0x80b9, 0x00, 0x02
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
/**
|
|
* Not sure why it would give briefcases to the players.
|
|
* Note this is a coop/counterop only function.
|
|
*/
|
|
func1400_give_briefcases:
|
|
yield
|
|
set_chr_alliance CHR_COUNTEROP, 0x20
|
|
set_chr_flag_bank3 CHR_TOPSTAIRS, CHRFLAG3_HAS_SPECIAL_DEATH_ANIMATION
|
|
set_chr_flag_bank3 CHR_TOPSTAIRS, CHRFLAG3_00000020
|
|
set_chr_flag_bank3 0x0a, CHRFLAG3_00000020
|
|
if_difficulty_lt DIFF_PA, /*goto*/ 0x03
|
|
|
|
// PA
|
|
give_object_to_chr OBJ_BRIEFCASE3, CHR_JOANNA
|
|
|
|
// All difficulties
|
|
label 0x03
|
|
give_object_to_chr OBJ_BRIEFCASE4, CHR_JOANNA
|
|
if_chr_death_animation_finished CHR_VELVET, /*goto*/ 0x03
|
|
|
|
if_difficulty_lt DIFF_PA, /*goto*/ 0x04
|
|
|
|
// PA
|
|
give_object_to_chr OBJ_BRIEFCASE5, CHR_VELVET
|
|
|
|
// All difficulties
|
|
label 0x04
|
|
give_object_to_chr OBJ_BRIEFCASE6, CHR_VELVET
|
|
set_function CHR_SELF, GFUNC_REBUILD_GROUPS
|
|
|
|
// Velvet doesn't exist
|
|
label 0x03
|
|
hide_object OBJ_BRIEFCASE3
|
|
hide_object OBJ_BRIEFCASE5
|
|
hide_object OBJ_BRIEFCASE6
|
|
set_function CHR_SELF, GFUNC_REBUILD_GROUPS
|
|
endfunction
|
|
|
|
func1002_rebuild_groups:
|
|
set_function CHR_SELF, GFUNC_REBUILD_GROUPS
|
|
endfunction
|
|
|
|
func1010_elevator_switch:
|
|
yield
|
|
open_door 0x10
|
|
open_door 0x11
|
|
yield
|
|
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_activated_object CHR_P1P2, OBJ_SWITCH, /*goto*/ 0x03
|
|
if_stage_flag_eq STAGEFLAG_ELEVATOR_SEALED, TRUE, /*goto*/ 0x04
|
|
label 0x04
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
close_door 0x10
|
|
close_door 0x11
|
|
lock_door 0x10, 0x02
|
|
lock_door 0x11, 0x02
|
|
if_stage_flag_eq STAGEFLAG_ELEVATOR_SEALED, TRUE, /*goto*/ 0x04
|
|
message CHR_P1P2, 0x3221 // "Elevator access sealed."
|
|
set_stage_flag STAGEFLAG_ELEVATOR_SEALED
|
|
goto_first 0x10
|
|
|
|
label 0x04
|
|
message CHR_P1P2, 0x3230 // "Elevator door cannot be reopened."
|
|
goto_first 0x10
|
|
|
|
endfunction
|
|
|
|
func1001_objectives_failed_msg:
|
|
yield
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_04000000
|
|
set_chr_flag_bank3 CHR_CIA2, CHRFLAG3_04000000
|
|
set_chr_flag_bank3 CHR_CIA3, CHRFLAG3_04000000
|
|
set_chr_flag_bank3 CHR_CIA4, CHRFLAG3_04000000
|
|
set_function CHR_SELF, GFUNC_SHOW_OBJ_FAILED_MSG
|
|
endfunction
|
|
|
|
func1014_crash:
|
|
beginloop 0x02
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_CRASH, TRUE, /*goto*/ 0x04
|
|
endloop 0x02
|
|
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x09
|
|
if_timer_gt 230, /*goto*/ 0x04
|
|
endloop 0x09
|
|
|
|
label 0x04
|
|
move_object_to_pad OBJ_MINE1, 0x0029
|
|
destroy_object OBJ_MINE1
|
|
set_stage_flag STAGEFLAG_DIVERSION_CREATED
|
|
message CHR_JOANNA, 0x3236 // "Diversion has been created."
|
|
destroy_object OBJ_TAXI
|
|
restart_timer
|
|
|
|
beginloop 0x0a
|
|
if_timer_gt 180, /*goto*/ 0x04
|
|
endloop 0x0a
|
|
|
|
label 0x04
|
|
move_object_to_pad OBJ_MINE2, 0x001c
|
|
destroy_object OBJ_MINE2
|
|
set_stage_flag STAGEFLAG_CRASH_FINISHED
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040a_intro_sfx:
|
|
// This flag is used to trigger the intro. Note that the entire function
|
|
// loops, so Rare could have tested the intro by setting the flag again.
|
|
label 0x2b
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_INTRO, TRUE, /*goto*/ 0x2c
|
|
yield
|
|
goto_first 0x2b
|
|
|
|
label 0x2c
|
|
unset_stage_flag STAGEFLAG_TRIGGER_INTRO
|
|
label 0x10
|
|
yield
|
|
dprint "CUTSCENE STARTED\n"
|
|
label 0x03
|
|
restart_timer
|
|
dprint "CUTSCENE STARTED\n"
|
|
|
|
.macro wait_until time loopid
|
|
beginloop \loopid
|
|
if_stage_flag_eq STAGEFLAG_INTRO_FINISHED, TRUE, /*goto*/ 0x2e
|
|
if_timer_gt \time, /*goto*/ 0x04
|
|
endloop \loopid
|
|
label 0x04
|
|
.endm
|
|
|
|
wait_until 30, 0x55
|
|
speak CHR_JOANNA, 0x3244, 0x7408, CHANNEL_7, COLOR_05_GREEN // "We suspect the G5 Corporation is just a front for ..."
|
|
|
|
wait_until 1060, 0x56
|
|
speak CHR_JOANNA, 0x3245, 0x7409, CHANNEL_7, COLOR_09_BLUE // "Just who is this help you keep referring to?"
|
|
|
|
wait_until 1260, 0x57
|
|
speak CHR_JOANNA, 0x3246, 0x740a, CHANNEL_7, COLOR_05_GREEN // "Not now, Joanna. Time for radio silence. Good luck..."
|
|
|
|
wait_until 1488, 0x58
|
|
speak CHR_JOANNA, 0x3247, 0x740b, CHANNEL_7, COLOR_09_BLUE // "Thanks a lot."
|
|
|
|
label 0x2d
|
|
yield
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_INTRO_FINISHED, TRUE, /*goto*/ 0x2e
|
|
if_timer_gt 1468, /*goto*/ 0x04
|
|
goto_first 0x2d
|
|
|
|
label 0x04
|
|
play_sound 0x0161, CHANNEL_3
|
|
|
|
wait_until 1519, 0x2f
|
|
play_sound 0x0162, CHANNEL_3
|
|
|
|
wait_until 1566, 0x30
|
|
play_sound 0x046d, CHANNEL_4
|
|
|
|
wait_until 1649, 0x31
|
|
play_sound 0x046d, CHANNEL_3
|
|
|
|
label 0x33
|
|
wait_until 1758, 0x34
|
|
play_sound 0x0164, CHANNEL_4
|
|
|
|
wait_until 1784, 0x35
|
|
play_sound 0x0163, CHANNEL_3
|
|
|
|
wait_until 1814, 0x36
|
|
play_sound 0x0162, CHANNEL_3
|
|
|
|
wait_until 1855, 0x37
|
|
play_sound 0x0161, CHANNEL_3
|
|
|
|
wait_until 1897, 0x38
|
|
play_sound 0x0470, CHANNEL_3
|
|
|
|
wait_until 2017, 0x3a
|
|
play_sound 0x0165, CHANNEL_3
|
|
|
|
wait_until 2028, 0x3b
|
|
play_sound 0x046e, CHANNEL_4
|
|
|
|
wait_until 2050, 0x3c
|
|
play_sound 0x0472, CHANNEL_3
|
|
|
|
wait_until 2175, 0x3d
|
|
play_sound 0x0473, CHANNEL_4
|
|
|
|
wait_until 2239, 0x3e
|
|
play_sound 0x0474, CHANNEL_3
|
|
|
|
wait_until 2269, 0x3f
|
|
play_sound 0x0475, CHANNEL_4
|
|
|
|
wait_until 2278, 0x41
|
|
play_sound 0x0166, CHANNEL_3
|
|
|
|
wait_until 2280, 0x40
|
|
play_sound 0x046f, CHANNEL_4
|
|
|
|
wait_until 2323, 0x42
|
|
play_sound 0x0165, CHANNEL_3
|
|
|
|
wait_until 2339, 0x43
|
|
play_sound 0x0166, CHANNEL_3
|
|
|
|
wait_until 2356, 0x44
|
|
play_sound 0x0167, CHANNEL_3
|
|
|
|
wait_until 2373, 0x45
|
|
play_sound 0x0168, CHANNEL_3
|
|
|
|
wait_until 2386, 0x46
|
|
play_sound 0x0165, CHANNEL_3
|
|
|
|
wait_until 2388, 0x47
|
|
|
|
wait_until 2402, 0x48
|
|
mute_channel CHANNEL_4
|
|
play_sound 0x0166, CHANNEL_3
|
|
|
|
wait_until 2404, 0x4a
|
|
play_sound 0x0080, CHANNEL_4
|
|
|
|
wait_until 2424, 0x49
|
|
play_sound 0x0167, CHANNEL_3
|
|
|
|
wait_until 2434, 0x4c
|
|
play_sound 0x0476, CHANNEL_3
|
|
|
|
wait_until 2584, 0x4b
|
|
play_sound 0x0161, CHANNEL_5
|
|
|
|
wait_until 2622, 0x4d
|
|
mute_channel CHANNEL_5
|
|
|
|
play_sound 0x0162, CHANNEL_4
|
|
wait_until 2660, 0x4e
|
|
mute_channel CHANNEL_5
|
|
|
|
play_sound 0x0163, CHANNEL_6
|
|
|
|
label 0x2e
|
|
mute_channel CHANNEL_5
|
|
mute_channel CHANNEL_7
|
|
goto_first 0x2b
|
|
|
|
endfunction
|
|
|
|
func040b_outro:
|
|
camera_movement 0x0178
|
|
set_music_track MUSIC_CHICAGO_OUTRO
|
|
set_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank3 0xf1, CHRFLAG3_HIDDEN
|
|
set_function CHR_P1P2, GFUNC_IDLE
|
|
open_door2 0x10
|
|
open_door2 0x11
|
|
hide_object OBJ_TAXI
|
|
hide_object OBJ_LIMO
|
|
hide_chr CHR_SEALER1
|
|
hide_chr CHR_SEALER2
|
|
hide_chr CHR_SEALER3
|
|
hide_chr CHR_SEALER4
|
|
|
|
set_chr_flag_bank3 CHR_P1P2, CHRFLAG3_UNPLAYABLE
|
|
unset_chr_flag_bank3 CHR_P1P2, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank2 CHR_P1P2, CHRFLAG2_00020000
|
|
animation 0x0179, -1, -1, 0x0600, CHR_P1P2, 4
|
|
|
|
restart_timer
|
|
set_cutscene_weapon CHR_P1P2, -1, -1
|
|
yield
|
|
set_cutscene_weapon CHR_P1P2, -1, 0x02
|
|
show_nonessential_chrs FALSE
|
|
|
|
.macro func0c01_wait_until time loopid
|
|
beginloop \loopid
|
|
if_controller_button_pressed /*goto*/ 0x2e
|
|
if_timer_gt \time, /*goto*/ 0x04
|
|
endloop \loopid
|
|
label 0x04
|
|
.endm
|
|
|
|
func0c01_wait_until 30, 0x2d
|
|
play_sound 0x0161, CHANNEL_7
|
|
|
|
func0c01_wait_until 70, 0x2f
|
|
play_sound 0x0162, CHANNEL_7
|
|
|
|
func0c01_wait_until 120, 0x30
|
|
play_sound 0x0163, CHANNEL_7
|
|
|
|
func0c01_wait_until 174, 0x31
|
|
play_sound 0x0164, CHANNEL_7
|
|
|
|
func0c01_wait_until 208, 0x32
|
|
play_sound 0x046d, CHANNEL_6
|
|
|
|
func0c01_wait_until 210, 0x33
|
|
play_sound 0x0161, CHANNEL_7
|
|
|
|
func0c01_wait_until 238, 0x34
|
|
play_sound 0x0162, CHANNEL_7
|
|
|
|
func0c01_wait_until 280, 0x35
|
|
play_sound 0x0171, CHANNEL_7
|
|
|
|
func0c01_wait_until 350, 0x36
|
|
play_sound 0x0173, CHANNEL_7
|
|
|
|
func0c01_wait_until 458, 0x37
|
|
play_sound 0x0172, CHANNEL_7
|
|
|
|
func0c01_wait_until 506, 0x38
|
|
play_sound 0x0171, CHANNEL_7
|
|
|
|
func0c01_wait_until 540, 0x39
|
|
close_door 0x10
|
|
close_door 0x11
|
|
|
|
func0c01_wait_until 545, 0x3a
|
|
play_sound 0x0171, CHANNEL_7
|
|
|
|
func0c01_wait_until 588, 0x3b
|
|
play_sound 0x0172, CHANNEL_7
|
|
|
|
beginloop 0x05
|
|
if_camera_animating /*goto*/ 0x03
|
|
goto_next 0x2e
|
|
label 0x03
|
|
if_controller_button_pressed /*goto*/ 0x2e
|
|
label 0x03
|
|
endloop 0x05
|
|
|
|
label 0x2e
|
|
mute_channel CHANNEL_7
|
|
mute_channel CHANNEL_10
|
|
label 0x04
|
|
end_level
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1012_update_robot_position_flags:
|
|
// pad 0x00d4 = corner
|
|
// pad 0x00d9 = next to limo
|
|
|
|
beginloop 0x02
|
|
// Update ROBOT_NEAR_CORNER flag
|
|
if_stage_flag_eq STAGEFLAG_ROBOT_NEAR_HOME, FALSE, /*goto*/ 0x03
|
|
if_chr_distance_to_pad_lt CHR_ROBOT, 200, 0x00d4, /*goto*/ 0x04
|
|
label 0x03
|
|
unset_stage_flag STAGEFLAG_ROBOT_NEAR_CORNER
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_ROBOT_NEAR_CORNER
|
|
|
|
// Update ROBOT_ON_DRAIN_STREET flag
|
|
label 0x03
|
|
if_chr_distance_to_pad_gt CHR_ROBOT, 1800, 0x00d9, /*goto*/ 0x04
|
|
unset_stage_flag STAGEFLAG_ROBOT_ON_DRAIN_STREET
|
|
goto_next 0x03
|
|
|
|
label 0x04
|
|
set_stage_flag STAGEFLAG_ROBOT_ON_DRAIN_STREET
|
|
label 0x03
|
|
endloop 0x02
|
|
|
|
endfunction
|
|
|
|
func1416_setup_rain:
|
|
yield
|
|
yield
|
|
yield
|
|
enable_rain 2
|
|
|
|
label 0x05
|
|
// Wait 1 second
|
|
restart_timer
|
|
|
|
beginloop 0x06
|
|
if_timer_gt 60, /*goto*/ 0x03
|
|
endloop 0x06
|
|
|
|
// 12 in 256 chance of changing rain effect
|
|
label 0x03
|
|
call_rng
|
|
if_rand_lt 12, /*goto*/ 0x03
|
|
goto_first 0x05
|
|
|
|
label 0x03
|
|
call_rng
|
|
if_rand_gt 192, /*goto*/ 0x0a
|
|
if_rand_gt 128, /*goto*/ 0x09
|
|
if_rand_gt 64, /*goto*/ 0x08
|
|
enable_rain 2
|
|
goto_first 0x05
|
|
|
|
label 0x08
|
|
enable_rain 1
|
|
goto_first 0x05
|
|
|
|
label 0x09
|
|
enable_rain 2
|
|
goto_first 0x05
|
|
|
|
label 0x0a
|
|
enable_rain 3
|
|
goto_first 0x05
|
|
|
|
endfunction
|
|
|
|
func041c_hiddenguy:
|
|
set_chr_flag_bank3 CHR_HIDDENGUY, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank3 CHR_HIDDENGUY, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
/**
|
|
* This function makes two guards unhide and persue Jo after she picks up the
|
|
* drain briefcase.
|
|
*/
|
|
func1017_drain_guards:
|
|
set_chr_flag_bank3 0x11, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank3 0x12, CHRFLAG3_HIDDEN
|
|
|
|
// Wait until drain briefcase collected
|
|
beginloop 0x05
|
|
if_objective_complete 0, /*goto*/ 0x03
|
|
endloop 0x05
|
|
|
|
label 0x03
|
|
unset_chr_flag_bank3 0x11, CHRFLAG3_HIDDEN
|
|
unset_chr_flag_bank3 0x12, CHRFLAG3_HIDDEN
|
|
set_chr_flag_bank2 0x11, CHRFLAG2_00400000
|
|
set_chr_flag_bank2 0x12, CHRFLAG2_00400000
|
|
set_function 0x11, GFUNC_ALERTED
|
|
set_function 0x12, GFUNC_ALERTED
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1018_keep_door_open:
|
|
beginloop 0x10
|
|
if_door_state 0x1a, DOORSTATE_CLOSED | DOORSTATE_CLOSING, /*goto*/ 0x03
|
|
reloop 0x10
|
|
|
|
label 0x03
|
|
open_door 0x1a
|
|
endloop 0x10
|
|
|
|
endfunction
|
|
|
|
func1019_setup_topstairs_death_animation:
|
|
set_chr_special_death_animation CHR_TOPSTAIRS, 0x05
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040e_6064:
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 4
|
|
set_reaction_speed 30
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
endfunction
|
|
|
|
func040f_6088:
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x03
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 20
|
|
set_reaction_speed 30
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
label 0x03
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 4
|
|
set_reaction_speed 30
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
endfunction
|
|
|
|
func0410_60d0:
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 14
|
|
set_reaction_speed 20
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 0
|
|
set_shield 0
|
|
set_function CHR_SELF, GFUNC_UNALERTED
|
|
endfunction
|
|
|
|
func0411_60f4:
|
|
set_self_flag_bank3 CHRFLAG3_00020000
|
|
set_chr_dodge_rating 2, 0x0a
|
|
set_accuracy 14
|
|
set_reaction_speed 20
|
|
set_chr_health CHR_SELF, 40
|
|
set_armor 0
|
|
set_recovery_speed 40
|
|
set_shield 0
|
|
set_function CHR_SELF, FUNC_FBI
|
|
endfunction
|
|
|
|
func101a_msg_onlyplace:
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x03
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x03
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
speak CHR_P1P2, 0x323c, 0x8179, CHANNEL_6, COLOR_09_BLUE // "The only place we could secure the equipment was a..."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func101b_msg_blockedupdoors:
|
|
if_difficulty_lt DIFF_SA, /*goto*/ 0x0a
|
|
restart_timer
|
|
|
|
// Wait for drain briefcase collected
|
|
beginloop 0x10
|
|
if_objective_complete 0, /*goto*/ 0x05
|
|
endloop 0x10
|
|
|
|
beginloop 0x05
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x003a, /*goto*/ 0x03
|
|
endloop 0x05
|
|
|
|
label 0x03
|
|
speak CHR_P1P2, 0x323d, 0x73b1, CHANNEL_6, COLOR_09_BLUE // "Either of those blocked-up doors will do as an esc..."
|
|
label 0x0a
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func101c_msg_reprogramthattaxi:
|
|
// Wait for drain briefcase collected
|
|
beginloop 0x10
|
|
if_objective_complete 0, /*goto*/ 0x05
|
|
endloop 0x10
|
|
|
|
beginloop 0x05
|
|
if_object_in_good_condition OBJ_TAXI, /*goto*/ 0x03
|
|
reloop 0x05
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_TAXI_REPROGRAMMED, TRUE, /*goto*/ 0x0a
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x004a, /*goto*/ 0x03
|
|
endloop 0x05
|
|
|
|
label 0x03
|
|
speak CHR_P1P2, 0x323e, 0x817a, CHANNEL_6, COLOR_09_BLUE // "Reprogram that taxi - it's a Mark 2 and should be ..."
|
|
label 0x0a
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func101d_msg_pointofingress:
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0059, /*goto*/ 0x03
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
speak CHR_P1P2, 0x323f, 0x817b, CHANNEL_6, COLOR_09_BLUE // "That car park lift is your only point of ingress."
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func101e_check_sealer_guards_dead:
|
|
beginloop 0x10
|
|
if_stage_flag_eq STAGEFLAG_ELEVATOR_SEALED, TRUE, /*goto*/ 0x06
|
|
if_chr_dying CHR_SEALER1, /*goto*/ 0x03
|
|
if_chr_death_animation_finished CHR_SEALER1, /*goto*/ 0x03
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
if_chr_dying CHR_SEALER2, /*goto*/ 0x03
|
|
if_chr_death_animation_finished CHR_SEALER2, /*goto*/ 0x03
|
|
goto_first 0x10
|
|
|
|
label 0x03
|
|
if_chr_dying CHR_SEALER3, /*goto*/ 0x03
|
|
if_chr_death_animation_finished CHR_SEALER3, /*goto*/ 0x03
|
|
goto_first 0x10
|
|
|
|
label 0x03
|
|
if_chr_dying CHR_SEALER4, /*goto*/ 0x03
|
|
if_chr_death_animation_finished CHR_SEALER4, /*goto*/ 0x03
|
|
goto_first 0x10
|
|
|
|
label 0x03
|
|
if_stage_flag_eq STAGEFLAG_DIVERSION_CREATED, TRUE, /*goto*/ 0x03
|
|
message CHR_JOANNA, 0x3242 // "An alternative diversion has been created!"
|
|
unset_stage_flag STAGEFLAG_TAXI_DESTROYED
|
|
unset_stage_flag STAGEFLAG_ROBOT_DESTROYED
|
|
set_stage_flag STAGEFLAG_DIVERSION_CREATED
|
|
label 0x03
|
|
label 0x06
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1020_elevator_doors:
|
|
beginloop 0x10
|
|
if_stage_flag_eq STAGEFLAG_ELEVATOR_SEALED, TRUE, /*goto*/ 0x03
|
|
if_door_state 0x10, DOORSTATE_CLOSED | DOORSTATE_CLOSING, /*goto*/ 0x04
|
|
reloop 0x10
|
|
|
|
label 0x04
|
|
open_door 0x10
|
|
open_door 0x11
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
close_door 0x10
|
|
close_door 0x11
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
/**
|
|
* Guard at top stairs: Turn off special death animation if he's moved away from
|
|
* his pad or if Jo has climbed the staircase.
|
|
*/
|
|
func1021_check_topstairs_guy:
|
|
beginloop 0x10
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_y CHR_P1P2, 500, OPERATOR_LESS_THAN, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
if_chr_distance_to_pad_gt CHR_TOPSTAIRS, 250, 0x00b5, /*goto*/ 0x04
|
|
endloop 0x10
|
|
|
|
label 0x04
|
|
set_chr_special_death_animation CHR_TOPSTAIRS, NULL
|
|
unset_chr_flag_bank3 CHR_TOPSTAIRS, CHRFLAG3_HAS_SPECIAL_DEATH_ANIMATION
|
|
unset_chr_flag_bankx CHR_TOPSTAIRS, CHRFLAG1_00001000, BANK_1
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func040d_limo_flags:
|
|
// Wait until limo ready
|
|
beginloop 0x10
|
|
if_stage_flag_eq STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ 0x2f
|
|
endloop 0x10
|
|
|
|
// Wait until player not in certain rooms
|
|
beginloop 0x2f
|
|
consider_coop_for_p1p2_chr CHR_SELF
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0002, /*goto*/ 0x03
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0010, /*goto*/ 0x03
|
|
if_chr_in_room CHR_P1P2, 0x00, 0x0012, /*goto*/ 0x03
|
|
goto_next 0x04
|
|
label 0x03
|
|
endloop 0x2f
|
|
|
|
// Wait almost 10 seconds - provided limo not destroyed
|
|
label 0x04
|
|
restart_timer
|
|
|
|
beginloop 0x2d
|
|
if_object_in_good_condition OBJ_LIMO, /*goto*/ 0x03
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
label 0x03
|
|
if_timer_gt 596, /*goto*/ 0x03
|
|
endloop 0x2d
|
|
|
|
label 0x03
|
|
hide_object OBJ_LIMO
|
|
set_object_flag_bank0 OBJ_LIMO, OBJECTFLAG0_INVINCIBLE
|
|
set_object_flag_bank1 OBJ_LIMO, OBJECTFLAG1_INVISIBLE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1423_setup_lighting:
|
|
yield
|
|
set_lighting 0x0000, 0x00, 0x00
|
|
set_lighting 0x0000, 0x01, 0x00
|
|
set_lighting 0x0000, 0x02, 0x00
|
|
set_lighting 0x0000, 0x03, 0x00
|
|
set_lighting 0x0000, 0x04, 0x00
|
|
set_lighting 0x0002, 0x05, 0x01
|
|
set_lighting 0x0003, 0x05, 0x01
|
|
set_lighting 0x000f, 0x05, 0x01
|
|
set_lighting 0x0010, 0x05, 0x01
|
|
set_lighting 0x0011, 0x05, 0x01
|
|
set_lighting 0x0012, 0x05, 0x01
|
|
set_lighting 0x0013, 0x05, 0x01
|
|
set_lighting 0x0014, 0x05, 0x01
|
|
set_lighting 0x0015, 0x05, 0x01
|
|
set_lighting 0x0017, 0x05, 0x01
|
|
set_lighting 0x0018, 0x05, 0x01
|
|
set_lighting 0x0019, 0x05, 0x01
|
|
set_lighting 0x001a, 0x05, 0x01
|
|
set_lighting 0x001c, 0x05, 0x01
|
|
set_lighting 0x001d, 0x05, 0x01
|
|
set_lighting 0x001f, 0x05, 0x01
|
|
set_lighting 0x0021, 0x05, 0x01
|
|
set_lighting 0x0022, 0x05, 0x01
|
|
set_lighting 0x0025, 0x05, 0x01
|
|
set_lighting 0x0026, 0x05, 0x01
|
|
set_lighting 0x0027, 0x05, 0x01
|
|
set_lighting 0x0028, 0x05, 0x01
|
|
set_lighting 0x002c, 0x05, 0x01
|
|
set_lighting 0x002d, 0x05, 0x01
|
|
set_lighting 0x002e, 0x05, 0x01
|
|
set_lighting 0x0031, 0x05, 0x01
|
|
set_lighting 0x0032, 0x05, 0x01
|
|
set_lighting 0x0037, 0x05, 0x01
|
|
set_lighting 0x0038, 0x05, 0x01
|
|
set_lighting 0x0039, 0x05, 0x01
|
|
set_lighting 0x003a, 0x05, 0x01
|
|
set_lighting 0x003d, 0x05, 0x01
|
|
set_lighting 0x003e, 0x05, 0x01
|
|
set_lighting 0x003f, 0x05, 0x01
|
|
set_lighting 0x0043, 0x05, 0x01
|
|
set_lighting 0x0044, 0x05, 0x01
|
|
set_lighting 0x0045, 0x05, 0x01
|
|
set_lighting 0x004a, 0x05, 0x01
|
|
set_lighting 0x004b, 0x05, 0x01
|
|
set_lighting 0x004c, 0x05, 0x01
|
|
set_lighting 0x004e, 0x05, 0x01
|
|
set_lighting 0x0050, 0x05, 0x01
|
|
set_lighting 0x0051, 0x05, 0x01
|
|
set_lighting 0x0052, 0x05, 0x01
|
|
set_lighting 0x0059, 0x05, 0x01
|
|
set_lighting 0x005a, 0x05, 0x01
|
|
set_lighting 0x005b, 0x05, 0x01
|
|
set_lighting 0x005c, 0x05, 0x01
|
|
set_lighting 0x005d, 0x05, 0x01
|
|
set_lighting 0x005f, 0x05, 0x01
|
|
set_lighting 0x0060, 0x05, 0x01
|
|
set_lighting 0x0061, 0x05, 0x01
|
|
set_lighting 0x0062, 0x05, 0x01
|
|
set_lighting 0x0064, 0x05, 0x01
|
|
set_lighting 0x0066, 0x05, 0x01
|
|
set_lighting 0x0067, 0x05, 0x01
|
|
set_lighting 0x0068, 0x05, 0x01
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func0412_cia_invincibility:
|
|
beginloop 0x10
|
|
if_stage_flag_eq STAGEFLAG_TRIGGER_TAXI_LEAVE, TRUE, /*goto*/ 0x03
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
set_chr_flag_bank3 CHR_CIA1, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
set_chr_flag_bank3 CHR_CIA2, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
set_chr_flag_bank3 CHR_CIA3, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
set_chr_flag_bank3 CHR_CIA4, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
|
|
beginloop 0x2d
|
|
if_stage_flag_eq STAGEFLAG_DIVERSION_CREATED, TRUE, /*goto*/ 0x03
|
|
endloop 0x2d
|
|
|
|
label 0x03
|
|
restart_timer
|
|
|
|
beginloop 0x2f
|
|
if_timer_gt 300, /*goto*/ 0x03
|
|
endloop 0x2f
|
|
|
|
label 0x03
|
|
unset_chr_flag_bank3 CHR_CIA1, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
unset_chr_flag_bank3 CHR_CIA2, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
unset_chr_flag_bank3 CHR_CIA3, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
unset_chr_flag_bank3 CHR_CIA4, CHRFLAG3_INVINCIBLE_TO_GUNFIRE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1025_rtracker:
|
|
yield
|
|
set_object_flag_bank2 OBJ_FALCON2, OBJECTFLAG2_RTRACKED_BLUE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
func1027_untrack_dumpster:
|
|
yield
|
|
|
|
beginloop 0x10
|
|
if_object_in_good_condition OBJ_DUMPSTER, /*goto*/ 0x04
|
|
goto_next 0x03
|
|
label 0x04
|
|
endloop 0x10
|
|
|
|
label 0x03
|
|
unset_object_flag_bank2 OBJ_DUMPSTER, OBJECTFLAG2_RTRACKED_BLUE
|
|
set_function CHR_SELF, GFUNC_IDLE
|
|
endfunction
|
|
|
|
functions:
|
|
register_function func0401_3ae8 0x0401
|
|
register_function func0402_3bb4 0x0402
|
|
register_function func0403_3c74 0x0403
|
|
register_function func0404_3ce0 0x0404
|
|
register_function func0405_3d50 0x0405
|
|
register_function func0406_3e54 0x0406
|
|
register_function func0407_3e60 0x0407
|
|
register_function func0408_3e6c 0x0408
|
|
register_function func0409_3e78 0x0409
|
|
register_function func040a_intro 0x040a
|
|
register_function func040b_outro 0x040b
|
|
register_function func040c_taxi 0x040c
|
|
register_function func040d_limo 0x040d
|
|
register_function func040e_6064 0x040e
|
|
register_function func040f_6088 0x040f
|
|
register_function func0410_60d0 0x0410
|
|
register_function func0411_60f4 0x0411
|
|
register_function func0412_cia 0x0412
|
|
register_function func0413_bugspotter 0x0413
|
|
register_function func0414_start_path07 0x0414
|
|
register_function func0415_start_path08 0x0415
|
|
register_function func0416_start_path09 0x0416
|
|
register_function func0417_start_path10 0x0417
|
|
register_function func0418_start_path11 0x0418
|
|
register_function func0419_init_cia1 0x0419
|
|
register_function func041d_fbi 0x041d
|
|
register_function func041c_hiddenguy 0x041c
|
|
register_function func041e_sealer1 0x041e
|
|
register_function func041f_alarm_responder 0x041f
|
|
register_function func0420_jog_to_accident 0x0420
|
|
register_function func041a_robot 0x041a
|
|
register_function func041b_init_robot 0x041b
|
|
|
|
register_function func040a_intro 0x0c00
|
|
register_function func040b_outro 0x0c01
|
|
|
|
register_function func1400_give_briefcases 0x1400
|
|
|
|
register_function func1001_objectives_failed_msg 0x1001
|
|
register_function func1002_rebuild_groups 0x1002
|
|
register_function func040a_intro_from_gameplay 0x1003
|
|
register_function func1004_tracerbug_joanna 0x1004
|
|
register_function func1005_check_things_destroyed 0x1005
|
|
register_function func1006_check_for_end 0x1006
|
|
register_function func040d_limo_timing 0x1007
|
|
register_function func040c_taxi_timing 0x1008
|
|
register_function func1009_check_cia1_dead 0x1009
|
|
register_function func100a_check_cia2_dead 0x100a
|
|
register_function func100b_check_cia3_dead 0x100b
|
|
register_function func100c_check_cia4_dead 0x100c
|
|
register_function func100d_spawn_alarm_responders 0x100d
|
|
register_function func100f_check_mine 0x100f
|
|
register_function func1010_elevator_switch 0x1010
|
|
register_function func1011_trackerbug_velvet 0x1011
|
|
register_function func1012_update_robot_position_flags 0x1012
|
|
register_function func1014_crash 0x1014
|
|
register_function func040a_intro_sfx 0x1415
|
|
register_function func1416_setup_rain 0x1416
|
|
register_function func1017_drain_guards 0x1017
|
|
register_function func1018_keep_door_open 0x1018
|
|
register_function func1019_setup_topstairs_death_animation 0x1019
|
|
register_function func101a_msg_onlyplace 0x101a
|
|
register_function func101b_msg_blockedupdoors 0x101b
|
|
register_function func101c_msg_reprogramthattaxi 0x101c
|
|
register_function func101d_msg_pointofingress 0x101d
|
|
register_function func101e_check_sealer_guards_dead 0x101e
|
|
register_function func101f_setup_robot_noise 0x101f
|
|
register_function func1020_elevator_doors 0x1020
|
|
register_function func1021_check_topstairs_guy 0x1021
|
|
register_function func040d_limo_flags 0x1022
|
|
register_function func1423_setup_lighting 0x1423
|
|
register_function func0412_cia_invincibility 0x1024
|
|
register_function func1025_rtracker 0x1025
|
|
register_function func1026_uplink 0x1026
|
|
register_function func1027_untrack_dumpster 0x1027
|
|
endfunctions
|
|
|
|
paths:
|
|
register_path path00, 0, 0
|
|
register_path path01, 1, 0
|
|
register_path path02, 2, 0
|
|
register_path path03, 3, 0
|
|
register_path path04, 4, 0
|
|
register_path path05, 5, 0
|
|
register_path path06, 6, 0
|
|
register_path path07, 7, 0
|
|
register_path path08, 8, 0
|
|
register_path path09, 9, 0
|
|
register_path path10, 10, 0
|
|
register_path path11, 11, 0
|
|
register_path path12, 12, 0
|
|
register_path path13, 13, 0
|
|
endpaths
|
|
|
|
.align 4
|