really compiles! ;-)
[dd2d.git] / data / scripts / monster / cyberdemon.dacs
blob45547e8b1273b3b4b6e73352e5df1b87a77ce88f
1 /* DooM2D: Midnight on the Firing Line
2  * coded by Ketmar // Invisible Vector <ketmar@ketmar.no-ip.org>
3  * Understanding is not required. Only obedience.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 module monsterCyberdemon is "monster" "Cyberdemon";
20 import apiActor;
21 import aiMonster;
24 // setup actor animations
25 public void initializeAnim () {
26   // sleep
27   animClearFrames("monster", "Cyberdemon", "sleep");
28   // left
29   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
30   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
31   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
32   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
33   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
34   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
35   // right
36   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
37   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
38   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
39   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
40   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
41   animAddFrame("monster", "Cyberdemon", "sleep", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
42   // go
43   animClearFrames("monster", "Cyberdemon", "go");
44   // left
45   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
46   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
47   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
48   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
49   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrd1.vga");
50   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrd1.vga");
51   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrc1.vga");
52   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrc1.vga");
53   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrd1.vga");
54   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/go/cybrd1.vga");
55   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
56   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybrb1.vga");
57   // right
58   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
59   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
60   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
61   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
62   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrd2.vga");
63   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrd2.vga");
64   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrc2.vga");
65   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrc2.vga");
66   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrd2.vga");
67   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/go/cybrd2.vga");
68   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
69   animAddFrame("monster", "Cyberdemon", "go", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybrb2.vga");
70   // pain
71   animClearFrames("monster", "Cyberdemon", "pain");
72   // left
73   animAddFrame("monster", "Cyberdemon", "pain", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/pain/cybrg1.vga");
74   // right
75   animAddFrame("monster", "Cyberdemon", "pain", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/pain/cybrg2.vga");
76   // wait
77   animClearFrames("monster", "Cyberdemon", "wait");
78   // left
79   animAddFrame("monster", "Cyberdemon", "wait", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/shared/cybra1.vga");
80   // right
81   animAddFrame("monster", "Cyberdemon", "wait", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/shared/cybra2.vga");
82   // attack
83   animClearFrames("monster", "Cyberdemon", "attack");
84   // left
85   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybre1.vga");
86   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybre1.vga");
87   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybre1.vga");
88   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybre1.vga");
89   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybre1.vga");
90   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/attack/cybrf1.vga");
91   // right
92   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybre2.vga");
93   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybre2.vga");
94   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybre2.vga");
95   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybre2.vga");
96   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybre2.vga");
97   animAddFrame("monster", "Cyberdemon", "attack", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/attack/cybrf2.vga");
98   // die
99   animClearFrames("monster", "Cyberdemon", "die");
100   // left
101   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
102   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
103   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
104   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybri0.vga");
105   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybri0.vga");
106   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybri0.vga");
107   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
108   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
109   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
110   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
111   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
112   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
113   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
114   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
115   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
116   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
117   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
118   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
119   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
120   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
121   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
122   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybro0.vga");
123   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybro0.vga");
124   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/die/cybro0.vga");
125   // right
126   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
127   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
128   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrh0.vga");
129   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybri0.vga");
130   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybri0.vga");
131   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybri0.vga");
132   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
133   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
134   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrj0.vga");
135   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
136   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
137   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrk0.vga");
138   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
139   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
140   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrl0.vga");
141   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
142   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
143   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrm0.vga");
144   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
145   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
146   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybrn0.vga");
147   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybro0.vga");
148   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybro0.vga");
149   animAddFrame("monster", "Cyberdemon", "die", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/die/cybro0.vga");
150   // slop
151   animClearFrames("monster", "Cyberdemon", "slop");
152   // left
153   // right
154   // dead
155   animClearFrames("monster", "Cyberdemon", "dead");
156   // left
157   animAddFrame("monster", "Cyberdemon", "dead", ACTOR_DIR_LEFT, "monsters/cyberdemon/graphics/dead/cybrp0.vga");
158   // right
159   animAddFrame("monster", "Cyberdemon", "dead", ACTOR_DIR_RIGHT, "monsters/cyberdemon/graphics/dead/cybrp0.vga");
160   // mess
161   animClearFrames("monster", "Cyberdemon", "mess");
162   // left
163   // right
167 // change actor animation
168 public void setAnim (Actor me, string state) {
169   me.animidx = 0;
170   switch (state) {
171     case "sleep": me.animname = "sleep"; me.animstr = "AAABBB"; break;
172     case "go": me.animname = "go"; me.animstr = "AABBDDCCDDBB"; break;
173     case "pain": me.animname = "pain"; me.animstr = "G"; break;
174     case "wait": me.animname = "wait"; me.animstr = "A"; break;
175     case "attack": me.animname = "attack"; me.animstr = "EEEEEF"; break;
176     case "die": me.animname = "die"; me.animstr = "HHHIIIJJJKKKLLLMMMNNNOOO"; break;
177     case "slop": me.animname = "slop"; me.animstr = ""; break;
178     case "dead": me.animname = "dead"; me.animstr = "P"; break;
179     case "mess": me.animname = "mess"; me.animstr = ""; break;
180     case "run": me.animname = "go"; me.animstr = "AABBDDCCDDBB"; break;
181     case "climb": me.animname = "go"; me.animstr = "AABBDDCCDDBB"; break;
182     case "runout": me.animname = "go"; me.animstr = "AABBDDCCDDBB"; break;
183     case "shoot": me.animname = "attack"; me.animstr = "EEEEEF"; break;
184     case "revive": me.animname = "revive"; me.animstr = "OOONNNMMMLLLKKKJJJIIIHHH"; break;
185     default: me.animname = "sleep"; me.animstr = "AAABBB"; break;
186   }
187   me.actorSetAnimation(state);
191 // setup actor properties
192 public void initialize (Actor me) {
193   // `classname` and `classtype` will be set by the engine
194   //me.classname = "Cyberdemon";
195   //me.classtype = "monster";
196   me.radius = 20;
197   me.height = 55;
198   me.hitpoints = me.life = 500;
199   me.painin = 70;
200   me.xvel = 5;
201   me.yvel = 10;
202   me.slophit = 0;
203   me.painout = 50;
204   me.angertime = 90;
205   me.setAnim("sleep");
209 // thinker
210 public void think (Actor me) {
211   monsterThink(me);