fixed the missing message when PC could not stay in place
This commit is contained in:
parent
cfbd5f830c
commit
0fd30b7acc
25
pcmove.cpp
25
pcmove.cpp
|
@ -112,7 +112,7 @@ EX namespace orbbull {
|
||||||
}
|
}
|
||||||
EX }
|
EX }
|
||||||
|
|
||||||
EX bool checkNeedMove(bool checkonly, bool attacking) {
|
bool pcmove::checkNeedMove(bool checkonly, bool attacking) {
|
||||||
if(items[itOrbDomination] > ORBBASE && cwt.at->monst)
|
if(items[itOrbDomination] > ORBBASE && cwt.at->monst)
|
||||||
return false;
|
return false;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
@ -124,45 +124,46 @@ EX bool checkNeedMove(bool checkonly, bool attacking) {
|
||||||
}
|
}
|
||||||
else if(cwt.at->wall == waRoundTable) {
|
else if(cwt.at->wall == waRoundTable) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(checkonly) return true;
|
if(vmsg())
|
||||||
addMessage(XLAT("It would be impolite to land on the table!"));
|
addMessage(XLAT("It would be impolite to land on the table!"));
|
||||||
}
|
}
|
||||||
else if(cwt.at->wall == waLake) {
|
else if(cwt.at->wall == waLake) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(markOrb2(itOrbFish)) return false;
|
if(markOrb2(itOrbFish)) return false;
|
||||||
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
||||||
flags |= AF_FALL;
|
flags |= AF_FALL;
|
||||||
addMessage(XLAT("Ice below you is melting! RUN!"));
|
if(vmsg()) addMessage(XLAT("Ice below you is melting! RUN!"));
|
||||||
}
|
}
|
||||||
else if(!attacking && cellEdgeUnstable(cwt.at)) {
|
else if(!attacking && cellEdgeUnstable(cwt.at)) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
||||||
addMessage(XLAT("Nothing to stand on here!"));
|
if(vmsg()) addMessage(XLAT("Nothing to stand on here!"));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if(among(cwt.at->wall, waSea, waCamelotMoat, waLake, waDeepWater)) {
|
else if(among(cwt.at->wall, waSea, waCamelotMoat, waLake, waDeepWater)) {
|
||||||
if(markOrb(itOrbFish)) return false;
|
if(markOrb(itOrbFish)) return false;
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
if(in_gravity_zone(cwt.at) && passable(cwt.at, NULL, P_ISPLAYER)) return false;
|
||||||
addMessage(XLAT("You have to run away from the water!"));
|
if(vmsg()) addMessage(XLAT("You have to run away from the water!"));
|
||||||
}
|
}
|
||||||
else if(cwt.at->wall == waClosedGate) {
|
else if(cwt.at->wall == waClosedGate) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
addMessage(XLAT("The gate is closing right on you! RUN!"));
|
if(vmsg()) addMessage(XLAT("The gate is closing right on you! RUN!"));
|
||||||
}
|
}
|
||||||
else if(isFire(cwt.at) && !markOrb(itOrbWinter) && !markOrb2(itOrbShield)) {
|
else if(isFire(cwt.at) && !markOrb(itOrbWinter) && !markOrb2(itOrbShield)) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
addMessage(XLAT("This spot will be burning soon! RUN!"));
|
if(vmsg()) addMessage(XLAT("This spot will be burning soon! RUN!"));
|
||||||
}
|
}
|
||||||
else if(cwt.at->wall == waMagma && !markOrb(itOrbWinter) && !markOrb2(itOrbShield)) {
|
else if(cwt.at->wall == waMagma && !markOrb(itOrbWinter) && !markOrb2(itOrbShield)) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(in_gravity_zone(cwt.at) && passable(cwt.at, cwt.at, P_ISPLAYER)) return false;
|
if(in_gravity_zone(cwt.at) && passable(cwt.at, cwt.at, P_ISPLAYER)) return false;
|
||||||
addMessage(XLAT("Run away from the magma!"));
|
if(vmsg()) addMessage(XLAT("Run away from the magma!"));
|
||||||
}
|
}
|
||||||
else if(cwt.at->wall == waChasm) {
|
else if(cwt.at->wall == waChasm) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
if(in_gravity_zone(cwt.at) && passable(cwt.at, cwt.at, P_ISPLAYER)) return false;
|
if(in_gravity_zone(cwt.at) && passable(cwt.at, cwt.at, P_ISPLAYER)) return false;
|
||||||
flags |= AF_FALL;
|
flags |= AF_FALL;
|
||||||
addMessage(XLAT("The floor has collapsed! RUN!"));
|
if(vmsg()) addMessage(XLAT("The floor has collapsed! RUN!"));
|
||||||
}
|
}
|
||||||
else if(items[itOrbAether] > ORBBASE && !passable(cwt.at, NULL, P_ISPLAYER | P_NOAETHER)) {
|
else if(items[itOrbAether] > ORBBASE && !passable(cwt.at, NULL, P_ISPLAYER | P_NOAETHER)) {
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
|
@ -171,7 +172,7 @@ EX bool checkNeedMove(bool checkonly, bool attacking) {
|
||||||
else if(!passable(cwt.at, NULL, P_ISPLAYER)) {
|
else if(!passable(cwt.at, NULL, P_ISPLAYER)) {
|
||||||
if(isFire(cwt.at)) return false; // already checked: have Shield
|
if(isFire(cwt.at)) return false; // already checked: have Shield
|
||||||
if(markOrb2(itOrbAether)) return false;
|
if(markOrb2(itOrbAether)) return false;
|
||||||
addMessage(XLAT("Your Aether power has expired! RUN!"));
|
if(vmsg()) addMessage(XLAT("Your Aether power has expired! RUN!"));
|
||||||
}
|
}
|
||||||
else return false;
|
else return false;
|
||||||
if(hardcore && !checkonly)
|
if(hardcore && !checkonly)
|
||||||
|
@ -209,6 +210,8 @@ struct pcmove {
|
||||||
bool after_escape();
|
bool after_escape();
|
||||||
bool move_if_okay();
|
bool move_if_okay();
|
||||||
bool attack();
|
bool attack();
|
||||||
|
|
||||||
|
bool checkNeedMove(bool checkonly, bool attacking);
|
||||||
|
|
||||||
void tell_why_cannot_attack();
|
void tell_why_cannot_attack();
|
||||||
void tell_why_impassable();
|
void tell_why_impassable();
|
||||||
|
|
Loading…
Reference in New Issue