1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-20 16:37:40 +00:00

parially done mirrors; field pattern in weirdhyperbolic; fake other patterns in weirdhyperbolic

This commit is contained in:
Zeno Rogue
2017-10-29 10:52:02 +01:00
parent ce3c066b0f
commit 345bd94c0d
14 changed files with 195 additions and 126 deletions

View File

@@ -313,7 +313,8 @@ void giantLandSwitch(cell *c, int d, cell *from) {
}
else {
int v = emeraldval(c);
if((v&3) >= 2)
if(v == 0) c->wall = waStone;
else if((v&3) >= 2)
c->wall = waCavewall;
else c->wall = waCavefloor;
}
@@ -373,19 +374,22 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(y0 == 3 || y0 == 4) v=24; else v=0;
}
else v = emeraldval(c);
v &= ~3;
if((v == 24 || v == 32 || v == 56))
c->wall = waEternalFire;
else if(hrand(100) < 10) {
c->wall = waGlass;
eItem protectedItems[18] = {
itPower, itPower, itPower, itPower, itPower, itPower,
itOrbLightning, itOrbLightning, itOrbThorns, itOrbThorns,
itOrbInvis, itOrbInvis,
itOrbShield, itOrbTeleport, itOrbPsi,
itOrbDragon, itOrbIllusion, itOrbTime
};
c->item = protectedItems[hrand(18)];
if(v == 0) c->wall = waStone;
else {
v &= ~3;
if((v == 24 || v == 32 || v == 56))
c->wall = waEternalFire;
else if(hrand(100) < 10) {
c->wall = waGlass;
eItem protectedItems[18] = {
itPower, itPower, itPower, itPower, itPower, itPower,
itOrbLightning, itOrbLightning, itOrbThorns, itOrbThorns,
itOrbInvis, itOrbInvis,
itOrbShield, itOrbTeleport, itOrbPsi,
itOrbDragon, itOrbIllusion, itOrbTime
};
c->item = protectedItems[hrand(18)];
}
}
}
// seal entrances to the Land of Power.
@@ -411,7 +415,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
itOrbFlash, itOrbSpeed, itOrbFire, itOrbWinter, itOrbAether, itOrbLife};
c->item = powerorbs[hrand(6)];
}
else if(c->type == 6 && hrand(5000) < 10)
else if(!ctof(c) && hrand(5000) < 10)
c->wall = hrand(2) ? waMirror : waCloud;
else if(hrand(1000) < 10 + (items[itPower] ? 10:0) + (items[itPower] + yendor::hardness()))
c->monst = eMonster(moWitch + hrand(NUMWITCH));
@@ -449,16 +453,19 @@ void giantLandSwitch(cell *c, int d, cell *from) {
}
else {
int v = emeraldval(c);
int w = v / 4;
if(randomPatternsMode) c->wall = RANDPAT ? waVinePlant : waNone;
else if(w == 9 || w == 10 || w == 7 || w == 8) {
c->wall = waVinePlant;
if(v == 0) c->wall = waStone;
else {
int w = v / 4;
if(randomPatternsMode) c->wall = RANDPAT ? waVinePlant : waNone;
else if(w == 9 || w == 10 || w == 7 || w == 8) {
c->wall = waVinePlant;
}
else if(v == 24 || v == 58 || v == 26 || v == 56)
c->wall = waVineHalfA;
else if(v == 25 || v == 59 || v == 27 || v == 57)
c->wall = waVineHalfB;
else c->wall = waNone;
}
else if(v == 24 || v == 58 || v == 26 || v == 56)
c->wall = waVineHalfA;
else if(v == 25 || v == 59 || v == 27 || v == 57)
c->wall = waVineHalfB;
else c->wall = waNone;
}
}
if(d == 7 && c->wall == waVinePlant && hrand(100) < (randomPatternsMode ? 2 : 10) && !peace::on)
@@ -1841,11 +1848,11 @@ void giantLandSwitch(cell *c, int d, cell *from) {
ONEMPTY {
if(purehepta && c->land == laCrossroads5 && hrand(100) < 60)
c->wall = waBarrier;
else if(c->type == 6 && !inv::on && items[itShard] >= 10 && hrand(8000) < 120*orbcrossfun(items[itShard]))
else if(!ctof(c) && !inv::on && items[itShard] >= 10 && hrand(8000) < 120*orbcrossfun(items[itShard]))
c->wall = hrand(2) ? waMirror : waCloud;
else if(c->type == 6 && hyperstonesUnlocked() && hrand(8000) < 100)
else if(!ctof(c) && hyperstonesUnlocked() && hrand(8000) < 100)
c->wall = hrand(2) ? waMirror : waCloud;
else if(c->type == 6 && tactic::on && isCrossroads(tactic::lasttactic) && hrand(8000) < 120)
else if(!ctof(c) && tactic::on && isCrossroads(tactic::lasttactic) && hrand(8000) < 120)
c->wall = hrand(2) ? waMirror : waCloud;
else if(c->land == laCrossroads4 && hrand(24000) < 10 && tactic::on)
c->wall = waRose;