X Tutup
Skip to content

Commit 0e1d716

Browse files
committed
cool blue slime and cooler ai
1 parent 124b5db commit 0e1d716

File tree

3 files changed

+72
-15
lines changed

3 files changed

+72
-15
lines changed

enemy.moon

Lines changed: 64 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,25 @@ class MoveSequence extends Sequence
1818
vx = -vx if cx
1919
vy = -vy if cy
2020

21-
if time < 0
22-
coroutine.yield "more", -time
21+
coroutine.yield "more", -time if time < 0
22+
23+
shake: (thing, total_time, mx=5, my=5, speed=10, decay_to=0) ->
24+
ox, oy = thing.ox, thing.oy
25+
26+
time = total_time
27+
while time > 0
28+
time -= coroutine.yield!
29+
decay = math.min(math.max(time, decay_to), 1)
30+
31+
dx = decay * mx * math.sin(time*10*speed)
32+
dy = decay * my * math.cos(time*10*speed)
33+
34+
thing.ox = ox + dx
35+
thing.oy = oy + dy
36+
37+
thing.ox, thing.oy = ox, oy
38+
coroutine.yield "more", -time if time < 0
39+
2340
}
2441

2542
class Enemy extends Entity
@@ -39,19 +56,9 @@ class Enemy extends Entity
3956

4057
new: (...) =>
4158
super ...
42-
@sprite = with Spriter imgfy"img/sprite.png", 10, 13
43-
.ox = 60
44-
45-
@anim = @sprite\seq {0, 1}, 0.2
4659
@make_ai!
4760

48-
make_ai: =>
49-
@ai = MoveSequence ->
50-
wait 0.5
51-
dx, dy = unpack Vec2d.random 10
52-
move self, dx, dy, 1.0
53-
wait 0.5
54-
again!
61+
make_ai: => error "implement me"
5562

5663
draw: =>
5764
@hit\before! if @hit
@@ -95,3 +102,47 @@ class Enemy extends Entity
95102
@make_ai!
96103

97104

105+
module "enemies", package.seeall
106+
107+
class GreenSlime extends Enemy
108+
new: (...) =>
109+
super ...
110+
@sprite = with Spriter imgfy"img/sprite.png", 10, 13
111+
.ox = 60
112+
@anim = @sprite\seq {0, 1}, 0.2
113+
114+
make_ai: =>
115+
@ai = MoveSequence ->
116+
wait 0.5
117+
dx, dy = unpack Vec2d.random 10
118+
move self, dx, dy, 1.0
119+
wait 0.5
120+
again!
121+
122+
123+
class BlueSlime extends Enemy
124+
new: (...) =>
125+
super ...
126+
@sprite = with Spriter imgfy"img/sprite.png", 10, 13
127+
.ox = 80
128+
129+
@anim = @sprite\seq {0, 1}, 0.2
130+
131+
make_ai: =>
132+
@ai = MoveSequence ->
133+
wait 0.5
134+
player = @world.game.player
135+
vec = @box\vector_to player.box
136+
137+
if vec\len! < 55
138+
shake self, 0.8, 2, 1
139+
@velocity = vec\normalized! * 200
140+
tween @velocity, 0.5, [1]: 0, [2]: 0
141+
else
142+
dx, dy = unpack Vec2d.random 10
143+
move self, dx, dy, 1.0
144+
wait 0.5
145+
146+
again!
147+
148+

img/map.png

1 Byte
Loading

levels/all.moon

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,15 @@ class Level extends World
130130
@decorations\add FloorDecor x,y
131131
Autotile.types.floor
132132

133-
-- normal slime
133+
134+
135+
-- bad dudes below
134136
["212,201,29"]: (x,y) =>
135-
@entities\add Enemy self,x,y
137+
@entities\add enemies.GreenSlime self,x,y
138+
Autotile.types.floor
139+
140+
["249,244,156"]: (x,y) =>
141+
@entities\add enemies.BlueSlime self,x,y
136142
Autotile.types.floor
137143
}
138144

0 commit comments

Comments
 (0)
X Tutup