1 | # Green Room
|
---|
2 | # A room for playing out moves against a chromakey background
|
---|
3 | # Recommended viewing size:
|
---|
4 | # |--------------------------------------------------------------------------|
|
---|
5 |
|
---|
6 | var int chose_yes = 0;
|
---|
7 | var int countdown = 10;
|
---|
8 |
|
---|
9 | func void main(void)
|
---|
10 | {
|
---|
11 | # Set up environment
|
---|
12 | sky_show_sky = 0; # hide skybox
|
---|
13 | gs_show_ui = 0; # do not show UI
|
---|
14 | m3_clear_color = 38400; # set background color to green
|
---|
15 | #gs_show_particles = 0; # hide particles
|
---|
16 | ui_suppress_prompt = 1; # turn off objective/help prompts
|
---|
17 |
|
---|
18 | fork DrawMainMenu();
|
---|
19 | fork WatchForYes();
|
---|
20 | }
|
---|
21 |
|
---|
22 | # Allow user to choose an anim showcase or just free-run
|
---|
23 | func void DrawMainMenu(void)
|
---|
24 | {
|
---|
25 | # XXX - also allow third option of fixed camera setup within free-run mode so user can perform his own moves from a fixed vantage point
|
---|
26 | dmsg("Welcome to Green Room");
|
---|
27 | dmsg("Want to run the animation showcase?");
|
---|
28 | dmsg("Press [jump] for 'yes' in the next");
|
---|
29 | dmsg("10 seconds. After that, you can");
|
---|
30 | dmsg("just free-run...");
|
---|
31 | sleep(300);
|
---|
32 | countdown = 5;
|
---|
33 | fork CountDown();
|
---|
34 | }
|
---|
35 |
|
---|
36 | # Count down while user has not made a choice in WatchForYes() yet
|
---|
37 | func void CountDown(void)
|
---|
38 | {
|
---|
39 | if (countdown eq 5)
|
---|
40 | dmsg("5...");
|
---|
41 | else if (countdown eq 4)
|
---|
42 | dmsg("4...");
|
---|
43 | else if (countdown eq 3)
|
---|
44 | dmsg("3...");
|
---|
45 | else if (countdown eq 2)
|
---|
46 | dmsg("2...");
|
---|
47 | else if (countdown eq 1)
|
---|
48 | dmsg("1...");
|
---|
49 | if ((countdown > 0) and (chose_yes eq 0))
|
---|
50 | {
|
---|
51 | sleep(60);
|
---|
52 | countdown = countdown - 1;
|
---|
53 | fork CountDown();
|
---|
54 | }
|
---|
55 | else
|
---|
56 | {
|
---|
57 | dmsg(" ");
|
---|
58 | dmsg(" ");
|
---|
59 | dmsg(" ");
|
---|
60 | dmsg(" ");
|
---|
61 | dmsg(" ");
|
---|
62 | }
|
---|
63 | }
|
---|
64 |
|
---|
65 | # Allow user to jump to choose to run an anim showcase
|
---|
66 | func void WatchForYes(void)
|
---|
67 | {
|
---|
68 | chr_wait_animtype(0, jump);
|
---|
69 | if ((countdown > 0) and (chose_yes eq 0))
|
---|
70 | {
|
---|
71 | chose_yes = 1;
|
---|
72 | chr_animate(0, KONOKOact_yes1);
|
---|
73 | sleep(20);
|
---|
74 | DrawShowcaseMenu();
|
---|
75 | }
|
---|
76 | }
|
---|
77 |
|
---|
78 | # XXX - break this out into functions for the menus described within
|
---|
79 | func void DrawShowcaseMenu(void)
|
---|
80 | {
|
---|
81 | # XXX - faction menu: pick faction
|
---|
82 | # XXX - 1. Konoko
|
---|
83 | # XXX - 2. Syndicate
|
---|
84 | # XXX - 3. TCTF
|
---|
85 | # XXX - 4. Civilian
|
---|
86 | # XXX - 5. Exit (free-run mode)
|
---|
87 |
|
---|
88 | # XXX - MELE menu: where needed, pick specific MELE ID under above faction -- see "Melee IDs by faction.rtf"; print name of MELE ID once it is selected
|
---|
89 |
|
---|
90 | # XXX - character variant menu: allow user to pick exact appearance of char
|
---|
91 |
|
---|
92 | # XXX - angle menu: allow user to pick angle to view char from -- at least offer left side and right side, but other options would be front, rear, top, 3/4 left side and 3/4 right side
|
---|
93 | # XXX - consider making these choices "checkboxes", i.e. you can choose to see moves from multiple angles, which will play the move successively from each angle
|
---|
94 |
|
---|
95 | # XXX - anim type menu: pick type -- attack, victim (hit, thrown, blownup, KOed, etc.), maneuver (dodge, jump, walk, run, crouch-walk, etc.)
|
---|
96 |
|
---|
97 | # XXX - variant menu: pick anim variant -- melee, RIF or PIS
|
---|
98 |
|
---|
99 | # XXX - change room color to a preset value that is suitable for this class, taking into account colors on char and colors of their particle effects
|
---|
100 |
|
---|
101 | # XXX - final menu: change color or start
|
---|
102 | # XXX - 1. Change Color (leads to color menu)
|
---|
103 | # XXX - 2. Run Showcase
|
---|
104 |
|
---|
105 | # XXX - color menu (if chosen)
|
---|
106 | # XXX - 1. Green
|
---|
107 | # XXX - 2. Blue
|
---|
108 | # XXX - 3. Black
|
---|
109 | # XXX - 4. White
|
---|
110 | # XXX - 5. Run Showcase
|
---|
111 |
|
---|
112 | PrepKonoko();
|
---|
113 |
|
---|
114 | # XXX - call specific RunShowcase_XXX() function
|
---|
115 | }
|
---|
116 |
|
---|
117 | # Set up Konoko for the showcase
|
---|
118 | func void PrepKonoko(void)
|
---|
119 | {
|
---|
120 | # Make Konoko invisible
|
---|
121 | chr_mini_me = 1;
|
---|
122 | chr_mini_me_amount = 0.0;
|
---|
123 | # XXX - pin Konoko so that user input doesn't have a chance of moving the camera or causing a sound effect to play
|
---|
124 | }
|
---|
125 |
|
---|
126 | # XXX - make 45 MELE-specific functions named like this, where "ID" = MELE ID
|
---|
127 | func void RunShowcase_ID(void)
|
---|
128 | {
|
---|
129 | # XXX - spawn chosen char and set focus to them or point camera at their spawn flag
|
---|
130 | # XXX - run through all anims for this combination of MELE ID, anim type (the attack / victim / maneuver option) and TRAC variant (COM / PIS / RIF)
|
---|
131 | # XXX - note: use table on https://wiki.oni2.net/Combat_moves as reference for TRAM names, etc.
|
---|
132 | # XXX - step 1: print each anim name (e.g. "Spinning Suplex"), TRAM name, and the input to trigger the move in-game
|
---|
133 | # XXX - step 2: clear this text after one second and play the anim
|
---|
134 | # XXX - step 3: wait some time after anim finishes for any particle effects to subside
|
---|
135 | # XXX - step 4: move char back to spawn flag and reset their facing
|
---|
136 | # XXX - note: put pistol or rifle in hand for PIS/RIF anims
|
---|
137 | # XXX - note: spawn dummy for throw anims so char can throw him or be thrown by him
|
---|
138 | # XXX - note: knock down char before playing getup anims
|
---|
139 | }
|
---|