diff --git a/environment.cpp b/environment.cpp index facebdb3..0eabca4e 100644 --- a/environment.cpp +++ b/environment.cpp @@ -71,6 +71,9 @@ EX vector pathq; /** the number of big statues -- they increase monster generation */ EX int statuecount; +/** the number of slimes in Wetland -- they create ghosts */ +EX int wetslime; + /** list of monsters to move (pathq restriced to monsters) */ EX vector pathqm; @@ -206,6 +209,7 @@ EX void bfs() { worms.clear(); ivies.clear(); ghosts.clear(); golems.clear(); tempmonsters.clear(); targets.clear(); statuecount = 0; + wetslime = 0; hexsnakes.clear(); hadwhat = havewhat; @@ -336,6 +340,9 @@ EX void bfs() { if(c2->wall == waBigStatue && c2->land != laTemple) statuecount++; + + if(isAlch(c2->wall) && c2->land == laWet) + wetslime++; if(cellHalfvine(c2) && isWarped(c2)) { addMessage(XLAT("%The1 is destroyed!", c2->wall)); diff --git a/monstergen.cpp b/monstergen.cpp index 2810fbac..f4b92e1a 100644 --- a/monstergen.cpp +++ b/monstergen.cpp @@ -411,8 +411,16 @@ EX void wandering() { continue; } } + + if(c->land == laWet && !smallbounded && wetslime >= 25 && !c->monst && hrand(100) <= wetslime-25) { + static bool angry = false; + if(!angry) { angry = true; addMessage("You seem to have really pissed off the water spirits!"); } + c->monst = moGhost; + playSeenSound(c); + continue; + } - if((c->wall == waCavewall || c->wall == waDeadwall) && !c->monst && + else if((c->wall == waCavewall || c->wall == waDeadwall) && !c->monst && wchance(items[treasureType(c->land)], 10) && canReachPlayer(c, moSlime)) { c->monst = moSeep; playSeenSound(c); diff --git a/pcmove.cpp b/pcmove.cpp index 144cba1f..765a78c3 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -911,7 +911,7 @@ bool pcmove::attack() { if(m == moRusalka) { changes.ccell(cwt.at); if(cwt.at->wall == waNone) cwt.at->wall = waShallow; - else if(cwt.at->wall == waShallow) cwt.at->wall = waDeepWater; + else if(cwt.at->wall == waShallow || isAlch(cwt.at->wall)) cwt.at->wall = waDeepWater; } changes.ccell(c2); // salamanders are stunned for longer time when pushed into a wall