1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-20 07:30:26 +00:00

solv:: Vineyard

This commit is contained in:
Zeno Rogue 2019-07-30 13:01:41 +02:00
parent 487f5a0d24
commit 3b7d80bb17
3 changed files with 12 additions and 3 deletions

View File

@ -4380,6 +4380,8 @@ color_t transcolor(cell *c, cell *c2, color_t wcol) {
if(c2->land == laBarrier) return darkena3(lcolor(c), 0, 0x40);
return darkena3(gradient(lcolor(c), lcolor(c2), 0, 1, 2), 0, 0x40);
}
if(sol && c->land == laWineyard && c2->master->distance < c->master->distance)
return 0x00800040;
if(isAlch(c) && !c->item && (c2->item || !isAlch(c2))) return darkena3(winf[c->wall].color, 0, 0x40);
if(c->wall == c2->wall) return 0;
if(isFire(c) && !isFire(c2)) return darkena3(wcol, 0, 0x30);

View File

@ -631,6 +631,10 @@ void giantLandSwitch(cell *c, int d, cell *from) {
else if(archimedean && arcm::current.have_line)
c->wall = arcm::linespattern(c) ? waVinePlant : waNone;
#endif
else if(sol) {
if((c->master->distance & 1) == 1 && (c->master->emeraldval % 3))
c->wall = waVinePlant;
}
else if(euclid && !archimedean) {
int x,y;
tie(x,y) = cell_to_pair(c);
@ -666,9 +670,9 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(d == 7 && c->wall == waVinePlant && hrand(100) < (randomPatternsMode ? 2 : 10) && !peace::on && !reptilecheat)
c->monst = moVineSpirit;
ONEMPTY {
if(hrand(5000) < PT(100 + 2 * (kills[moVineBeast] + kills[moVineSpirit]), 200) && notDippingFor(itWine))
if(hrand(5000) < PT(100 + 2 * (kills[moVineBeast] + kills[moVineSpirit]), 200) && notDippingFor(itWine) && !reptilecheat)
c->item = itWine;
if(hrand_monster(8000) < 12 * (items[itWine] + yendor::hardness()))
if(hrand_monster(8000) < 12 * (items[itWine] + yendor::hardness()) && !reptilecheat)
c->monst = moVineBeast;
}
break;

View File

@ -979,10 +979,13 @@ land_validity_t& land_validity(eLand l) {
if(among(l, laEmerald, laCamelot, laDryForest) && VALENCE != 3)
return hedgehogs;
if(l == laWineyard && sol)
return lv::pattern_special;
// ... wineyard pattern is GOOD only in the standard geometry or Euclidean
if(l == laWineyard && (NONSTDVAR || sphere) && !randomPatternsMode)
return pattern_not_implemented_random;
if(l == laTrollheim && quotient == qFIELD)
return not_enough_space;