1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-23 21:07:17 +00:00

fixed invalid error messages on Animated Dice validity tests

This commit is contained in:
Zeno Rogue 2021-05-30 13:10:00 +02:00
parent 03c41443c4
commit 8f28497f26
3 changed files with 6 additions and 2 deletions

View File

@ -1118,6 +1118,10 @@ EX namespace dice {
dd.dir = dir1; dd.dir = dir1;
return dd; return dd;
} }
EX bool on(cell *c) {
return among(c->wall, waRichDie, waHappyDie) || among(c->monst, moAnimatedDie, moAngryDie);
}
EX void roll(movei mi) { EX void roll(movei mi) {
auto &cto = mi.t; auto &cto = mi.t;

View File

@ -413,7 +413,7 @@ EX void pushThumper(const movei& mi) {
EX bool canPushThumperOn(movei mi, cell *player) { EX bool canPushThumperOn(movei mi, cell *player) {
cell *thumper = mi.s; cell *thumper = mi.s;
cell *tgt = mi.t; cell *tgt = mi.t;
if(among(thumper->wall, waRichDie, waHappyDie) && !dice::can_roll(mi)) if(dice::on(thumper) && !dice::can_roll(mi))
return false; return false;
if(tgt->wall == waBoat || tgt->wall == waStrandedBoat) return false; if(tgt->wall == waBoat || tgt->wall == waStrandedBoat) return false;
if(isReptile(tgt->wall)) return false; if(isReptile(tgt->wall)) return false;

View File

@ -1157,7 +1157,7 @@ EX movei blowoff_destination(cell *c, int& di) {
if(d<c->type) for(int e=d; e<d+c->type; e++) { if(d<c->type) for(int e=d; e<d+c->type; e++) {
int di = e % c->type; int di = e % c->type;
cell *c2 = c->move(di); cell *c2 = c->move(di);
if((c->monst == moAnimatedDie || c->monst == moAngryDie || c->wall == waHappyDie || c->wall == waRichDie) && !dice::can_roll(movei(c, di))) if(dice::on(c) && !dice::can_roll(movei(c, di)))
continue; continue;
if(c2 && c2->cpdist > c->cpdist && passable(c2, c, P_BLOW)) return movei(c, c2, di); if(c2 && c2->cpdist > c->cpdist && passable(c2, c, P_BLOW)) return movei(c, c2, di);
} }