diff --git a/celldrawer.cpp b/celldrawer.cpp index 6a70eb51..5bdb0924 100644 --- a/celldrawer.cpp +++ b/celldrawer.cpp @@ -2256,6 +2256,14 @@ void celldrawer::draw_item_full() { color_t icol = 0; + if(specialland == laMotion && items[itOrbInvis] && c->wall == waChasm) { + if(c->mondir < c->type) { + vid.linewidth *= 3; + queueline(V*C0, V*currentmap->adj(c, c->mondir) * C0, 0xFFD500FF, 4); + vid.linewidth /= 3; + } + } + if(it) { asciichar = iinf[it].glyph, asciicol = icol = iinf[it].color; if(doHighlight()) asciiborder = kind_outline(it) >> 8; diff --git a/monstergen.cpp b/monstergen.cpp index 549e2d50..92e0112e 100644 --- a/monstergen.cpp +++ b/monstergen.cpp @@ -377,7 +377,7 @@ EX void wandering() { if(smallbounded_generation && !c->item && hrand(5) == 0 && c->land != laHalloween) { if(passable(c, NULL, 0) || specialland == laKraken) { - if(c->land != laGraveyard && !haveOrbPower() && specialland != laHell) for(int it=0; it<1000 && !c->item; it++) + if(c->land != laGraveyard && (c->land != laMotion || chaosmode || daily::on) && !haveOrbPower() && specialland != laHell) for(int it=0; it<1000 && !c->item; it++) placeLocalOrbs(c); if(!c->item) c->item = wanderingTreasure(c); if(c->item == itShard) { diff --git a/pcmove.cpp b/pcmove.cpp index 8ab80428..199ae547 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -1304,7 +1304,10 @@ EX void playerMoveEffects(movei mi) { drainOrb(itOrbAether, 2); } - if(cellUnstable(c2) && !markOrb(itOrbAether)) doesFallSound(c2); + if(cellUnstable(c2) && !markOrb(itOrbAether)) { + doesFallSound(c2); + if(c2->land == laMotion && c2->wall == waChasm) c2->mondir = mi.rev_dir_or(NODIR); + } if(c2->wall == waStrandedBoat && markOrb(itOrbWater)) c2->wall = waBoat; diff --git a/system.cpp b/system.cpp index 20604550..6612d1e2 100644 --- a/system.cpp +++ b/system.cpp @@ -338,6 +338,10 @@ EX void initgame() { generate_mines(); } + if(specialland == laMotion && bounded && !chaosmode && !daily::on) { + cwt.at->item = itOrbInvis; + } + princess::squeaked = false; clearing::current_root = NULL;