# HG changeset patch # User Steve Losh # Date 1484869714 0 # Node ID 0d7c61117f41ab81b6c1603938c0dc86ffeed2e8 # Parent 5ac0bb8b19b55b52781b04654af0112f01e01e62 Formatting diff -r 5ac0bb8b19b5 -r 0d7c61117f41 src/robots/rpg-shopkeeper.lisp --- a/src/robots/rpg-shopkeeper.lisp Thu Jan 19 23:40:11 2017 +0000 +++ b/src/robots/rpg-shopkeeper.lisp Thu Jan 19 23:48:34 2017 +0000 @@ -243,6 +243,45 @@ (:bonus (expt 2.0 (second enchantment))))) +(defgeneric enchanted-armor-description + (base enchantment-type enchantment-arguments)) + +(defmethod enchanted-armor-description + (base (e (eql :protection)) enchantment-args) + (destructuring-bind (monster) enchantment-args + (format nil "~A of protection from ~A" base (monster-plural monster)))) + +(defmethod enchanted-armor-description + (base (e (eql :resistance)) enchantment-args) + (destructuring-bind ((noun adjective)) enchantment-args + (declare (ignore adjective)) + (format nil "~A of ~A resistance" base noun))) + +(defmethod enchanted-armor-description + (base (e (eql :bonus)) enchantment-args) + (destructuring-bind (val) enchantment-args + (format nil "+~D ~A" val base))) + + +(defgeneric enchanted-weapon-description + (base enchantment-type enchantment-arguments)) + +(defmethod enchanted-weapon-description + (base (e (eql :slaying)) enchantment-args) + (destructuring-bind (monster) enchantment-args + (format nil "~A of ~A-slaying" base (monster-singular monster)))) + +(defmethod enchanted-weapon-description + (base (e (eql :element)) enchantment-args) + (destructuring-bind (element) enchantment-args + (format nil "~A ~A" (second element) base))) + +(defmethod enchanted-weapon-description + (base (e (eql :bonus)) enchantment-args) + (destructuring-bind (val) enchantment-args + (format nil "+~D ~A" val base))) + + ;;;; Armor -------------------------------------------------------------------- (defclass* armor () (material piece enchantment ornament)) @@ -309,26 +348,6 @@ (if ornament 1.5 1.0)))) -(defgeneric enchanted-armor-description - (base enchantment-type enchantment-arguments)) - -(defmethod enchanted-armor-description - (base (e (eql :protection)) enchantment-args) - (destructuring-bind (monster) enchantment-args - (format nil "~A of protection from ~A" base (monster-plural monster)))) - -(defmethod enchanted-armor-description - (base (e (eql :resistance)) enchantment-args) - (destructuring-bind ((noun adjective)) enchantment-args - (declare (ignore adjective)) - (format nil "~A of ~A resistance" base noun))) - -(defmethod enchanted-armor-description - (base (e (eql :bonus)) enchantment-args) - (destructuring-bind (val) enchantment-args - (format nil "+~D ~A" val base))) - - (defun vanilla-armor-description (vanilla-armor) (format nil "~A ~A" (-> vanilla-armor armor-material material-name) @@ -435,25 +454,6 @@ (if ornament 1.5 1.0)))) -(defgeneric enchanted-weapon-description - (base enchantment-type enchantment-arguments)) - -(defmethod enchanted-weapon-description - (base (e (eql :slaying)) enchantment-args) - (destructuring-bind (monster) enchantment-args - (format nil "~A of ~A-slaying" base (monster-singular monster)))) - -(defmethod enchanted-weapon-description - (base (e (eql :element)) enchantment-args) - (destructuring-bind (element) enchantment-args - (format nil "~A ~A" (second element) base))) - -(defmethod enchanted-weapon-description - (base (e (eql :bonus)) enchantment-args) - (destructuring-bind (val) enchantment-args - (format nil "+~D ~A" val base))) - - (defun vanilla-weapon-description (vanilla-weapon) (with-weapon (vanilla-weapon) (format nil "~A ~A" @@ -540,7 +540,7 @@ (defun offer () (let ((item (item))) $("FOR SALE:" [!item item-description cap] :. "." - [for-the-low-price cap] !(item-value item) "GP." + [for-the-low-price cap] [!item item-value] "GP." :. #\newline #\newline :. sales-pitch)))