Some mapper cleanup, including newbie area maps
This commit is contained in:
		
							
								
								
									
										2
									
								
								mfile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								mfile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| { | ||||
|   "package": "lotj-ui", | ||||
|   "version": "v2.0-beta.1" | ||||
|   "version": "v2.0" | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								src/resources/starter-map.dat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/resources/starter-map.dat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -42,14 +42,46 @@ end | ||||
|  | ||||
| -- Configuration of an amenity name to the environment code to use on rooms with it | ||||
| local amenityEnvCodes = { | ||||
|   bacta = 269, | ||||
|   bank = 267, | ||||
|   broadcast = 270, | ||||
|   hotel = 265, | ||||
|   library = 261, | ||||
|   locker = 263, | ||||
|   package = 262, | ||||
|   workshop = 266, | ||||
|   bacta = { | ||||
|     envCode = 269, | ||||
|     symbol = "B" | ||||
|   }, | ||||
|   bank = { | ||||
|     envCode = 267, | ||||
|     symbol = "B" | ||||
|   }, | ||||
|   broadcast = { | ||||
|     envCode = 270, | ||||
|     symbol = "B" | ||||
|   }, | ||||
|   hotel = { | ||||
|     envCode = 265, | ||||
|     symbol = "H" | ||||
|   }, | ||||
|   library = { | ||||
|     envCode = 261, | ||||
|     symbol = "L" | ||||
|   }, | ||||
|   locker = { | ||||
|     envCode = 263, | ||||
|     symbol = "L" | ||||
|   }, | ||||
|   package = { | ||||
|     envCode = 262, | ||||
|     symbol = "P" | ||||
|   }, | ||||
|   workshop = { | ||||
|     envCode = 266, | ||||
|     symbol = "W" | ||||
|   }, | ||||
|   ["turbolift landing"] = { | ||||
|     envCode = 259, | ||||
|     symbol = "L" | ||||
|   }, | ||||
|   ["turbolift"] = { | ||||
|     envCode = 263, | ||||
|     symbol = "T" | ||||
|   }, | ||||
| } | ||||
|  | ||||
| local function trim(s) | ||||
| @@ -122,15 +154,13 @@ function lotj.mapper.printHelp() | ||||
|   lotj.mapper.log("Mapper Command List") | ||||
|   cecho([[ | ||||
|  | ||||
| <yellow>map start <area name><reset> | ||||
| <yellow>map start [<area name>]<reset> | ||||
|  | ||||
| Begin mapping. Any new rooms you enter while mapping will be added to this area name, so you | ||||
| should be sure to stop mapping before entering a ship or moving to a different zone. | ||||
| should be sure to stop mapping before entering a ship or moving to a different planet. No area | ||||
| name argument is required if you're on a planet, as we'll default to the planet name. | ||||
|  | ||||
| Some tips to remember: | ||||
|  - <white>Move slowly<reset>, and wait for the map to reflect your movements before going to the next room. | ||||
|    The MUD sends data about your current room after some delay, so moving too fast will make the | ||||
|    mapper skip rooms or draw exits which aren't there. | ||||
|  - Use a light while mapping. Entering a dark room where you can't see will not update the map. | ||||
|  - Use <yellow>map shift<reset> to adjust room positioning, especially after going through turbolifts or | ||||
|    voice-activated doors. It's faster to click-and-drag with the GUI to move large blocks of | ||||
| @@ -161,8 +191,12 @@ end | ||||
| function lotj.mapper.startMapping(areaName) | ||||
|   areaName = trim(areaName) | ||||
|   if #areaName == 0 then | ||||
|     lotj.mapper.log("Syntax: map start <yellow><area name><reset>") | ||||
|     return | ||||
|     if lotj.mapper.current and lotj.mapper.current.planet then | ||||
|       areaName = lotj.mapper.current.planet | ||||
|     else | ||||
|       lotj.mapper.log("Syntax: map start <yellow><area name><reset>") | ||||
|       return | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   if lotj.mapper.mappingArea ~= nil then | ||||
| @@ -272,13 +306,7 @@ function lotj.mapper.setup() | ||||
|     end | ||||
|   end | ||||
|   if not hasAnyAreas then | ||||
|     lotj.mapper.mapperInstance:hide() | ||||
|     lotj.mapper.noAreasPrompt = Geyser.Label:new({ | ||||
|       x = 0, y = 0, | ||||
|       width = "100%", | ||||
|       height = "100%" | ||||
|     }, lotj.layout.upperRightTabData.contents["map"]) | ||||
|     lotj.mapper.noAreasPrompt:echo("No map data.<br><br>Use <b>map help</b> to get started.", nil, "c14") | ||||
|     loadMap(getMudletHomeDir().."/@PKGNAME@/starter-map.dat") | ||||
|   end | ||||
|  | ||||
|   lotj.setup.registerEventHandler("sysDataSendRequest", lotj.mapper.handleSentCommand) | ||||
| @@ -419,41 +447,31 @@ function lotj.mapper.processCurrentRoom() | ||||
| end | ||||
|  | ||||
|  | ||||
| function lotj.mapper.checkAmenityLine(roomName, amenityName, wasPending) | ||||
| function lotj.mapper.checkAmenityLine(roomName, amenityName) | ||||
|   if lotj.mapper.mappingArea == nil then | ||||
|     return | ||||
|   end | ||||
|  | ||||
|   envCode = amenityEnvCodes[string.lower(amenityName)] | ||||
|   if envCode == nil then | ||||
|   amenityData = amenityEnvCodes[string.lower(amenityName)] | ||||
|   if amenityData == nil then | ||||
|     return | ||||
|   end | ||||
|    | ||||
|   -- Sanity check that the current room matches the name we just saw | ||||
|   local addAmenityRoom = nil | ||||
|   if lotj.mapper.current.name == roomName then | ||||
|     addAmenityRoom = lotj.mapper.current | ||||
|   elseif lotj.mapper.last.name == roomName then | ||||
|     addAmenityRoom = lotj.mapper.last | ||||
|   else | ||||
|     return | ||||
|   end | ||||
|    | ||||
|   -- If this wasn't stored for later use, we need a newline since this is being invoked on | ||||
|   -- seeing a room name and we don't want it mushed into that line. | ||||
|   if not wasPending then | ||||
|     echo("\n") | ||||
|   end | ||||
|   -- This is being invoked on seeing a room name and we don't want it mushed into that line. | ||||
|   echo("\n") | ||||
|  | ||||
|   if addAmenityRoom == nil then | ||||
|     -- The room name we're triggering on might be the room we just entered but we haven't | ||||
|     -- received the GMCP event yet, so we'll store this for the next time we do. | ||||
|     lotj.mapper.pendingAmenity = { | ||||
|       roomName = roomName, | ||||
|       amenityName = amenityName, | ||||
|     } | ||||
|   else | ||||
|     lotj.mapper.log("Set amenity <yellow>"..amenityName.."<reset> on room <yellow>"..addAmenityRoom.name.."<reset>") | ||||
|     setRoomEnv(addAmenityRoom.vnum, envCode) | ||||
|     updateMap() | ||||
|   end | ||||
|   lotj.mapper.log("Set amenity <yellow>"..amenityName.."<reset> on room <yellow>"..addAmenityRoom.name.."<reset>") | ||||
|   setRoomEnv(addAmenityRoom.vnum, amenityData.envCode) | ||||
|   setRoomChar(addAmenityRoom.vnum, amenityData.symbol) | ||||
|   updateMap() | ||||
| end | ||||
|  | ||||
|  | ||||
| @@ -467,19 +485,26 @@ function lotj.mapper.onEnterRoom() | ||||
|     vnum = gmcp.Room.Info.vnum, | ||||
|     name = gmcp.Room.Info.name:gsub("&.", ""), | ||||
|     exits = gmcp.Room.Info.exits or {}, | ||||
|     planet = gmcp.Room.Info.planet, | ||||
|   } | ||||
|  | ||||
|   -- If the new room has has a planet different than the last one and we don't have | ||||
|   -- an area for that planet yet, give a prompt about how to start mapping it. | ||||
|   if lotj.mapper.current.planet then | ||||
|     if lotj.mapper.last and lotj.mapper.last.planet ~= lotj.mapper.current.planet then | ||||
|       if getAreaTable()[lotj.mapper.current.planet] == nil then | ||||
|         lotj.mapper.log("Welcome to <yellow>"..lotj.mapper.current.planet.."<reset>. ".. | ||||
|           "To begin mapping this area as you explore, type <yellow>map start<reset>.") | ||||
|         echo("\n") | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   lotj.mapper.processCurrentRoom() | ||||
|  | ||||
|   -- Since we've handled the move, we don't want the last move command to get | ||||
|   -- used by anything else. | ||||
|   lotj.mapper.lastMoveDir = nil | ||||
|    | ||||
|   local pendingAmenity = lotj.mapper.pendingAmenity | ||||
|   if pendingAmenity ~= nil then | ||||
|     lotj.mapper.checkAmenityLine(pendingAmenity.roomName, pendingAmenity.amenityName, true) | ||||
|     lotj.mapper.pendingAmenity = nil | ||||
|   end | ||||
| end | ||||
|  | ||||
|  | ||||
| @@ -518,6 +543,8 @@ function lotj.mapper.getRoomByCoords(areaName, x, y, z) | ||||
| end | ||||
|  | ||||
| function doSpeedWalk() | ||||
|   echo("Path we need to take: " .. table.concat(speedWalkDir, ", ") .. "\n") | ||||
|   echo("A future version of the mapper script might actually execute these commands.\n") | ||||
|   lotj.mapper.log("Speedwalking using these directions: " .. table.concat(speedWalkDir, ", ") .. "\n") | ||||
|   for _, dir in ipairs(speedWalkDir) do | ||||
|     send(dir, false) | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -56,6 +56,10 @@ | ||||
|         "pattern": "^\\( IMM \\| CHAT \\)\\[.*\\]: '.*'$", | ||||
|         "type": "regex" | ||||
|       }, | ||||
|       { | ||||
|         "pattern": "^\\( IMM \\| CHAT \\) You mortchat to .* '.*'$", | ||||
|         "type": "regex" | ||||
|       }, | ||||
|       { | ||||
|         "pattern": "^ImmNet\\[.*\\]: .*$", | ||||
|         "type": "regex" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user