Begin nethack-factory map

This commit is contained in:
Jaidyn Ann 2023-07-15 01:50:46 -05:00
parent 763fb6afc5
commit 30e564ee47
5 changed files with 108 additions and 23 deletions

View File

@ -18,6 +18,7 @@
(:file "res/clocks")
(:file "res/maps/base.tmx")
(:file "res/maps/casino.tmx")
(:file "res/maps/factory.tmx")
(:file "res/maps/flashback-base.tmx")
(:file "res/maps/flashback-casino.tmx")
(:file "res/maps/flashback-school.tmx")

View File

@ -134,6 +134,14 @@ Useful for making barriers the player character refuses to traverse."
map (symbol-value (read-from-string (getf trigger-plist :map)))))))
(defun avatar-change-trigger (map &optional trigger-plist)
"A somewhat weird trigger that changes the player's face or avatar."
(setf (getf-entity-data map 'player :talking-face) (getf trigger-plist :talking-face))
(setf (getf-entity-data map 'player :face) (getf trigger-plist :face))
(setf (getf-entity-data map 'player :avatar) (getf trigger-plist :avatar))
(list :parameters (list :map map)))
(defun entrance-interact (map interactee)
"An interact function that can be used to move the user from one MAP to another,
via the :MAP property in the INTERACTEEs Tiled entity."
@ -212,21 +220,6 @@ run the :USE function of the nearest entity, if it has any."
;;; ———————————————————————————————————
;;; The Outside World™
;;; ———————————————————————————————————
(defun factory-window-interact (&optional map interactee-id)
(make-dialogue-state
map
(start-dialogue
(💬:face 'player "` `" "`o`")
(💬:mumble 'player :eo "(Al ĉi tiu fenesto tute mankas vitro!)"
:en "(This window's got no pane at all!)")
(💬:mumble 'player :eo "(Mi kredeble povus grimpi tien, fakte...)"
:en "(I could probably fit my way in there, actually...)")
(💬:mumble 'player :eo "(... sed ĉu vere farindas?)"
:en "(... but should I?)"
:face "`o`"))))
;;; ———————————————————————————————————
;;; Random outdoors NPCs
@ -818,6 +811,24 @@ avoid triggering this."
:map *flashback-base-map*))
;;; ———————————————————————————————————
;;; Factory!
;;; ———————————————————————————————————
(defun factory-window-interact (&optional map interactee-id)
(make-dialogue-state
map
(start-dialogue
(💬:face 'player "` `" "`o`")
(💬:mumble 'player :eo "(Al ĉi tiu fenesto tute mankas vitro!)"
:en "(This window's got no pane at all!)")
(💬:mumble 'player :eo "(Mi kredeble povus grimpi tien, fakte...)"
:en "(I could probably fit my way in there, actually...)")
(💬:mumble 'player :eo "(... sed ĉu vere farindas?)"
:en "(... but should I?)"
:face "`o`"))))
;;; ———————————————————————————————————
;;; Casino!
@ -1204,6 +1215,7 @@ Initializes the current instance of the game, and such."
(lambda (matrix)
(defparameter *base-map* (🌍:plist->map (metacopy:copy-thing *base-map-plist*)))
(defparameter *casino-map* (🌍:plist->map (metacopy:copy-thing *casino-map-plist*)))
(defparameter *factory-map* (🌍:plist->map (metacopy:copy-thing *factory-map-plist*)))
(defparameter *flashback-base-map* (🌍:plist->map (metacopy:copy-thing *flashback-base-map-plist*)))
(defparameter *flashback-casino-map* (🌍:plist->map (metacopy:copy-thing *flashback-casino-map-plist*)))
(defparameter *flashback-school-map* (🌍:plist->map (metacopy:copy-thing *flashback-school-map-plist*)))

67
res/maps/factory.tmx Normal file
View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="left-down" width="72" height="20" tilewidth="17" tileheight="17" infinite="0" nextlayerid="4" nextobjectid="8">
<tileset firstgid="1" source="font.tsx"/>
<layer id="1" name="Foreground" width="72" height="20">
<properties>
<property name="colliding" type="bool" value="true"/>
</properties>
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,93,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<objectgroup id="3" name="Triggers">
<object id="4" name="Transform to nethack" x="129.125" y="242.854" width="33.3333" height="7.33333">
<properties>
<property name="avatar" value="@"/>
<property name="function" value="✿:avatar-change-trigger"/>
</properties>
</object>
<object id="5" name="No more nethack!" x="127.458" y="260.521" width="37" height="4.66667">
<properties>
<property name="face" value="@w@"/>
<property name="function" value="✿:avatar-change-trigger"/>
<property name="talking-face" value="@o@"/>
</properties>
</object>
<object id="6" name="Exit window" type="Trigger" x="145" y="333.667">
<properties>
<property name="desc-en">(Back through the window, alley-oop!)
</property>
<property name="desc-eo">(Ree tra la fenestro!)
</property>
<property name="id" value="✿:factory-exit-window"/>
<property name="interact" value="✿:entrance-interact"/>
<property name="map" value="✿::*outdoors-map*"/>
</properties>
<point/>
</object>
</objectgroup>
<objectgroup id="2" name="People">
<object id="1" name="Player" type="Person" x="143.773" y="317.318">
<properties>
<property name="facing-right" type="bool" value="false"/>
<property name="id" value="✿:player"/>
</properties>
<point/>
</object>
</objectgroup>
</map>

View File

@ -1576,13 +1576,17 @@
</object>
<object id="19" name="Entrance window" x="2802.83" y="383.667">
<properties>
<property name="desc-en">(These doors are *really* locked.)
(Literally, I think they used pad-locks on padlocks...?)</property>
<property name="desc-eo">(La apudmara ŝtono!)
(Mi memoras, ke la gepatroj rakontis al mi pri ĝi...)
(... ke antaŭ jarcentoj, ĝi estis akra glavo kontraŭ granda drako.)</property>
<property name="desc-en">(Al ĉi tiu fenesto tute mankas vitro!)
(Mi kredeble povus grimpi tien, fakte...)
(... sed ĉu vere farindas?)
</property>
<property name="desc-eo">(This window's got no pane at all!)
(I could probably fit my way in there, actually...)
(... but should I?)
</property>
<property name="id" value="✿:factory-window"/>
<property name="interact" value="✿:factory-window-interact"/>
<property name="interact" value="✿:entrance-interact"/>
<property name="map" value="✿::*factory-map*"/>
</properties>
<point/>
</object>
@ -1872,7 +1876,7 @@ DANĜERA LOKO - VENENA MATERIO
</object>
</objectgroup>
<objectgroup id="7" name="People">
<object id="2" name="Player" type="Person" x="3341.33" y="1677.34">
<object id="2" name="Player" type="Person" x="2806.33" y="491.34">
<properties>
<property name="facing-right" type="bool" value="true"/>
<property name="id" value="✿:player"/>

View File

@ -16,6 +16,7 @@
(overworld.tiled:load-map (local-path (format nil "res/maps/~A.tmx" map-name)))
":FLORA-SEARCH-AURORA"
(format nil "*~A-map-plist*" map-name)))
'("base" "casino" "flashback-base" "flashback-casino" "flashback-school" "outdoors"))
'("base" "casino" "factory" "flashback-base" "flashback-casino"
"flashback-school" "outdoors"))
(quit)