diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/pooh.atl b/ATL/Pooh/pooh.atl index 0f4832f..0a7aed0 100644 --- a/ATL/Pooh/pooh.atl +++ b/ATL/Pooh/pooh.atl @@ -23,6 +23,7 @@ ;TODO development - remove before release define-player "Christopher Robin" description "Christopher Robin is my game dev character." - place "Hill" + place "Owl's Porch" item "Key" - item "Map" \ No newline at end of file + item "Map" + item "Letter" \ No newline at end of file diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/pooh.atl b/ATL/Pooh/pooh.atl index 0f4832f..0a7aed0 100644 --- a/ATL/Pooh/pooh.atl +++ b/ATL/Pooh/pooh.atl @@ -23,6 +23,7 @@ ;TODO development - remove before release define-player "Christopher Robin" description "Christopher Robin is my game dev character." - place "Hill" + place "Owl's Porch" item "Key" - item "Map" \ No newline at end of file + item "Map" + item "Letter" \ No newline at end of file diff --git a/doc/TODO b/doc/TODO index f02f30c..b1ee5f1 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,6 +2,8 @@ LISP * fix (string-from-list) bug +* infinite items are destroyed when dropped? ATL -* fix bugs +* remove Christopher Robin character +* fix Deep Forest bug diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/pooh.atl b/ATL/Pooh/pooh.atl index 0f4832f..0a7aed0 100644 --- a/ATL/Pooh/pooh.atl +++ b/ATL/Pooh/pooh.atl @@ -23,6 +23,7 @@ ;TODO development - remove before release define-player "Christopher Robin" description "Christopher Robin is my game dev character." - place "Hill" + place "Owl's Porch" item "Key" - item "Map" \ No newline at end of file + item "Map" + item "Letter" \ No newline at end of file diff --git a/doc/TODO b/doc/TODO index f02f30c..b1ee5f1 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,6 +2,8 @@ LISP * fix (string-from-list) bug +* infinite items are destroyed when dropped? ATL -* fix bugs +* remove Christopher Robin character +* fix Deep Forest bug diff --git a/doc/bugreport.txt b/doc/bugreport.txt index 00b2a30..a531c92 100644 --- a/doc/bugreport.txt +++ b/doc/bugreport.txt @@ -30,7 +30,7 @@ -> FIXED * Gerade stürzt das Spiel bei jedem Versuch, von den Central Woods woanders hin zu kommen, ab. Schade. - -> Could not reproduce + -> Reproducible on server, but not on laptop?! * Cool, was für schöne Details du eingebaut hast! Liebe Grüße, @@ -39,6 +39,6 @@ 06/11/2017: Game crashed when moving from Deep Forest to Central woods, with message -' is not a number' +' is not a number' (on server) -> Could not reproduce -> but see above! (Heisenbug?) diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/pooh.atl b/ATL/Pooh/pooh.atl index 0f4832f..0a7aed0 100644 --- a/ATL/Pooh/pooh.atl +++ b/ATL/Pooh/pooh.atl @@ -23,6 +23,7 @@ ;TODO development - remove before release define-player "Christopher Robin" description "Christopher Robin is my game dev character." - place "Hill" + place "Owl's Porch" item "Key" - item "Map" \ No newline at end of file + item "Map" + item "Letter" \ No newline at end of file diff --git a/doc/TODO b/doc/TODO index f02f30c..b1ee5f1 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,6 +2,8 @@ LISP * fix (string-from-list) bug +* infinite items are destroyed when dropped? ATL -* fix bugs +* remove Christopher Robin character +* fix Deep Forest bug diff --git a/doc/bugreport.txt b/doc/bugreport.txt index 00b2a30..a531c92 100644 --- a/doc/bugreport.txt +++ b/doc/bugreport.txt @@ -30,7 +30,7 @@ -> FIXED * Gerade stürzt das Spiel bei jedem Versuch, von den Central Woods woanders hin zu kommen, ab. Schade. - -> Could not reproduce + -> Reproducible on server, but not on laptop?! * Cool, was für schöne Details du eingebaut hast! Liebe Grüße, @@ -39,6 +39,6 @@ 06/11/2017: Game crashed when moving from Deep Forest to Central woods, with message -' is not a number' +' is not a number' (on server) -> Could not reproduce -> but see above! (Heisenbug?) diff --git a/lisp/ui.lisp b/lisp/ui.lisp index 4469c52..739cedf 100644 --- a/lisp/ui.lisp +++ b/lisp/ui.lisp @@ -284,7 +284,7 @@ (if (dolist (i (quest-proof-item quest)) (unless (member i (player-item player) :test #'equalp) (return T))) - (when (y-or-n-p "~%~A has a quest. Accept it?" npc-name) + (when (y-or-n-p "~%~A has a quest. Do you want to hear about it?" npc-name) (format t "~&~A: ~A" (string-upcase npc-name) (quest-say-before quest))) (when (y-or-n-p "~%Give to ~A: ~A?" npc-name diff --git a/ATL/Pooh/characters.atl b/ATL/Pooh/characters.atl index 1d60329..a636cd1 100644 --- a/ATL/Pooh/characters.atl +++ b/ATL/Pooh/characters.atl @@ -187,7 +187,7 @@ define-quest "Find Woozle" say-before "Oh Pooh, I found woozle tracks again! I'm pretty sure they weren't mine this time... And now I'm scared to go anywhere - outdoors! You need to help me!" + outdoors! You need to help me! Can you catch it for me?" say-after "Pooh, is that a woozle? Why, he's even smaller than me! And isn't he cute? No need to be scared of him! diff --git a/ATL/Pooh/dialogue/clues.txt b/ATL/Pooh/dialogue/clues.txt index 700df98..20374bd 100644 --- a/ATL/Pooh/dialogue/clues.txt +++ b/ATL/Pooh/dialogue/clues.txt @@ -2,7 +2,6 @@ Honey is made by bees, but collecting it can be a bit of work. Have you ever had a picknick at the Thoughtful Spot? Or at the Rapids? A lot of your friends need help, and they all know you like honey as a reward. -Seek and ye shall find! It's a good idea to go armed - what if you meet a Heffalump? Woozles are hard to catch, but it's worth the effort... Don't forget to search - seek and you shall find! @@ -10,3 +9,4 @@ Not all things are as they appear. Seek and ye shall find! If you're hurt, go and find Kanga. +If you chase Tigger long enough, he may have something for you. diff --git a/ATL/Pooh/pooh-extensions.lisp b/ATL/Pooh/pooh-extensions.lisp index 7423238..207dd78 100644 --- a/ATL/Pooh/pooh-extensions.lisp +++ b/ATL/Pooh/pooh-extensions.lisp @@ -9,12 +9,12 @@ (defun eat (player &optional arg) "Allow the player to eat something (dispatch function)." - (cond ((null arg) (format t "~&What do you want to eat?")) - ((equalp arg "berries") (eat-berries player)) - ((or (equalp arg "hunny") (equalp arg "honey")) (eat-honey player)) - ((member arg '("extract of malt" "extract" "malt") :test #'equalp) - (eat-malt player)) - (T (format t "~&You can't eat that!")))) + (let ((food (fuzzy-match arg '("berries" "hunny" "honey" "extract of malt")))) + (cond ((null arg) (format t "~&What do you want to eat?")) + ((equalp food "berries") (eat-berries player)) + ((or (equalp food "hunny") (equalp food "honey")) (eat-honey player)) + ((equalp food "extract of malt") (eat-malt player)) + (T (format t "~&You can't eat that!"))))) (defun eat-berries (player) "Berries can be eaten any time, but don't have any effect" @@ -39,7 +39,7 @@ "Extract of Malt is very healthy, so obviously it can't be tasty..." (if (member "Extract of Malt" (player-item player) :test #'equalp) (progn - (narrate "../ATL/Pooh/dialoge/extract-of-malt.txt" '(1 3 2 1 3 1)) + (narrate "../ATL/Pooh/dialogue/extract-of-malt.txt" '(1 3 2 1 3 1)) (change-player-health player 1)) (format t "~&You don't have any Extract of Malt!"))) @@ -89,7 +89,7 @@ (progn (format t "~&Ouch! That hurt! You take 2 HP fall damage.") (change-player-health player -2))) (sleep 4) - ;;FIXME Doesn't work - not neighbours + (goto player "Pooh's home") (goto player "Pooh's porch")) (defun kanga-healing (player) @@ -111,6 +111,12 @@ (format t "~&and knocks you over. When you sit up again, you see Tigger") (format t "~&grinning widely at you.") (sleep 4) (format t "~&~%Tigger bounces away toward ~A." (place-name neighbour)) + (if (get-state 'TIGGER-BOUNCES) + (save-state 'TIGGER-BOUNCES (1+ (get-state 'TIGGER-BOUNCES))) + (save-state 'TIGGER-BOUNCES 1)) + (when (= 5 (get-state 'TIGGER-BOUNCES)) + (format t "~&As he disappears, he drops a pot of honey.") + (set-object-attribute place 'item "Hunny")) (remove-object-attribute place 'npc "Tigger") (set-object-attribute neighbour 'npc "Tigger"))) @@ -344,8 +350,11 @@ "Owl reads a deposited letter to the player" (let ((place (get-game-object 'place "Owl's home"))) (when (get-state 'LETTER-DEPOSITED) + (sleep 2) (narrate "../ATL/Pooh/dialogue/letter.txt" - '(0 1 2 2 3 2 3 2 2 2 3 1))))) + '(0 1 2 2 3 2 3 2 2 2 3 1)) + (save-state 'LETTER-DEPOSITED NIL) + (set-object-attribute place 'item "Letter")))) (defun add-portrait (player &optional arg) "Once Owl has the picture frame, he can hang up the portrait again." diff --git a/ATL/Pooh/pooh.atl b/ATL/Pooh/pooh.atl index 0f4832f..0a7aed0 100644 --- a/ATL/Pooh/pooh.atl +++ b/ATL/Pooh/pooh.atl @@ -23,6 +23,7 @@ ;TODO development - remove before release define-player "Christopher Robin" description "Christopher Robin is my game dev character." - place "Hill" + place "Owl's Porch" item "Key" - item "Map" \ No newline at end of file + item "Map" + item "Letter" \ No newline at end of file diff --git a/doc/TODO b/doc/TODO index f02f30c..b1ee5f1 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,6 +2,8 @@ LISP * fix (string-from-list) bug +* infinite items are destroyed when dropped? ATL -* fix bugs +* remove Christopher Robin character +* fix Deep Forest bug diff --git a/doc/bugreport.txt b/doc/bugreport.txt index 00b2a30..a531c92 100644 --- a/doc/bugreport.txt +++ b/doc/bugreport.txt @@ -30,7 +30,7 @@ -> FIXED * Gerade stürzt das Spiel bei jedem Versuch, von den Central Woods woanders hin zu kommen, ab. Schade. - -> Could not reproduce + -> Reproducible on server, but not on laptop?! * Cool, was für schöne Details du eingebaut hast! Liebe Grüße, @@ -39,6 +39,6 @@ 06/11/2017: Game crashed when moving from Deep Forest to Central woods, with message -' is not a number' +' is not a number' (on server) -> Could not reproduce -> but see above! (Heisenbug?) diff --git a/lisp/ui.lisp b/lisp/ui.lisp index 4469c52..739cedf 100644 --- a/lisp/ui.lisp +++ b/lisp/ui.lisp @@ -284,7 +284,7 @@ (if (dolist (i (quest-proof-item quest)) (unless (member i (player-item player) :test #'equalp) (return T))) - (when (y-or-n-p "~%~A has a quest. Accept it?" npc-name) + (when (y-or-n-p "~%~A has a quest. Do you want to hear about it?" npc-name) (format t "~&~A: ~A" (string-upcase npc-name) (quest-say-before quest))) (when (y-or-n-p "~%Give to ~A: ~A?" npc-name diff --git a/lisp/util.lisp b/lisp/util.lisp index cbb6b35..a84e0ba 100644 --- a/lisp/util.lisp +++ b/lisp/util.lisp @@ -203,6 +203,8 @@ (search pattern (first l) :test test))) ((null l) (if multiple-matches NIL result)) (when (and next (or (not strict) (and strict (zerop next)))) + (when (equalp pattern (first l)) + (return-from fuzzy-match (first l))) (if (and result (not (equalp result (first l)))) (if (zerop next) (if start-match