aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Pouar <pouar@pouar.net>2020-09-16 17:00:32 -0500
committerGravatar Pouar <pouar@pouar.net>2020-09-16 17:00:32 -0500
commit836f90640fe158bd5918e612df46ce0a059212b0 (patch)
tree0eeadfb90bea586ddbfa6ba90928aa5d398e7427
parentadd lil koopalings pamps (diff)
optimization
-rw-r--r--core/classes.lisp2
-rw-r--r--data/enemies/eggbots.lisp2
-rw-r--r--data/enemies/haunted.lisp17
-rw-r--r--data/enemies/navy.lisp2
-rw-r--r--data/enemies/pirates.lisp2
-rw-r--r--data/enemies/pokemon.lisp2
-rw-r--r--data/enemies/rpgmaker.lisp117
-rw-r--r--data/items/misc.lisp4
-rw-r--r--data/moves/pokemon.lisp37
-rw-r--r--data/moves/regular.lisp71
-rw-r--r--data/prolog/enemies.lisp17
11 files changed, 142 insertions, 131 deletions
diff --git a/core/classes.lisp b/core/classes.lisp
index 628ef81..a71b9d8 100644
--- a/core/classes.lisp
+++ b/core/classes.lisp
@@ -22,6 +22,8 @@
(defmethod c2mop:validate-superclass ((class standard-class) (superclass element-type-class))
(error 'simple-error :format-control "Either you didn't use ~s to define ~s or you tried to inherit a class not defined with ~s" :format-arguments `(define-type ,(class-name class) define-type)))
(defclass element-type () () (:metaclass element-type-class))
+(defmethod make-load-form ((object element-type) &optional env)
+ (make-load-form-saving-slots object :environment env))
(defclass buff () ()
(:documentation #.(f:fmt nil "mixin for " (ref move :class) " or " (ref item :class) " that sets specified " (ref status-condition :class) " that causes buffs also uses this mixin")))
(defclass debuff () ()
diff --git a/data/enemies/eggbots.lisp b/data/enemies/eggbots.lisp
index 5b474a1..4116dcd 100644
--- a/data/enemies/eggbots.lisp
+++ b/data/enemies/eggbots.lisp
@@ -8,4 +8,4 @@
:male t
:attributes (list :not-ticklish t)
:bitcoins-per-level 40
- :element-types (make-instances yadfa-element-types:steel)))
+ :element-types '(#.(make-instance 'yadfa-element-types:steel))))
diff --git a/data/enemies/haunted.lisp b/data/enemies/haunted.lisp
index 534a83f..82edab6 100644
--- a/data/enemies/haunted.lisp
+++ b/data/enemies/haunted.lisp
@@ -1,5 +1,22 @@
;;;; -*- mode: Common-Lisp; sly-buffer-package: "yadfa-enemies"; coding: utf-8-unix; -*-
(in-package :yadfa-enemies)
+(defclass ghost (enemy) ()
+ (:default-initargs
+ :name "Ghost"
+ :description "Woooo, A Ghost"
+ :species "Ghost"
+ :male t
+ :attributes (list :not-ticklish t)
+ ;; the game can't tell the difference between ghosts and nonghosts when calculating the damage
+ ;; Unlike Pokemon, this game's engine doesn't hardcode special treatment like `(if (ghostp) (do-ghost-stuff) (do-normal-stuff))'
+ ;; so just give him infinity defense and health
+ :base-stats (list :health most-positive-fixnum
+ :attack 0
+ :defense float-features:long-float-positive-infinity
+ :energy most-positive-fixnum
+ :speed 120)
+ :element-types '(#.(make-instance 'yadfa-element-types:ghost))
+ :moves (make-instances yadfa-moves:ghost-tickle yadfa-moves:ghost-mush yadfa-moves:ghost-squish)))
(defmethod default-attack ((target team-member) (user ghost))
(declare (ignore target))
(f:fmt t (name-of user) " Acts all scary" #\Newline)
diff --git a/data/enemies/navy.lisp b/data/enemies/navy.lisp
index c316276..0a38117 100644
--- a/data/enemies/navy.lisp
+++ b/data/enemies/navy.lisp
@@ -10,7 +10,7 @@
:mudsport-chance 3
:bladder/contents (random 500)
:bowels/contents (random 700)
- :element-types (make-instances yadfa-element-types:water)
+ :element-types '(#.(make-instance 'yadfa-element-types:water))
:inventory (iter (for i from 0 to (random 5)) (collect (make-instance 'yadfa-items:navy-pullups)))
:bitcoins-per-level 60))
(defmethod process-battle-accident ((character navy-officer) attack (item item) reload (selected-target base-character))
diff --git a/data/enemies/pirates.lisp b/data/enemies/pirates.lisp
index 994925a..ee3cb17 100644
--- a/data/enemies/pirates.lisp
+++ b/data/enemies/pirates.lisp
@@ -8,7 +8,7 @@
:male (a:random-elt '(t nil))
:bladder/contents (random 500)
:bowels/contents (random 700)
- :element-types (make-instances yadfa-element-types:water)
+ :element-types '(#.(make-instance 'yadfa-element-types:water))
:watersport-limit 300
:mudsport-limit 400
:inventory (iter (for i from 0 to (random 20)) (collect (make-instance 'yadfa-items:diaper)))))
diff --git a/data/enemies/pokemon.lisp b/data/enemies/pokemon.lisp
index 391c127..b2ca043 100644
--- a/data/enemies/pokemon.lisp
+++ b/data/enemies/pokemon.lisp
@@ -7,7 +7,7 @@
:species "Magikarp"
:male (a:random-elt '(t nil))
:bitcoins-per-level 10
- :element-types (make-instances yadfa-element-types:water)))
+ :element-types '(#.(make-instance 'yadfa-element-types:water))))
(defmethod attack ((target team-member) (user magikarp) (attack null))
(declare (ignore target attack))
(format t "~a uses Splash, obviously it had no effect. What did you think was going to happen?" (name-of user)))
diff --git a/data/enemies/rpgmaker.lisp b/data/enemies/rpgmaker.lisp
index 7028d1c..45f3d8d 100644
--- a/data/enemies/rpgmaker.lisp
+++ b/data/enemies/rpgmaker.lisp
@@ -22,21 +22,34 @@
a)
(wear-of c))
(push (make-instance (if (malep c) 'yadfa-items:shendyt 'yadfa-items:kalasiris)) (wear-of c))))
-(defclass diapered-skunk (potty-enemy skunk-boop-mixin) ()
- (:default-initargs
- :name "Diapered Skunk"
- :description "They spray their diapers when attacking. Their diapers reek of a smell of urine, feces, and skunk spray."
- :species "Skunk"
- :male (a:random-elt '(t nil))
- :bladder/contents (random 500)
- :bowels/contents (random 700)
- :watersport-chance 3
- :mudsport-chance 3
- :bitcoins-per-level 100
- :inventory (iter (for i from 0 to (random 10))
- (collect (make-instance 'yadfa-items:high-capacity-diaper)))
- :element-types (make-instances yadfa-element-types:poison)
- :moves (make-instances yadfa-moves:spray yadfa-moves:face-sit)))
+(progn
+ (defclass diapered-skunk (potty-enemy skunk-boop-mixin) ()
+ (:default-initargs
+ :name "Diapered Skunk"
+ :description "They spray their diapers when attacking. Their diapers reek of a smell of urine, feces, and skunk spray."
+ :species "Skunk"
+ :male (a:random-elt '(t nil))
+ :bladder/contents (random 500)
+ :bowels/contents (random 700)
+ :watersport-chance 3
+ :mudsport-chance 3
+ :bitcoins-per-level 100
+ :inventory (iter (for i from 0 to (random 10))
+ (collect (make-instance 'yadfa-items:high-capacity-diaper)))
+ :element-types '(#1=#.(make-instance 'yadfa-element-types:poison))
+ :moves (make-instances yadfa-moves:spray yadfa-moves:face-sit)))
+ (defclass diapered-skunk* (potty-enemy skunk-boop-mixin) ()
+ (:default-initargs
+ :name "Diapered Skunk"
+ :species "Skunk"
+ :male (a:random-elt '(t nil))
+ :bladder/contents (random 500)
+ :bowels/contents (random 700)
+ :watersport-chance 3
+ :mudsport-chance 3
+ :bitcoins-per-level 100
+ :element-types '(#1#)
+ :moves (make-instances yadfa-moves:spray yadfa-moves:face-sit))))
(defmethod initialize-instance :after
((c diapered-skunk) &key (watersport-limit nil watersportp) (mudsport-limit nil mudsportp)
(wear nil wearp) &allow-other-keys)
@@ -94,18 +107,6 @@
(mess :messer character)
(set-status-condition 'yadfa-status-conditions:messing character))
t))))
-(defclass diapered-skunk* (potty-enemy skunk-boop-mixin) ()
- (:default-initargs
- :name "Diapered Skunk"
- :species "Skunk"
- :male (a:random-elt '(t nil))
- :bladder/contents (random 500)
- :bowels/contents (random 700)
- :watersport-chance 3
- :mudsport-chance 3
- :bitcoins-per-level 100
- :element-types (make-instances yadfa-element-types:poison)
- :moves (make-instances yadfa-moves:spray yadfa-moves:face-sit)))
(defmethod initialize-instance :after
((c diapered-skunk*) &key (watersport-limit nil watersportp) (mudsport-limit nil mudsportp)
(wear nil wearp) (description nil descriptionp) &allow-other-keys)
@@ -165,40 +166,42 @@
(mess :messer character)
(set-status-condition 'yadfa-status-conditions:messing character))
t))))
-(defclass diapered-dragon (potty-enemy) ()
- (:default-initargs
- :name "Diapered Dragon"
- :description "Keeps kobolds as pets. Waits until the last minute because \{,s}he's not some hatchling that has to use the potty all the time\""
- :species "Dragon"
- :male (a:random-elt '(t nil))
- :bladder/contents (random 500)
- :bowels/contents (random 700)
- :bitcoins-per-level 100
- :wear (list (make-instance 'yadfa-items:black-leather-jacket)
- (make-instance 'yadfa-items:high-capacity-diaper))
- :inventory (nconc (iter (for i from 0 to (random 20))
- (collect (make-instance 'yadfa-items:high-capacity-diaper)))
- (iter (for i from 0 to (random 20))
- (collect (make-instance 'yadfa-items:kurikia-thick-diaper))))
- :element-types (make-instances yadfa-element-types:dragon yadfa-element-types:fire yadfa-element-types:flying)
- :moves (make-instances yadfa-moves:tickle yadfa-moves:roar yadfa-moves:mush yadfa-moves:fire-breath)))
+(progn
+ (defclass diapered-dragon (potty-enemy) ()
+ (:default-initargs
+ :name "Diapered Dragon"
+ :description "Keeps kobolds as pets. Waits until the last minute because \{,s}he's not some hatchling that has to use the potty all the time\""
+ :species "Dragon"
+ :male (a:random-elt '(t nil))
+ :bladder/contents (random 500)
+ :bowels/contents (random 700)
+ :bitcoins-per-level 100
+ :wear (list (make-instance 'yadfa-items:black-leather-jacket)
+ (make-instance 'yadfa-items:high-capacity-diaper))
+ :inventory (nconc (iter (for i from 0 to (random 20))
+ (collect (make-instance 'yadfa-items:high-capacity-diaper)))
+ (iter (for i from 0 to (random 20))
+ (collect (make-instance 'yadfa-items:kurikia-thick-diaper))))
+ :element-types '(#1=#.(make-instance 'yadfa-element-types:dragon) #.(make-instance 'yadfa-element-types:fire)
+ #.(make-instance 'yadfa-element-types:flying))
+ :moves (make-instances yadfa-moves:tickle yadfa-moves:roar yadfa-moves:mush yadfa-moves:fire-breath)))
+ (defclass dergy (bladder-enemy) ()
+ (:default-initargs
+ :name "Dergy"
+ :description "An alien dragon like species that liquefies its food, so he lacks bowels as everything goes through its bladder. But since all that mass is forced through its bladder now, it fills up much quicker, so they have to go more often and can't hold it in for as long."
+ :species "Dergy"
+ :malep (a:random-elt '(t nil))
+ :bitcoins-per-level 100
+ :bladder/fill-rate (* (/ 14000 24 60) 2)
+ :wear (list (make-instance 'yadfa-items:kurikia-thick-rubber-diaper))
+ :inventory (iter (for i from 0 to (random 20))
+ (collect (make-instance 'yadfa-items:kurikia-thick-rubber-diaper)))
+ :element-types '(#1#)
+ :moves (make-instances yadfa-moves:tickle yadfa-moves:roar yadfa-moves:mush yadfa-moves:fire-breath))))
(defclass diapered-dragon* (diapered-dragon pantsable-character) ()
(:default-initargs
:description "Keeps kobolds as pets. Wears pants to hide {his,her} padding. Waits until the last minute because \"{,s}he's not some hatchling that has to use the potty all the time\""
:wear (make-instances yadfa-items:black-leather-jacket yadfa-items:baggy-jeans yadfa-items:high-capacity-diaper)))
-(defclass dergy (bladder-enemy) ()
- (:default-initargs
- :name "Dergy"
- :description "An alien dragon like species that liquefies its food, so he lacks bowels as everything goes through its bladder. But since all that mass is forced through its bladder now, it fills up much quicker, so they have to go more often and can't hold it in for as long."
- :species "Dergy"
- :malep (a:random-elt '(t nil))
- :bitcoins-per-level 100
- :bladder/fill-rate (* (/ 14000 24 60) 2)
- :wear (list (make-instance 'yadfa-items:kurikia-thick-rubber-diaper))
- :inventory (iter (for i from 0 to (random 20))
- (collect (make-instance 'yadfa-items:kurikia-thick-rubber-diaper)))
- :element-types (list (make-instance 'yadfa-element-types:dragon))
- :moves (make-instances yadfa-moves:tickle yadfa-moves:roar yadfa-moves:mush yadfa-moves:fire-breath)))
;;; Raptors would most likely not have bladders irl, but I already threw
;;; scientific accuracy out the window when I gave them scales instead of feathers.
diff --git a/data/items/misc.lisp b/data/items/misc.lisp
index 7251b09..36c70ec 100644
--- a/data/items/misc.lisp
+++ b/data/items/misc.lisp
@@ -111,6 +111,10 @@
(:default-initargs
:name "Ghost Catcher"
:description "Use this to catch ghosts"))
+;;; actual class isn't loaded yet, but methods need a class defined, so define a dummy class
+;;; which should get replaced later in the loading process
+(unless (find-class 'yadfa-enemies:ghost nil)
+ (defclass yadfa-enemies:ghost () ()))
(defmethod cant-use-p ((item ghost-catcher) (user base-character) (target base-character) action &key &allow-other-keys)
(values t `(:format-control "~a can't be used on ~a" :format-arguments `(,(name-of item) ,(name-of target)))))
(defmethod cant-use-p ((item ghost-catcher) (user base-character) (target yadfa-enemies:ghost) action &key &allow-other-keys)
diff --git a/data/moves/pokemon.lisp b/data/moves/pokemon.lisp
index af22b06..cfd1882 100644
--- a/data/moves/pokemon.lisp
+++ b/data/moves/pokemon.lisp
@@ -12,11 +12,23 @@
name
name)
(setf (health-of target) 0))
-(defclass watersport (wet-move-mixin) ()
- (:default-initargs
- :name "Watersport"
- :description "Soak your diapers"
- :element-types (list (make-instance 'yadfa-element-types:abdl))))
+(progn
+ (defclass watersport (wet-move-mixin) ()
+ (:default-initargs
+ :name "Watersport"
+ :description "Soak your diapers"
+ :element-types '(#1=#.(make-instance 'yadfa-element-types:abdl))))
+ (defclass mudsport (mess-move-mixin) ()
+ (:default-initargs
+ :name "Mudsport"
+ :description "mess your diapers"
+ :element-types '(#1#)))
+ (defclass mudbomb (mess-move-mixin debuff) ()
+ (:default-initargs
+ :name "Mud Bomb"
+ :description "massively mess your diapers, never fails"
+ :energy-cost 5
+ :element-types '(#1# #.(make-instance 'yadfa-element-types:poison)))))
(defmethod attack ((target base-character) (user base-character) (attack watersport)
&aux (name (name-of user)))
(declare (ignore target))
@@ -24,11 +36,6 @@
(format t "But it failed~%")
(progn (wet :wetter user)
(format t "~a wet ~a~%" name (if (malep user) "himself" "herself")))))
-(defclass mudsport (mess-move-mixin) ()
- (:default-initargs
- :name "Mudsport"
- :description "mess your diapers"
- :element-types (list (make-instance 'yadfa-element-types:abdl))))
(defmethod attack ((target base-character) (user base-character) (attack mudsport)
&aux (name (name-of user)))
(declare (ignore target))
@@ -38,12 +45,6 @@
(format t "~a messed ~a~%"
name
(if (malep user) "himself" "herself")))))
-(defclass mudbomb (mess-move-mixin debuff) ()
- (:default-initargs
- :name "Mud Bomb"
- :description "massively mess your diapers, never fails"
- :energy-cost 5
- :element-types (list (make-instance 'yadfa-element-types:abdl) (make-instance 'yadfa-element-types:poison))))
(defmethod attack ((target base-character) (user base-character) (attack mudbomb))
(write-line "But it failed."))
(defmethod attack ((target base-character) (user bowels-character) (attack mudbomb)
@@ -71,7 +72,7 @@
(:default-initargs
:name "Tackle"
:description "Tackles the enemy"
- :element-types (list (make-instance 'yadfa-element-types:normal))))
+ :element-types '(#.(make-instance 'yadfa-element-types:normal))))
(defclass roar (move debuff) ()
(:default-initargs
:name "Roar"
@@ -95,4 +96,4 @@
:name "Bite"
:description "Bites the enemy"
:power 80
- :element-types (list (make-instance 'yadfa-element-types:dark))))
+ :element-types '(#.(make-instance 'yadfa-element-types:dark))))
diff --git a/data/moves/regular.lisp b/data/moves/regular.lisp
index 7f2696d..54c6478 100644
--- a/data/moves/regular.lisp
+++ b/data/moves/regular.lisp
@@ -1,10 +1,40 @@
;;;; -*- mode: Common-Lisp; sly-buffer-package: "yadfa-moves"; coding: utf-8-unix; -*-
(in-package :yadfa-moves)
-(defclass mush (move debuff) ()
- (:default-initargs
- :name "Mush"
- :description "Mush the target's diaper"
- :element-types (list (make-instance 'yadfa-element-types:abdl))))
+(progn
+ (defclass mush (move debuff) ()
+ (:default-initargs
+ :name "Mush"
+ :description "Mush the target's diaper"
+ :element-types '(#1=#.(make-instance 'yadfa-element-types:abdl))))
+ (defclass spray (move debuff) ()
+ (:default-initargs
+ :name "Spray"
+ :description "Spray the target with skunk spray. Also fills your pamps with skunk spray while you're at it."
+ :energy-cost 5
+ :element-types '(#2=#.(make-instance 'yadfa-element-types:poison))))
+ (defclass face-sit (mess-move-mixin damage-move debuff) ()
+ (:default-initargs
+ :name "Face Sit"
+ :energy-cost 3
+ :power 40
+ :description "Sits on the enemy's face and messes"
+ :element-types '(#1# #2#)))
+ (defclass teleporting-flood (wet-move-mixin) ()
+ (:default-initargs
+ :name "Teleporting Flood"
+ :description "Flood your diapers, but enchants the diaper so it all teleports into someone else's diaper."
+ :element-types '(#1#)))
+ (defclass teleporting-mess (mess-move-mixin) ()
+ (:default-initargs
+ :name "Teleporting Mess"
+ :description "Mess your diapers, but enchants the diaper so it all teleports into someone else's diaper."
+ :element-types '(#1# #2#)))
+ (defclass fart (mess-move-mixin debuff) ()
+ (:default-initargs
+ :name "fart"
+ :description "Grosses out the enemies with gas. If poisoned or if desperate, you may end up messing yourself instead."
+ :energy-cost 10
+ :element-types '(#1# #2#))))
(defmethod attack ((target base-character) (user base-character) (attack mush))
(declare (ignore attack))
(if (filter-items (wear-of user) 'incontinence-product)
@@ -84,12 +114,6 @@
(progn
(format t "~a tries to pants ~a~%" (name-of user) (name-of target))
(format t "The attack has no effect on ~a~%" (name-of target))))))
-(defclass spray (move debuff) ()
- (:default-initargs
- :name "Spray"
- :description "Spray the target with skunk spray. Also fills your pamps with skunk spray while you're at it."
- :energy-cost 5
- :element-types (list (make-instance 'yadfa-element-types:poison))))
(defmethod attack ((target base-character) (user base-character) (attack spray))
(format t "~a used ~a~%" (name-of user) (name-of attack))
(let ((amount 50))
@@ -141,14 +165,7 @@
:energy-cost 5
:power 60
:description "Breathes fire at the enemy"
- :element-types (list (make-instance 'yadfa-element-types:fire))))
-(defclass face-sit (mess-move-mixin damage-move debuff) ()
- (:default-initargs
- :name "Face Sit"
- :energy-cost 3
- :power 40
- :description "Sits on the enemy's face and messes"
- :element-types (list (make-instance 'yadfa-element-types:abdl) (make-instance 'yadfa-element-types:poison))))
+ :element-types '(#.(make-instance 'yadfa-element-types:fire))))
(defmethod attack ((target base-character) (user base-character) (self face-sit))
(let* ((m (mess :messer user))
(c (calculate-diaper-usage user)))
@@ -159,34 +176,18 @@
(format t "~a is grossed out by the smell~%" (name-of target))
(set-status-condition 'yadfa-status-conditions:skunked target))
(format t "~a is damaged by the impact~%" (name-of target))))
-(defclass teleporting-flood (wet-move-mixin) ()
- (:default-initargs
- :name "Teleporting Flood"
- :description "Flood your diapers, but enchants the diaper so it all teleports into someone else's diaper."
- :element-types (list (make-instance 'yadfa-element-types:abdl))))
(defmethod attack ((target base-character) (user base-character) (self teleporting-flood))
(if (< (bladder/contents-of user) (bladder/need-to-potty-limit-of user))
(format t "But it failed~%")
(progn (wet :wetter user :clothes (wear-of target))
(format t "~a gets a freaked expression on ~a face as ~a floods ~a's pamps~%" (name-of target) (if (malep target) "his" "her")
(name-of user) (name-of target)))))
-(defclass teleporting-mess (mess-move-mixin) ()
- (:default-initargs
- :name "Teleporting Mess"
- :description "Mess your diapers, but enchants the diaper so it all teleports into someone else's diaper."
- :element-types (list (make-instance 'yadfa-element-types:abdl) (make-instance 'yadfa-element-types:poison))))
(defmethod attack ((target base-character) (user base-character) (self teleporting-mess))
(if (< (bowels/contents-of user) (bowels/need-to-potty-limit-of user))
(format t "But it failed~%")
(progn (mess :messer user :clothes (wear-of target))
(format t "~a gets a freaked expression on ~a face as ~a messes ~a's pamps~%" (name-of target) (if (malep target) "his" "her")
(name-of user) (name-of target)))))
-(defclass fart (mess-move-mixin debuff) ()
- (:default-initargs
- :name "fart"
- :description "Grosses out the enemies with gas. If poisoned or if desperate, you may end up messing yourself instead."
- :energy-cost 10
- :element-types (list (make-instance 'yadfa-element-types:abdl) (make-instance 'yadfa-element-types:poison))))
(defmethod attack ((target base-character) (user base-character) (attack fart))
(f:fmt t "But it failed." #\Newline))
(defmethod attack :around ((target base-character) (user bowels-character) (attack fart))
diff --git a/data/prolog/enemies.lisp b/data/prolog/enemies.lisp
index da717c6..e623ca1 100644
--- a/data/prolog/enemies.lisp
+++ b/data/prolog/enemies.lisp
@@ -16,20 +16,3 @@
(defclass skunk-boop-mixin (base-character) ())
(defmethod change-class-text ((class adoptable-enemy))
(format nil "~a was adopted" (name-of class)))
-(defclass ghost (enemy) ()
- (:default-initargs
- :name "Ghost"
- :description "Woooo, A Ghost"
- :species "Ghost"
- :male t
- :attributes (list :not-ticklish t)
- ;; the game can't tell the difference between ghosts and nonghosts when calculating the damage
- ;; Unlike Pokemon, this game's engine doesn't hardcode special treatment like `(if (ghostp) (do-ghost-stuff) (do-normal-stuff))'
- ;; so just give him infinity defense and health
- :base-stats (list :health most-positive-fixnum
- :attack 0
- :defense float-features:long-float-positive-infinity
- :energy most-positive-fixnum
- :speed 120)
- :element-types (make-instances yadfa-element-types:ghost)
- :moves (make-instances yadfa-moves:ghost-tickle yadfa-moves:ghost-mush yadfa-moves:ghost-squish)))