added license to scripts and shaders
[dd2d.git] / data / scripts / monster / chaingunner.dacs
blobab4075f3912249086a28594e4d447f0e6ea03739
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 monsterChaingunner is "monster" "Chaingunner";
20 import apiActor;
21 import aiMonster;
24 // setup actor animations
25 public void initializeAnim () {
26   // sleep
27   animClearFrames("monster", "Chaingunner", "sleep");
28   // left
29   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
30   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
31   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
32   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposb1.vga");
33   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposb1.vga");
34   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposb1.vga");
35   // right
36   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
37   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
38   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
39   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposb2.vga");
40   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposb2.vga");
41   animAddFrame("monster", "Chaingunner", "sleep", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposb2.vga");
42   // go
43   animClearFrames("monster", "Chaingunner", "go");
44   // left
45   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
46   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
47   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposb1.vga");
48   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposb1.vga");
49   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposd1.vga");
50   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposd1.vga");
51   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
52   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
53   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposc1.vga");
54   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposc1.vga");
55   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposd1.vga");
56   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/go/cposd1.vga");
57   // right
58   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
59   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
60   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposb2.vga");
61   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposb2.vga");
62   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposd2.vga");
63   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposd2.vga");
64   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
65   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
66   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposc2.vga");
67   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposc2.vga");
68   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposd2.vga");
69   animAddFrame("monster", "Chaingunner", "go", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/go/cposd2.vga");
70   // pain
71   animClearFrames("monster", "Chaingunner", "pain");
72   // left
73   animAddFrame("monster", "Chaingunner", "pain", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/pain/cposg1.vga");
74   // right
75   animAddFrame("monster", "Chaingunner", "pain", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/pain/cposg2.vga");
76   // wait
77   animClearFrames("monster", "Chaingunner", "wait");
78   // left
79   animAddFrame("monster", "Chaingunner", "wait", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/shared/cposa1.vga");
80   // right
81   animAddFrame("monster", "Chaingunner", "wait", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/shared/cposa2.vga");
82   // attack
83   animClearFrames("monster", "Chaingunner", "attack");
84   // left
85   animAddFrame("monster", "Chaingunner", "attack", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/attack/cpose1.vga");
86   animAddFrame("monster", "Chaingunner", "attack", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/attack/cposf1.vga");
87   // right
88   animAddFrame("monster", "Chaingunner", "attack", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/attack/cpose2.vga");
89   animAddFrame("monster", "Chaingunner", "attack", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/attack/cposf2.vga");
90   // die
91   animClearFrames("monster", "Chaingunner", "die");
92   // left
93   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposh0.vga");
94   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposh0.vga");
95   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposh0.vga");
96   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposi0.vga");
97   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposi0.vga");
98   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposi0.vga");
99   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposj0.vga");
100   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposj0.vga");
101   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposj0.vga");
102   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposk0.vga");
103   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposk0.vga");
104   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposk0.vga");
105   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposl0.vga");
106   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposl0.vga");
107   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposl0.vga");
108   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposm0.vga");
109   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposm0.vga");
110   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/die/cposm0.vga");
111   // right
112   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposh0.vga");
113   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposh0.vga");
114   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposh0.vga");
115   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposi0.vga");
116   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposi0.vga");
117   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposi0.vga");
118   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposj0.vga");
119   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposj0.vga");
120   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposj0.vga");
121   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposk0.vga");
122   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposk0.vga");
123   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposk0.vga");
124   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposl0.vga");
125   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposl0.vga");
126   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposl0.vga");
127   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposm0.vga");
128   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposm0.vga");
129   animAddFrame("monster", "Chaingunner", "die", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/die/cposm0.vga");
130   // slop
131   animClearFrames("monster", "Chaingunner", "slop");
132   // left
133   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposo0.vga");
134   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposo0.vga");
135   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposo0.vga");
136   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposp0.vga");
137   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposp0.vga");
138   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposp0.vga");
139   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposq0.vga");
140   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposq0.vga");
141   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposq0.vga");
142   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposr0.vga");
143   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposr0.vga");
144   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposr0.vga");
145   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposs0.vga");
146   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposs0.vga");
147   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/slop/cposs0.vga");
148   // right
149   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposo0.vga");
150   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposo0.vga");
151   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposo0.vga");
152   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposp0.vga");
153   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposp0.vga");
154   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposp0.vga");
155   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposq0.vga");
156   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposq0.vga");
157   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposq0.vga");
158   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposr0.vga");
159   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposr0.vga");
160   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposr0.vga");
161   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposs0.vga");
162   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposs0.vga");
163   animAddFrame("monster", "Chaingunner", "slop", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/slop/cposs0.vga");
164   // dead
165   animClearFrames("monster", "Chaingunner", "dead");
166   // left
167   animAddFrame("monster", "Chaingunner", "dead", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/dead/cposn0.vga");
168   // right
169   animAddFrame("monster", "Chaingunner", "dead", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/dead/cposn0.vga");
170   // mess
171   animClearFrames("monster", "Chaingunner", "mess");
172   // left
173   animAddFrame("monster", "Chaingunner", "mess", ACTOR_DIR_LEFT, "monsters/chaingunner/graphics/mess/cpost0.vga");
174   // right
175   animAddFrame("monster", "Chaingunner", "mess", ACTOR_DIR_RIGHT, "monsters/chaingunner/graphics/mess/cpost0.vga");
179 // change actor animation
180 public void setAnim (Actor me, string state) {
181   me.animidx = 0;
182   switch (state) {
183     case "sleep": me.animname = "sleep"; me.animstr = "AAABBB"; break;
184     case "go": me.animname = "go"; me.animstr = "AABBDDAACCDD"; break;
185     case "pain": me.animname = "pain"; me.animstr = "G"; break;
186     case "wait": me.animname = "wait"; me.animstr = "A"; break;
187     case "attack": me.animname = "attack"; me.animstr = "EF"; break;
188     case "die": me.animname = "die"; me.animstr = "HHHIIIJJJKKKLLLMMM"; break;
189     case "slop": me.animname = "slop"; me.animstr = "OOOPPPQQQRRRSSS"; break;
190     case "dead": me.animname = "dead"; me.animstr = "N"; break;
191     case "mess": me.animname = "mess"; me.animstr = "T"; break;
192     case "run": me.animname = "go"; me.animstr = "AABBDDAACCDD"; break;
193     case "climb": me.animname = "go"; me.animstr = "AABBDDAACCDD"; break;
194     case "runout": me.animname = "go"; me.animstr = "AABBDDAACCDD"; break;
195     case "shoot": me.animname = "attack"; me.animstr = "EF"; break;
196     case "revive": me.animname = "revive"; me.animstr = "MMMLLLKKKJJJIIIHHH"; break;
197     default: me.animname = "sleep"; me.animstr = "AAABBB"; break;
198   }
199   me.actorSetAnimation(state);
203 // setup actor properties
204 public void initialize (Actor me) {
205   // `classname` and `classtype` will be set by the engine
206   //me.classname = "Chaingunner";
207   //me.classtype = "monster";
208   me.radius = 12;
209   me.height = 28;
210   me.hitpoints = me.life = 60;
211   me.painin = 20;
212   me.xvel = 3;
213   me.yvel = 10;
214   me.slophit = 30;
215   me.painout = 10;
216   me.angertime = 90;
217   me.setAnim("sleep");
221 // thinker
222 public void think (Actor me) {
223   monsterThink(me);