1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-11-08 09:42:59 +00:00

new land: Docks

This commit is contained in:
Zeno Rogue
2017-12-29 01:10:47 +01:00
parent 7685868fb2
commit 5f5c86e529
15 changed files with 136 additions and 27 deletions

View File

@@ -549,17 +549,25 @@ namespace patterns {
si.id += 8;
si.id %= 12;
applyAlt(si, sub, pat);
if((sub & SPF_DOCKS) && (c->master->fiftyval & 32))
si.id += 16, si.symmetries = 4;
}
else {
si.id = 8 * ((c->master->fiftyval & 1) ^ (c->spin(0) & 1));
bool dock = false;
for(int i=0; i<c->type; i+=2) {
int fv = (createMov(c, i)->master->fiftyval >> 1) & 3;
if(fv == 0) si.dir = (si.id == 8 && pat == PAT_COLORING ? 1 : 0) + i;
int fiv = createMov(c, i)->master->fiftyval;
int fv = (fiv >> 1) & 3;
if(fv == 0) {
si.dir = (si.id == 8 && pat == PAT_COLORING ? 1 : 0) + i;
if(fiv & 32) dock = true;
}
}
if(symRotation) si.symmetries = 2;
si.id += 8;
si.id %= 12;
applyAlt(si, sub, pat);
if(dock && (sub & SPF_DOCKS)) si.id += 16;
}
}
@@ -829,6 +837,11 @@ namespace patterns {
si.symmetries = 6;
}
else if(pat == PAT_PALACE) {
val_nopattern(c, si, sub);
si.id = c->master->fiftyval;
}
else if(pat == PAT_DOWN) {
si.id = towerval(c);
si.dir = downdir(c);