mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-02-23 06:20:09 +00:00
crossbow:: graves and Round Table are non-blocking, thruVine is blocking
This commit is contained in:
parent
b3b1611f33
commit
a163c80ba1
@ -600,6 +600,7 @@ static constexpr flagtype WF_TIMEOUT = Flag(18);
|
|||||||
static constexpr flagtype WF_CISLAND = Flag(19);
|
static constexpr flagtype WF_CISLAND = Flag(19);
|
||||||
static constexpr flagtype WF_SULPHURIC = Flag(20);
|
static constexpr flagtype WF_SULPHURIC = Flag(20);
|
||||||
static constexpr flagtype WF_HALFVINE = Flag(21);
|
static constexpr flagtype WF_HALFVINE = Flag(21);
|
||||||
|
static constexpr flagtype WF_NONBLOCK = Flag(22);
|
||||||
|
|
||||||
struct walltype {
|
struct walltype {
|
||||||
char glyph;
|
char glyph;
|
||||||
|
@ -891,10 +891,10 @@ WALL( '^', 0x8D694F, "Thumper", waThumperOff, WF_WALL | WF_ACTIVABLE | WF_THUMPE
|
|||||||
WALL( '^', 0x804000, "Fire", waFire, WF_FIRE | WF_TIMEOUT, RESERVED, 0, sgNone,
|
WALL( '^', 0x804000, "Fire", waFire, WF_FIRE | WF_TIMEOUT, RESERVED, 0, sgNone,
|
||||||
"This cell is on fire. Most beings and items cannot survive."
|
"This cell is on fire. Most beings and items cannot survive."
|
||||||
)
|
)
|
||||||
WALL( '+', 0xC0C0C0, "ancient grave", waAncientGrave, WF_WALL | WF_HIGHWALL | WF_GRAVE, RESERVED, 0, sgNone,
|
WALL( '+', 0xC0C0C0, "ancient grave", waAncientGrave, WF_WALL | WF_HIGHWALL | WF_GRAVE | WF_NONBLOCK, RESERVED, 0, sgNone,
|
||||||
"An ancient grave."
|
"An ancient grave."
|
||||||
)
|
)
|
||||||
WALL( '+', 0xD0D080, "fresh grave", waFreshGrave, WF_WALL | WF_HIGHWALL | WF_GRAVE, RESERVED, 0, sgNone,
|
WALL( '+', 0xD0D080, "fresh grave", waFreshGrave, WF_WALL | WF_HIGHWALL | WF_GRAVE | WF_NONBLOCK, RESERVED, 0, sgNone,
|
||||||
"A fresh grave. Necromancers like those."
|
"A fresh grave. Necromancers like those."
|
||||||
)
|
)
|
||||||
WALL( '#', 0x00FFFF, "column", waColumn, WF_WALL | WF_HIGHWALL, RESERVED, 0, sgNone,
|
WALL( '#', 0x00FFFF, "column", waColumn, WF_WALL | WF_HIGHWALL, RESERVED, 0, sgNone,
|
||||||
@ -932,7 +932,7 @@ WALL( '#', 0x8080C0, "crystal cabinet", waGlass, WF_WALL, RESERVED, 0, sgNone,
|
|||||||
"using an Orb of Aether, your Aether power will be completely drained."
|
"using an Orb of Aether, your Aether power will be completely drained."
|
||||||
)
|
)
|
||||||
WALL( '#', 0xC0C0C0, "wall of Camelot", waCamelot, WF_WALL | WF_HIGHWALL, RESERVED, 0, sgNone, camelothelp )
|
WALL( '#', 0xC0C0C0, "wall of Camelot", waCamelot, WF_WALL | WF_HIGHWALL, RESERVED, 0, sgNone, camelothelp )
|
||||||
WALL( '+', 0xA06000, "Round Table", waRoundTable, WF_WALL, RESERVED, 1, sgNone, camelothelp )
|
WALL( '+', 0xA06000, "Round Table", waRoundTable, WF_WALL | WF_NONBLOCK, RESERVED, 1, sgNone, camelothelp )
|
||||||
WALL( '=', 0x0000A0, "moat of Camelot", waCamelotMoat, WF_WATER, RESERVED, 0, sgWater, camelothelp)
|
WALL( '=', 0x0000A0, "moat of Camelot", waCamelotMoat, WF_WATER, RESERVED, 0, sgWater, camelothelp)
|
||||||
WALL( '+', 0x606060, "big statue of Cthulhu", waBigStatue, WF_WALL, RESERVED, 0, sgNone,
|
WALL( '+', 0x606060, "big statue of Cthulhu", waBigStatue, WF_WALL, RESERVED, 0, sgNone,
|
||||||
"These statues of Cthulhu are too large to carry, and they don't look too "
|
"These statues of Cthulhu are too large to carry, and they don't look too "
|
||||||
|
@ -67,7 +67,8 @@ EX int loading_time() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX bool blocks(cell *c) {
|
EX bool blocks(cell *c) {
|
||||||
if(isWall(c) && !among(c->wall, waMirrorWall, waMirror, waCloud)) return true;
|
if(items[itOrbAether]) return false;
|
||||||
|
if(isWall(c) && !among(c->wall, waMirrorWall, waMirror, waCloud) && !isNonblock(c->wall)) return true;
|
||||||
// if(c->monst && isMultitile(c->monst)) return true;
|
// if(c->monst && isMultitile(c->monst)) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -97,7 +98,7 @@ EX int create_path() {
|
|||||||
auto cw2 = ocw2;
|
auto cw2 = ocw2;
|
||||||
if(inmirror(c)) cw2 = mirror::reflect(cw2);
|
if(inmirror(c)) cw2 = mirror::reflect(cw2);
|
||||||
if(blocks(cw2.peek())) continue;
|
if(blocks(cw2.peek())) continue;
|
||||||
|
if(thruVine(cw2.at, cw2.peek())) continue;
|
||||||
|
|
||||||
if(cw2.at->monst) {
|
if(cw2.at->monst) {
|
||||||
flagtype attackflags = AF_NORMAL;
|
flagtype attackflags = AF_NORMAL;
|
||||||
|
@ -37,6 +37,7 @@ WALLFLAGCHECK(isAlch, flag & WF_ALCHEMY)
|
|||||||
WALLFLAGCHECK(isAlchAny, flag & WF_ALCHEMY)
|
WALLFLAGCHECK(isAlchAny, flag & WF_ALCHEMY)
|
||||||
WALLFLAGCHECK(realred, flag & WF_RED)
|
WALLFLAGCHECK(realred, flag & WF_RED)
|
||||||
WALLFLAGCHECK(isWall, flag & WF_WALL)
|
WALLFLAGCHECK(isWall, flag & WF_WALL)
|
||||||
|
WALLFLAGCHECK(isNonblock, flag & WF_NONBLOCK)
|
||||||
WALLFLAGCHECK(isPushable, flag & WF_PUSHABLE)
|
WALLFLAGCHECK(isPushable, flag & WF_PUSHABLE)
|
||||||
WALLFLAGCHECK(conegraphtype, flag & WF_CONE)
|
WALLFLAGCHECK(conegraphtype, flag & WF_CONE)
|
||||||
WALLFLAGCHECK(isStandardTree, flag & WF_STDTREE)
|
WALLFLAGCHECK(isStandardTree, flag & WF_STDTREE)
|
||||||
|
@ -204,8 +204,7 @@ EX bool passable(cell *w, cell *from, flagtype flags) {
|
|||||||
|
|
||||||
if(F(P_BULLET)) {
|
if(F(P_BULLET)) {
|
||||||
if(isFire(w) || w->wall == waBonfireOff || cellHalfvine(w) ||
|
if(isFire(w) || w->wall == waBonfireOff || cellHalfvine(w) ||
|
||||||
w->wall == waMagma ||
|
w->wall == waMagma || isNonblock(w->wall))
|
||||||
w->wall == waAncientGrave || w->wall == waFreshGrave || w->wall == waRoundTable)
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user