diff --git a/attack.cpp b/attack.cpp index b742aaaf..abbc3ebe 100644 --- a/attack.cpp +++ b/attack.cpp @@ -272,7 +272,8 @@ EX void prespill(cell* c, eWall t, int rad, cell *from) { c->wall == waVinePlant || isFire(c) || c->wall == waBonfireOff || c->wall == waVineHalfA || c->wall == waVineHalfB || c->wall == waCamelotMoat || c->wall == waSea || c->wall == waCTree || c->wall == waRubble || c->wall == waGargoyleFloor || c->wall == waGargoyle || - c->wall == waRose || c->wall == waPetrified || c->wall == waPetrifiedBridge || c->wall == waRuinWall) + c->wall == waRose || c->wall == waPetrified || c->wall == waPetrifiedBridge || c->wall == waRuinWall || + among(c->wall, waDeepWater, waShallow)) t = waTemporary; if(c->wall == waSulphur) { diff --git a/environment.cpp b/environment.cpp index 9052e64f..f1ed3d29 100644 --- a/environment.cpp +++ b/environment.cpp @@ -603,7 +603,7 @@ EX void moverefresh(bool turn IS(true)) { addMessage(XLAT("%The1 drowns!", c->monst)); if(isBull(c->monst)) { addMessage(XLAT("%The1 is filled!", c->wall)); - c->wall = waNone; + c->wall = waShallow; } fallMonster(c, AF_FALL); } diff --git a/game.cpp b/game.cpp index dc25d85c..ca98017d 100644 --- a/game.cpp +++ b/game.cpp @@ -345,10 +345,15 @@ EX void pushThumper(const movei& mi) { } else if(isWatery(cto)) { addMessage(XLAT("%The1 fills the hole!", w)); - cto->wall = w == waThumperOn ? waTempBridge : waNone; + cto->wall = w == waThumperOn ? waTempBridge : waShallow; cto->wparam = th->wparam; playSound(cto, "splash"+pick12()); } + else if(cto->wall == waShallow) { + addMessage(XLAT("%The1 fills the hole!", w)); + cto->wall = waNone; + playSound(cto, "splash"+pick12()); + } else cto->wall = w; if(explode) cto->wall = waFireTrap, cto->wparam = explode; diff --git a/orbs.cpp b/orbs.cpp index e90e2290..d0a62211 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -731,6 +731,11 @@ EX eMonster summonedAt(cell *dest) { return moBomberbird; if(dest->wall == waTrapdoor) return dest->land == laPalace ? moFatGuard : moOrangeDog; + if(dest->land == laFrog && dest->wall == waNone) { + forCellEx(c1, dest) if(c1->wall == waShrub) return moVaulter; + forCellEx(c1, dest) if(c1->wall == waDeepWater) return moFrog; + forCellEx(c1, dest) if(c1->wall == waStone) return moPhaser; + } if(dest->wall == waSea) return isElemental(dest->land) ? moWaterElemental : diff --git a/passable.cpp b/passable.cpp index 56d0fb2c..603dc562 100644 --- a/passable.cpp +++ b/passable.cpp @@ -38,7 +38,7 @@ EX bool boatGoesThrough(cell *c) { c->wall == waDeadfloor || c->wall == waCIsland || c->wall == waCIsland2 || c->wall == waMineUnknown || c->wall == waMineMine || c->wall == waMineOpen || c->wall == waBonfireOff || c->wall == waFire || c->wall == waPartialFire || - c->wall == waArrowTrap; + c->wall == waArrowTrap || c->wall == waShallow; } EX void become_water(cell *c) {