Scale Ziggurat monsters per floor very harsly to number of completed zigs
authortheTower <mwclaws@gmail.com>
Thu, 18 Sep 2014 03:40:37 +0000 (23:40 -0400)
committertheTower <mwclaws@gmail.com>
Thu, 18 Sep 2014 03:40:37 +0000 (23:40 -0400)
This is it, this is the top end of raw danger Crawl can provide (if
certainly not relative danger). There's not much left besides re-arranging
the player and monsters, adding (even) more depth-scaling to each floor,
or throwing out the randomness and just placing solely top threats.

At zero ziggurats left on the last floor, there should be no differences
from before. At six ziggurats completed, smaller early floors can be
completely full of monsters, and the last floors can easily reach the hard,
game-limited monsters per floor cap of 700. At thirteen ziggurats, the
depth-scaling hd-pool that ziggurat floors rely on will be almost maxed
out per floor, and the scaling is essentially done. This might put some
stress on the game itself and the servers, though it should take a while
before people make it that far.

Rewards will slightly, slowly, and randomly scale up to completed zigs
not that they really matter. Both forms of scaling only happens for completing
a Zig (so leaving a floor early will avoid the monster scaling), but I'm not
greatly concerned: after the first zig, further zigs are for bragging rights
in the first place. Those who want to continue to relish the raw top power a
character can have against the raw top threats the game can provide can make
use of said trick, but indefinite zig raiding is not much of a recognizable
accomplishment following that trick.

There was some dev discussion on removing the guarantee on the Depths ziggurat
and making the sole source of ziggurats past the first one (in Pan) be
an evokable available only on Zig:27. I'd support such further changes.

crawl-ref/source/dat/descript/branches.txt
crawl-ref/source/dat/dlua/ziggurat.lua

index 4161f03..2eafd25 100644 (file)
@@ -208,6 +208,11 @@ faint of heart: even the bravest and most skilled adventurers have met their
 ends in one. While a portal to safety will be present on every level, once
 left, a ziggurat cannot be re-entered.
 
+One ziggurat is guaranteed in the Depths, and further ones can be found
+in Pandemonium. These towers and their contents will react violently to
+those that can conquer them, and scale up according to how many ziggurats
+an adventurer has completed.
+
 It can only be entered when carrying at least three runes of Zot.
 %%%%
 Labyrinth
index 5365977..64b20ce 100644 (file)
@@ -385,7 +385,9 @@ end
 local dgn_passable = dgn.passable_excluding("closed_door")
 
 local function ziggurat_create_monsters(p, mfn)
-  local hd_pool = you.depth() * (you.depth() + 8) + 10
+  local depth = you.depth()
+  local completed = you.zigs_completed() + 1
+  local hd_pool = math.floor(10 + completed * completed + (depth * (depth + 8 * completed )) * math.max(1, completed * 0.75))
 
   local nth = 1
 
@@ -419,10 +421,14 @@ local function ziggurat_create_monsters(p, mfn)
 end
 
 local function ziggurat_create_loot_at(c)
-  -- Basically, loot grows linearly with depth.
+  -- Basically, loot grows linearly with depth finished zigs.
   local depth = you.depth()
-  local nloot = depth
-  local nloot = depth + crawl.random2(math.floor(nloot * 0.5))
+  local completed = you.zigs_completed()
+  local nloot = depth + crawl.random2(math.floor(depth * 0.5))
+
+  if completed > 0 then
+    nloot = math.min(nloot + crawl.random2(math.floor(completed * depth / 4)), map_area() / 9)
+  end
 
   local function find_free_space(nspaces)
     local spaces = { }