--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/data/death.txt Sun Jan 08 12:34:16 2017 +0000
@@ -0,0 +1,7 @@
+You fall to the ground, unable to go on. The
+heat is stifling at first, but gradually you
+stop feeling it. Eventually you stop feeling
+anything at all.
+
+A warm, inviting light envelops your senses as
+your conciousness fades into nothingness.
--- a/package.lisp Sun Jan 08 12:25:16 2017 +0000
+++ b/package.lisp Sun Jan 08 12:34:16 2017 +0000
@@ -53,6 +53,7 @@
:player-get
:player-drop
:player-eat
+ :player-dead-p
:food
:make-food
--- a/src/entities/player.lisp Sun Jan 08 12:25:16 2017 +0000
+++ b/src/entities/player.lisp Sun Jan 08 12:34:16 2017 +0000
@@ -36,7 +36,7 @@
(defun tick-player (player)
(zapf (player/energy player) (clamp 0.0 140.0 (- % 0.3))
- (player/health player) (clamp 0.0 100.0
+ (player/health player) (clamp -1.0 100.0
(+ % (if (< (player/energy player) 1.0)
-0.5
0.1)))))
@@ -66,3 +66,6 @@
(food/energy food))
(removef (player/inventory player) food)
(destroy-entity food))
+
+(defun player-dead-p (player)
+ (<= (player/health player) 0.0))
--- a/src/main.lisp Sun Jan 08 12:25:16 2017 +0000
+++ b/src/main.lisp Sun Jan 08 12:34:16 2017 +0000
@@ -9,6 +9,7 @@
(defparameter *intro5* (read-file-into-string "data/intro5.txt"))
(defparameter *intro6* (read-file-into-string "data/intro6.txt"))
(defparameter *help* (read-file-into-string "data/help.txt"))
+(defparameter *death* (read-file-into-string "data/death.txt"))
(defparameter *screen-width* nil)
(defparameter *screen-height* nil)
@@ -311,6 +312,12 @@
,@body)))
+;;;; Death --------------------------------------------------------------------
+(defun death ()
+ (popup *death*)
+ (popup "Thanks for playing!"))
+
+
;;;; World Map ----------------------------------------------------------------
(defun terrain-char (height)
(cond ((< height -0.20) (values #\~ +blue-black+)) ; deep water
@@ -485,6 +492,7 @@
(popup (trigger/text trigger))
(destroy-entity trigger)))
+
(defun world-map ()
(with-dims ((- *screen-width* 2) (- *screen-height* 1))
(with-panels-and-windows
@@ -500,13 +508,15 @@
(redraw)
(if-first-time
(popup (format nil "You must head north to survive.~2%You can press h for help in-game."))
- (if (ap.flavor:flavorp)
- (popup (ap.flavor:random-flavor))
- (case (world-map-input bar-win)
- (:tick (tick-player *player*)
- (check-triggers))
- (:quit (return))
- (:help (popup *help*))))))))
+ (cond ((ap.flavor:flavorp)
+ (popup (ap.flavor:random-flavor)))
+ ((player-dead-p *player*)
+ (return (death)))
+ (t (case (world-map-input bar-win)
+ (:tick (tick-player *player*)
+ (check-triggers))
+ (:quit (return))
+ (:help (popup *help*)))))))))
nil)