19,428
edits
m (alignment fix) |
m (missed these self-links because of the lack of underscores in the names) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{finish}} | |||
{|style="float:right" | {|style="float:right" | ||
|__TOC__ | |__TOC__ | ||
Line 52: | Line 53: | ||
particle fx3 do start | particle fx3 do start | ||
particle exhaust create | particle exhaust create | ||
[[ | [[#func Tarmac1|Tarmac1]] | ||
trigvolume_enable tarmac 0 | trigvolume_enable tarmac 0 | ||
trigvolume_enable trigger_volume_03 0 | trigvolume_enable trigger_volume_03 0 | ||
Line 109: | Line 110: | ||
func void you_lose(string ai_name) | func void you_lose(string ai_name) | ||
{ | { | ||
[[ | [[#func all_music_counters|all_music_counters]] | ||
[[sleep]] 240 | [[sleep]] 240 | ||
[[fade_out]] 0 0 0 180 | [[fade_out]] 0 0 0 180 | ||
Line 119: | Line 120: | ||
func void you_win(int char_index) | func void you_win(int char_index) | ||
{ | { | ||
[[ | [[#func all_music_counters|all_music_counters]] | ||
[[win]] | [[win]] | ||
} | } | ||
Line 235: | Line 236: | ||
{ | { | ||
[[sleep]] 4500 | [[sleep]] 4500 | ||
[[if]] (0 ne [[ | [[if]] (0 ne [[#var music_counter|music_counter]]) | ||
{ | { | ||
[[dprint]] music_force_stop | [[dprint]] music_force_stop | ||
music_counter = 0 | music_counter = 0 | ||
[[ | [[#func all_music_counters|all_music_counters]] | ||
} | } | ||
} | } | ||
Line 245: | Line 246: | ||
func void music_script_start(void) | func void music_script_start(void) | ||
{ | { | ||
[[ | [[#var music_counter|music_counter]] = 2 | ||
} | } | ||
===func striker_lullaby_1=== | ===func striker_lullaby_1=== | ||
Line 251: | Line 252: | ||
{ | { | ||
[[dprint]] striker_lullaby1 | [[dprint]] striker_lullaby1 | ||
[[ | [[#var music_counter|music_counter]] = music_counter - 1 | ||
[[if]] (music_counter eq 0) | [[if]] (music_counter eq 0) | ||
{ | { | ||
[[ | [[#func all_music_counters|all_music_counters]](); | ||
[[sleep]] f120 | [[sleep]] f120 | ||
} | } | ||
Line 262: | Line 263: | ||
{ | { | ||
[[dprint]] striker_lullaby2 | [[dprint]] striker_lullaby2 | ||
[[ | [[#var music_counter|music_counter]] = music_counter - 1 | ||
[[if]] (music_counter eq 0) | [[if]] (music_counter eq 0) | ||
{ | { | ||
[[ | [[#func all_music_counters|all_music_counters]](); | ||
[[sleep]] f120 | [[sleep]] f120 | ||
} | } | ||
Line 593: | Line 594: | ||
:The camera cuts to a view of console 4 (interpolation over 0 frames to the position and rotation of '''[[OBAN|OBANambush1]]''') after 1 second. Another 2.5 seconds later, console 4 is activated, and then after another 2.5 seconds the actual "ambush" starts: the camera cuts to a view of console 3 (with Konoko still in front of it) and then interpolates over 5 seconds to a view of the final door, '''OBANambush3''': [[cm_interpolate_block]] makes sure that the ''previous'' camera relocation (the cut to '''OBANambush2''') is complete. 50 frames after the camera has reached '''OBANambush3''', it closes in on the door over another 5 seconds ('''OBANambush4'''). The camera stays there until the end of the cutscene, when it focuses back on Konoko. | :The camera cuts to a view of console 4 (interpolation over 0 frames to the position and rotation of '''[[OBAN|OBANambush1]]''') after 1 second. Another 2.5 seconds later, console 4 is activated, and then after another 2.5 seconds the actual "ambush" starts: the camera cuts to a view of console 3 (with Konoko still in front of it) and then interpolates over 5 seconds to a view of the final door, '''OBANambush3''': [[cm_interpolate_block]] makes sure that the ''previous'' camera relocation (the cut to '''OBANambush2''') is complete. 50 frames after the camera has reached '''OBANambush3''', it closes in on the door over another 5 seconds ('''OBANambush4'''). The camera stays there until the end of the cutscene, when it focuses back on Konoko. | ||
;Music | ;Music | ||
:The music starts as the camera cuts back to Konoko's pod and starts panning towards the door. '''[[ | :The music starts as the camera cuts back to Konoko's pod and starts panning towards the door. '''[[#func music_script_start|func music_script_start]]''' sets the user variable '''music_counter''' to 2 so that the music stops when and if both Strikers are killed (when either of them is killed, a function is called that decrements the counter and stops the music if it reaches zero: see '''[[#func striker_lullaby_2|func striker_lullaby_2]]''' and '''[[#func all_music_counters|func all_music_counters]]'''). | ||
;Door and locklight | ;Door and locklight | ||
:The [[OBD:BINA/OBJC/DOOR|door]] unlocks to let the Strikers pass and locks behind them (the locklight, looked up in [[ENVP]], changes accordingly). It is later unlocked by console 4. | :The [[OBD:BINA/OBJC/DOOR|door]] unlocks to let the Strikers pass and locks behind them (the locklight, looked up in [[ENVP]], changes accordingly). It is later unlocked by console 4. | ||
;Characters | ;Characters | ||
:The Strikers have their movement mode set to "walk", which is only effective after they stop '''playback'''ing and start '''do_path'''ing (they wander off towards the middle of the hangar). The '''i_uh_heheheh1''' [[OBD:BINA/OBJC/TRGV|trigger volume]] makes sure they'll retreat to guard the door if Konoko heads for the console that unlocks it (see '''[[ | :The Strikers have their movement mode set to "walk", which is only effective after they stop '''playback'''ing and start '''do_path'''ing (they wander off towards the middle of the hangar). The '''i_uh_heheheh1''' [[OBD:BINA/OBJC/TRGV|trigger volume]] makes sure they'll retreat to guard the door if Konoko heads for the console that unlocks it (see '''[[#func i_uh_heheheh|func i_uh_heheheh]]''' below). The purpose of "interp 30" modifier to the '''playback''' command is not clear, as the scene looks just the same without it. | ||
func void final_ambush(string char_index) | func void final_ambush(string char_index) | ||
{ | { | ||
Line 609: | Line 610: | ||
sleep 150 | sleep 150 | ||
[[sound_music_start]] mus_fitec_hd 0.91 | [[sound_music_start]] mus_fitec_hd 0.91 | ||
[[ | [[#func music_script_start|music_script_start]] | ||
cm_interpolate ambush2 0 | cm_interpolate ambush2 0 | ||
[[cm_interpolate_block]] ambush3 300 | [[cm_interpolate_block]] ambush3 300 | ||
Line 635: | Line 636: | ||
===func i_uh_heheheh=== | ===func i_uh_heheheh=== | ||
This forces the two Red Strikers from the final fight to retreat to the end-of-level door when and if Konoko is about to unlock it from the faraway console. The [[TRGV|trigger volume]] responsible for this is '''i_uh_heheheh1''' (number 6): '''func i_uh_heheheh''' is its '''entry''' function; it spans the stairs that lead to the [[OBD:BINA/OBJC/CONS|console]] number 4. That trigger volume is disabled at level start. It's enabled in '''[[ | This forces the two Red Strikers from the final fight to retreat to the end-of-level door when and if Konoko is about to unlock it from the faraway console. The [[TRGV|trigger volume]] responsible for this is '''i_uh_heheheh1''' (number 6): '''func i_uh_heheheh''' is its '''entry''' function; it spans the stairs that lead to the [[OBD:BINA/OBJC/CONS|console]] number 4. That trigger volume is disabled at level start. It's enabled in '''[[#func final_ambush|func final_ambush]]''' (see above), after both Strikers are spawned. Once enabled, it can only be triggered once, and only by the player. | ||
:Note the typically inconsistent '''string char_index''' parameter: this is actually the ''name'' of the character who fired the trigger volume function. | :Note the typically inconsistent '''string char_index''' parameter: this is actually the ''name'' of the character who fired the trigger volume function. | ||
func void i_uh_heheheh(string char_index) | func void i_uh_heheheh(string char_index) | ||
Line 669: | Line 670: | ||
[[particle]] door2_locklight01 do start | [[particle]] door2_locklight01 do start | ||
sleep 150 | sleep 150 | ||
[[ | [[#func set_objective_3|set_objective_3]] | ||
[[ | [[#func set_target_6|set_target_6]] | ||
[[cm_reset]] | [[cm_reset]] | ||
input 1 | input 1 | ||
Line 688: | Line 689: | ||
input 1 | input 1 | ||
} | } | ||
[[Category:Modding tutorials]] | [[Category:Modding tutorials]] |