diff --git a/data/lua/cave_map_generator.lua b/data/lua/cave_map_generator.lua index 2cea03df0162..d3c49dbc2eb8 100644 --- a/data/lua/cave_map_generator.lua +++ b/data/lua/cave_map_generator.lua @@ -74,6 +74,27 @@ function callbacks.generate_map(params) for chamber in wml.child_range(params, "chamber") do local chance = tonumber(chamber.chance) or 100 local x, y = MG.random_location(chamber.x, chamber.y) + if chamber.relative_to == "top-right" then + x = map.w - x + elseif chamber.relative_to == "bottom-right" then + x = map.w - x + y = map.h - y + elseif chamber.relative_to == "bottom-left" then + y = map.h - y + elseif chamber.relative_to == "top-middle" then + x = (map.w / 2) + x + elseif chamber.relative_to == "bottom-middle" then + x = (map.w / 2) + x + y = map.h - y + elseif chamber.relative_to == "middle-left" then + y = (map.h / 2) + y + elseif chamber.relative_to == "middle-right" then + y = (map.h / 2) + y + x = map.w - x + elseif chamber.relative_to == "center" then + x = (map.w / 2) + x + y = (map.h / 2) + y + end -- Default is "top-left" which means no adjustments needed local id = chamber.id if chance == 0 or random(100) > chance then -- Set chance to 0 so that the scenario generator can tell which chambers were used diff --git a/data/multiplayer/scenarios/Random_Scenario_Cave.cfg b/data/multiplayer/scenarios/Random_Scenario_Cave.cfg index 00afd6a6d758..e6c3b71cb3f2 100644 --- a/data/multiplayer/scenarios/Random_Scenario_Cave.cfg +++ b/data/multiplayer/scenarios/Random_Scenario_Cave.cfg @@ -89,12 +89,13 @@ Rb,Rb,Rb,Rb,Rb,Rb,Rb,Rb^Uf,Rb^Ii,Sm,Sm,Uue,Rb^Fetd,Rb^Fdw#enddef [/road_cost] #enddef -#define PLAYER_CHAMBER NUMBER X Y +#define PLAYER_CHAMBER NUMBER X Y REL [chamber] id=player_{NUMBER} require_player={NUMBER} x={X} y={Y} + relative_to={REL} size=5 jagged=2 [item_location] @@ -169,10 +170,10 @@ Rb,Rb,Rb,Rb,Rb,Rb,Rb,Rb^Uf,Rb^Ii,Sm,Sm,Uue,Rb^Fetd,Rb^Fdw#enddef jagged=12 terrain_clear=Wwg [/chamber] - {PLAYER_CHAMBER 1 3..10 3..10} - {PLAYER_CHAMBER 2 30..37 30..37} - {PLAYER_CHAMBER 3 3..10 30..37} - {PLAYER_CHAMBER 4 30..37 3..10} + {PLAYER_CHAMBER 1 3..10 3..10 top-left} + {PLAYER_CHAMBER 2 3..10 3..10 bottom-right} + {PLAYER_CHAMBER 3 3..10 3..10 bottom-left} + {PLAYER_CHAMBER 4 3..10 3..10 top-right} [/generator] [/multiplayer]