Lich mapping reference

From Elanthipedia
Jump to navigation Jump to search

Introduction to Mapping

All rooms need to have a wayto and a timeto. A wayto describes the movement to get to the room. The timeto describes how long it takes to get there (0.2 seconds is the default). ;automap handles adding this data automatically in most cases. If you map a room manually without ;automap then you need to be sure that you include both the timeto and the wayto, forgetting one will break ;go2's ability to navigate to that room.

Referencing Rooms

Room is the concept of a room. Its a class which defines the concept of a room in programming speak. Everything starts with Room.

Room.current refers to your current room.

Room[room_id] refers to some other room with the given id. It could be your current room if you give your current rooms id.

Useful Aliases

If you are using the Dependency suite of scripts, please run ;setupaliases to install these useful mapping aliases. If you are not, then please add the following aliases

 ;alias add lr = ;e echo Room[Room.current.id].inspect

Useful commands

;e echo Room.current.inspect
;e echo Room.current.wayto
;e Map.list[room_num].description.push(XMLData.room_description) #update current room description (useful for adding night/day description to rooms)

Common Mapping Techniques

Delete a room

Go to each surrounding room and perform the following, where "roomid" is the id of the room you are going to delete. It must be enclosed in quotation marks.

;e Room.current.wayto.delete("roomid")
;e Room.current.timeto.delete("roomid")

Finally, remove the room. Roomid is NOT quoted here. Enter it as a number.

;e Map.list[roomid] = nil

Complex Movements

Complicated actions ones which require multiple movements to get to the target room. A complex action is not just go, move, climb, etc... but involving searching to discover the path, or pushing an object to open a door. Use a stringproc to add these. Note: these actions require approval from the mapdb admin, and will lock the mapdatabase until they are approved/rejected. Do not add them without testing them.

;e Room.current.wayto['1220'] = StringProc.new(“fput 'search'; move 'go path'”)

Update Rooms with multiple descriptions

Go2 uses room descriptions part of determining what room you're in. If the room has multiple descriptions, the room you are in may appear to be unmapped during some seasonal/time change. To correct this, add the room description to the correct room. Do not remap the room.

This assumes you are standing in the target room with its new description and you know the roomid.

;repo checkout-mapdb
;e Map.list[1263].description.push(XMLData.room_description)
;repo upload-mapdb

Adding a new map image

Lets add a new map image!

Copied from lrn2map:

Step 6: Add to narost (if needed or wanted)

6a. Add the image to the map database. Narost will only display images that are already in the map database. If the image is already in the map database because it's used by other rooms, move on to 6b. If not, save the image in the lich\maps directory, go to a room that will use the image, and type ;e Room.current.image = 'filename' # substitute the actual filename of the image, including the file extension, but without the path.

6b. Start narost in fix mode (;type ;narost fix)

6c. Bring up the image in narost. Right-click in the narost window, click on “view map” in the popup menu, and click on the image name that you'll be adding to.

6d. Move the image around to find where your current room goes.

6e. Hold down the Shift and Ctrl keys, click on the top left and bottom right corners of the room on the image, let go of Shift and Ctrl.

6f. If there are more rooms to add, move to the next room in game, go to step 6d.

6g. Save the map database (type ;e Map.save). While the mapmap script saves the map database every time it closes, narost does not. You can save the map database as often as you like if you are worried about losing your progress.