diff --git a/pcmove.cpp b/pcmove.cpp index e0262ec3..55e9eabe 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -700,6 +700,7 @@ bool pcmove::after_escape() { attackable = c2->wall == waBigTree || c2->wall == waSmallTree || + (c2->wall == waShrub && items[itOrbSlaying]) || c2->wall == waMirrorWall; if(attackable && markOrb(itOrbAether) && c2->wall != waMirrorWall) attackable = false; @@ -720,6 +721,15 @@ bool pcmove::after_escape() { spread_plague(cwt.at, c2, mi.d, moPlayer); return swing(); } + else if(c2->wall == waShrub && markOrb(itOrbSlaying)) { + drawParticles(c2, winf[c2->wall].color, 4); + addMessage(XLAT("You chop down the shrub.")); + playSound(c2, "hit-axe" + pick123()); + changes.ccell(c2); + c2->wall = waNone; + spread_plague(cwt.at, c2, mi.d, moPlayer); + return swing(); + } else if(c2->wall == waBigTree) { drawParticles(c2, winf[c2->wall].color, 8); addMessage(XLAT("You start chopping down the tree.")); @@ -1308,6 +1318,12 @@ EX void sideAttackAt(cell *mf, int dir, cell *mt, eMonster who, eItem orb, cell mt->wall = waNone; spread_plague(mf, mt, dir, who); } + else if(mt->wall == waShrub && markEmpathy(itOrbSlaying)) { + plague_particles(); + markOrb(orb); + mt->wall = waNone; + spread_plague(mf, mt, dir, who); + } else if(mt->wall == waBigTree) { plague_particles(); markOrb(orb);