| 1 |
################# |
| 2 |
### VARIABLES ### |
| 3 |
################# |
| 4 |
|
| 5 |
var int var_counter = 0; |
| 6 |
var int var_counter2 = 0; |
| 7 |
var int var_counter3 = 0; |
| 8 |
|
| 9 |
############ |
| 10 |
### MAIN ### |
| 11 |
############ |
| 12 |
|
| 13 |
func void main(void) |
| 14 |
{ |
| 15 |
gl_fog_red = 0 |
| 16 |
gl_fog_blue = 0 |
| 17 |
gl_fog_green = 0 |
| 18 |
gl_fog_start = .995 |
| 19 |
gs_farclipplane_set 5000 |
| 20 |
ui_suppress_prompt = 1 |
| 21 |
chr_auto_aim_dist = 0 |
| 22 |
start |
| 23 |
} |
| 24 |
|
| 25 |
############# |
| 26 |
### START ### |
| 27 |
############# |
| 28 |
|
| 29 |
func void start(string ai_name) |
| 30 |
{ |
| 31 |
fork deactivate_stuff |
| 32 |
if(save_point eq 0) save_point = 1 |
| 33 |
if(save_point eq 1) fork intro |
| 34 |
if(save_point eq 2) restore_game |
| 35 |
if(save_point eq 3) restore_game |
| 36 |
if(save_point eq 4) restore_game |
| 37 |
if(save_point eq 5) restore_game |
| 38 |
sleep 5 |
| 39 |
fork sp_all |
| 40 |
} |
| 41 |
|
| 42 |
func void deactivate_stuff(void) |
| 43 |
{ |
| 44 |
#not used |
| 45 |
trigvolume_enable shinzom_voice1 0 |
| 46 |
trigvolume_enable shinzom_voice2 0 |
| 47 |
trigvolume_enable shinzom_voice3 0 |
| 48 |
trigvolume_enable shinzom_voice4 0 |
| 49 |
trigvolume_enable trigger_volume_03 0 |
| 50 |
trigvolume_enable trigger_volume_04 0 |
| 51 |
trigvolume_enable trigger_volume_04_copy 0 |
| 52 |
trigvolume_enable trigger_volume_04_copy_copy 0 |
| 53 |
trigvolume_enable trigger_volume_05 0 |
| 54 |
trigvolume_enable trigger_volume_07b 0 |
| 55 |
trigvolume_enable trigger_volume_10 0 |
| 56 |
trigvolume_enable trigger_volume_12 0 |
| 57 |
trigvolume_enable trigger_volume_14 0 |
| 58 |
trigvolume_enable trigger_volume_16 0 |
| 59 |
trigvolume_enable trigger_volume_20 0 |
| 60 |
trigvolume_enable trigger_volume_34 0 |
| 61 |
trigvolume_enable trigger_volume_37 0 |
| 62 |
trigvolume_enable trigger_volume_38 0 |
| 63 |
trigvolume_enable trigger_volume_41 0 |
| 64 |
trigvolume_enable trigger_volume_44 0 |
| 65 |
trigvolume_enable trigger_volume_45 0 |
| 66 |
trigvolume_enable trigger_volume_46 0 |
| 67 |
trigvolume_enable trigger_volume_49 0 |
| 68 |
trigvolume_enable trigger_volume_51 0 |
| 69 |
trigvolume_enable trigger_volume_52 0 |
| 70 |
trigvolume_enable trigger_volume_54 0 |
| 71 |
trigvolume_enable trigger_volume_55 0 |
| 72 |
trigvolume_enable trigger_volume_56 0 |
| 73 |
trigvolume_enable trigger_volume_57 0 |
| 74 |
trigvolume_enable trigger_volume_61 0 |
| 75 |
trigvolume_enable trigger_volume_67 0 |
| 76 |
trig_deactivate 10 |
| 77 |
trig_deactivate 91 |
| 78 |
trig_deactivate 92 |
| 79 |
trig_deactivate 93 |
| 80 |
trig_deactivate 94 |
| 81 |
trig_deactivate 910 |
| 82 |
trig_deactivate 210 |
| 83 |
trig_deactivate 310 |
| 84 |
trig_deactivate 410 |
| 85 |
trig_deactivate 510 |
| 86 |
trig_deactivate 214 |
| 87 |
trig_deactivate 314 |
| 88 |
trig_deactivate 414 |
| 89 |
trig_deactivate 514 |
| 90 |
trig_deactivate 2101 |
| 91 |
trig_deactivate 3101 |
| 92 |
trig_deactivate 4101 |
| 93 |
trig_deactivate 5101 |
| 94 |
env_show 403 0 |
| 95 |
env_show 1010 0 |
| 96 |
door_lock 4 |
| 97 |
door_lock 5 |
| 98 |
door_lock 6 |
| 99 |
door_lock 7 |
| 100 |
door_lock 8 |
| 101 |
door_lock 9 |
| 102 |
console_deactivate 3 |
| 103 |
console_deactivate 399 |
| 104 |
console_deactivate 400 |
| 105 |
console_deactivate 401 |
| 106 |
console_deactivate 402 |
| 107 |
#used |
| 108 |
trigvolume_enable trigger_volume_06 0 |
| 109 |
trigvolume_enable trigger_volume_29 0 |
| 110 |
trigvolume_enable trigger_volume_35 0 |
| 111 |
trigvolume_enable trigger_volume_39 0 |
| 112 |
if(save_point ne 0 and save_point ne 1) deactivate_sp1 |
| 113 |
if(save_point ne 2) deactivate_sp2 |
| 114 |
if(save_point ne 3) deactivate_sp3 |
| 115 |
env_shade 321 325 .3 .3 .3 |
| 116 |
env_show 171 0 |
| 117 |
env_show 172 0 |
| 118 |
env_show 173 0 |
| 119 |
env_show 174 0 |
| 120 |
door_lock 42 |
| 121 |
} |
| 122 |
|
| 123 |
func void deactivate_sp1(void) |
| 124 |
{ |
| 125 |
trig_deactivate 60 |
| 126 |
trig_deactivate 61 |
| 127 |
trig_deactivate 62 |
| 128 |
trig_deactivate 63 |
| 129 |
trig_deactivate 64 |
| 130 |
trig_deactivate 65 |
| 131 |
trig_deactivate 70 |
| 132 |
trig_deactivate 71 |
| 133 |
trig_deactivate 72 |
| 134 |
trig_deactivate 73 |
| 135 |
trig_deactivate 74 |
| 136 |
trig_deactivate 75 |
| 137 |
} |
| 138 |
|
| 139 |
func void deactivate_sp2(void) |
| 140 |
{ |
| 141 |
trig_deactivate 6 |
| 142 |
trig_deactivate 7 |
| 143 |
trig_deactivate 98 |
| 144 |
trig_deactivate 99 |
| 145 |
} |
| 146 |
|
| 147 |
func void deactivate_sp3(void) |
| 148 |
{ |
| 149 |
trig_deactivate 1 |
| 150 |
trig_deactivate 2 |
| 151 |
trig_deactivate 3 |
| 152 |
trig_deactivate 4 |
| 153 |
trig_deactivate 5 |
| 154 |
trig_deactivate 8 |
| 155 |
trig_deactivate 100 |
| 156 |
trig_deactivate 101 |
| 157 |
trig_deactivate 302 |
| 158 |
trig_deactivate 303 |
| 159 |
trig_deactivate 315 |
| 160 |
trig_deactivate 320 |
| 161 |
trig_deactivate 500 |
| 162 |
trig_deactivate 501 |
| 163 |
trig_deactivate 502 |
| 164 |
trig_deactivate 503 |
| 165 |
trig_deactivate 400 |
| 166 |
trig_deactivate 510 |
| 167 |
trig_deactivate 511 |
| 168 |
trig_deactivate 512 |
| 169 |
trig_deactivate 520 |
| 170 |
trig_deactivate 521 |
| 171 |
trig_deactivate 522 |
| 172 |
} |
| 173 |
|
| 174 |
func void you_lose(string ai_name) |
| 175 |
{ |
| 176 |
fade_out 0 0 0 30 |
| 177 |
sleep 30 |
| 178 |
lose |
| 179 |
} |
| 180 |
|
| 181 |
#################################### |
| 182 |
### SEVERAL TIMES USED FUNCTIONS ### |
| 183 |
#################################### |
| 184 |
|
| 185 |
func void sp_all(void) |
| 186 |
{ |
| 187 |
co_message_display = 0 |
| 188 |
if(save_point eq 1) save_game 1 autosave |
| 189 |
if(save_point eq 2) save_game 2 autosave |
| 190 |
if(save_point eq 3) save_game 3 autosave |
| 191 |
if(save_point eq 4) save_game 4 autosave |
| 192 |
if(save_point eq 5) save_game 5 autosave |
| 193 |
sleep 180 |
| 194 |
co_message_display = 1 |
| 195 |
} |
| 196 |
|
| 197 |
func void remove_ai(void) |
| 198 |
{ |
| 199 |
ai2_kill |
| 200 |
sleep 60 |
| 201 |
powerup_reset |
| 202 |
weapon_reset |
| 203 |
sleep 240 |
| 204 |
corpse_reset |
| 205 |
} |
| 206 |
|
| 207 |
func void music_stop(void) |
| 208 |
{ |
| 209 |
sound_music_stop mus_main03 |
| 210 |
sound_music_stop mus_wls |
| 211 |
sound_music_stop mus_trt |
| 212 |
sound_music_stop mus_sv |
| 213 |
} |
| 214 |
|
| 215 |
########## |
| 216 |
### SP1 ### |
| 217 |
########## |
| 218 |
|
| 219 |
func void intro(void) |
| 220 |
{ |
| 221 |
particle roof_doors_locklight01 do start |
| 222 |
particle griffin_locklight01 do start |
| 223 |
door_unlock 61 |
| 224 |
door_unlock 67 |
| 225 |
door_unlock 71 |
| 226 |
chr_teleport 0 19 |
| 227 |
chr_inv_reset 0 |
| 228 |
ai2_spawn l1 |
| 229 |
ai2_spawn l3 |
| 230 |
ai2_spawn l7 |
| 231 |
ai2_spawn A_L8 |
| 232 |
ai2_spawn A_L12 |
| 233 |
ai2_spawn A_L18 |
| 234 |
ai2_spawn A_L19 |
| 235 |
ai2_spawn A_Lbo13 |
| 236 |
objective_set 1 silent |
| 237 |
target_set 590 30 |
| 238 |
sleep 1 |
| 239 |
sound_music_start mus_main03 1.0 |
| 240 |
} |
| 241 |
|
| 242 |
#tv1 - the complete volume between the doors 61, 63, 67 and 68 |
| 243 |
func void t2(string ai_name) |
| 244 |
{ |
| 245 |
trigvolume_enable trigger_volume_61 0 |
| 246 |
ai2_spawn n5 |
| 247 |
ai2_spawn A_Sbo14 |
| 248 |
ai2_dopath A_Sbo14 patrol_14 |
| 249 |
ai2_setjobstate A_Sbo14 |
| 250 |
ai2_spawn A_Sbo15 |
| 251 |
sleep 30 |
| 252 |
ai2_dopath A_Sbo15 patrol_14 |
| 253 |
ai2_setjobstate A_Sbo15 |
| 254 |
music_stop |
| 255 |
} |
| 256 |
|
| 257 |
#neutral func of n5 |
| 258 |
func void outta_sight(string ai_name) |
| 259 |
{ |
| 260 |
ai2_dopath n5 patrol_99 |
| 261 |
ai2_setjobstate n5 |
| 262 |
} |
| 263 |
|
| 264 |
#tv61 - at the same place as tv1 (entry func: t61); I've disabled it |
| 265 |
|
| 266 |
#console 5 |
| 267 |
func void roof(string ai_name) |
| 268 |
{ |
| 269 |
trigvolume_enable trigger_volume_06 1 |
| 270 |
particle roof_locklight01 do start |
| 271 |
ai2_spawn A_T25 |
| 272 |
} |
| 273 |
|
| 274 |
#console 12 |
| 275 |
func void roof_door2(string ai_name) |
| 276 |
{ |
| 277 |
particle roof_door2_locklight01 do start |
| 278 |
ai2_spawn A_n17 |
| 279 |
ai2_dopath A_n17 patrol_16 |
| 280 |
ai2_setjobstate A_n17 |
| 281 |
} |
| 282 |
|
| 283 |
#tv3 - long box behind door 63 and the windows (entry func: t4); I've disabled it |
| 284 |
#tv4 - long box behind door 68 and the windows (entry func: t4); I've disabled it |
| 285 |
#tv66 - long box behind the windows on the elevator side (entry func: t4); I've disabled it |
| 286 |
#tv67 - long box behind the windows on the opposite side of tv66 (entry func: t4); I've disabled it |
| 287 |
#tv2 - after door 59 (entry func: t3); I've disabled it |
| 288 |
|
| 289 |
#tv5 - after door 58 |
| 290 |
func void t6(string ai_name) |
| 291 |
{ |
| 292 |
ai2_spawn A_L20 |
| 293 |
ai2_spawn A_L21 |
| 294 |
target_set 593 30 |
| 295 |
trig_activate 6 |
| 296 |
} |
| 297 |
|
| 298 |
########## |
| 299 |
### SP2 ### |
| 300 |
########## |
| 301 |
|
| 302 |
#tv46 - on the platform between the stairs to the hall |
| 303 |
func void s2(string ai_name) |
| 304 |
{ |
| 305 |
if(save_point eq 2) |
| 306 |
{ |
| 307 |
objective_set 1 silent |
| 308 |
target_set 593 30 |
| 309 |
} |
| 310 |
else |
| 311 |
{ |
| 312 |
fork remove_ai |
| 313 |
save_game 2 autosave |
| 314 |
particle roof_locklight01 do stop |
| 315 |
door_lock 59 |
| 316 |
trig_activate 7 |
| 317 |
trig_activate 98 |
| 318 |
trig_activate 99 |
| 319 |
deactivate_sp1 |
| 320 |
} |
| 321 |
particle shin_lock_locklight01 do start |
| 322 |
door_unlock 14 |
| 323 |
door_unlock 48 |
| 324 |
ai2_spawn B_S22 |
| 325 |
} |
| 326 |
|
| 327 |
### HALL - 2ND FLOOR ### |
| 328 |
|
| 329 |
#tv6 - near the end of the stairs |
| 330 |
func void t7(string ai_name) |
| 331 |
{ |
| 332 |
ai2_dopath B_S22 patrol_23 |
| 333 |
ai2_setjobstate B_S22 |
| 334 |
ai2_spawn B_N28 |
| 335 |
ai2_dopath B_N28 patrol_42 |
| 336 |
ai2_setjobstate B_N28 |
| 337 |
ai2_spawn B_Lbo26 |
| 338 |
playback_block B_Lbo26 run1 interp 20 |
| 339 |
sleep 20 |
| 340 |
ai2_dopath B_Lbo26 patrol_27 |
| 341 |
ai2_setjobstate B_Lbo26 |
| 342 |
} |
| 343 |
|
| 344 |
#hit func of B_S22 |
| 345 |
func void B_S22_run (string ai_name) |
| 346 |
{ |
| 347 |
ai2_dopath B_S22 patrol_24 |
| 348 |
ai2_setjobstate B_S22 |
| 349 |
} |
| 350 |
|
| 351 |
func void patrolscript0001(void) |
| 352 |
{ |
| 353 |
playback_block B_S22 taunt1 interp 20 |
| 354 |
} |
| 355 |
|
| 356 |
#tv12 - at the same place as tv6 (entry func: t7b); Ive disabled it |
| 357 |
|
| 358 |
#tv7 - after door 54 and the window next to it |
| 359 |
func void t8(string ai_name) |
| 360 |
{ |
| 361 |
ai2_spawn B_L41 |
| 362 |
ai2_spawn B_S36 |
| 363 |
ai2_makeignoreplayer B_S36 0 |
| 364 |
ai2_spawn B_S37 |
| 365 |
ai2_makeignoreplayer B_S37 0 |
| 366 |
ai2_spawn B_Sbo38 |
| 367 |
ai2_makeignoreplayer B_Sbo38 0 |
| 368 |
sound_music_start mus_wls 1.0 |
| 369 |
sound_dialog_play c14_54_24konoko |
| 370 |
sound_dialog_play_block pause |
| 371 |
objective_set 2 silent |
| 372 |
} |
| 373 |
|
| 374 |
#tv59 - behind door 56 and the window next to it |
| 375 |
func void t59(string ai_name) |
| 376 |
{ |
| 377 |
ai2_spawn B_L30 |
| 378 |
ai2_spawn B_L95 |
| 379 |
ai2_spawn B_Lbo27 |
| 380 |
} |
| 381 |
|
| 382 |
#tv11 - after the right furniture in the room with door 64 (entry func: t12); I've disabled it |
| 383 |
|
| 384 |
#tv37 - on the platform between the stairs |
| 385 |
func void t43(string ai_name) |
| 386 |
{ |
| 387 |
ai2_spawn B_S29 |
| 388 |
ai2_spawn B_S43 |
| 389 |
ai2_spawn B_S96 |
| 390 |
} |
| 391 |
|
| 392 |
### HALL - 1ST FLOOR ### |
| 393 |
|
| 394 |
#tv68 - behind door 60 and the window next to it (entry func: t67); I've disabled it |
| 395 |
#tv8 - behind door 55 and the window next to it (entry func: t10); I've disabled it |
| 396 |
#tv34 - in front of door 50 and the window next to it (entry func: t38); I've disabled it |
| 397 |
|
| 398 |
#tv60 - on the platform between the stairs |
| 399 |
func void t60(string ai_name) |
| 400 |
{ |
| 401 |
ai2_spawn B_C32 |
| 402 |
ai2_spawn B_C33 |
| 403 |
ai2_spawn B_C34 |
| 404 |
} |
| 405 |
|
| 406 |
### HALL - GROUND FLOOR ### |
| 407 |
|
| 408 |
#tv9 - after door 48 |
| 409 |
func void t11(string ai_name) |
| 410 |
{ |
| 411 |
trigvolume_enable trigger_volume_11_copy 0 |
| 412 |
t11_funcs |
| 413 |
} |
| 414 |
|
| 415 |
#tv25 - big volume on the ground |
| 416 |
func void t11b(string ai_name) |
| 417 |
{ |
| 418 |
trigvolume_enable trigger_volume_11 0 |
| 419 |
t11_funcs |
| 420 |
} |
| 421 |
|
| 422 |
func void t11_funcs(void) |
| 423 |
{ |
| 424 |
ai2_dopath B_S36 patrol_38 |
| 425 |
ai2_setjobstate B_S36 |
| 426 |
ai2_spawn B_Lbo76 |
| 427 |
ai2_spawn B_C32 |
| 428 |
ai2_spawn B_C33 |
| 429 |
ai2_spawn B_C34 |
| 430 |
music_stop |
| 431 |
} |
| 432 |
|
| 433 |
#tv69 - in front of the wall with the high window next to door 48 |
| 434 |
func void t68(string ai_name) |
| 435 |
{ |
| 436 |
ai2_spawn mbo_femcop |
| 437 |
} |
| 438 |
|
| 439 |
#tv40 - after door 14 (no funcs); I've disabled it |
| 440 |
#tv42 - on the platform between the stairs (entry func: t45); I've disabled it |
| 441 |
|
| 442 |
########## |
| 443 |
### SP3 ### |
| 444 |
########## |
| 445 |
|
| 446 |
#tv44 - at the same place as tv42 |
| 447 |
func void save3_and_spine(string ai_name) |
| 448 |
{ |
| 449 |
if(save_point eq 3) objective_set 2 silent |
| 450 |
else |
| 451 |
{ |
| 452 |
fork remove_ai |
| 453 |
save_game 3 autosave |
| 454 |
particle shin_lock_locklight01 do stop |
| 455 |
door_lock 14 |
| 456 |
deactivate_sp2 |
| 457 |
trig_activate 1 |
| 458 |
trig_activate 2 |
| 459 |
trig_activate 3 |
| 460 |
trig_activate 4 |
| 461 |
trig_activate 5 |
| 462 |
trig_activate 8 |
| 463 |
trig_activate 100 |
| 464 |
trig_activate 101 |
| 465 |
trig_activate 302 |
| 466 |
trig_activate 303 |
| 467 |
trig_activate 400 |
| 468 |
trig_activate 500 |
| 469 |
trig_activate 501 |
| 470 |
trig_activate 502 |
| 471 |
trig_activate 503 |
| 472 |
trig_activate 510 |
| 473 |
trig_activate 511 |
| 474 |
trig_activate 512 |
| 475 |
trig_activate 520 |
| 476 |
trig_activate 521 |
| 477 |
trig_activate 522 |
| 478 |
trig_activate 315 |
| 479 |
trig_activate 320 |
| 480 |
} |
| 481 |
ai2_spawn C_C47 |
| 482 |
ai2_spawn C_C65 |
| 483 |
ai2_spawn C_L50 |
| 484 |
ai2_spawn C_L51 |
| 485 |
ai2_spawn C_N48 |
| 486 |
ai2_spawn C_N55 |
| 487 |
ai2_spawn C_N60 |
| 488 |
ai2_spawn C_Sbo44 |
| 489 |
ai2_spawn C_Sbo93 |
| 490 |
ai2_makeignoreplayer C_C65 1 |
| 491 |
ai2_makeignoreplayer C_L50 1 |
| 492 |
ai2_makeignoreplayer C_L51 1 |
| 493 |
ai2_makeignoreplayer C_N55 1 |
| 494 |
particle spine1 do start |
| 495 |
particle spine2 do start |
| 496 |
particle spine3 do start |
| 497 |
particle spinesound1 do start |
| 498 |
particle spinesound2 do start |
| 499 |
particle spinesound3 do start |
| 500 |
target_set 587 30 |
| 501 |
sleep 1 |
| 502 |
sound_music_start mus_trt 0.8 |
| 503 |
} |
| 504 |
|
| 505 |
#tv39 - in some diastance after tv44 (entry func: t45b); I've disabled it |
| 506 |
|
| 507 |
### ATRIUM - 7TH FLOOR ### |
| 508 |
|
| 509 |
#tv13 - in the middle between the end of the stairs and the entrance of the room with console 10 (entry func: t14); I've disabled it |
| 510 |
#tv49 - medium volume around console 10 (no funcs); I've disabled it |
| 511 |
|
| 512 |
#neutral func of C_N48 |
| 513 |
func void patrolscript0098(string ai_name) |
| 514 |
{ |
| 515 |
ai2_doalarm C_N48 10 |
| 516 |
} |
| 517 |
|
| 518 |
#tv48 - in front of console 10 |
| 519 |
func void t40(string ai_name) |
| 520 |
{ |
| 521 |
trigvolume_enable trigger_volume_40 0 |
| 522 |
var_counter = 1 |
| 523 |
check_consoles |
| 524 |
} |
| 525 |
|
| 526 |
#console 10 |
| 527 |
func void powersub1(string ai_name) |
| 528 |
{ |
| 529 |
if(var_counter eq 0) |
| 530 |
{ |
| 531 |
trigvolume_enable trigger_volume_40 0 |
| 532 |
var_counter2 = var_counter2 + 1 |
| 533 |
} |
| 534 |
var_counter3 = var_counter3 + 1 |
| 535 |
particle spine1 do stop |
| 536 |
particle spinesound1 do stop |
| 537 |
if(var_counter3 eq 1 or var_counter3 eq 101) target_set 594 30 |
| 538 |
if(var_counter3 eq 11) target_set 595 30 |
| 539 |
if(var_counter3 eq 111) power_off |
| 540 |
} |
| 541 |
|
| 542 |
#tv14 at the beginning of the ramp |
| 543 |
func void t15(string ai_name) |
| 544 |
{ |
| 545 |
ai2_lookatme C_L51 |
| 546 |
ai2_dopath C_L51 patrol_51 |
| 547 |
ai2_setjobstate C_L51 |
| 548 |
ai2_makeignoreplayer C_L51 0 |
| 549 |
sleep 90 |
| 550 |
ai2_lookatme C_L50 |
| 551 |
ai2_dopath C_L50 patrol_50 |
| 552 |
ai2_setjobstate C_L50 |
| 553 |
ai2_makeignoreplayer C_L50 0 |
| 554 |
} |
| 555 |
|
| 556 |
### ATRIUM - 6TH FLOOR ### |
| 557 |
|
| 558 |
#tv15 - long box along in front of the windows and the entrance of the first room (entry func: t16); I've disabled it |
| 559 |
|
| 560 |
#tv58 - long box behind the windows and the entrance of the second room |
| 561 |
func void t58(string ai_name) |
| 562 |
{ |
| 563 |
ai2_spawn C_Lbo53 |
| 564 |
ai2_spawn C_Sbo52 |
| 565 |
} |
| 566 |
|
| 567 |
### ATRIUM - 5TH FLOOR ### |
| 568 |
|
| 569 |
#tv16 - in the first room around C_N55 |
| 570 |
func void t17(string ai_name) |
| 571 |
{ |
| 572 |
ai2_makeignoreplayer C_N55 0 |
| 573 |
ai2_spawn C_Sbo56 |
| 574 |
} |
| 575 |
|
| 576 |
#tv17 - long box behind the windows and the entrance of the second room |
| 577 |
func void t18(string ai_name) |
| 578 |
{ |
| 579 |
ai2_spawn C_S57 |
| 580 |
} |
| 581 |
|
| 582 |
### ATRIUM - 4TH FLOOR ### |
| 583 |
|
| 584 |
#18 - around the entrance to the room with console 9 |
| 585 |
func void t19(string ai_name) |
| 586 |
{ |
| 587 |
ai2_spawn C_S58 |
| 588 |
ai2_spawn C_S59 |
| 589 |
} |
| 590 |
|
| 591 |
#tv53 - medium volume around console 9 (no funcs); I've disabled it |
| 592 |
|
| 593 |
#tv52 - in front of console 9 |
| 594 |
func void t53(string ai_name) |
| 595 |
{ |
| 596 |
trigvolume_enable trigger_volume_53 0 |
| 597 |
check_consoles |
| 598 |
} |
| 599 |
|
| 600 |
#console 9 |
| 601 |
func void powersub3(string ai_name) |
| 602 |
{ |
| 603 |
var_counter3 = var_counter3 + 10 |
| 604 |
particle spine3 do stop |
| 605 |
particle spinesound3 stop |
| 606 |
if(var_counter3 eq 10 or var_counter3 eq 110) target_set 587 30 |
| 607 |
if(var_counter3 eq 11) target_set 595 30 |
| 608 |
if(var_counter3 eq 111) power_off |
| 609 |
} |
| 610 |
|
| 611 |
### ATRIUM - 3RD FLOOR ### |
| 612 |
|
| 613 |
#neutral func of C_N60 |
| 614 |
func void t20(string ai_name) |
| 615 |
{ |
| 616 |
ai2_spawn C_Lbo62 |
| 617 |
ai2_spawn C_Sbo61 |
| 618 |
} |
| 619 |
|
| 620 |
#tv51 - medium volume around console 8 (no funcs); I've disabled it |
| 621 |
|
| 622 |
#tv50 - in front of console 8 |
| 623 |
func void t50(string ai_name) |
| 624 |
{ |
| 625 |
trigvolume_enable trigger_volume_50 0 |
| 626 |
check_consoles |
| 627 |
} |
| 628 |
|
| 629 |
func void check_consoles(void) |
| 630 |
{ |
| 631 |
var_counter2 = var_counter2 + 1 |
| 632 |
if(var_counter2 eq 1) sound_dialog_play c14_54_25konoko |
| 633 |
if(var_counter2 eq 2) sound_dialog_play c14_54_26konoko |
| 634 |
if(var_counter2 eq 3) sound_dialog_play c14_54_27konoko |
| 635 |
} |
| 636 |
|
| 637 |
#console 8 |
| 638 |
func powersub2(string ai_name) |
| 639 |
{ |
| 640 |
var_counter3 = var_counter3 + 100 |
| 641 |
particle spine2 do stop |
| 642 |
particle spinesound2 do stop |
| 643 |
if(var_counter3 eq 100 or var_counter3 eq 101) target_set 594 30 |
| 644 |
if(var_counter3 eq 110) target_set 587 30 |
| 645 |
if(var_counter3 eq 111) power_off |
| 646 |
} |
| 647 |
|
| 648 |
func void power_off(void) |
| 649 |
{ |
| 650 |
particle door42_locklight01 do start |
| 651 |
door_unlock 42 |
| 652 |
deactivate_sp3 |
| 653 |
objective_set 3 silent |
| 654 |
target_set 403 30 |
| 655 |
music_stop |
| 656 |
} |
| 657 |
|
| 658 |
### ATRIUM - 2ND FLOOR ### |
| 659 |
|
| 660 |
#tv19 - after the entrance to the first room |
| 661 |
#tv70 - behind the windows of the first room |
| 662 |
func void t21(string ai_name) |
| 663 |
{ |
| 664 |
ai2_spawn C_Sbo63 |
| 665 |
ai2_spawn C_Sbo64 |
| 666 |
} |
| 667 |
|
| 668 |
#tv21 - at the beginning of the stairs down to the ground floor |
| 669 |
#tv22 - in the free middle of the atrium between the first and second floor; if you fall or jump down, you'll trigger it off |
| 670 |
func void t23(string ai_name) |
| 671 |
{ |
| 672 |
ai2_spawn C_L71 |
| 673 |
ai2_spawn C_S72 |
| 674 |
} |
| 675 |
|
| 676 |
#tv20 - long box behind the windows and the entrance of the second room |
| 677 |
func void t22(string ai_name) |
| 678 |
{ |
| 679 |
ai2_makeignoreplayer C_C65 0 |
| 680 |
} |
| 681 |
|
| 682 |
### ATRIUM - 1ST FLOOR ### |
| 683 |
|
| 684 |
#nothing |
| 685 |
|
| 686 |
### ATRIUM - GROUND FLOOR ### |
| 687 |
|
| 688 |
#nothing |
| 689 |
|
| 690 |
########## |
| 691 |
### SP4 ### |
| 692 |
########## |
| 693 |
|
| 694 |
#tv43 - after door 42 |
| 695 |
func void s4(string ai_name) |
| 696 |
{ |
| 697 |
if(save_point eq 4) objective_set 3 silent |
| 698 |
else |
| 699 |
{ |
| 700 |
fork remove_ai |
| 701 |
save_game 4 autosave |
| 702 |
var_counter = 0 |
| 703 |
var_counter2 = 0 |
| 704 |
var_counter3 = 0 |
| 705 |
} |
| 706 |
ai2_spawn C_N74 |
| 707 |
target_set 596 30 |
| 708 |
sleep 90 |
| 709 |
} |
| 710 |
|
| 711 |
#tv36 - at the same place as tv43 (entry func: t41); I've disabled it |
| 712 |
|
| 713 |
### ENTRANCE HALL - 3RD FLOOR ### |
| 714 |
|
| 715 |
#tv23 - after door 41 |
| 716 |
func void t25(string ai_name) |
| 717 |
{ |
| 718 |
ai2_spawn D_C70 |
| 719 |
ai2_spawn D_Sbo71 |
| 720 |
ai2_spawn D_Sbo72 |
| 721 |
ai2_spawn D_Sbo73 |
| 722 |
ai2_spawn D_Sbo75 |
| 723 |
ai2_spawn D_N76 |
| 724 |
} |
| 725 |
|
| 726 |
#tv33 - after door 46 (entry func: t37); I've disabled it |
| 727 |
|
| 728 |
#console 7 |
| 729 |
func void floor4_lock(string ai_name) |
| 730 |
{ |
| 731 |
trigvolume_enable trigger_volume_39 1 |
| 732 |
particle floor4_lock_locklight01 do start |
| 733 |
particle stair_lock_locklight01 do start |
| 734 |
} |
| 735 |
|
| 736 |
#tv24 - in the passage to the room with the neutral, who gives you a Scramble Cannon (w7_scc) |
| 737 |
func void t26(string ai_name) |
| 738 |
{ |
| 739 |
ai2_spawn D_L74 |
| 740 |
ai2_spawn new_1 |
| 741 |
} |
| 742 |
|
| 743 |
#neutral func of new_1 |
| 744 |
func void attack_konoko(string ai_name) |
| 745 |
{ |
| 746 |
ai2_attack D_L74 A_player |
| 747 |
} |
| 748 |
|
| 749 |
#tv35 - in front of door 28 |
| 750 |
func void t39(string ai_name) |
| 751 |
{ |
| 752 |
target_set 598 30 |
| 753 |
} |
| 754 |
|
| 755 |
### ENTRANCE HALL - 2ND FLOOR ### |
| 756 |
|
| 757 |
#tv47 - after the end of the stairs to the second floor |
| 758 |
func void t48(string ai_name) |
| 759 |
{ |
| 760 |
ai2_spawn D_L91 |
| 761 |
ai2_spawn D_S90 |
| 762 |
ai2_spawn D_S89 |
| 763 |
ai2_spawn D_S101 |
| 764 |
ai2_spawn D_C100 |
| 765 |
ai2_spawn D_Sbo75 |
| 766 |
ai2_spawn D_Sbo92 |
| 767 |
} |
| 768 |
|
| 769 |
#tv31 - after door 24 (entry func: t34); I've disabled it |
| 770 |
#tv40 - on the footbridge (entry func: t44); I've disabled it |
| 771 |
|
| 772 |
#console 2 |
| 773 |
func void lastdoor3(string ai_name) |
| 774 |
{ |
| 775 |
particle lastdoor3_locklight01 do start |
| 776 |
var_counter = var_counter + 1 |
| 777 |
if(var_counter eq 1 or var_counter eq 101) target_set 599 30 |
| 778 |
if(var_counter eq 11) target_set 597 30 |
| 779 |
if(var_counter eq 111) lastdoor_open |
| 780 |
} |
| 781 |
|
| 782 |
### ENTRANCE HALL - 1ST FLOOR ### |
| 783 |
|
| 784 |
#tv29 - after door 20 |
| 785 |
func void t31(string ai_name) |
| 786 |
{ |
| 787 |
t32 |
| 788 |
} |
| 789 |
|
| 790 |
#tv30 - on the footbridge |
| 791 |
func void t32(string ai_name) |
| 792 |
{ |
| 793 |
ai2_spawn D_S83 |
| 794 |
ai2_spawn D_S87 |
| 795 |
ai2_spawn D_L84 |
| 796 |
ai2_spawn D_L88 |
| 797 |
ai2_spawn D_Lbo85 |
| 798 |
ai2_spawn D_Sbo86 |
| 799 |
trigvolume_enable trigger_volume_31 0 |
| 800 |
trigvolume_enable trigger_volume_32 0 |
| 801 |
} |
| 802 |
|
| 803 |
#console 13 |
| 804 |
func void lastdoor2(string ai_name) |
| 805 |
{ |
| 806 |
particle lastdoor2_locklight01 do start |
| 807 |
var_counter = var_counter + 10 |
| 808 |
if(var_counter eq 10 or var_counter eq 110) target_set 598 30 |
| 809 |
if(var_counter eq 11) target_set 597 30 |
| 810 |
if(var_counter eq 111) lastdoor_open |
| 811 |
} |
| 812 |
|
| 813 |
### ENTRANCE HALL - GROUND FLOOR ### |
| 814 |
|
| 815 |
#tv28 - after door 37 |
| 816 |
func void t30(string ai_name) |
| 817 |
{ |
| 818 |
ai2_spawn D_L80 |
| 819 |
} |
| 820 |
|
| 821 |
#tv26 - after door 32 (inside the room) |
| 822 |
func void t28(string ai_name) |
| 823 |
{ |
| 824 |
ai2_spawn D_S78 |
| 825 |
ai2_spawn D_S79 |
| 826 |
} |
| 827 |
|
| 828 |
#console 11 |
| 829 |
func void lastdoor1(string ai_name) |
| 830 |
{ |
| 831 |
particle lastdoor1_locklight01 do start |
| 832 |
var_counter = var_counter + 100 |
| 833 |
if(var_counter eq 100 or var_counter eq 101) target_set 599 30 |
| 834 |
if (var_counter eq 110) target_set 598 30 |
| 835 |
if(var_counter eq 111) lastdoor_open |
| 836 |
} |
| 837 |
|
| 838 |
func void lastdoor_open(void) |
| 839 |
{ |
| 840 |
trigvolume_enable trigger_volume_29 1 |
| 841 |
particle ZomShin_door_locklight01 do start |
| 842 |
door_unlock 97 |
| 843 |
set_objective_4 |
| 844 |
target_set 401 30 |
| 845 |
} |
| 846 |
|
| 847 |
#tv27 - after door 32 (outside of the room) |
| 848 |
func void t29(string ai_name) |
| 849 |
{ |
| 850 |
ai2_spawn D_Lbo81 |
| 851 |
ai2_spawn D_S82 |
| 852 |
} |
| 853 |
|
| 854 |
#tv 41 - on the platform between the stairs to the torture chamber (entry func: t33); I've disabled it |
| 855 |
|
| 856 |
#tv10 - in front of door 16 |
| 857 |
func void t9(string ai_name) |
| 858 |
{ |
| 859 |
fork remove_ai |
| 860 |
particle lastdoor1_locklight01 do stop |
| 861 |
particle lastdoor2_locklight01 do stop |
| 862 |
particle lastdoor3_locklight01 do stop |
| 863 |
door_lock 97 |
| 864 |
target_set 1 0 |
| 865 |
spawn_griffin |
| 866 |
} |
| 867 |
|
| 868 |
func void spawn_griffin(void) |
| 869 |
{ |
| 870 |
particle zombiesteam start |
| 871 |
env_show 171 1 |
| 872 |
env_show 172 1 |
| 873 |
env_show 173 1 |
| 874 |
env_show 174 1 |
| 875 |
ai2_spawn ZomGrif |
| 876 |
ai2_passive ZomGrif 1 |
| 877 |
chr_inv_reset ZomGrif |
| 878 |
ai2_setmovementmode ZomGrif walk |
| 879 |
playback ZomGrif ZomGrifDraw |
| 880 |
fork check_health |
| 881 |
} |
| 882 |
|
| 883 |
########## |
| 884 |
### SP5 ### |
| 885 |
########## |
| 886 |
|
| 887 |
#tv45 - in some distance after door 16 |
| 888 |
func void t42(string ai_name) |
| 889 |
{ |
| 890 |
if(save_point eq 5) |
| 891 |
{ |
| 892 |
spawn_griffin |
| 893 |
set_objective_4 |
| 894 |
target_set 1 0 |
| 895 |
} |
| 896 |
else |
| 897 |
{ |
| 898 |
save_game 5 autosave |
| 899 |
door_lock 16 |
| 900 |
} |
| 901 |
particle ZomShin_door_locklight01 do stop |
| 902 |
sleep 1 |
| 903 |
sound_ambient_start zomshin_amb_loop 1.0 |
| 904 |
sound_music_start mus_sv 0.75 |
| 905 |
} |
| 906 |
|
| 907 |
#tv55 - in front of console 402 (entry func: t55); I've disabled it |
| 908 |
#tv64 - in front of the sector with console 402 (entry func: shinzom_voice3); I've disabled it |
| 909 |
#tv56 - in front of console 401 (entry func: t56); I've disabled it |
| 910 |
#tv63 - on the right next to console 401; Iguess, they've forgot to rotate it (entry func: shinzom_voice2); I've disabled it |
| 911 |
#tv56 - in front of console 400 (entry func: t57); I've disabled it |
| 912 |
#tv62 - in front of the sector with console 400 (entry func: shinzom_voice1); I've disabled it |
| 913 |
#tv54 - in front of console 399 (entry func: t52); I've disabled it |
| 914 |
#tv65 - in front of the sector with console 399 (entry func: shinzom_voice4); I've disabled it |
| 915 |
|
| 916 |
func void check_health(void) |
| 917 |
{ |
| 918 |
chr_set_health ZomGrif 100 |
| 919 |
chr_wait_health ZomGrif 99 |
| 920 |
trigvolume_enable trigger_volume_35 1 |
| 921 |
ui_suppress_prompt = 0 |
| 922 |
objective_set 5 |
| 923 |
chr_set_health ZomGrif 100 |
| 924 |
chr_wait_health ZomGrif 99 |
| 925 |
chr_set_health ZomGrif 250 |
| 926 |
ai2_passive ZomGrif 0 |
| 927 |
ai2_attack ZomGrif A_player |
| 928 |
} |
| 929 |
|
| 930 |
#tv32 - in front of the room, where Griffin waits |
| 931 |
func void t35(string ai_name) |
| 932 |
{ |
| 933 |
killed_griffen 0 |
| 934 |
fade_out 0 0 0 30 |
| 935 |
sleep 30 |
| 936 |
win |
| 937 |
} |
| 938 |
|
| 939 |
#lose func of ZomGrif |
| 940 |
func void grifdies(string ai_name) |
| 941 |
{ |
| 942 |
killed_griffen 1 |
| 943 |
fade_out 0 0 0 30 |
| 944 |
sleep 30 |
| 945 |
win |
| 946 |
} |
| 947 |
|
| 948 |
##################### |
| 949 |
### TEXT CONSOLES ### |
| 950 |
##################### |
| 951 |
|
| 952 |
func void console1(string ai_name) |
| 953 |
{ |
| 954 |
text_console level_18c |
| 955 |
console_reset 14 |
| 956 |
console_activate 14 |
| 957 |
} |
| 958 |
|
| 959 |
func void console2(string ai_name) |
| 960 |
{ |
| 961 |
text_console level_18d |
| 962 |
console_reset 15 |
| 963 |
} |
| 964 |
|
| 965 |
func void console_android(void) |
| 966 |
{ |
| 967 |
text_console level_18b |
| 968 |
console_reset 16 |
| 969 |
} |
| 970 |
|
| 971 |
func void console_zombie(void) |
| 972 |
{ |
| 973 |
text_console level_18a |
| 974 |
console_reset 17 |
| 975 |
} |
| 976 |
|
| 977 |
func void level_18e(string ai_name) |
| 978 |
{ |
| 979 |
text_console level_18e |
| 980 |
console_reset 1 |
| 981 |
console_activate 1 |
| 982 |
} |