X Tutup
Skip to content

Commit 94d5f04

Browse files
committed
the MAD DOG
1 parent 23b0f9f commit 94d5f04

File tree

5 files changed

+70
-8
lines changed

5 files changed

+70
-8
lines changed

enemy.moon

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ class MoveSequence extends Sequence
1313
dt = coroutine.yield!
1414
time -= dt
1515

16+
thing\set_direction Vec2d vx, vy if thing.set_direction
17+
1618
real_dt = if time < 0 then dt + time else dt
1719
cx, cy = thing\fit_move real_dt * vx, real_dt * vy
1820
vx = -vx if cx
1921
vy = -vy if cy
2022

23+
thing\set_direction! if thing.set_direction
2124
coroutine.yield "more", -time if time < 0
2225

2326
shake: (thing, total_time, mx=5, my=5, speed=10, decay_to=0) ->
@@ -37,6 +40,10 @@ class MoveSequence extends Sequence
3740
thing.ox, thing.oy = ox, oy
3841
coroutine.yield "more", -time if time < 0
3942

43+
charge: (thing, dir, speed=200, decay=0.5) ->
44+
thing.velocity = dir\normalized! * speed
45+
Sequence.default_scope.tween thing.velocity, decay, [1]: 0, [2]: 0
46+
thing\set_direction dir
4047
}
4148

4249
class Enemy extends Entity
@@ -107,6 +114,7 @@ class Enemy extends Entity
107114

108115
module "enemies", package.seeall
109116

117+
-- wanders around
110118
class GreenSlime extends Enemy
111119
life: 15
112120
blood_color: {267,244,129}
@@ -179,6 +187,7 @@ class BounceBullet extends Bullet
179187
else
180188
super!
181189

190+
-- charges
182191
class BlueSlime extends Enemy
183192
life: 21
184193

@@ -257,3 +266,58 @@ class RedSlime extends Enemy
257266
class BadRedSlime extends RedSlime
258267
bullet_cls: BounceBullet
259268

269+
270+
class MadDog extends Enemy
271+
life: 45
272+
273+
new: (...) =>
274+
super ...
275+
276+
with Spriter"img/sprite.png"
277+
stand_left_right = { "60,65,17,12", "60,78,17,12" }
278+
stand_up_down = { "82,52,5,13", "82,65,5,13" }
279+
280+
left_right = { "60,65,17,12", "60,52,17,12" }
281+
up_down = { "82,52,5,13", "93,52,5,13" }
282+
283+
@anim = StateAnim "stand_left", {
284+
stand_down: \seq stand_up_down, 0.25, true, true
285+
stand_up: \seq stand_up_down, 0.25
286+
287+
stand_right: \seq stand_left_right, 0.25, true
288+
stand_left: \seq stand_left_right, 0.25
289+
290+
walk_down: \seq up_down, 0.25, false, true
291+
walk_up: \seq up_down, 0.25
292+
293+
walk_right: \seq left_right, 0.25, true
294+
walk_left: \seq left_right, 0.25
295+
}
296+
297+
set_direction: (other_vel) =>
298+
v = @velocity
299+
v += other_vel if other_vel
300+
@anim\set_state @direction_name "left", v
301+
302+
update: (dt) =>
303+
super dt
304+
305+
make_ai: =>
306+
@ai = MoveSequence ->
307+
wait 0.5
308+
player = @world.game.player
309+
vec = @box\vector_to player.box
310+
311+
if vec\len! < 60
312+
shake self, 0.3, 2, 1
313+
charge self, vec, 150, 0.3
314+
wait 0.1
315+
charge self, @box\vector_to(player.box), 150, 0.3
316+
else
317+
dx, dy = unpack Vec2d.random 25
318+
move self, dx, dy, 0.6
319+
320+
again!
321+
322+
323+

img/map.png

63 Bytes
Loading

img/sprite.png

583 Bytes
Loading

levels/all.moon

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ class Level extends World
141141
["179,158,125"]: (x,y) =>
142142
@entities\add enemies.RedSlime self,x,y
143143
Autotile.types.floor
144+
145+
["219,134,0"]: (x,y) =>
146+
@entities\add enemies.MadDog self,x,y
147+
Autotile.types.floor
144148
}
145149

146150
make_map: =>

main.moon

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class Player extends Entity
7979
walk_left: \seq {9, 10}, 0.25, true
8080
}
8181

82+
8283
attack: =>
8384
@weapon\try_attack! unless @stunned
8485

@@ -109,14 +110,7 @@ class Player extends Entity
109110
@velocity = movement_vector 120 unless @stunned
110111

111112
if not @stunned
112-
base = if @velocity\is_zero! then
113-
"stand"
114-
else
115-
@last_direction = @velocity\direction_name!
116-
"walk"
117-
118-
dir = @last_direction or "down"
119-
@anim\set_state base .. "_" .. dir
113+
@anim\set_state @direction_name!
120114

121115
@weapon\update dt if @weapon
122116
@anim\update dt

0 commit comments

Comments
 (0)
X Tutup