source: AE/packages/81000TCTF3/BSL/tctf_iii/tctf3.bsl @ 520

Last change on this file since 520 was 520, checked in by gumby, 12 years ago

backing up

File size: 8.9 KB
Line 
1func void start(string ai_name)
2{
3        #Konoko temp spawn location.
4        chr_location 0 229 -90 -384
5        #Chair stuff
6        env_show 171 1
7        env_show 172 1
8        env_show 173 1
9        env_show 174 1
10        dprint start
11       
12
13        setup_doors
14        fork laser_byebye
15        #trigvolume_enable trigger_volume_29 0
16        #trigvolume_enable trigger_volume_35 0
17        #trigvolume_enable trigger_volume_39 0
18        #trigvolume_enable trigger_volume_36 0
19        #trigvolume_enable trigger_volume_41 0
20       
21        my_save_point = save_point;
22
23                env_show 403 0
24
25        env_show 1010 0
26                dprint restore5
27                objective_set(4)
28                trigvolume_enable trigger_volume_42 0
29                trigvolume_enable trigger_volume_35 0
30                #Old Door locking
31                particle ZomShin_door_locklight01 do start
32                #door_lock 16
33
34                #TCTF II cutscene "Base"
35                env_show 171 1
36                env_show 172 1
37                env_show 173 1
38                env_show 174 1
39        #       particle Forcefield do start
40        #       particle zombiesteam start
41                #sound_ambient_start zomshin_amb_loop 1.0
42                #music_zom
43
44                #these next lines place griffin where he should be
45                dprint place_griffin_and_holster
46                ai2_spawn ZomGrif
47                ai2_makeignoreplayer ZomGrif 1
48                # make sure that griffin is aiming his weapon!
49                ai2_setmovementmode ZomGrif walk
50                # ai2_passive ZomGrif 1
51                playback ZomGrif ZomGrifDraw
52
53                # don't call the GrifSpawn function again
54
55        #       create_zomshin
56                playback ZomShin BaseShin
57                chr_create 1202
58                chr_envanim 1202 IntroGriffinBox02
59
60        #       zombie_round_2
61                chr_wait_health 1202 0
62                #slowmo 1000
63                #this will be replaced with a low gravity ONCC
64                ai2_spawn l1
65                chr_invincible l1
66                chr_envanim l1 IntroGriffinBox03 norotation
67}
68func void laser_byebye {
69                #should probably be replaced with some BINATRIG mods, but this will do for now
70                dprint laser_go_bye_bye
71                trig_deactivate 1               
72                trig_deactivate 2       
73                trig_deactivate 3       
74                trig_deactivate 4       
75                trig_deactivate 5
76                trig_deactivate 8               
77                trig_deactivate 303     
78                trig_deactivate 100
79                trig_deactivate 101     
80                trig_deactivate 500     
81                trig_deactivate 400     
82                sleep 15
83                trig_deactivate 503
84                sleep 5
85                trig_deactivate 502
86                sleep 5
87                trig_deactivate 501
88                sleep 15       
89                trig_deactivate 510
90                sleep 5
91                trig_deactivate         511
92                sleep 5
93                trig_deactivate 512     
94                sleep 15
95                trig_deactivate 520
96                sleep 5
97                trig_deactivate 521
98                sleep 5
99                trig_deactivate 522
100                sleep 15
101                trig_deactivate 320
102                sleep 15
103                trig_deactivate 315
104                sleep 15
105                trig_deactivate 302
106}
107func void setup_doors(void) {
108#Old door locks
109#       door_unlock 65
110#       door_unlock 71
111#       door_unlock 59
112#       door_unlock 61 
113#       door_unlock 67
114#       door_lock 7
115#       door_lock 4
116#       door_lock 5
117#       door_lock 8
118#       door_lock 6
119#       door_lock 9
120#       console_deactivate 3
121        chr_location 1 90 .5 -50
122        # incidental zombie shinatama dialog
123        trigvolume_enable shinzom_voice1 0
124        trigvolume_enable shinzom_voice2 0
125        trigvolume_enable shinzom_voice3 0
126        trigvolume_enable shinzom_voice4 0
127       
128        #Most of this needs to be activated with a console. More later.
129        #Triple door
130        particle lastdoor1_locklight01 do start
131        particle lastdoor2_locklight01 do start
132        particle lastdoor3_locklight01 do start
133        door_unlock 97
134       
135        #Blue door
136        #Look, ma! I broke the door!
137        #Needs sparks :P
138        door_open 28
139        door_jam 28
140        particle floor4_lock_locklight01 do stop
141
142       
143        #First door
144        particle griffin_locklight01 do start
145       
146        #We three doors (yellow)
147        #particle door42_locklight01 do start
148        #particle stair_lock_locklight01 do start
149        #particle roof_doors_locklight01 do start
150        door_lock 19
151        door_lock 20
152        door_lock 24
153       
154        #Goodie Room
155        door_lock 36
156       
157        #TCTF and BGI seperation, lower floor
158        door_lock 22
159}
160
161func void setup_lower(string ai_name) {
162        #Closes the stupid door
163        door_unjam 97
164        door_close 97
165        door_lock 97
166        particle lastdoor1_locklight01 do stop
167        particle lastdoor2_locklight01 do stop
168        particle lastdoor3_locklight01 do stop
169       
170        ai2_spawn jubei
171        chr_boss_shield jubei
172        chr_givepowerup jubei shield 1
173        ai2_doalarm jubei 13
174}
175        var bool eggman;
176func void open_yellow(string char) {
177
178
179        eggman = chr_is_player(char);
180
181        if (eggman eq 0)
182        {
183                if (distracted eq 0)
184                {
185                        #Places jubei in the proper position and anim
186                        dprint robotnik
187                        chr_animate(char, STRIKEconsole, 7777777);
188                        console_reset 13
189                        sleep 10
190                        chr_freeze jubei 1
191                        #This animation will be ended when konoko enters. Yes, I am OCD. He must type!
192                }
193        }
194
195        if (eggman eq 1)
196        {
197                #If player, unlock the yellow doors ^_^
198                dprint sonic
199                particle door42_locklight01 do start
200                particle stair_lock_locklight01 do start
201                particle roof_doors_locklight01 do start
202                door_unlock 19
203                door_unlock 20
204                door_unlock 24
205        }
206}
207        var bool eggman2;
208var int distracted = 0;
209func void distract_console(string char) {
210
211        eggman2 = chr_is_player(char);
212        if (eggman2 eq 0)
213                {
214                #Make jubei go back to other console
215                dprint jubei_is_distracted
216                distracted = 1;
217                ai2_tripalarm jubei 0
218                #ai2_doalarm jubei 13
219                #ai2_movetoflag jubei 598
220                }
221        if (eggman2 eq 1)
222                {
223                ai2_boss_battle = 1;
224                #Make jubei go to this console
225                dprint distracting_jubei
226                chr_freeze jubei 0
227                chr_animate(jubei, STRIKEconsole, 7);
228                sleep 10
229                console_reset 2
230                #I need to make this a patrol path
231                #I could also set his team to Neutral and then make him get attacked by Konoko :> (TRAM derived particle)
232                #Even better.
233                ai2_tripalarm 1 0
234                #erm...much better :>
235                #ai2_comehere jubei
236                ai2_setmovementmode jubei run
237                sleep 10
238                ai2_attack jubei 0
239                sleep 10
240                ai2_forget jubei
241                #I need to set up a trigger volume still, but meh.
242                #ai2_doalarm jubei 2
243                fork jubei_loop
244                }
245}
246
247func void jubei_loop(void) {
248                if(jubei_dead eq 0) {
249                ai2_tripalarm 1 0
250                #erm...much better :>
251                #ai2_comehere jubei
252                ai2_setmovementmode jubei run
253                sleep 10
254                ai2_attack jubei 0
255                sleep 10
256                ai2_forget jubei
257                fork jubei_loop
258        }
259}
260func void jubei_noticed(void) {
261dprint jubei_noticed
262ai2_inactive jubei
263#ai2_comehere jubei
264}
265
266var int jubei_dead = 0;
267func void jubei_died(string ai_name) {
268        jubei_dead = 1
269        fork lsi_loop
270}
271
272func void jubei_defeated(void) {
273        chr_inv_reset jubei
274        chr_givepowerup jubei lsi 2
275        chr_givepowerup hypo 2
276        chr_set_health jubei 0
277}
278
279func void lsi_loop(void) {
280        #needs to quit after a certain amount of time.
281        if(chr_has_lsi(0)) {
282                chr_boss_shield 0
283                chr_givepowerup 0 shield 100
284        }
285        else {
286                sleep 30
287                fork lsi_loop
288        }
289}
290func void t33(string ai_name)
291{
292        #Opens stupid door
293        dprint Open_stupid
294        sleep 20
295        door_open 97
296        door_jam 97
297       
298        fork BGI_died(BGI_lower1)
299        fork BGI_died(BGI_lower2)
300        fork BGI_died(BGI_lower3)
301        fork BGI_died(BGI_lower4)
302        fork BGI_died(BGI_lower5)
303#       fork BGI_died(BGI_lower6)
304#       fork BGI_died(BGI_lower7)
305#       fork BGI_died(BGI_lower8)
306
307
308        fork TCTF_died(TCTF_lower1)
309        fork TCTF_died(TCTF_lower2)
310        fork TCTF_died(TCTF_lower3)
311        fork TCTF_died(TCTF_lower4)
312        fork TCTF_died(TCTF_lower5)
313#       fork TCTF_died(TCTF_lower6)
314#       fork TCTF_died(TCTF_lower7)
315#       fork TCTF_died(TCTF_lower8)
316
317       
318        }
319func powersub1(string ai_name)
320{
321        dprint powersub1_active
322        sub1 = 1;
323        particle spine1 start
324        particle spinesound1 start
325
326        if(sub3 eq 0)
327        {
328#               target_set(594,30.0)
329        }
330        if(sub3 ne 0)
331        {
332                if(sub2 eq 0)
333                {
334#                       target_set(595,30.0)
335                }
336        }
337        check_power
338}
339
340func powersub2(string ai_name)
341{
342        dprint powersub2_active
343        particle spine2 do start
344        particle spinesound2 start
345        sub2 = 1;
346        if(sub3 eq 0)
347        {
348#               target_set(594,30.0)
349        }
350        if(sub3 ne 0)
351        {
352                if(sub1 eq 0)
353                {
354#                       target_set(587,30.0)
355                }
356        }
357        check_power
358}
359
360func powersub3(string ai_name)
361{
362        dprint powersub3_active
363        sub3 = 1;
364        particle spine3 do start
365        particle spinesound3 start
366        if(sub2 eq 0)
367        {
368#               target_set(595,30.0)
369        }
370
371        if(sub2 ne 0)
372        {
373                if(sub1 eq 0)
374                {
375#                       target_set(587,30.0)
376                }
377        }
378        check_power
379}
380
381func check_power(string ai_name)
382{
383        dprint check_power_active
384        counter = counter - 1
385        if (counter eq 1)
386        {
387                #sound_dialog_play c14_54_27konoko
388                #sound_dialog_play_block pause
389        }
390
391        if (counter eq 0)
392        {
393                dprint defenses_active
394
395        }
396}
397
398
399func void t9(string ai_name)
400{
401#Trigger after exit basement
402dprint heyT9
403}
404
405func void floor4_lock(string ai_name)
406{
407
408        door_unlock 36
409        door_open 36
410        door_jam 36
411        #trigvolume_enable trigger_volume_39 1
412
413}
414
415func void respawn(string ai_name)
416{
417
418ai2_spawn(ai_name, force)
419
420}
421
422func void TCTF_spawned(string ai_name)
423{
424ai2_movetoflag(ai_name, 9101)
425}
426
427func void BGI_spawned(string ai_name)
428{
429 ai2_movetoflag(ai_name, 9101)
430}
431
432var string last_BGI = "none";
433var string last_TCTF = "none";
434func void BGI_died(string ai_name)
435{
436        last_BGI = ai_name;
437        if (jubei_dead eq 0) {
438                ai2_spawn(ai_name, force)
439                ai2_setmovementmode(ai_name, run)
440                ai2_movetoflag(ai_name, 9101)
441                sleep 200
442                ai2_movetoflag(ai_name, 9101)
443                ai2_makeaware(ai_name, last_TCTF)
444}
445
446}
447
448func void TCTF_died(string ai_name)
449{
450        last_TCTF = ai_name;
451        ai2_spawn(ai_name, force)
452        ai2_setmovementmode(ai_name, run)
453        ai2_movetoflag(ai_name, 9101)
454        sleep 200
455        ai2_movetoflag(ai_name, 9101)
456        ai2_makeaware(ai_name, last_BGI)
457}
Note: See TracBrowser for help on using the repository browser.