Perseus's statue location on medusa-3 and medusa-4
Coming up to medusa-3 from the level below revealed that Perseus's statue was not there. It was placed randomly in one of the three chambers where Medusa might be rather than in the one where she actually was. Medusa-4 behaved similarly. Initially I was forcing the statue to be adjacent to Medusa rather than on her spot, but medusa-1 and medusa-2 don't do that so I've gone with a simplified revision.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- NetHack medusa medusa-3.lua $NHDT-Date: 1652196028 2022/05/10 15:20:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.7 $
|
||||
-- NetHack medusa medusa-3.lua $NHDT-Date: 1716152250 2024/05/19 20:57:30 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.8 $
|
||||
-- Copyright (c) 1989 by Jean-Christophe Collet
|
||||
-- Copyright (c) 1990, 1991 by M. Stephenson
|
||||
-- NetHack may be freely redistributed. See license for details.
|
||||
@@ -32,11 +32,21 @@ des.map([[
|
||||
]]);
|
||||
|
||||
local place = selection.new();
|
||||
-- each of these spots are inside a distinct room
|
||||
place:set(08,06);
|
||||
place:set(66,05);
|
||||
place:set(46,15);
|
||||
|
||||
local medloc = place:rndcoord(1);
|
||||
-- location of Medusa and downstairs and Perseus's statue
|
||||
local medloc = place:rndcoord(1,1);
|
||||
-- specific location for some other statue in a different downstairs-eligible
|
||||
-- room, to prevent object detection from becoming a trivial way to pinpoint
|
||||
-- Medusa's location
|
||||
-- [usefulness depends on future STATUE->dknown changes in nethack's core]
|
||||
local altloc = place:rndcoord(1,1);
|
||||
-- location of a fountain, in the remaining of three downstairs-eligible rooms
|
||||
local othloc = place:rndcoord(1,1);
|
||||
-- once here, all three points set in 'place' have been used up
|
||||
|
||||
des.region(selection.area(00,00,74,19),"lit")
|
||||
-- fixup_special hack: the first room defined on a Medusa level gets some
|
||||
@@ -56,15 +66,20 @@ des.non_diggable(selection.area(44,13,48,17))
|
||||
des.teleport_region({ region = {33,02,38,07}, dir="down" })
|
||||
des.levregion({ region = {32,01,39,07}, type="stair-up" });
|
||||
|
||||
-- place the downstairs at the same spot where Medusa will be placed
|
||||
des.stair("down", medloc);
|
||||
--
|
||||
des.door("locked",08,08)
|
||||
des.door("locked",64,05)
|
||||
des.door("random",50,13)
|
||||
des.door("locked",48,15)
|
||||
--
|
||||
des.feature("fountain", place:rndcoord(1));
|
||||
-- in one of the three designated rooms, but not the one with Medusa plus
|
||||
-- downstairs and also not 'altloc' where a random statue will be placed
|
||||
des.feature("fountain", othloc);
|
||||
--
|
||||
des.object({ id="statue", coord=place:rndcoord(1), buc = "uncursed",
|
||||
-- same spot as Medusa plus downstairs
|
||||
des.object({ id="statue", coord=medloc, buc="uncursed",
|
||||
montype="knight", historic=1, male=1,name="Perseus",
|
||||
contents = function()
|
||||
if percent(75) then
|
||||
@@ -82,7 +97,9 @@ des.object({ id="statue", coord=place:rndcoord(1), buc = "uncursed",
|
||||
end
|
||||
});
|
||||
--
|
||||
des.object({ id = "statue", contents=0 })
|
||||
-- first random statue is in one of the three designated rooms but not the
|
||||
-- one with Medusa plus downstairs or the one with the fountain
|
||||
des.object({ id = "statue", coord=altloc, contents=0 })
|
||||
des.object({ id = "statue", contents=0 })
|
||||
des.object({ id = "statue", contents=0 })
|
||||
des.object({ id = "statue", contents=0 })
|
||||
@@ -102,6 +119,8 @@ des.trap("board")
|
||||
des.trap("board")
|
||||
des.trap()
|
||||
--
|
||||
-- place Medusa before placing other monsters so that they won't be able to
|
||||
-- unintentionally steal her spot on the downstairs
|
||||
des.monster({ id = "Medusa", coord=medloc, asleep=1 })
|
||||
des.monster("giant eel")
|
||||
des.monster("giant eel")
|
||||
@@ -116,3 +135,4 @@ for i=1,30 do
|
||||
des.monster({ id = "raven", hostile = 1 })
|
||||
end
|
||||
|
||||
--#medusa-3.lua
|
||||
|
||||
Reference in New Issue
Block a user