scripts restructured; teleswitch now works
[dd2d.git] / data / scripts / monster / demon.dacs
blob07894991b62a6dfc7d6a309de1720baece17eef4
1 module monsterDemon is "monster" "Demon";
3 import apiActor;
4 import aiMonster;
7 // setup actor animations
8 public void initializeAnim () {
9   // sleep
10   animClearFrames("monster", "Demon", "sleep");
11   // left
12   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
13   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
14   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
15   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sargb1b2.vga");
16   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sargb1b2.vga");
17   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sargb1b2.vga");
18   // right
19   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
20   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
21   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
22   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sargb1b2_mirrored.vga");
23   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sargb1b2_mirrored.vga");
24   animAddFrame("monster", "Demon", "sleep", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sargb1b2_mirrored.vga");
25   // go
26   animClearFrames("monster", "Demon", "go");
27   // left
28   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
29   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
30   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sargb1b2.vga");
31   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sargb1b2.vga");
32   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/go/sargc1c2.vga");
33   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/go/sargc1c2.vga");
34   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/go/sargd1d2.vga");
35   animAddFrame("monster", "Demon", "go", ACTOR_DIR_LEFT, "monsters/demon/graphics/go/sargd1d2.vga");
36   // right
37   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
38   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
39   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sargb1b2_mirrored.vga");
40   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sargb1b2_mirrored.vga");
41   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/go/sargc1c2_mirrored.vga");
42   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/go/sargc1c2_mirrored.vga");
43   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/go/sargd1d2_mirrored.vga");
44   animAddFrame("monster", "Demon", "go", ACTOR_DIR_RIGHT, "monsters/demon/graphics/go/sargd1d2_mirrored.vga");
45   // pain
46   animClearFrames("monster", "Demon", "pain");
47   // left
48   animAddFrame("monster", "Demon", "pain", ACTOR_DIR_LEFT, "monsters/demon/graphics/pain/sargh1.vga");
49   // right
50   animAddFrame("monster", "Demon", "pain", ACTOR_DIR_RIGHT, "monsters/demon/graphics/pain/sargh2.vga");
51   // wait
52   animClearFrames("monster", "Demon", "wait");
53   // left
54   animAddFrame("monster", "Demon", "wait", ACTOR_DIR_LEFT, "monsters/demon/graphics/shared/sarga1a2.vga");
55   // right
56   animAddFrame("monster", "Demon", "wait", ACTOR_DIR_RIGHT, "monsters/demon/graphics/shared/sarga1a2_mirrored.vga");
57   // attack
58   animClearFrames("monster", "Demon", "attack");
59   // left
60   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sarge1.vga");
61   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sarge1.vga");
62   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sargf1.vga");
63   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sargf1.vga");
64   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sargg1.vga");
65   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_LEFT, "monsters/demon/graphics/attack/sargg1.vga");
66   // right
67   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sarge2.vga");
68   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sarge2.vga");
69   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sargf2.vga");
70   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sargf2.vga");
71   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sargg2.vga");
72   animAddFrame("monster", "Demon", "attack", ACTOR_DIR_RIGHT, "monsters/demon/graphics/attack/sargg2.vga");
73   // die
74   animClearFrames("monster", "Demon", "die");
75   // left
76   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargi0.vga");
77   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargi0.vga");
78   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargi0.vga");
79   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargj0.vga");
80   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargj0.vga");
81   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargj0.vga");
82   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargk0.vga");
83   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargk0.vga");
84   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargk0.vga");
85   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargl0.vga");
86   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargl0.vga");
87   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargl0.vga");
88   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargm0.vga");
89   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargm0.vga");
90   animAddFrame("monster", "Demon", "die", ACTOR_DIR_LEFT, "monsters/demon/graphics/die/sargm0.vga");
91   // right
92   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargi0.vga");
93   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargi0.vga");
94   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargi0.vga");
95   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargj0.vga");
96   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargj0.vga");
97   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargj0.vga");
98   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargk0.vga");
99   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargk0.vga");
100   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargk0.vga");
101   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargl0.vga");
102   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargl0.vga");
103   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargl0.vga");
104   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargm0.vga");
105   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargm0.vga");
106   animAddFrame("monster", "Demon", "die", ACTOR_DIR_RIGHT, "monsters/demon/graphics/die/sargm0.vga");
107   // slop
108   animClearFrames("monster", "Demon", "slop");
109   // left
110   // right
111   // dead
112   animClearFrames("monster", "Demon", "dead");
113   // left
114   animAddFrame("monster", "Demon", "dead", ACTOR_DIR_LEFT, "monsters/demon/graphics/dead/sargn0.vga");
115   // right
116   animAddFrame("monster", "Demon", "dead", ACTOR_DIR_RIGHT, "monsters/demon/graphics/dead/sargn0.vga");
117   // mess
118   animClearFrames("monster", "Demon", "mess");
119   // left
120   // right
124 // change actor animation
125 public void setAnim (Actor me, string state) {
126   me.animidx = 0;
127   switch (state) {
128     case "sleep": me.animname = "sleep"; me.animstr = "AAABBB"; break;
129     case "go": me.animname = "go"; me.animstr = "AABBCCDD"; break;
130     case "pain": me.animname = "pain"; me.animstr = "H"; break;
131     case "wait": me.animname = "wait"; me.animstr = "A"; break;
132     case "attack": me.animname = "attack"; me.animstr = "EEFFGG"; break;
133     case "die": me.animname = "die"; me.animstr = "IIIJJJKKKLLLMMM"; break;
134     case "slop": me.animname = "slop"; me.animstr = ""; break;
135     case "dead": me.animname = "dead"; me.animstr = "N"; break;
136     case "mess": me.animname = "mess"; me.animstr = ""; break;
137     case "run": me.animname = "go"; me.animstr = "AABBCCDD"; break;
138     case "climb": me.animname = "go"; me.animstr = "AABBCCDD"; break;
139     case "runout": me.animname = "go"; me.animstr = "AABBCCDD"; break;
140     case "shoot": me.animname = "attack"; me.animstr = "EEFFGG"; break;
141     case "revive": me.animname = "revive"; me.animstr = "MMMLLLKKKJJJIII"; break;
142     default: me.animname = "sleep"; me.animstr = "AAABBB"; break;
143   }
144   me.actorSetAnimation(state);
148 // setup actor properties
149 public void initialize (Actor me) {
150   // `classname` and `classtype` will be set by the engine
151   //me.classname = "Demon";
152   //me.classtype = "monster";
153   me.radius = 15;
154   me.height = 28;
155   me.hitpoints = me.life = 60;
156   me.painin = 20;
157   me.xvel = 7;
158   me.yvel = 10;
159   me.slophit = 0;
160   me.painout = 10;
161   me.angertime = 90;
162   me.setAnim("sleep");
166 // thinker
167 public void think (Actor me) {
168   monsterThink(me);