home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revista CD Expert 45
/
PCGamer45_18Demos.iso
/
Games45
/
GAMES
/
ONI
/
oni_demo.exe
/
GameDataFolder
/
IGMD
/
EnvWarehouse
/
warehouse_train2.bsl
< prev
next >
Wrap
Text File
|
2000-11-03
|
20KB
|
960 lines
func void cheater(void)
{
invincible=1
omnipotent=1
lock_keys keys_all
chr_teleport 0 7023
}
###################################
# variables used in train2 scipts #
###################################
#used to see if PPK combo was successful
var int combo_did;
#used to determine when to activate or deactivate blocking drone, current script comments out the usefulness of this variable
var int count_block;
#determines if reload in ballistics or cell
var int reload=0;
#makes sure reloading cells doesn't play before player has even picked up the rifle
var int droid_active;
#sees if you already reloaded ballistics ammo before the system had a chance to prompt you to do so
var int already_reloaded;
#sees if you already reloaded cell ammo before system prompted you to do so.
var int already_reloaded2;
#counts number of reload prompts necessary, if you reloaded more than one time, you lose rating points
var int had_to_reload;
#determines when inside the target shooting function
var int inside_target_function;
#determines when inside ammo reload function
var int inside_ammo_function = 0;
#determines when not to display block droid message
var int block_off;
################################
# fight training scripts below #
################################
#########################
# punch and kick script #
#########################
func void train_fighting(string ai_name)
{
how_far_along = 4;
music_stop
particle obj3 kill
particle obj4 kill
trig_deactivate 1
trig_deactivate 2
trig_deactivate 3
message_remove c01_50_23
message_remove jump_encourage
message_remove jump_encourage2
sleep 60
sound_dialog_play_interrupt c00_01_64shinatama
message_remove
message begin_fight 240
sleep 240
# PUNCH-KICK
lock_keys keys_attack
message xpunch
chr_wait_animtype 0 punch
sleep 60
message_remove xpunch
sleep 60
message xkick
chr_wait_animtype 0 kick
sleep 60
message_remove xkick
sleep 60
if (how_far_along eq 4)
{
#throw two punches
sound_dialog_play_block c00_01_65shinatama
message punch
chr_wait_animtype 0 punch2
message_remove punch
sleep 60
message c01_50_27 180
sound_dialog_play_interrupt c00_01_66shinatama
sound_dialog_play_block pause
sleep 40
}
if (how_far_along eq 4)
{
# more combo
sound_dialog_play_block c00_01_67shinatama
sound_dialog_play_block pause
sleep 60
}
if (how_far_along eq 4)
{
# FIRST COMBO
message c01_50_29
fork combo_wait
chr_wait_animtype 0 ppk
combo_did = 1;
sleep 60
message_remove c01_50_29
message_remove c01_50_29b
sleep 60
sound_dialog_play_interrupt c00_01_07shinatama
message xppk 180
sleep 180
}
if(combo_did eq 1)
{
if (how_far_along eq 4)
{
# try linking for more combos
sound_dialog_play_block c00_01_69shinatama
sound_dialog_play_block pause
sleep 240
}
if (how_far_along eq 4)
{
# you're now ready to train with a sparring partner
sound_dialog_play_block c00_01_70shinatama
sound_dialog_play_block pause
sleep 30
}
if (how_far_along eq 4)
{
# proceed to the next room
sound_dialog_play_block c00_01_71shinatama
message xspar2
ai2_spawn dum_hit_flash
chr_lock_active dum_hit_flash
chr_death_lock dum_hit_flash 1
door_unlock 99
particle door2_locklight02 do start
}
}
}
func void combo_wait(string ai_name)
{
sleep 600
if (combo_did eq 0)
{
dprint rating
rating = rating + 1
rating
message_remove c01_50_29
sound_dialog_play_block c00_01_68shinatama
sleep 60
}
if (combo_did eq 0)
{
message c01_50_29b 240
sleep 240
}
if (combo_did eq 0)
{
message c01_50_29
}
# if(combo_did eq 0)
# {
# if (how_far_along eq 4)
# {
# try linking for more combos
# sound_dialog_play_block c00_01_69shinatama
# sound_dialog_play_block pause
# sleep 240
# }
#
# if (how_far_along eq 4)
# {
# you're now ready to train with a sparring partner
# sound_dialog_play_block c00_01_70shinatama
# sound_dialog_play_block pause
# sleep 30
# }
# if (how_far_along eq 4)
# {
# proceed to the next room
# sound_dialog_play_block c00_01_71shinatama
# message xspar2
# ai2_spawn dum_hit_flash
# chr_lock_active dum_hit_flash
# chr_death_lock dum_hit_flash 1
# door_unlock 99
# particle door2_locklight02 do start
# }
# }
}
##################################
# train player about hit flashes #
##################################
func void train_hit_flash(string ai_name)
{
particle steam stop
music_train2
how_far_along = 6;
message_remove xspar2
sleep 60
# try hitting this dummy
sound_dialog_play_block c00_01_77shinatama
message start_hit
ai2_makeignoreplayer dum_hit_flash 1
}
func void hurt_dummy1(string ai_name)
{
message_remove start_hit
sleep 60
door_lock 99
particle door2_locklight02 do stop
# dynamic hit flashes
message c01_50_35 300
sleep 240
ai2_dopath dum_hit_flash patrol_dum_hit_flash
ai2_setjobstate dum_hit_flash
sleep 60
# more dynamic hit flashes blue
message blueflash 300
sleep 240
ai2_dopath dum_hit_flash patrol_dum_hit_flash
ai2_setjobstate dum_hit_flash
sleep 60
message c01_50_37 300
sleep 240
ai2_dopath dum_hit_flash patrol_dum_hit_flash
ai2_setjobstate dum_hit_flash
sleep 60
# more dynamic hit flashes
message c01_50_38 300
sleep 240
ai2_dopath dum_hit_flash patrol_dum_hit_flash
ai2_setjobstate dum_hit_flash
# move on to the next room to learn how to perform the most dangerous attacks.
sleep 60
sound_dialog_play_block c00_01_78shinatama
message goto_throw
sleep 60
door_unlock 100
particle door3_locklight02 do start
ai2_spawn dum_train_throw
chr_lock_active dum_train_throw
chr_death_lock dum_train_throw 1
ai2_makeignoreplayer dum_train_throw 1
}
###################################
# train player to throw opponents #
###################################
func void lockthrow(void)
{
door_lock 100
particle door3_locklight02 do stop
}
func void train_throw(string ai_name)
{
how_far_along = 7;
message_remove goto_throw
sleep 60
if (how_far_along eq 7)
{
# FIRST THROW
sound_dialog_play_block c00_01_79shinatama
message c01_50_41
chr_wait_animtype 0 throw_forward_punch throw_forward_kick run_throw_forward_punch run_throw_forward_kick
message_remove c01_50_41
sleep 60
}
if (how_far_along eq 7)
{
# more throws
sound_dialog_play_block c00_01_80shinatama
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
message xthrow1 360
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
message xthrow2 360
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
sleep 180
ai2_dopath dum_train_throw patrol_train_throw2
ai2_setjobstate dum_train_throw
}
if (how_far_along eq 7)
{
# Proceed to the next room and try blocking the training dummy'sleep 240 attacks.
message goto_block
sleep 60
door_unlock 101
particle door4_locklight02 do start
particle door4b_locklight02 do start
ai2_spawn dum_train_block
ai2_makeignoreplayer dum_train_block 1
chr_invincible char_0 1
}
}
###############################
# train player to block blows #
###############################
func void train_block(string ai_name)
{
#introduce blocking
how_far_along = 5;
message_remove goto_block
# dummy attack
sound_dialog_play_block c00_01_72shinatama
sound_dialog_play_block pause
sound_dialog_play_block c00_01_73shinatama
if(count_block eq 0)
{
message c01_50_33
}
}
func void train_block2(string ai_name)
{
ai2_makeignoreplayer dum_train_block 0
ai2_dopath dum_train_block patrol_56b
ai2_setjobstate dum_train_block
message_remove c01_50_33
if(count_block eq 0)
{
count_block = 1
door_lock 101
door_close 101
particle door4_locklight02 do stop
chr_delete dum_train_throw
chr_delete dum_hit_flash
chr_delete demo1
chr_delete demo2
chr_delete demo3
if (how_far_along eq 5)
{
# more blocking
sleep 60
message c01_50_32 300
sound_dialog_play_block c00_01_74shinatama
sound_dialog_play_pause
sleep 30
sound_dialog_play_block c00_01_75shinatama
message xblocking2 300
sound_dialog_play_pause
sleep 30
sound_dialog_play_block c00_01_76shinatama
}
sleep 120
# message_remove xdronedeactive
ai2_makeignoreplayer dum_train_block 1
ai2_dopath dum_train_block patrol_56b
ai2_setjobstate dum_train_block
sound_dialog_play_block c00_01_83shinatama
sound_dialog_play_block pause
door_unlock 102
particle door5_locklight02 do start
message goto_shoot
chr_inv_reset 0
music_stop
sleep 60
dprint spawn_shoot
ai2_spawn dum_train_shoot
ai2_spawn dum_train_shoot2
ai2_passive dum_train_shoot 1
ai2_passive dum_train_shoot2 1
chr_invincible dum_train_shoot 1
chr_invincible dum_train_shoot2 1
chr_invincible char_0 0
console_deactivate 12
trigvolume_enable tv75 0
trigvolume_enable tv74 0
}
}
func void disable_tv46(void)
{
message_remove c01_50_33
trigvolume_enable trigger_volume_46 0
}
##################################
# put drones back on their spots #
##################################
func void flash_path(string ai_name)
{
sleep 90
ai2_dopath dum_hit_flash patrol_dum_hit_flash
}
func void throw_path(string ai_name)
{
sleep 90
ai2_dopath dum_train_throw patrol_train_throw2
}
func void block_path(string ai_name)
{
if(block_off eq 0)
{
block_off = 1;
message xdronedeactive 180
}
ai2_makeignoreplayer dum_train_block 1
ai2_dopath dum_train_block patrol_56
sleep 180
block_off = 0;
}
func void block_path2(string ai_name)
{
ai2_makeignoreplayer dum_train_block 1
ai2_dopath dum_train_block patrol_56
}
######################################################
# regenerate first two training dummies as necessary #
######################################################
func void regen1(string ai_name)
{
dprint regen1
message_remove blueflash
message_remove c01_50_37
message_remove c01_50_38
sleep 60
message xregen1 180
sleep 180
chr_set_health dum_hit_flash 50
ai2_dopath dum_hit_flash patrol_dum_hit_flash
ai2_setjobstate dum_hit_flash
}
func void regen2(string ai_name)
{
dprint regen2
sleep 60
message xregen1 180
sleep 180
chr_set_health dum_train_throw 50
ai2_dopath dum_hit_flash patrol_train_throw2
ai2_setjobstate dum_train_throw
}
#########################
# train player to shoot #
#########################
func void train_shoot(string ai_name)
{
# message_remove xdroneactive
message_remove xdronedeactive
particle g_tap1 create
sleep 7
weapon_spawn w1_tap 7042
wp_disable_fade=1
how_far_along = 8;
message_remove goto_shoot
sleep 60
ai2_dopath dum_train_throw patrol_train_throw
ai2_setjobstate dum_train_throw
if (how_far_along eq 8)
{
lock_keys keys_inventory
lock_keys keys_reload
# approach weapons
sound_dialog_play_block c00_01_84shinatama
sound_dialog_play_pause
chr_wait_animtype char_0 Pickup_Pistol Pickup_Pistol_Mid
door_lock 102
particle door5_locklight02 do stop
trigvolume_enable tv75 1
trigvolume_enable tv74 1
ui_show_element left 1
sleep 60
message c01_50_54
# hit targets
sound_dialog_play_block c00_01_85shinatama
chr_wait_animtype char_0 Autopistol_Recoil
sleep 120
message_remove c01_50_54
sleep 60
message c01_50_53 300
sleep 300
}
}
func void enter_ammo_function(void)
{
dprint enter_ammo_function
inside_ammo_function = 1;
}
func void exit_ammo_function(void)
{
dprint exit_ammo_function
inside_ammo_function = 0;
}
func void need_ammo(string ai_name)
{
trigvolume_enable tv74 0
sleep 67
var int empty_weapon = chr_has_empty_weapon(char_0);
dprint trying_ammo_function
if (inside_ammo_function eq 0)
{
dprint doing_ammo_function
enter_ammo_function();
if(empty_weapon eq 1)
{
sleep 15
if(reload eq 0)
{
message_remove xkeepshoot
already_reloaded = 0;
sound_dialog_play_block c00_01_87shinatama
message c01_50_61
# generate powerup
particle g_tap1 create
sleep 7
powerup_spawn ammo 7042
particle g_tap2 create
sleep 7
powerup_spawn ammo 7043
chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object
fork remove_reload_message
# sleep 60
message_remove c01_50_61
sleep 90
if(already_reloaded eq 0)
{
message xreload
chr_wait_animtype char_0 reload_pistol
increase_rating()
message_remove xreload
sleep 90
}
message xkeepshoot
}
if(reload eq 1)
{
if(droid_active eq 1)
{
message c01_50_62
# generate powerup
particle g_phr1 create
sleep 7
powerup_spawn cell 7044
particle g_phr2 create
sleep 7
powerup_spawn cell 7045
chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object
# sleep 60
message_remove c01_50_62
fork remove_reload_message2
if(already_reloaded2 eq 0)
{
sleep 90
message xreload
chr_wait_animtype char_0 reload_rifle
dprint rating
increase_rating()
message_remove xreload
}
}
}
}
exit_ammo_function();
}
sleep 60
trigvolume_enable tv74 1
}
func void increase_rating(void)
{
dprint rating
if(had_to_reload ne 0)
{
rating = rating + 1;
}
had_to_reload = had_to_reload + 1;
}
func void remove_reload_message(void)
{
chr_wait_animtype char_0 reload_pistol
already_reloaded = 1;
}
func void remove_reload_message2(void)
{
chr_wait_animtype char_0 reload_rifle
already_reloaded2 = 1;
}
func void enter_target_function(void)
{
dprint enter_target_function
inside_target_function = 1;
}
func void exit_target_function(void)
{
dprint exit_target_function
inside_target_function = 0;
}
func void targets_are_gone(void)
{
reload=1;
message_remove xkeepshoot
trigvolume_enable tv75 0
sleep 7
particle g_phr1 create
sleep7
weapon_spawn w3_phr 7045
sound_dialog_play_block c00_01_86shinatama
sound_dialog_play_block pause
message_remove
#plasma, switch weapons
sound_dialog_play_block c00_01_88shinatama
chr_wait_animtype char_0 Pickup_Rifle Pickup_Rifle_Mid
droid_active = 1;
sleep 30
#activate drone, hit it
chr_invincible dum_train_shoot 0
ai2_passive dum_train_shoot 0
sound_dialog_play_block c00_01_89shinatama
ai2_dopath dum_train_shoot patrol_train_shoot
ai2_setjobstate dum_train_shoot
}
func void targets_are_not_gone(void)
{
# CB: turn off the trigger volume and sleep for a second
# so as not to cause hideous performance loss
trigvolume_enable tv75 0
sleep 60
trigvolume_enable tv75 1
}
func void targets_gone(string ai_name)
{
if(inside_target_function eq 0)
{
enter_target_function()
var int num_broken = env_broken(3001, 3018);
if (num_broken eq 18)
{
targets_are_gone();
}
if (num_broken < 18)
{
targets_are_not_gone();
}
exit_target_function
}
}
func void droid1_gone(string ai_name)
{
if (how_far_along eq 8)
{
chr_invincible dum_train_shoot2 0
# now side to side
sound_dialog_play_block c00_01_90shinatama
sound_dialog_play_block pause
sleep 30
ai2_passive dum_train_shoot2 0
ai2_dopath dum_train_shoot2 patrol_train_shoot2
ai2_setjobstate dum_train_shoot2
}
}
func void droid2_gone(string ai_name)
{
if (how_far_along eq 8)
{
reload = 2;
droid_active = 0;
message_remove
cinematic_start (SHINnametag, 180, 180, 15, 1, 20, false)
# great, done training
chr_changeteam char_0 Syndicate
music_train3
if(rating eq 0)
{
message poopy
}
if(rating eq 1)
{
message poopy2
}
if(rating eq 2)
{
message poopy3
}
if(rating eq 3)
{
message poopy4
}
if(rating eq 4)
{
message poopy5
}
if(rating eq 5)
{
message poopy6
}
if(rating > 5)
{
message poopy7
}
sound_dialog_play_block c00_01_91shinatama
sound_dialog_play_block pause
sleep 40
sound_dialog_play_block c00_01_81shinatama
sound_dialog_play_block pause
message_remove
sleep 40
sound_dialog_play_block c00_01_82shinatama
sound_dialog_play_block pause
cinematic_stop (SHINnametag, 15, 20)
message xf1 400
sleep 400
message xlastreview
particle obj_lastreview create
console_activate 12
wp_disable_fade=0
}
}
func void lastreview(string ai_name)
{
music_stop
particle obj_lastreview kill
message_remove
message_remove xlastreview
text_console level_1f
lock_keys keys_all
sleep 60
dprint swing
swing
ui_suppress_prompt=0
}
######################################
# training scripts used in warehouse #
######################################
# note: health function 'yhealth' is in the level_script file #
func void train_fathealth(string ai_name)
{
chr_wait_animtype char_0 Pickup_Object
if(trigvolume_count (80) eq 1)
{
sleep 90
message xtabhypo 300
sound_dialog_play_block c00_01_93shinatama
sound_dialog_play_block pause
sleep 40
sound_dialog_play_block c00_01_94shinatama
}
}
func void intro_enemies(string ai_name)
{
dprint intro_enemies
how_far_along = 11;
music_firstfight
if (how_far_along eq 11)
{
ai2_spawn Bay2_Thug_1
ai2_spawn Bay2_Thug_2
}
if (how_far_along eq 11)
{
# enemies
message c01_50_84 240
sleep 360
}
}
func void train_alarm(string ai_name)
{
how_far_along = 13;
if (how_far_along eq 13)
{
ai2_spawn Bay4_Comguy_1
# alarm
sleep 180
message c01_50_88 240
sleep 240
}
if (how_far_along eq 13)
{
# alarm
message c01_50_89 240
sleep 240
}
# if (how_far_along eq 13)
# {
# alarm
# message c01_50_90 240
# sleep 240
# }
}
func void train_neutral(string ai_name)
{
how_far_along = 14;
target_set(92,15.0)
if (how_far_along eq 14)
{
# neutrals
message c01_50_91 240
sleep 240
sound_dialog_play_block c00_01_97shinatama
}
}
func void train_timer(string ai_name)
{
how_far_along = 15;
if(how_far_along eq 15)
{
target_set(96,15.0)
timer_start 180 OutroLose
sound_dialog_play_block c00_01_95shinatama
sleep 180
objective_set(4)
sound_dialog_play_block pause
music_timer
}
if (how_far_along eq 15)
{
sleep 60
message timer_text 300
sleep 360
message timer_text2 240
}
}
############################
# warn about alarm console #
############################
func void alarm_warning(string ai_name)
{
if(count_alarm eq 0)
{
message alarm_warn 300
}
count_alarm = 1;
}
func void alarm_warningb(string ai_name)
{
count_alarm = 0;
}
#############################
# consoles and compass hint #
#############################
func void console_jump(string ai_name)
{
text_console level_1g
console_reset 18
}
func void console_escape(string ai_name)
{
text_console level_1h
console_reset 17
}
func void console_attack(string ai_name)
{
text_console level_1i
console_reset 16
}
func void console_flash(string ai_name)
{
text_console level_1j
console_reset 15
}
func void console_throw(string ai_name)
{
text_console level_1k
console_reset 14
}
func void console_block(string ai_name)
{
text_console level_1l
console_reset 13
}
func void t77(string ai_name)
{
message xarrow 400
}