mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 14:37:16 +00:00
fixed Friendly Ghosts
This commit is contained in:
parent
a0865998db
commit
4ce821bf7a
@ -1466,7 +1466,7 @@ EX void moveghosts() {
|
||||
int goodmoves = 0;
|
||||
|
||||
for(int k=0; k<c->type; k++) if(c->move(k) && c->move(k)->cpdist < c->cpdist)
|
||||
if(ghostmove(c->monst, c->move(k), c) && !isPlayerOn(c->move(k)))
|
||||
if(ghostmove(c->monst, c->move(k), c, 0) && !isPlayerOn(c->move(k)))
|
||||
goodmoves++;
|
||||
|
||||
movesofgood.grow(goodmoves).push_back(c);
|
||||
@ -1491,7 +1491,7 @@ EX void moveghosts() {
|
||||
}
|
||||
|
||||
for(int k=0; k<c->type; k++) if(c->move(k) && c->move(k)->cpdist < c->cpdist)
|
||||
if(ghostmove(c->monst, c->move(k), c))
|
||||
if(ghostmove(c->monst, c->move(k), c, 0))
|
||||
mdir.push_back(k);
|
||||
if(mdir.empty()) continue;
|
||||
int d = hrand_elt(mdir);
|
||||
|
@ -330,12 +330,12 @@ EX bool againstWind(cell *cto, cell *cfrom) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EX bool ghostmove(eMonster m, cell* to, cell* from) {
|
||||
EX bool ghostmove(eMonster m, cell* to, cell* from, flagtype extra) {
|
||||
if(!isGhost(m) && nonAdjacent(to, from)) return false;
|
||||
if(sword::at(to, 0)) return false;
|
||||
if(!shmup::on && isPlayerOn(to)) return false;
|
||||
if(to->monst && !(to->monst == moTentacletail && isGhost(m) && m != moFriendlyGhost)
|
||||
&& !(to->monst == moTortoise && isGhost(m) && m != moFriendlyGhost))
|
||||
&& !(to->monst == moTortoise && isGhost(m) && m != moFriendlyGhost) && !(extra & P_MONSTER))
|
||||
return false;
|
||||
if((m == moWitchGhost || m == moWitchWinter) && to->land != laPower)
|
||||
return false;
|
||||
@ -499,7 +499,7 @@ EX bool passable_for(eMonster m, cell *w, cell *from, flagtype extra) {
|
||||
if(m == moGreaterShark)
|
||||
return isWatery(w) || w->wall == waBoat || w->wall == waFrozenLake;
|
||||
if(isGhostMover(m) || m == moFriendlyGhost)
|
||||
return ghostmove(m, w, from);
|
||||
return ghostmove(m, w, from, extra);
|
||||
// for the purpose of Shmup this is correct
|
||||
if(m == moTameBomberbird)
|
||||
return passable(w, from, extra | P_FLYING | P_ISFRIEND);
|
||||
|
Loading…
Reference in New Issue
Block a user