1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-23 21:07:17 +00:00

renamed 'truncated' to 'chamfered'

This commit is contained in:
Zeno Rogue 2018-01-04 18:39:04 +01:00
parent f3cf1e06bf
commit 495dbba809
40 changed files with 351 additions and 351 deletions

View File

@ -82,7 +82,7 @@ vector<string> achievementsReceived;
bool wrongMode(char flags) { bool wrongMode(char flags) {
if(cheater) return true; if(cheater) return true;
if(flags == 'x') return false; if(flags == 'x') return false;
if(nontruncated != (flags == '7')) return true; if(nonchamfered != (flags == '7')) return true;
if(euclid != (flags == 'e')) return true; if(euclid != (flags == 'e')) return true;
if(flags == 'E' && S7 < 5) return false; if(flags == 'E' && S7 < 5) return false;
if(sphere != (flags == 'E')) return true; if(sphere != (flags == 'E')) return true;
@ -482,7 +482,7 @@ void achievement_score(int cat, int number) {
if(sphere && cat != LB_HALLOWEEN) return; if(sphere && cat != LB_HALLOWEEN) return;
if(quotient) return; if(quotient) return;
if(elliptic && cat != LB_HALLOWEEN) return; if(elliptic && cat != LB_HALLOWEEN) return;
if(nontruncated) return; if(nonchamfered) return;
if(randomPatternsMode) return; if(randomPatternsMode) return;
if(shmup::on && cat != LB_PURE_TACTICS_SHMUP && cat != LB_PURE_TACTICS_COOP) return; if(shmup::on && cat != LB_PURE_TACTICS_SHMUP && cat != LB_PURE_TACTICS_COOP) return;
if(yendor::on && cat != LB_YENDOR_CHALLENGE) return; if(yendor::on && cat != LB_YENDOR_CHALLENGE) return;
@ -567,7 +567,7 @@ void achievement_final(bool really_final) {
} }
if(sphere && specialland == laHalloween) { if(sphere && specialland == laHalloween) {
if(shmup::on || chaosmode || nontruncated || numplayers() > 1 || tactic::on || randomPatternsMode) if(shmup::on || chaosmode || nonchamfered || numplayers() > 1 || tactic::on || randomPatternsMode)
return; return;
achievement_score(LB_HALLOWEEN, items[itTreat]); achievement_score(LB_HALLOWEEN, items[itTreat]);
} }
@ -581,21 +581,21 @@ void achievement_final(bool really_final) {
int specials = 0; int specials = 0;
if(shmup::on) specials++; if(shmup::on) specials++;
if(chaosmode) specials++; if(chaosmode) specials++;
if(nontruncated) specials++; if(nonchamfered) specials++;
if(inv::on) specials++; if(inv::on) specials++;
if(specials > 1) return; if(specials > 1) return;
if(numplayers() > 1 && chaosmode) return; if(numplayers() > 1 && chaosmode) return;
if(numplayers() > 1 && nontruncated) return; if(numplayers() > 1 && nonchamfered) return;
if(numplayers() > 1 && inv::on) return; if(numplayers() > 1 && inv::on) return;
int total_improved = 0; int total_improved = 0;
specific_improved = 0; specific_improved = 0;
specific_what = 0; specific_what = 0;
if(!shmup::on && !chaosmode && !nontruncated && numplayers() == 1 && !inv::on) improveItemScores(); if(!shmup::on && !chaosmode && !nonchamfered && numplayers() == 1 && !inv::on) improveItemScores();
int sid = nontruncated ? 57 : chaosmode ? 53 : shmup::on ? (numplayers() > 1 ? 44 : 28) : int sid = nonchamfered ? 57 : chaosmode ? 53 : shmup::on ? (numplayers() > 1 ? 44 : 28) :
inv::on ? 69 : inv::on ? 69 :
(numplayers() > 1 ? 61 : 0); (numplayers() > 1 ? 61 : 0);
@ -654,7 +654,7 @@ void achievement_victory(bool hyper) {
if(euclid) return; if(euclid) return;
if(sphere) return; if(sphere) return;
if(quotient) return; if(quotient) return;
if(nontruncated) return; if(nonchamfered) return;
if(randomPatternsMode) return; if(randomPatternsMode) return;
if(hyper && shmup::on) return; if(hyper && shmup::on) return;
if(yendor::on) return; if(yendor::on) return;

View File

@ -8,20 +8,20 @@ bool checkBarriersFront(cellwalker bb, int q, bool cross) {
if(bb.c->mpdist < BARLEV) return false; if(bb.c->mpdist < BARLEV) return false;
if(bb.c->mpdist == BUGLEV) return false; if(bb.c->mpdist == BUGLEV) return false;
if(bb.c->bardir != NODIR) return false; if(bb.c->bardir != NODIR) return false;
if(bb.spin == (nontruncated ? 3 : 0)) {q--; if(!q) return true; } if(bb.spin == (nonchamfered ? 3 : 0)) {q--; if(!q) return true; }
if(!cross) for(int i=0; i<7; i++) { if(!cross) for(int i=0; i<7; i++) {
cellwalker bb2 = bb; cellwalker bb2 = bb;
cwspin(bb2, i); cwstep(bb2); cwspin(bb2, i); cwstep(bb2);
if(bb2.c->bardir != NODIR) return false; if(bb2.c->bardir != NODIR) return false;
if(!nontruncated) { if(!nonchamfered) {
cwspin(bb2, 4); cwstep(bb2); cwspin(bb2, 4); cwstep(bb2);
if(bb2.c->bardir != NODIR) return false; if(bb2.c->bardir != NODIR) return false;
} }
} }
cwstep(bb); cwstep(bb);
if(!nontruncated) { cwspin(bb, 3); cwstep(bb); cwspin(bb, 3); cwstep(bb); } if(!nonchamfered) { cwspin(bb, 3); cwstep(bb); cwspin(bb, 3); cwstep(bb); }
return checkBarriersBack(bb, q); return checkBarriersBack(bb, q);
} }
@ -48,13 +48,13 @@ bool checkBarriersBack(cellwalker bb, int q, bool cross) {
cellwalker bb2 = bb; cellwalker bb2 = bb;
cwspin(bb2, i); cwstep(bb2); cwspin(bb2, i); cwstep(bb2);
if(bb2.c->bardir != NODIR) return false; if(bb2.c->bardir != NODIR) return false;
if(!nontruncated) { if(!nonchamfered) {
cwspin(bb2, 4); cwstep(bb2); cwspin(bb2, 4); cwstep(bb2);
if(bb2.c->bardir != NODIR) return false; if(bb2.c->bardir != NODIR) return false;
} }
} }
cwspin(bb, 3); cwstep(bb); cwspin(bb, nontruncated ? 5 : 4); cwspin(bb, 3); cwstep(bb); cwspin(bb, nonchamfered ? 5 : 4);
// bool create = cwstepcreates(bb); // bool create = cwstepcreates(bb);
cwstep(bb); cwspin(bb, 3); cwstep(bb); cwspin(bb, 3);
// if(create && bb.spin == 0) return true; // if(create && bb.spin == 0) return true;
@ -87,12 +87,12 @@ bool checkBarriersNowall(cellwalker bb, int q, int dir, eLand l1=laNone, eLand l
} }
} }
if(nontruncated && S3==4) { if(nonchamfered && S3==4) {
cwspin(bb, dir); cwspin(bb, dir);
cwstep(bb); cwstep(bb);
cwspin(bb, dir); cwspin(bb, dir);
} }
else if(nontruncated) { else if(nonchamfered) {
cwspin(bb, 3*dir); cwspin(bb, 3*dir);
cwstep(bb); cwstep(bb);
cwspin(bb, -3*dir); cwspin(bb, -3*dir);
@ -158,7 +158,7 @@ void setland(cell *c, eLand l) {
void extendcheck(cell *c) { void extendcheck(cell *c) {
return; return;
if(!nontruncated && c->landparam == 0 && c->barleft != NOWALLSEP) { if(!nonchamfered && c->landparam == 0 && c->barleft != NOWALLSEP) {
raiseBuggyGeneration(c, "extend error"); raiseBuggyGeneration(c, "extend error");
} }
} }
@ -176,7 +176,7 @@ void extendBarrierFront(cell *c) {
cellwalker bb(c, c->bardir); setbarrier(bb.c); cellwalker bb(c, c->bardir); setbarrier(bb.c);
cwstep(bb); cwstep(bb);
if(!nontruncated) { if(!nonchamfered) {
bb.c->barleft = c->barleft; bb.c->barleft = c->barleft;
bb.c->barright = c->barright; bb.c->barright = c->barright;
setbarrier(bb.c); setbarrier(bb.c);
@ -212,7 +212,7 @@ void extendBarrierFront(cell *c) {
extendBarrier(bb.c); extendBarrier(bb.c);
for(int a=-3; a<=3; a++) if(a) { for(int a=-3; a<=3; a++) if(a) {
bb.c = c; bb.spin = c->bardir; cwspin(bb, nontruncated?-a:a); cwstep(bb); bb.c = c; bb.spin = c->bardir; cwspin(bb, nonchamfered?-a:a); cwstep(bb);
setland(bb.c, a > 0 ? c->barright : c->barleft); setland(bb.c, a > 0 ? c->barright : c->barleft);
} }
} }
@ -224,8 +224,8 @@ void extendBarrierBack(cell *c) {
extendcheck(c); extendcheck(c);
cellwalker bb(c, c->bardir); setbarrier(bb.c); cellwalker bb(c, c->bardir); setbarrier(bb.c);
cwspin(bb, 3); cwstep(bb); cwspin(bb, nontruncated?5:4); cwspin(bb, 3); cwstep(bb); cwspin(bb, nonchamfered?5:4);
setland(bb.c, nontruncated ? c->barleft : c->barright); setland(bb.c, nonchamfered ? c->barleft : c->barright);
cwstep(bb); cwspin(bb, 3); cwstep(bb); cwspin(bb, 3);
bb.c->bardir = bb.spin; bb.c->bardir = bb.spin;
bb.c->barleft = c->barright; bb.c->barleft = c->barright;
@ -236,7 +236,7 @@ void extendBarrierBack(cell *c) {
//printf("[D heat %d]\n", (ht^11)); //printf("[D heat %d]\n", (ht^11));
// needed for CR2 to work // needed for CR2 to work
if(!nontruncated) { if(!nonchamfered) {
cwstep(bb); cwstep(bb);
bb.c->barleft = c->barright; bb.c->barleft = c->barright;
bb.c->barright = c->barleft; bb.c->barright = c->barleft;
@ -255,12 +255,12 @@ void extendNowall(cell *c) {
c->barleft = NOWALLSEP_USED; c->barleft = NOWALLSEP_USED;
cellwalker cw(c, c->bardir); cellwalker cw(c, c->bardir);
if(!nontruncated) { if(!nonchamfered) {
cwstep(cw); cwstep(cw);
setland(cw.c, c->barright); setland(cw.c, c->barright);
} }
if(nontruncated && S3 == 4) { if(nonchamfered && S3 == 4) {
cwstep(cw); cwstep(cw);
setland(cw.c, c->barright); setland(cw.c, c->barright);
cw.c->barleft = NOWALLSEP_USED; cw.c->barleft = NOWALLSEP_USED;
@ -270,12 +270,12 @@ void extendNowall(cell *c) {
} }
for(int i=-1; i<2; i+=2) { for(int i=-1; i<2; i+=2) {
if(nontruncated && S3==4) { if(nonchamfered && S3==4) {
cwspin(cw, i); cwspin(cw, i);
cwstep(cw); cwstep(cw);
cwspin(cw, i); cwspin(cw, i);
} }
else if(nontruncated) { else if(nonchamfered) {
cwspin(cw, 3*i); cwspin(cw, 3*i);
cwstep(cw); cwstep(cw);
cwspin(cw, -3*i); cwspin(cw, -3*i);
@ -286,7 +286,7 @@ void extendNowall(cell *c) {
} }
if(cw.c->barleft != NOWALLSEP_USED) { if(cw.c->barleft != NOWALLSEP_USED) {
cw.c->barleft = NOWALLSEP; cw.c->barleft = NOWALLSEP;
if(S3 == 4 && nontruncated) { if(S3 == 4 && nonchamfered) {
cw.c->barright = c->barright; cw.c->barright = c->barright;
cw.c->bardir = cw.spin; cw.c->bardir = cw.spin;
setland(cw.c, c->land); setland(cw.c, c->land);
@ -298,19 +298,19 @@ void extendNowall(cell *c) {
printf("barright\n"); printf("barright\n");
}// NONEDEBUG }// NONEDEBUG
setland(cw.c, c->barright); setland(cw.c, c->barright);
if(!nontruncated) cwspin(cw, i); if(!nonchamfered) cwspin(cw, i);
cw.c->bardir = cw.spin; cw.c->bardir = cw.spin;
if(!nontruncated) cwspin(cw, -i); if(!nonchamfered) cwspin(cw, -i);
} }
extendcheck(cw.c); extendcheck(cw.c);
extendBarrier(cw.c); extendBarrier(cw.c);
} }
if(nontruncated && S3==4) { if(nonchamfered && S3==4) {
cwspin(cw, -i); cwspin(cw, -i);
cwstep(cw); cwstep(cw);
cwspin(cw, -i); cwspin(cw, -i);
} }
else if(nontruncated) { else if(nonchamfered) {
cwspin(cw, 3*i); cwspin(cw, 3*i);
cwstep(cw); cwstep(cw);
cwspin(cw, -3*i); cwspin(cw, -3*i);
@ -325,7 +325,7 @@ void extendNowall(cell *c) {
bool gotit = false; bool gotit = false;
void extendCR5(cell *c) { void extendCR5(cell *c) {
if(nontruncated) return; if(nonchamfered) return;
// if(c->barright == laCrossroads5) extendCR5(c); // if(c->barright == laCrossroads5) extendCR5(c);
eLand forbidden = c->barleft; eLand forbidden = c->barleft;
eLand forbidden2 = laNone; eLand forbidden2 = laNone;
@ -391,14 +391,14 @@ void extendBarrier(cell *c) {
if(firstmirror && c->barleft == laMirror && hrand(100) < 60) { if(firstmirror && c->barleft == laMirror && hrand(100) < 60) {
cellwalker cw(c, c->bardir); cellwalker cw(c, c->bardir);
if(!nontruncated) cwstep(cw); if(!nonchamfered) cwstep(cw);
if(cw.c->land != laMirrorWall) if(cw.c->land != laMirrorWall)
if(buildBarrier6(cw, 1)) return; if(buildBarrier6(cw, 1)) return;
} }
if(firstmirror && (nontruncated?c->barleft == laMirror : c->barright == laMirror) && hrand(100) < 60) { if(firstmirror && (nonchamfered?c->barleft == laMirror : c->barright == laMirror) && hrand(100) < 60) {
cellwalker cw(c, c->bardir); cellwalker cw(c, c->bardir);
if(nontruncated) { if(nonchamfered) {
cwspin(cw, -3); cwstep(cw); cwspin(cw, -3); cwspin(cw, -3); cwstep(cw); cwspin(cw, -3);
// cwspin(cw, 3); cwstep(cw); cwspin(cw, -2); cwstep(cw); cwspin(cw, 3); // cwspin(cw, 3); cwstep(cw); cwspin(cw, -2); cwstep(cw); cwspin(cw, 3);
} }
@ -414,7 +414,7 @@ void extendBarrier(cell *c) {
) { ) {
cellwalker cw(c, c->bardir); cellwalker cw(c, c->bardir);
if(nontruncated) { if(nonchamfered) {
cwstep(cw); cwstep(cw);
if(isbar4(cw.c)) { if(isbar4(cw.c)) {
cwstep(cw); cwspin(cw, 3); cwstep(cw); cwspin(cw, -1); cwstep(cw); cwstep(cw); cwspin(cw, 3); cwstep(cw); cwspin(cw, -1); cwstep(cw);
@ -478,7 +478,7 @@ bool buildBarrier6(cellwalker cw, int type) {
if(buggyGeneration) return true; if(buggyGeneration) return true;
if(!nontruncated) { if(!nonchamfered) {
cwstep(b[0]); cwstep(b[0]);
cwspin(b[1], 1); cwstep(b[1]); cwspin(b[1], 3); cwstep(b[1]); cwspin(b[1], 1); cwstep(b[1]); cwspin(b[1], 3); cwstep(b[1]);
cwspin(b[2], 4); cwstep(b[2]); cwspin(b[2], 4); cwstep(b[2]);
@ -506,18 +506,18 @@ bool buildBarrier6(cellwalker cw, int type) {
} }
if(type == 1) { if(type == 1) {
if(!(nontruncated?checkBarriersFront:checkBarriersBack)(b[1], 6, true)) return false; if(!(nonchamfered?checkBarriersFront:checkBarriersBack)(b[1], 6, true)) return false;
if(!(nontruncated?checkBarriersFront:checkBarriersBack)(b[2], 6, true)) return false; if(!(nonchamfered?checkBarriersFront:checkBarriersBack)(b[2], 6, true)) return false;
} }
else { else {
if(!(nontruncated?checkBarriersFront:checkBarriersBack)(b[0], 6, true)) return false; if(!(nonchamfered?checkBarriersFront:checkBarriersBack)(b[0], 6, true)) return false;
if(!(nontruncated?checkBarriersFront:checkBarriersBack)(b[3], 6, true)) return false; if(!(nonchamfered?checkBarriersFront:checkBarriersBack)(b[3], 6, true)) return false;
} }
for(int d=0; d<4; d++) { for(int d=0; d<4; d++) {
b[d].c->bardir = b[d].spin; b[d].c->bardir = b[d].spin;
if(nontruncated) { if(nonchamfered) {
b[0].c->barleft = laMirrored, b[0].c->barright = laMirrored2; b[0].c->barleft = laMirrored, b[0].c->barright = laMirrored2;
b[1].c->barleft = laMirror, b[1].c->barright = laMirrored; b[1].c->barleft = laMirror, b[1].c->barright = laMirrored;
b[2].c->barleft = laMirrored2, b[2].c->barright = laMirrored; b[2].c->barleft = laMirrored2, b[2].c->barright = laMirrored;
@ -530,17 +530,17 @@ bool buildBarrier6(cellwalker cw, int type) {
b[3].c->barleft = laMirrored2, b[3].c->barright = laMirrored; b[3].c->barleft = laMirrored2, b[3].c->barright = laMirrored;
} }
(nontruncated?extendBarrierFront:extendBarrierBack)(b[d].c); (nonchamfered?extendBarrierFront:extendBarrierBack)(b[d].c);
} }
if(nontruncated && false) { if(nonchamfered && false) {
for(int z=0; z<4; z++) for(int z=0; z<4; z++)
b[z].c->item = eItem(1+z+4*type); b[z].c->item = eItem(1+z+4*type);
for(int a=0; a<4; a++) for(int a=0; a<4; a++)
extendBarrierBack(cwpeek(b[a],0)); extendBarrierBack(cwpeek(b[a],0));
} }
if(!nontruncated) { if(!nonchamfered) {
setland(cwpeek(cw, 1), laMirrorWall); setland(cwpeek(cw, 1), laMirrorWall);
setland(cwpeek(cw, 2), laMirrored); setland(cwpeek(cw, 2), laMirrored);
setland(cwpeek(cw, 3), laMirrorWall2); setland(cwpeek(cw, 3), laMirrorWall2);
@ -594,11 +594,11 @@ bool buildBarrier4(cell *c, int d, int mode, eLand ll, eLand lr) {
cellwalker b1(c, d); cellwalker b1(c, d);
cellwalker b2(c, d); cellwalker b2(c, d);
if(nontruncated) cwstep(b2); if(nonchamfered) cwstep(b2);
else { cwstep(b2); cwspin(b2, 3); cwstep(b2); cwspin(b2, 3); cwstep(b2); } else { cwstep(b2); cwspin(b2, 3); cwstep(b2); cwspin(b2, 3); cwstep(b2); }
cellwalker b3(c, d); cellwalker b3(c, d);
if(nontruncated) { if(nonchamfered) {
cwspin(b3, -1); cwstep(b3); cwspin(b3, 3); cwspin(b3, -1); cwstep(b3); cwspin(b3, 3);
} }
else { else {
@ -606,7 +606,7 @@ bool buildBarrier4(cell *c, int d, int mode, eLand ll, eLand lr) {
} }
cellwalker b4(c, d); cellwalker b4(c, d);
if(nontruncated) { if(nonchamfered) {
cwspin(b4, 1); cwstep(b4); cwspin(b4, -3); cwspin(b4, 1); cwstep(b4); cwspin(b4, -3);
} }
else { else {
@ -642,16 +642,16 @@ bool buildBarrier4(cell *c, int d, int mode, eLand ll, eLand lr) {
c= b4.c; d=b4.spin; c= b4.c; d=b4.spin;
c->bardir = d, c->barleft = ll, c->barright = xr; extendBarrierFront(c); c->bardir = d, c->barleft = ll, c->barright = xr; extendBarrierFront(c);
if(!nontruncated) for(int a=-3; a<=3; a++) if(a) { if(!nonchamfered) for(int a=-3; a<=3; a++) if(a) {
setland(cwpeek(b1, a), a > 0 ? lr : ll); setland(cwpeek(b1, a), a > 0 ? lr : ll);
setland(cwpeek(b2, a), a > 0 ? xr : xl); setland(cwpeek(b2, a), a > 0 ? xr : xl);
setland(cwpeek(b3, a), a > 0 ? lr : xl); setland(cwpeek(b3, a), a > 0 ? lr : xl);
setland(cwpeek(b4, a), a > 0 ? xr : ll); setland(cwpeek(b4, a), a > 0 ? xr : ll);
} }
if(nontruncated) setbarrier(b1.c), setbarrier(b2.c), setbarrier(b3.c), setbarrier(b4.c); if(nonchamfered) setbarrier(b1.c), setbarrier(b2.c), setbarrier(b3.c), setbarrier(b4.c);
if(!nontruncated) { if(!nonchamfered) {
cell *cp; cell *cp;
cp = cwpeek(b1, 0); cp = cwpeek(b1, 0);
cp->barleft = ll; cp->barright = lr; setbarrier(cp); cp->barleft = ll; cp->barright = lr; setbarrier(cp);
@ -782,7 +782,7 @@ bool buildBarrierNowall(cell *c, eLand l2, bool force) {
} }
for(int i=0; i<3; i++) { for(int i=0; i<3; i++) {
int d = (S3>3 && nontruncated) ? (2+(i&1)) : dtab[i]; int d = (S3>3 && nonchamfered) ? (2+(i&1)) : dtab[i];
if(force) d=1; if(force) d=1;
cellwalker cw(c, d); cellwalker cw(c, d);

View File

@ -44,7 +44,7 @@ int euclidAlt(short x, short y) {
if(specialland == laTemple || specialland == laClearing) { if(specialland == laTemple || specialland == laClearing) {
if(euclid6) if(euclid6)
return max(int(x), x+y); return max(int(x), x+y);
else if(nontruncated) else if(nonchamfered)
return x + abs(y); return x + abs(y);
else else
return max(x, y); return max(x, y);
@ -57,7 +57,7 @@ int euclidAlt(short x, short y) {
max(int(x+y), int(y)) + 3), max(int(x+y), int(y)) + 3),
max(int(x), int(-y)) + 3 max(int(x), int(-y)) + 3
); );
else if(nontruncated) else if(nonchamfered)
return 3 - min(abs(x-y), abs(x+y)); return 3 - min(abs(x-y), abs(x+y));
else else
return 3 - min(abs(x), abs(y)); return 3 - min(abs(x), abs(y));
@ -594,7 +594,7 @@ void buildEquidistant(cell *c) {
if(c->landparam > 30 && b == laOcean && !generatingEquidistant && hrand(10) < 5) if(c->landparam > 30 && b == laOcean && !generatingEquidistant && hrand(10) < 5)
buildAnotherEquidistant(c); buildAnotherEquidistant(c);
if(c->landparam > HAUNTED_RADIUS+5 && b == laGraveyard && !generatingEquidistant && hrand(100) < (nontruncated?25:5) && items[itBone] >= 10) if(c->landparam > HAUNTED_RADIUS+5 && b == laGraveyard && !generatingEquidistant && hrand(100) < (nonchamfered?25:5) && items[itBone] >= 10)
buildAnotherEquidistant(c); buildAnotherEquidistant(c);
} }
@ -971,7 +971,7 @@ void buildBigStuff(cell *c, cell *from) {
else if(weirdhyperbolic) ; // non-Nowall barriers not implemented yet in weird hyperbolic else if(weirdhyperbolic) ; // non-Nowall barriers not implemented yet in weird hyperbolic
else if(c->land == laCrossroads2 && !nontruncated) else if(c->land == laCrossroads2 && !nonchamfered)
buildCrossroads2(c); buildCrossroads2(c);
else if(c->land == laPrairie && c->LHU.fi.walldist == 0) { else if(c->land == laPrairie && c->LHU.fi.walldist == 0) {
@ -1010,7 +1010,7 @@ void buildBigStuff(cell *c, cell *from) {
c->land == laHaunted ? 0 : c->land == laHaunted ? 0 :
(c->land == laGraveyard && !deepOcean) ? 0 : (c->land == laGraveyard && !deepOcean) ? 0 :
(c->land == laGraveyard && items[itBone] >= 10) ? 120 : (c->land == laGraveyard && items[itBone] >= 10) ? 120 :
c->land == laOcean ? (deepOcean ? (nontruncated ? 250 : 2000) : 0) : c->land == laOcean ? (deepOcean ? (nonchamfered ? 250 : 2000) : 0) :
c->land == laDragon ? 120 : c->land == laDragon ? 120 :
50)) 50))
{ {
@ -1065,7 +1065,7 @@ void buildBigStuff(cell *c, cell *from) {
if(c->land == laOcean && ctof(c) && deepOcean && !generatingEquidistant && !peace::on && if(c->land == laOcean && ctof(c) && deepOcean && !generatingEquidistant && !peace::on &&
(quickfind(laWhirlpool) || ( (quickfind(laWhirlpool) || (
hrand(2000) < (nontruncated ? 500 : 1000) && !tactic::on && !yendor::on))) hrand(2000) < (nonchamfered ? 500 : 1000) && !tactic::on && !yendor::on)))
createAlternateMap(c, 2, hsA); createAlternateMap(c, 2, hsA);
if(c->land == laCaribbean && ctof(c)) if(c->land == laCaribbean && ctof(c))
@ -1178,7 +1178,7 @@ void moreBigStuff(cell *c) {
} }
if(q == 1) buildCamelotWall(c); if(q == 1) buildCamelotWall(c);
// towers of Camelot // towers of Camelot
if(q == 0 && !nontruncated) { if(q == 0 && !nonchamfered) {
c->monst = moKnight; c->monst = moKnight;
c->wall = waTower; c->wall = waTower;
forCellEx(c2, c) { forCellEx(c2, c) {
@ -1203,7 +1203,7 @@ void moreBigStuff(cell *c) {
} }
if(d == 1) { if(d == 1) {
// roughly as many knights as table cells // roughly as many knights as table cells
if(hrand(nontruncated ? 2618 : 1720) < 1000) if(hrand(nonchamfered ? 2618 : 1720) < 1000)
c->monst = moKnight; c->monst = moKnight;
if(!euclid) for(int i=0; i<S7; i++) generateAlts(c->master->move[i]); if(!euclid) for(int i=0; i<S7; i++) generateAlts(c->master->move[i]);
for(int i=0; i<c->type; i++) for(int i=0; i<c->type; i++)
@ -1237,7 +1237,7 @@ void moreBigStuff(cell *c) {
c->land = laTemple, c->wall = waNone, c->monst = moNone, c->item = itNone; c->land = laTemple, c->wall = waNone, c->monst = moNone, c->item = itNone;
} }
if(d % TEMPLE_EACH==0) { if(d % TEMPLE_EACH==0) {
if((weirdhyperbolic && nontruncated) ? hrand(100) < 50 : pseudohept(c)) if((weirdhyperbolic && nonchamfered) ? hrand(100) < 50 : pseudohept(c))
c->wall = waColumn; c->wall = waColumn;
else { else {
if(!euclid) for(int i=0; i<S7; i++) generateAlts(c->master->move[i]); if(!euclid) for(int i=0; i<S7; i++) generateAlts(c->master->move[i]);

View File

@ -1,7 +1,7 @@
double randd() { return (rand() % 1000000) / 1000000. + .0000005; } double randd() { return (rand() % 1000000) / 1000000. + .0000005; }
double cellgfxdist(cell *c, int i) { double cellgfxdist(cell *c, int i) {
return nontruncated ? tessf : (c->type == 6 && (i&1)) ? hexhexdist : crossf; return nonchamfered ? tessf : (c->type == 6 && (i&1)) ? hexhexdist : crossf;
} }
transmatrix cellrelmatrix(cell *c, int i) { transmatrix cellrelmatrix(cell *c, int i) {
@ -13,7 +13,7 @@ hyperpoint randomPointIn(int t) {
while(true) { while(true) {
hyperpoint h = spin(2*M_PI*(randd()-.5)/t) * tC0(xpush(asinh(randd()))); hyperpoint h = spin(2*M_PI*(randd()-.5)/t) * tC0(xpush(asinh(randd())));
double d = double d =
nontruncated ? tessf : t == 6 ? hexhexdist : crossf; nonchamfered ? tessf : t == 6 ? hexhexdist : crossf;
if(hdist0(h) < hdist0(xpush(-d) * h)) if(hdist0(h) < hdist0(xpush(-d) * h))
return spin(2*M_PI/t * (rand() % t)) * h; return spin(2*M_PI/t * (rand() % t)) * h;
} }

View File

@ -70,7 +70,7 @@ hrmap_hyperbolic::hrmap_hyperbolic() {
h.spintable = 0; h.spintable = 0;
h.alt = NULL; h.alt = NULL;
h.distance = 0; h.distance = 0;
isnontruncated = nontruncated; isnonchamfered = nonchamfered;
h.c7 = newCell(S7, origin); h.c7 = newCell(S7, origin);
} }
@ -89,10 +89,10 @@ vector<int> siblings;
struct hrmap_spherical : hrmap { struct hrmap_spherical : hrmap {
heptagon *dodecahedron[12]; heptagon *dodecahedron[12];
bool isnontruncated; bool isnonchamfered;
hrmap_spherical() { hrmap_spherical() {
isnontruncated = nontruncated; isnonchamfered = nonchamfered;
for(int i=0; i<spherecells(); i++) { for(int i=0; i<spherecells(); i++) {
heptagon& h = *(dodecahedron[i] = new heptagon); heptagon& h = *(dodecahedron[i] = new heptagon);
h.s = hsOrigin; h.s = hsOrigin;
@ -162,7 +162,7 @@ struct hrmap_spherical : hrmap {
heptagon *getOrigin() { return dodecahedron[0]; } heptagon *getOrigin() { return dodecahedron[0]; }
~hrmap_spherical() { ~hrmap_spherical() {
dynamicval<bool> ph(nontruncated, isnontruncated); dynamicval<bool> ph(nonchamfered, isnonchamfered);
for(int i=0; i<spherecells(); i++) clearHexes(dodecahedron[i]); for(int i=0; i<spherecells(); i++) clearHexes(dodecahedron[i]);
for(int i=0; i<spherecells(); i++) delete dodecahedron[i]; for(int i=0; i<spherecells(); i++) delete dodecahedron[i];
} }
@ -365,10 +365,10 @@ int euclid_getvec(int dx, int dy) {
template<class T> void build_euclidean_moves(cell *c, int vec, const T& builder) { template<class T> void build_euclidean_moves(cell *c, int vec, const T& builder) {
int x, y; int x, y;
tie(x,y) = vec_to_pair(vec); tie(x,y) = vec_to_pair(vec);
c->type = a4 ? (nontruncated || ((x^y^1) & 1) ? 4 : 8) : 6; c->type = a4 ? (nonchamfered || ((x^y^1) & 1) ? 4 : 8) : 6;
if(c->type == 4) { if(c->type == 4) {
int m = nontruncated ? 1 : 2; int m = nonchamfered ? 1 : 2;
builder(euclid_getvec(+1,+0), 0, 2 * m); builder(euclid_getvec(+1,+0), 0, 2 * m);
builder(euclid_getvec(+0,+1), 1, 3 * m); builder(euclid_getvec(+0,+1), 1, 3 * m);
builder(euclid_getvec(-1,+0), 2, 0 * m); builder(euclid_getvec(-1,+0), 2, 0 * m);
@ -726,7 +726,7 @@ cell *createMov(cell *c, int d) {
} }
if(c->mov[d]) return c->mov[d]; if(c->mov[d]) return c->mov[d];
else if(nontruncated) { else if(nonchamfered) {
heptagon *h2 = createStep(c->master, d); heptagon *h2 = createStep(c->master, d);
merge(c,d,h2->c7,c->master->spin(d),false); merge(c,d,h2->c7,c->master->spin(d),false);
} }
@ -840,7 +840,7 @@ heptagon deletion_marker;
void clearHexes(heptagon *at) { void clearHexes(heptagon *at) {
if(at->c7) { if(at->c7) {
if(!nontruncated) for(int i=0; i<7; i++) if(!nonchamfered) for(int i=0; i<7; i++)
clearcell(at->c7->mov[i]); clearcell(at->c7->mov[i]);
clearcell(at->c7); clearcell(at->c7);
} }
@ -880,7 +880,7 @@ void verifycell(cell *c) {
for(int i=0; i<t; i++) { for(int i=0; i<t; i++) {
cell *c2 = c->mov[i]; cell *c2 = c->mov[i];
if(c2) { if(c2) {
if(!euclid && !nontruncated && c == c->master->c7) verifycell(c2); if(!euclid && !nonchamfered && c == c->master->c7) verifycell(c2);
if(c2->mov[c->spn(i)] && c2->mov[c->spn(i)] != c) { if(c2->mov[c->spn(i)] && c2->mov[c->spn(i)] != c) {
printf("cell error %p:%d [%d] %p:%d [%d]\n", c, i, c->type, c2, c->spn(i), c2->type); printf("cell error %p:%d [%d] %p:%d [%d]\n", c, i, c->type, c2, c->spn(i), c2->type);
exit(1); exit(1);
@ -1341,7 +1341,7 @@ int celldistance(cell *c1, cell *c2) {
if(ac == xtgt) return d; if(ac == xtgt) return d;
ac = chosenDown(ac, 1, 1, celldist); ac = chosenDown(ac, 1, 1, celldist);
if(ac == tgt) return d+2; if(ac == tgt) return d+2;
if(!nontruncated) { if(!nonchamfered) {
ac = chosenDown(ac, 1, 1, celldist); ac = chosenDown(ac, 1, 1, celldist);
if(ac == tgt) { if(ac == tgt) {
if(chosenDown(ac0, 1, 0, celldist) == if(chosenDown(ac0, 1, 0, celldist) ==

View File

@ -205,7 +205,7 @@ struct geometryinfo {
int vertex; int vertex;
int quotientstyle; int quotientstyle;
eGeometryClass cclass; eGeometryClass cclass;
array<int,2> distlimit; // truncated, non-truncated array<int,2> distlimit; // chamfered, non-chamfered
}; };
static const int qZEBRA = 1; static const int qZEBRA = 1;

View File

@ -182,7 +182,7 @@ else if(args()[0] == '-' && args()[1] == x && args()[2] == '0') { showstartmenu
TOGGLE('o', vid.usingGL, switchGL()) TOGGLE('o', vid.usingGL, switchGL())
TOGGLE('C', chaosmode, restartGame('C')) TOGGLE('C', chaosmode, restartGame('C'))
TOGGLE('7', nontruncated, restartGame('7')) TOGGLE('7', nonchamfered, restartGame('7'))
TOGGLE('f', vid.full, switchFullscreen()) TOGGLE('f', vid.full, switchFullscreen())
TOGGLE('T', tactic::on, restartGame('t')) TOGGLE('T', tactic::on, restartGame('t'))
TOGGLE('S', shmup::on, restartGame('s')) TOGGLE('S', shmup::on, restartGame('s'))

View File

@ -747,7 +747,7 @@ namespace clearing {
} }
int d = celldistAlt(c); int d = celldistAlt(c);
if(nontruncated) { if(nonchamfered) {
for(int i=0; i<S7; i++) { for(int i=0; i<S7; i++) {
cell *c2 = createMov(c, i); cell *c2 = createMov(c, i);
if(!pseudohept(c2) && celldistAlt(c2) == d-1) if(!pseudohept(c2) && celldistAlt(c2) == d-1)
@ -1111,7 +1111,7 @@ namespace mirror {
} }
void createMirages(cellwalker cw, int cpid) { void createMirages(cellwalker cw, int cpid) {
if(nontruncated) { if(nonchamfered) {
for(int i=0; i<cw.c->type; i++) { for(int i=0; i<cw.c->type; i++) {
cellwalker C2 = cw; cellwalker C2 = cw;
cwstep(C2); cwstep(C2);
@ -1321,9 +1321,9 @@ namespace mirror {
v.push_back(1); v.push_back(1);
stepcount++; if(stepcount > 10000) { printf("failhep\n"); return cw; } stepcount++; if(stepcount > 10000) { printf("failhep\n"); return cw; }
} }
if(nontruncated && cwpeek(cw,0) == cwcopy.c) if(nonchamfered && cwpeek(cw,0) == cwcopy.c)
v.pop_back(); v.pop_back();
if(nontruncated && cwpeek(cw,3)->land == laMirrored && cwpeek(cw,2)->land == laMirrorWall) { if(nonchamfered && cwpeek(cw,3)->land == laMirrored && cwpeek(cw,2)->land == laMirrorWall) {
cw.mirrored = !cw.mirrored; cw.mirrored = !cw.mirrored;
auto p = traceback(v, cw); auto p = traceback(v, cw);
if(p.first) return p.second; if(p.first) return p.second;
@ -1828,7 +1828,7 @@ namespace heat {
cell *c = playerpos(i); cell *c = playerpos(i);
if(!c) continue; if(!c) continue;
double xrate = (c->land == laCocytus && shmup::on) ? rate/3 : rate; double xrate = (c->land == laCocytus && shmup::on) ? rate/3 : rate;
if(nontruncated) xrate *= 1.7; if(nonchamfered) xrate *= 1.7;
if(!shmup::on) xrate /= FIX94; if(!shmup::on) xrate /= FIX94;
if(isIcyLand(c)) if(isIcyLand(c))
HEAT(c) += (markOrb(itOrbWinter) ? -1.2 : 1.2) * xrate; HEAT(c) += (markOrb(itOrbWinter) ? -1.2 : 1.2) * xrate;
@ -1843,7 +1843,7 @@ namespace heat {
for(int i=0; i<dcs; i++) { for(int i=0; i<dcs; i++) {
cell *c = allcells[i]; cell *c = allcells[i];
double xrate = (c->land == laCocytus && shmup::on) ? 1/3. : 1; double xrate = (c->land == laCocytus && shmup::on) ? 1/3. : 1;
if(nontruncated) xrate *= 1.7; if(nonchamfered) xrate *= 1.7;
if(!shmup::on) xrate /= FIX94; if(!shmup::on) xrate /= FIX94;
if(c->cpdist > 7 && !doall) break; if(c->cpdist > 7 && !doall) break;
@ -2524,7 +2524,7 @@ namespace sword {
} }
void shuffle(int i) { void shuffle(int i) {
sword::angle[i] = euclid ? S7*hrand(6) : nontruncated ? 3*hrand(S14)+1 : hrand(S42); sword::angle[i] = euclid ? S7*hrand(6) : nonchamfered ? 3*hrand(S14)+1 : hrand(S42);
} }
void reset() { void reset() {
@ -2709,7 +2709,7 @@ namespace prairie {
c->LHU.fi.rval = (y&15); c->LHU.fi.rval = (y&15);
} }
else if(sphere) { else if(sphere) {
c->LHU.fi.rval = celldistance(c, cwt.c) + 8 - (nontruncated ? 2 : 3); c->LHU.fi.rval = celldistance(c, cwt.c) + 8 - (nonchamfered ? 2 : 3);
} }
else if(weirdhyperbolic) { else if(weirdhyperbolic) {
c->LHU.fi.rval = max(celldist(c), 15); c->LHU.fi.rval = max(celldist(c), 15);
@ -2771,8 +2771,8 @@ namespace prairie {
} }
} }
#define RLOW (sphere?(nontruncated?7:6):nontruncated?4:2) #define RLOW (sphere?(nonchamfered?7:6):nonchamfered?4:2)
#define RHIGH (sphere?(nontruncated?8:9):nontruncated?11:13) #define RHIGH (sphere?(nonchamfered?8:9):nonchamfered?11:13)
bool isriver(cell *c) { bool isriver(cell *c) {
return c->land == laPrairie && c->LHU.fi.rval <= RHIGH && c->LHU.fi.rval >= RLOW; return c->land == laPrairie && c->LHU.fi.rval <= RHIGH && c->LHU.fi.rval >= RLOW;
@ -2934,7 +2934,7 @@ namespace prairie {
else if(!enter && isriver(cwt.c)) enter = cwt.c; else if(!enter && isriver(cwt.c)) enter = cwt.c;
if(size(tchoices)) { if(size(tchoices)) {
if(lasttreasure && lasttreasure->item == itGreenGrass) { if(lasttreasure && lasttreasure->item == itGreenGrass) {
if(celldistance(lasttreasure, cwt.c) >= (nontruncated ? 7 : 10)) { if(celldistance(lasttreasure, cwt.c) >= (nonchamfered ? 7 : 10)) {
lasttreasure->item = itNone; lasttreasure->item = itNone;
forCellEx(c2, lasttreasure) if(c2->item == itGreenGrass) c2->item = itNone; forCellEx(c2, lasttreasure) if(c2->item == itGreenGrass) c2->item = itNone;
} }
@ -3310,7 +3310,7 @@ namespace halloween {
else if(CHANCE(5) && itr >= 60) { else if(CHANCE(5) && itr >= 60) {
dragoncount++; dragoncount++;
} }
else if(dragoncount && !nontruncated && !mcount) { else if(dragoncount && !nonchamfered && !mcount) {
bool fill = false; bool fill = false;
for(int i=0; i<4; i++) for(int i=0; i<4; i++)
if(!dragoncells[i] || dragoncells[i]->monst) if(!dragoncells[i] || dragoncells[i]->monst)

View File

@ -321,7 +321,7 @@ void initConfig() {
addsaver(hardcore, "mode-hardcore", false); addsaver(hardcore, "mode-hardcore", false);
addsaver(chaosmode, "mode-chaos"); addsaver(chaosmode, "mode-chaos");
addsaver(inv::on, "mode-Orb Strategy"); addsaver(inv::on, "mode-Orb Strategy");
addsaver(nontruncated, "mode-heptagonal", false); addsaver(nonchamfered, "mode-heptagonal", false);
addsaver(peace::on, "mode-peace"); addsaver(peace::on, "mode-peace");
addsaver(peace::otherpuzzles, "mode-peace-submode"); addsaver(peace::otherpuzzles, "mode-peace-submode");
addsaverenum(specialland, "land for special modes"); addsaverenum(specialland, "land for special modes");
@ -337,7 +337,7 @@ void initConfig() {
} }
bool inSpecialMode() { bool inSpecialMode() {
return chaosmode || nontruncated || peace::on || tour::on || return chaosmode || nonchamfered || peace::on || tour::on ||
yendor::on || tactic::on || randomPatternsMode || yendor::on || tactic::on || randomPatternsMode ||
geometry != gNormal || pmodel != mdDisk || vid.alpha != 1 || vid.scale != 1 || geometry != gNormal || pmodel != mdDisk || vid.alpha != 1 || vid.scale != 1 ||
rug::rugged || vid.monmode != DEFAULT_MONMODE || rug::rugged || vid.monmode != DEFAULT_MONMODE ||
@ -350,7 +350,7 @@ void resetModes(char leave = 'c') {
if(shmup::on != (leave == 's')) restartGame('s'); if(shmup::on != (leave == 's')) restartGame('s');
if(inv::on != (leave == 'i')) restartGame('i'); if(inv::on != (leave == 'i')) restartGame('i');
if(chaosmode != (leave == 'C')) restartGame('C'); if(chaosmode != (leave == 'C')) restartGame('C');
if(nontruncated != (leave == '7')) restartGame('7'); if(nonchamfered != (leave == '7')) restartGame('7');
if(peace::on != (leave == 'P')) restartGame('P'); if(peace::on != (leave == 'P')) restartGame('P');
#if CAP_TOUR #if CAP_TOUR
if(tour::on != (leave == 'T')) restartGame('T'); if(tour::on != (leave == 'T')) restartGame('T');
@ -454,11 +454,11 @@ void loadOldConfig(FILE *f) {
shmup::loadConfig(f); shmup::loadConfig(f);
aa = rug::renderonce; bb = rug::rendernogl; cc = nontruncated; dd = chaosmode; aa = rug::renderonce; bb = rug::rendernogl; cc = nonchamfered; dd = chaosmode;
int ee = vid.steamscore; int ee = vid.steamscore;
double rs = 2/rug::model_distance; double rs = 2/rug::model_distance;
err=fscanf(f, "%d%d%d%d%lf%d%d", &aa, &bb, &rug::texturesize, &cc, &rs, &ee, &dd); err=fscanf(f, "%d%d%d%d%lf%d%d", &aa, &bb, &rug::texturesize, &cc, &rs, &ee, &dd);
rug::renderonce = aa; rug::rendernogl = bb; nontruncated = cc; chaosmode = dd; vid.steamscore = ee; rug::renderonce = aa; rug::rendernogl = bb; nonchamfered = cc; chaosmode = dd; vid.steamscore = ee;
rug::model_distance = 2/rs; rug::model_distance = 2/rs;
aa=conformal::autobandhistory; aa=conformal::autobandhistory;

View File

@ -383,7 +383,7 @@ struct fpattern {
dists[at] = i; dists[at] = i;
for(int q=0; q<S7; q++) { for(int q=0; q<S7; q++) {
dists[at] = i; dists[at] = i;
if(nontruncated) if(nonchamfered)
indist[i+1].push_back(connections[at]); indist[i+1].push_back(connections[at]);
else { else {
indist[i+2].push_back(connections[at]); indist[i+2].push_back(connections[at]);
@ -397,7 +397,7 @@ struct fpattern {
void analyze() { void analyze() {
DEBB(DF_FIELD, (debugfile, "nontruncated = %d\n", nontruncated)); DEBB(DF_FIELD, (debugfile, "nonchamfered = %d\n", nonchamfered));
int N = connections.size(); int N = connections.size();
markers.resize(N); markers.resize(N);
@ -512,7 +512,7 @@ struct fpattern {
W = mmul(Wall, W); W = mmul(Wall, W);
} }
} }
dijkstra(nontruncated ? distriver : distflower, indist); dijkstra(nonchamfered ? distriver : distflower, indist);
W = matrices[riverid]; W = matrices[riverid];
for(int i=0; i<wallorder; i++) { for(int i=0; i<wallorder; i++) {
@ -534,7 +534,7 @@ struct fpattern {
SETDIST(W, 1, itGold) SETDIST(W, 1, itGold)
W = mmul(W, Wall); W = mmul(W, Wall);
} }
int riverdist = dijkstra(nontruncated ? distflower : distriver, indist); int riverdist = dijkstra(nonchamfered ? distflower : distriver, indist);
DEBB(DF_FIELD, (debugfile, "river dist = %d\n", riverdist)); DEBB(DF_FIELD, (debugfile, "river dist = %d\n", riverdist));
for(int i=0; i<size(currfp.matrices); i++) for(int i=0; i<size(currfp.matrices); i++)
@ -543,7 +543,7 @@ struct fpattern {
break; break;
} }
if(!nontruncated) { if(!nonchamfered) {
W = matrices[riverid]; W = matrices[riverid];
for(int i=0; i<wallorder; i++) { for(int i=0; i<wallorder; i++) {
SETDIST(W, 0, itStatue) SETDIST(W, 0, itStatue)

View File

@ -2129,7 +2129,7 @@ void killMonster(cell *c, eMonster who, flagtype deathflags) {
for(int i=0; i<c->type; i++) { for(int i=0; i<c->type; i++) {
cell *c2 = c->mov[i]; cell *c2 = c->mov[i];
if(c2 && c2->item == itCompass) toomany = true; if(c2 && c2->item == itCompass) toomany = true;
if(c2 && !nontruncated) for(int j=0; j<c2->type; j++) if(c2 && !nonchamfered) for(int j=0; j<c2->type; j++)
if(c2->mov[j] && c2->mov[j]->item == itCompass) if(c2->mov[j] && c2->mov[j]->item == itCompass)
toomany = true; toomany = true;
} }
@ -2677,7 +2677,7 @@ void buildRosemap() {
} }
int getDistLimit() { return ginf[geometry].distlimit[nontruncated]; } int getDistLimit() { return ginf[geometry].distlimit[nonchamfered]; }
bool nogoSlow(cell *to, cell *from) { bool nogoSlow(cell *to, cell *from) {
if(cellEdgeUnstable(to) && gravityLevel(to) >= gravityLevel(from)) return true; if(cellEdgeUnstable(to) && gravityLevel(to) >= gravityLevel(from)) return true;
@ -3077,7 +3077,7 @@ void toggleGates(cell *ct, eWall type, int rad) {
void toggleGates(cell *ct, eWall type) { void toggleGates(cell *ct, eWall type) {
playSound(ct, "click"); playSound(ct, "click");
numgates = 0; numgates = 0;
if(type == waClosePlate && nontruncated) if(type == waClosePlate && nonchamfered)
toggleGates(ct, type, 2); toggleGates(ct, type, 2);
else else
toggleGates(ct, type, 3); toggleGates(ct, type, 3);
@ -6771,11 +6771,11 @@ ld circlesizeD[10000];
int lastsize; int lastsize;
void computeSizes() { void computeSizes() {
lastsize = nontruncated ? 44 : 76; lastsize = nonchamfered ? 44 : 76;
circlesize[0] = 1; circlesize[0] = 1;
if(!nontruncated) { if(!nonchamfered) {
circlesize[1] = 1*7; circlesize[1] = 1*7;
circlesize[2] = 2*7; circlesize[2] = 2*7;
circlesize[3] = 4*7; circlesize[3] = 4*7;
@ -7523,7 +7523,7 @@ bool movepcto(int d, int subdir, bool checkonly) {
if(checkonly) return false; if(checkonly) return false;
if(nonAdjacent(cwt.c,c2)) if(nonAdjacent(cwt.c,c2))
addMessage(XLAT( addMessage(XLAT(
nontruncated ? nonchamfered ?
"You cannot move between the cells without dots here!" : "You cannot move between the cells without dots here!" :
"You cannot move between the triangular cells here!" "You cannot move between the triangular cells here!"
)); ));

View File

@ -10,7 +10,7 @@ string euchelp =
"You can try many different geometries here. We start by gluing " "You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. " "n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, " "Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'truncated' by " "or requires a hyperbolic space. The result may be then 'chamfered' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play " "replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is " "with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, " "obtained from the sphere by making the antipodes be the same point, "
@ -18,7 +18,7 @@ string euchelp =
"Have fun experimenting! " "Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, " "Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n" "except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries " "In standard geometry (chamfered or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this " "you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
@ -41,7 +41,7 @@ void showQuotientConfig() {
nextPrimes(gxcur); nextPrimes(gxcur);
for(int i=0; i<size(gxcur.primes); i++) { for(int i=0; i<size(gxcur.primes); i++) {
auto& p = gxcur.primes[i]; auto& p = gxcur.primes[i];
dialog::addBoolItem(XLAT("order %1%2 (non-truncated cells: %3)", its(p.p), p.squared ? "²" : "", its(p.cells)), i == gxcur.current_prime_id, 'A'+i); dialog::addBoolItem(XLAT("order %1%2 (non-chamfered cells: %3)", its(p.p), p.squared ? "²" : "", its(p.cells)), i == gxcur.current_prime_id, 'A'+i);
} }
if(size(gxcur.primes) < 6) { if(size(gxcur.primes) < 6) {
@ -188,7 +188,7 @@ void showTorusConfig() {
torusconfig::sdx = torusconfig::newsdx; torusconfig::sdx = torusconfig::newsdx;
torusconfig::sdy = torusconfig::newsdy; torusconfig::sdy = torusconfig::newsdy;
torusconfig::activate(); torusconfig::activate();
if((square && torus_chamfer) != nontruncated) restartGame('7', false, true); if((square && torus_chamfer) != nonchamfered) restartGame('7', false, true);
targetgeometry = gTorus; restartGame('g', false, true); targetgeometry = gTorus; restartGame('g', false, true);
} }
else if(uni == 'c') { else if(uni == 'c') {
@ -209,7 +209,7 @@ void showTorusConfig() {
dialog::display(); dialog::display();
} }
string truncatenames[2] = {" (t)", " (n)"}; string chamfernames[2] = {" (c)", " (n)"};
void showEuclideanMenu() { void showEuclideanMenu() {
cmode = sm::SIDE; cmode = sm::SIDE;
@ -235,7 +235,7 @@ void showEuclideanMenu() {
int ts = ginf[geometry].sides; int ts = ginf[geometry].sides;
int tv = ginf[geometry].vertex; int tv = ginf[geometry].vertex;
int tq = ginf[geometry].quotientstyle; int tq = ginf[geometry].quotientstyle;
int nom = (nontruncated ? tv : tv+ts) * ((tq & qELLIP) ? 2 : 4); int nom = (nonchamfered ? tv : tv+ts) * ((tq & qELLIP) ? 2 : 4);
int denom = (2*ts + 2*tv - ts * tv); int denom = (2*ts + 2*tv - ts * tv);
dialog::addSelItem(XLAT("land"), XLAT1(linf[specialland].name), '5'); dialog::addSelItem(XLAT("land"), XLAT1(linf[specialland].name), '5');
@ -247,18 +247,18 @@ void showEuclideanMenu() {
dialog::addBreak(50); dialog::addBreak(50);
if(ts == 6 && tv == 3) if(ts == 6 && tv == 3)
dialog::addSelItem(XLAT("truncated"), XLAT("does not matter"), 't'); dialog::addSelItem(XLAT("chamfered"), XLAT("does not matter"), 't');
else else
dialog::addBoolItem(XLAT("truncated"), !nontruncated, 't'); dialog::addBoolItem(XLAT("chamfered"), !nonchamfered, 't');
dialog::addBreak(50); dialog::addBreak(50);
int worldsize = denom ? nom/denom : 0; int worldsize = denom ? nom/denom : 0;
if(tq & qTORUS) worldsize = torusconfig::qty; if(tq & qTORUS) worldsize = torusconfig::qty;
if(tq & qZEBRA) worldsize = nontruncated ? 12 : 40; if(tq & qZEBRA) worldsize = nonchamfered ? 12 : 40;
if(tq & qFIELD) { if(tq & qFIELD) {
worldsize = size(currfp.matrices) / ts; worldsize = size(currfp.matrices) / ts;
if(!nontruncated) worldsize = ((ts+tv)*worldsize) / tv; if(!nonchamfered) worldsize = ((ts+tv)*worldsize) / tv;
} }
dialog::addSelItem(XLAT("sides per face"), its(ts), 0); dialog::addSelItem(XLAT("sides per face"), its(ts), 0);
@ -339,7 +339,7 @@ void showEuclideanMenu() {
torusconfig::newsdx = torusconfig::sdx, torusconfig::newsdx = torusconfig::sdx,
torusconfig::newsdy = torusconfig::sdy, torusconfig::newsdy = torusconfig::sdy,
torusconfig::newmode = torusconfig::torus_mode, torusconfig::newmode = torusconfig::torus_mode,
torus_chamfer = nontruncated, torus_chamfer = nonchamfered,
pushScreen(showTorusConfig); pushScreen(showTorusConfig);
if(quotient==2) pushScreen(showQuotientConfig); if(quotient==2) pushScreen(showQuotientConfig);
} }
@ -350,7 +350,7 @@ void showEuclideanMenu() {
else { else {
dialog::init(XLAT("experiment with geometry")); dialog::init(XLAT("experiment with geometry"));
dialog::addSelItem(XLAT("geometry"), XLAT(ginf[geometry].name) + XLAT(truncatenames[nontruncated]), '5'); dialog::addSelItem(XLAT("geometry"), XLAT(ginf[geometry].name) + XLAT(chamfernames[nonchamfered]), '5');
dialog::addBreak(50); dialog::addBreak(50);
generateLandList(isLandValid); generateLandList(isLandValid);

View File

@ -53,7 +53,7 @@ void precalc() {
// dynamicval<eGeometry> g(geometry, gNormal); // dynamicval<eGeometry> g(geometry, gNormal);
// precalc(); } // precalc(); }
// for(int i=0; i<S84; i++) spinmatrix[i] = spin(i * M_PI / S42); // for(int i=0; i<S84; i++) spinmatrix[i] = spin(i * M_PI / S42);
if(a4 && nontruncated) { if(a4 && nonchamfered) {
crossf = .5; crossf = .5;
hexf = .5; hexf = .5;
hcrossf = crossf * sqrt(2) / 2; hcrossf = crossf * sqrt(2) / 2;
@ -119,7 +119,7 @@ void precalc() {
else { else {
hcrossf = hdist(xpush(tessf) * C0, spin(2*M_PI/S7) * xpush(tessf) * C0) / 2; hcrossf = hdist(xpush(tessf) * C0, spin(2*M_PI/S7) * xpush(tessf) * C0) / 2;
} }
crossf = nontruncated ? tessf : hcrossf; crossf = nonchamfered ? tessf : hcrossf;
fmin = 0, fmax = tessf; fmin = 0, fmax = tessf;
for(int p=0; p<100; p++) { for(int p=0; p<100; p++) {
@ -132,9 +132,9 @@ void precalc() {
} }
hexf = fmin; hexf = fmin;
rhexf = nontruncated ? hcrossf : hexf; rhexf = nonchamfered ? hcrossf : hexf;
if(!euclid && !nontruncated && !(S7&1)) if(!euclid && !nonchamfered && !(S7&1))
hexshift = ALPHA/2 + ALPHA * ((S7-1)/2) + M_PI; hexshift = ALPHA/2 + ALPHA * ((S7-1)/2) + M_PI;
finish: finish:

View File

@ -157,7 +157,7 @@ void drawSpeed(const transmatrix& V) {
} }
int ctof(cell *c) { int ctof(cell *c) {
if(nontruncated) return 1; if(nonchamfered) return 1;
// if(euclid) return 0; // if(euclid) return 0;
return ishept(c) ? 1 : 0; return ishept(c) ? 1 : 0;
// c->type == 6 ? 0 : 1; // c->type == 6 ? 0 : 1;
@ -238,8 +238,8 @@ int displaydir(cell *c, int d) {
} }
double hexshiftat(cell *c) { double hexshiftat(cell *c) {
if(ctof(c) && S7==6 && S3 == 4 && !nontruncated) return hexshift + 2*M_PI/S7; if(ctof(c) && S7==6 && S3 == 4 && !nonchamfered) return hexshift + 2*M_PI/S7;
if(ctof(c) && (S7==8 || S7 == 4) && S3 == 3 && !nontruncated) return hexshift + 2*M_PI/S7; if(ctof(c) && (S7==8 || S7 == 4) && S3 == 3 && !nonchamfered) return hexshift + 2*M_PI/S7;
if(hexshift && ctof(c)) return hexshift; if(hexshift && ctof(c)) return hexshift;
return 0; return 0;
} }
@ -291,11 +291,11 @@ void drawPlayerEffects(const transmatrix& V, cell *c, bool onplayer) {
if(!euclid) for(int a=0; a<S42; a++) { if(!euclid) for(int a=0; a<S42; a++) {
int dda = S42 + (-1-2*a); int dda = S42 + (-1-2*a);
if(a == ang && items[itOrbSword]) continue; if(a == ang && items[itOrbSword]) continue;
if(nontruncated && a%3 != ang%3) continue; if(nonchamfered && a%3 != ang%3) continue;
if((a+S21)%S42 == ang && items[itOrbSword2]) continue; if((a+S21)%S42 == ang && items[itOrbSword2]) continue;
bool longer = sword::pos(cwt.c, a-1) != sword::pos(cwt.c, a+1); bool longer = sword::pos(cwt.c, a-1) != sword::pos(cwt.c, a+1);
int col = darkena(0xC0C0C0, 0, 0xFF); int col = darkena(0xC0C0C0, 0, 0xFF);
queueline(Vnow*ddi0(dda, nontruncated ? 0.6 : longer ? 0.36 : 0.4), Vnow*ddi0(dda, nontruncated ? 0.7 : longer ? 0.44 : 0.42), col, 1); queueline(Vnow*ddi0(dda, nonchamfered ? 0.6 : longer ? 0.36 : 0.4), Vnow*ddi0(dda, nonchamfered ? 0.7 : longer ? 0.44 : 0.42), col, 1);
} }
#endif #endif
@ -2284,7 +2284,7 @@ void drawTowerFloor(const transmatrix& V, cell *c, int col, cellfunction *cf = c
if(i == 9) j = 4; if(i == 9) j = 4;
if(i == 10) j = 5; if(i == 10) j = 5;
if(i == 13) j = 6; if(i == 13) j = 6;
if(nontruncated) { if(nonchamfered) {
if(i == 7) j = 7; if(i == 7) j = 7;
if(i == 11) j = 8; if(i == 11) j = 8;
if(i == 15) j = 9; if(i == 15) j = 9;
@ -2308,7 +2308,7 @@ void drawZebraFloor(const transmatrix& V, cell *c, int col) {
auto si = patterns::getpatterninfo(c, 'z', patterns::SPF_SYM0123); auto si = patterns::getpatterninfo(c, 'z', patterns::SPF_SYM0123);
int j; int j;
if(nontruncated) j = 4; if(nonchamfered) j = 4;
else if(si.id >=4 && si.id < 16) j = 2; else if(si.id >=4 && si.id < 16) j = 2;
else if(si.id >= 16 && si.id < 28) j = 1; else if(si.id >= 16 && si.id < 28) j = 1;
else if(si.id >= 28 && si.id < 40) j = 3; else if(si.id >= 28 && si.id < 40) j = 3;
@ -2330,7 +2330,7 @@ void drawReptileFloor(const transmatrix& V, cell *c, int col, bool usefloor) {
int j; int j;
if(!wmescher) j = 4; if(!wmescher) j = 4;
else if(nontruncated) j = 0; else if(nonchamfered) j = 0;
else if(si.id < 4) j = 0; else if(si.id < 4) j = 0;
else if(si.id >=4 && si.id < 16) j = 1; else if(si.id >=4 && si.id < 16) j = 1;
else if(si.id >= 16 && si.id < 28) j = 2; else if(si.id >= 16 && si.id < 28) j = 2;
@ -2388,7 +2388,7 @@ void drawReptileFloor(const transmatrix& V, cell *c, int col, bool usefloor) {
} }
void drawEmeraldFloor(const transmatrix& V, cell *c, int col) { void drawEmeraldFloor(const transmatrix& V, cell *c, int col) {
if(!euclid && !nontruncated) { if(!euclid && !nonchamfered) {
auto si = patterns::getpatterninfo(c, 'f', patterns::SPF_SYM0123); auto si = patterns::getpatterninfo(c, 'f', patterns::SPF_SYM0123);
int j = -1; int j = -1;
@ -2928,7 +2928,7 @@ bool noAdjacentChasms(cell *c) {
void floorShadow(cell *c, const transmatrix& V, int col, bool warp) { void floorShadow(cell *c, const transmatrix& V, int col, bool warp) {
if(pmodel == mdHyperboloid || pmodel == mdBall) if(pmodel == mdHyperboloid || pmodel == mdBall)
return; // shadows break the depth testing return; // shadows break the depth testing
if(shmup::on || nontruncated) warp = false; if(shmup::on || nonchamfered) warp = false;
dynamicval<int> p(poly_outline, OUTLINE_TRANS); dynamicval<int> p(poly_outline, OUTLINE_TRANS);
if(wmescher && qfi.special) { if(wmescher && qfi.special) {
queuepolyat(V * qfi.spin * shadowmulmatrix, *qfi.shape, col, PPR_WALLSHADOW); queuepolyat(V * qfi.spin * shadowmulmatrix, *qfi.shape, col, PPR_WALLSHADOW);
@ -2945,7 +2945,7 @@ void floorShadow(cell *c, const transmatrix& V, int col, bool warp) {
queuepolyat(V * applyPatterndir(c, si), shTriheptaFloorShadow[ctof(c)], col, PPR_WALLSHADOW); queuepolyat(V * applyPatterndir(c, si), shTriheptaFloorShadow[ctof(c)], col, PPR_WALLSHADOW);
} }
} }
else if(c->land == laDual && !nontruncated) { else if(c->land == laDual && !nonchamfered) {
if(euclid && !a4 && ishex1(c)) if(euclid && !a4 && ishex1(c))
queuepolyat(V * pispin, shBigTriShadow, col, PPR_WALLSHADOW); queuepolyat(V * pispin, shBigTriShadow, col, PPR_WALLSHADOW);
else else
@ -2969,7 +2969,7 @@ void plainfloor(cell *c, bool warp, const transmatrix &V, int col, int prio) {
queuepolyat(V * applyPatterndir(c, si), shTriheptaFloor[sphere ? ctof(c) : si.id], col, prio); queuepolyat(V * applyPatterndir(c, si), shTriheptaFloor[sphere ? ctof(c) : si.id], col, prio);
} }
} }
else if(c->land == laDual && !nontruncated) { else if(c->land == laDual && !nonchamfered) {
if(euclid && !a4 && ishex1(c)) if(euclid && !a4 && ishex1(c))
queuepolyat(V * pispin, shBigTriangle, col, prio); queuepolyat(V * pispin, shBigTriangle, col, prio);
else else
@ -2987,7 +2987,7 @@ void qplainfloor(cell *c, bool warp, const transmatrix &V, int col) {
auto si = patterns::getpatterninfo(c, 0, 0); auto si = patterns::getpatterninfo(c, 0, 0);
qfloor(c, V, applyPatterndir(c, si), shTriheptaFloor[si.id], col); qfloor(c, V, applyPatterndir(c, si), shTriheptaFloor[si.id], col);
} }
else if(c->land == laDual && !nontruncated) else if(c->land == laDual && !nonchamfered)
qfloor_eswap(c, V, shBigTriangle, col); qfloor_eswap(c, V, shBigTriangle, col);
else { else {
qfloor(c, V, shFloor[ctof(c)], col); qfloor(c, V, shFloor[ctof(c)], col);
@ -2997,7 +2997,7 @@ void qplainfloor(cell *c, bool warp, const transmatrix &V, int col) {
int wavephase; int wavephase;
void warpfloor(cell *c, const transmatrix& V, int col, int prio, bool warp) { void warpfloor(cell *c, const transmatrix& V, int col, int prio, bool warp) {
if(shmup::on || nontruncated) warp = false; if(shmup::on || nonchamfered) warp = false;
#if CAP_TEXTURE #if CAP_TEXTURE
if(qfi.tinf) { if(qfi.tinf) {
queuetable(V*qfi.spin, &qfi.tinf->vertices[0], size(qfi.tinf->vertices) / 3, 0, texture::recolor(col), prio); queuetable(V*qfi.spin, &qfi.tinf->vertices[0], size(qfi.tinf->vertices) / 3, 0, texture::recolor(col), prio);
@ -3049,9 +3049,9 @@ void escherSidewall(cell *c, int sidepar, const transmatrix& V, int col) {
} }
void placeSidewall(cell *c, int i, int sidepar, const transmatrix& V, bool warp, bool mirr, int col) { void placeSidewall(cell *c, int i, int sidepar, const transmatrix& V, bool warp, bool mirr, int col) {
if(shmup::on || nontruncated) warp = false; if(shmup::on || nonchamfered) warp = false;
if(warp && !ishept(c) && (!c->mov[i] || !ishept(c->mov[i]))) return; if(warp && !ishept(c) && (!c->mov[i] || !ishept(c->mov[i]))) return;
if(c->land == laDual && !nontruncated) { if(c->land == laDual && !nonchamfered) {
if(ctof(c)) return; if(ctof(c)) return;
if((euclid && !a4) ? (ishex1(c) ? !(i&1) : (i&1)) : !(i&1)) return; if((euclid && !a4) ? (ishex1(c) ? !(i&1) : (i&1)) : !(i&1)) return;
} }
@ -3076,7 +3076,7 @@ void placeSidewall(cell *c, int i, int sidepar, const transmatrix& V, bool warp,
// prio += c->cpdist - c->mov[i]->cpdist; // prio += c->cpdist - c->mov[i]->cpdist;
queuepolyat(V2, queuepolyat(V2,
(qfi.tinf?shFullFloorSide:mirr?shMFloorSide:warp?shTriheptaSide:(c->land == laDual&&!nontruncated)?shBigTriSide:shFloorSide)[sidepar][ctof(c)], col, prio); (qfi.tinf?shFullFloorSide:mirr?shMFloorSide:warp?shTriheptaSide:(c->land == laDual&&!nonchamfered)?shBigTriSide:shFloorSide)[sidepar][ctof(c)], col, prio);
} }
bool openorsafe(cell *c) { bool openorsafe(cell *c) {
@ -3602,7 +3602,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
auto si = patterns::getpatterninfo0(c); auto si = patterns::getpatterninfo0(c);
#endif #endif
bool eoh = euclid || nontruncated; bool eoh = euclid || nonchamfered;
if(c->wall == waChasm) { if(c->wall == waChasm) {
if(c->land == laZebra) fd++; if(c->land == laZebra) fd++;
@ -3648,7 +3648,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
onleft = !onleft; onleft = !onleft;
if(c->type == 6 && c->mov[d]->barleft == laMirror) if(c->type == 6 && c->mov[d]->barleft == laMirror)
onleft = !onleft; onleft = !onleft;
if(nontruncated) onleft = !onleft; if(nonchamfered) onleft = !onleft;
if(d == -1) { if(d == -1) {
for(d=0; d<6; d++) for(d=0; d<6; d++)
@ -3768,11 +3768,11 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
else if(isWarped(c) && euclid) else if(isWarped(c) && euclid)
qfloor_eswap(c, Vf, shTriheptaFloor[ctof(c)], darkena(fcol, fd, 0xFF)); qfloor_eswap(c, Vf, shTriheptaFloor[ctof(c)], darkena(fcol, fd, 0xFF));
else if(c->land == laDual && !nontruncated && !ctof(c)) { else if(c->land == laDual && !nonchamfered && !ctof(c)) {
qfloor_eswap(c, Vf, shBigTriangle, darkena(fcol, fd, 0xFF)); qfloor_eswap(c, Vf, shBigTriangle, darkena(fcol, fd, 0xFF));
} }
else if(isWarped(c) && !nontruncated && !shmup::on) { else if(isWarped(c) && !nonchamfered && !shmup::on) {
auto si = patterns::getpatterninfo(c, 0, 0); auto si = patterns::getpatterninfo(c, 0, 0);
if(si.id < 13) if(si.id < 13)
qfloor(c, Vf, applyPatterndir(c, si), shTriheptaFloor[si.id], darkena(fcol, fd, 0xFF)); qfloor(c, Vf, applyPatterndir(c, si), shTriheptaFloor[si.id], darkena(fcol, fd, 0xFF));
@ -3867,7 +3867,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
else if(c->land == laTortoise) else if(c->land == laTortoise)
qfloor_eswap(c, Vf, TURTLEFLOOR, darkena(fcol, fd, 0xFF)); qfloor_eswap(c, Vf, TURTLEFLOOR, darkena(fcol, fd, 0xFF));
else if(c->land == laDragon && !nontruncated) { else if(c->land == laDragon && !nonchamfered) {
/* if(!wmspatial || noAdjacentChasms(c)) */ /* if(!wmspatial || noAdjacentChasms(c)) */
qfloor(c, Vf, DRAGONFLOOR, darkena(fcol, fd, 0xFF)); qfloor(c, Vf, DRAGONFLOOR, darkena(fcol, fd, 0xFF));
/* if(wmspatial) /* if(wmspatial)
@ -4056,7 +4056,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
if(pseudohept(c) && ( if(pseudohept(c) && (
c->land == laRedRock || c->land == laRedRock ||
vid.darkhepta || vid.darkhepta ||
(c->land == laClearing && nontruncated))) { (c->land == laClearing && nonchamfered))) {
queuepoly((*Vdp), shHeptaMarker, wmblack ? 0x80808080 : 0x00000080); queuepoly((*Vdp), shHeptaMarker, wmblack ? 0x80808080 : 0x00000080);
} }
@ -4541,7 +4541,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
calcAirdir(c2); // printf("airdir = %d\n", airdir); calcAirdir(c2); // printf("airdir = %d\n", airdir);
transmatrix V0 = ddspin(c, i, S42); transmatrix V0 = ddspin(c, i, S42);
double ph = ticks / (nontruncated?150:75.0) + airdir * M_PI / (S21+.0); double ph = ticks / (nonchamfered?150:75.0) + airdir * M_PI / (S21+.0);
int aircol = 0x8080FF00 | int(32 + 32 * -cos(ph)); int aircol = 0x8080FF00 | int(32 + 32 * -cos(ph));
@ -4586,7 +4586,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
transmatrix V0 = spin((hdir) * M_PI / S42); transmatrix V0 = spin((hdir) * M_PI / S42);
double ldist = nontruncated ? crossf : c->type == 6 ? .2840 : 0.3399; double ldist = nonchamfered ? crossf : c->type == 6 ? .2840 : 0.3399;
poly_outline = OUTLINE_TRANS; poly_outline = OUTLINE_TRANS;
queuepoly((*Vdp)*V0*xpush(ldist*(2*ph1-1)), shDisk, aircol); queuepoly((*Vdp)*V0*xpush(ldist*(2*ph1-1)), shDisk, aircol);
@ -4611,7 +4611,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
int prec = sphere ? 3 : 1; int prec = sphere ? 3 : 1;
if(nontruncated) { if(nonchamfered) {
double x = hcrossf; double x = hcrossf;
for(int t=0; t<S7; t++) for(int t=0; t<S7; t++)
if(c->mov[t] && c->mov[t] < c) if(c->mov[t] && c->mov[t] < c)
@ -5010,7 +5010,7 @@ void drawthemap() {
mmspatial = vid.monmode == 4 || vid.monmode == 5; mmspatial = vid.monmode == 4 || vid.monmode == 5;
DEBB(DF_GRAPH, (debugfile,"draw the map\n")); DEBB(DF_GRAPH, (debugfile,"draw the map\n"));
fanframe = ticks / (nontruncated ? 300 : 150.0) / M_PI; fanframe = ticks / (nonchamfered ? 300 : 150.0) / M_PI;
for(int m=0; m<motypes; m++) if(isPrincess(eMonster(m))) for(int m=0; m<motypes; m++) if(isPrincess(eMonster(m)))
minf[m].name = princessgender() ? "Princess" : "Prince"; minf[m].name = princessgender() ? "Princess" : "Prince";
@ -5615,6 +5615,6 @@ cell *viewcenter() {
} }
bool inscreenrange(cell *c) { bool inscreenrange(cell *c) {
return celldistance(viewcenter(), c) <= (euclid ? sightrange : nontruncated ? 9 : 13); return celldistance(viewcenter(), c) <= (euclid ? sightrange : nonchamfered ? 9 : 13);
} }

View File

@ -347,7 +347,7 @@ string generateHelpForWall(eWall w) {
if(w == waMineMine || w == waMineUnknown || w == waMineOpen) if(w == waMineMine || w == waMineUnknown || w == waMineOpen)
addMinefieldExplanation(s); addMinefieldExplanation(s);
if(isThumper(w)) s += pushtext(w); if(isThumper(w)) s += pushtext(w);
if((w == waClosePlate || w == waOpenPlate) && nontruncated) if((w == waClosePlate || w == waOpenPlate) && nonchamfered)
s += "\n\n(For the heptagonal mode, the radius has been reduced to 2 for closing plates.)"; s += "\n\n(For the heptagonal mode, the radius has been reduced to 2 for closing plates.)";
return s; return s;
} }

View File

@ -95,7 +95,7 @@ heptagon *buildHeptagon(heptagon *parent, int d, hstate s, int pard = 0, int fix
if(pard == 0) { if(pard == 0) {
h->dm4 = parent->dm4+1; h->dm4 = parent->dm4+1;
if(fixdistance != COMPUTE) h->distance = fixdistance; if(fixdistance != COMPUTE) h->distance = fixdistance;
else if(nontruncated) h->distance = parent->distance + 1; else if(nonchamfered) h->distance = parent->distance + 1;
else if(parent->s == hsOrigin) h->distance = parent->distance + 2; else if(parent->s == hsOrigin) h->distance = parent->distance + 2;
else if(S3 == 4) { else if(S3 == 4) {
h->distance = parent->distance + 2; h->distance = parent->distance + 2;
@ -127,7 +127,7 @@ heptagon *buildHeptagon(heptagon *parent, int d, hstate s, int pard = 0, int fix
else h->distance = parent->distance + 2; else h->distance = parent->distance + 2;
} }
else { else {
h->distance = parent->distance - (nontruncated?1:2); h->distance = parent->distance - (nonchamfered?1:2);
if(S3 == 4 && S7 == 5) { if(S3 == 4 && S7 == 5) {
if(h->s == hsOrigin) { if(h->s == hsOrigin) {
printf("had to cheat!\n"); printf("had to cheat!\n");

View File

@ -343,21 +343,21 @@ void drawStats() {
if(d >= 0 && d < 64) qty[d]++; if(d >= 0 && d < 64) qty[d]++;
} }
if(geometry == gNormal) if(geometry == gNormal)
for(int i=nontruncated?6:8; i<=15; i++) for(int i=nonchamfered?6:8; i<=15; i++)
qty[i] = qty[i] =
nontruncated ? nonchamfered ?
3*qty[i-1] - qty[i-2] 3*qty[i-1] - qty[i-2]
: qty[i-1] + qty[i-2] + qty[i-3] - qty[i-4]; : qty[i-1] + qty[i-2] + qty[i-3] - qty[i-4];
if(geometry == gEuclid) if(geometry == gEuclid)
for(int i=8; i<=15; i++) qty[i] = 6*i; for(int i=8; i<=15; i++) qty[i] = 6*i;
for(int i=0; i<64; i++) if(qty[i]) for(int i=0; i<64; i++) if(qty[i])
dialog::addInfo(its(qty[i]), distcolors[i&7]); dialog::addInfo(its(qty[i]), distcolors[i&7]);
if(geometry == gNormal && !nontruncated) { if(geometry == gNormal && !nonchamfered) {
dialog::addBreak(200); dialog::addBreak(200);
dialog::addHelp("a(d+4) = a(d+3) + a(d+2) + a(d+1) - a(d)"); dialog::addHelp("a(d+4) = a(d+3) + a(d+2) + a(d+1) - a(d)");
dialog::addInfo("a(d) ~ 1.72208ᵈ", forecolor); dialog::addInfo("a(d) ~ 1.72208ᵈ", forecolor);
} }
if(geometry == gNormal && nontruncated) { if(geometry == gNormal && nonchamfered) {
dialog::addBreak(200); dialog::addBreak(200);
dialog::addHelp("a(d+2) = 3a(d+1) - a(d+2)"); dialog::addHelp("a(d+2) = 3a(d+1) - a(d+2)");
dialog::addInfo("a(d) ~ 2.61803ᵈ", forecolor); dialog::addInfo("a(d) ~ 2.61803ᵈ", forecolor);

View File

@ -1201,7 +1201,7 @@ void checkStunKill(cell *dest);
void clearMessages(); void clearMessages();
void resetGeometry(); void resetGeometry();
extern bool nontruncated; extern bool nonchamfered;
namespace svg { namespace svg {
void circle(int x, int y, int size, int col); void circle(int x, int y, int size, int col);
@ -2191,13 +2191,13 @@ struct hrmap {
struct hrmap_hyperbolic : hrmap { struct hrmap_hyperbolic : hrmap {
heptagon *origin; heptagon *origin;
bool isnontruncated; bool isnonchamfered;
hrmap_hyperbolic(); hrmap_hyperbolic();
heptagon *getOrigin() { return origin; } heptagon *getOrigin() { return origin; }
~hrmap_hyperbolic() { ~hrmap_hyperbolic() {
DEBMEM ( verifycells(origin); ) DEBMEM ( verifycells(origin); )
// printf("Deleting hyperbolic map: %p\n", this); // printf("Deleting hyperbolic map: %p\n", this);
dynamicval<bool> ph(nontruncated, isnontruncated); dynamicval<bool> ph(nonchamfered, isnonchamfered);
clearfrom(origin); clearfrom(origin);
} }
void verify() { verifycells(origin); } void verify() { verifycells(origin); }
@ -2431,7 +2431,7 @@ inline hyperpoint tC0(const transmatrix &T) {
transmatrix actualV(const heptspin& hs, const transmatrix& V); transmatrix actualV(const heptspin& hs, const transmatrix& V);
transmatrix cview(); transmatrix cview();
extern string truncatenames[2]; extern string chamfernames[2];
extern bool need_mouseh; extern bool need_mouseh;
extern int whateveri, whateveri2; extern int whateveri, whateveri2;

View File

@ -4,7 +4,7 @@
eGeometry geometry, targetgeometry; eGeometry geometry, targetgeometry;
// for the pure heptagonal grid // for the pure heptagonal grid
bool nontruncated = false; bool nonchamfered = false;
// hyperbolic points and matrices // hyperbolic points and matrices

View File

@ -330,7 +330,7 @@ bool confusingGeometry() {
} }
transmatrix actualV(const heptspin& hs, const transmatrix& V) { transmatrix actualV(const heptspin& hs, const transmatrix& V) {
return (hs.spin || nontruncated) ? V * spin(hs.spin*2*M_PI/S7 + (nontruncated ? M_PI:0)) : V; return (hs.spin || nonchamfered) ? V * spin(hs.spin*2*M_PI/S7 + (nonchamfered ? M_PI:0)) : V;
} }
void drawrec(const heptspin& hs, int lev, hstate s, const transmatrix& V) { void drawrec(const heptspin& hs, int lev, hstate s, const transmatrix& V) {
@ -349,7 +349,7 @@ void drawrec(const heptspin& hs, int lev, hstate s, const transmatrix& V) {
if(lev <= 0) return; if(lev <= 0) return;
if(!nontruncated) for(int d=0; d<S7; d++) { if(!nonchamfered) for(int d=0; d<S7; d++) {
int ds = fixrot(hs.spin + d); int ds = fixrot(hs.spin + d);
reclevel = maxreclevel - lev + 1; reclevel = maxreclevel - lev + 1;
// createMov(c, ds); // createMov(c, ds);

View File

@ -378,7 +378,7 @@ void addMessage(string s, char spamtype = 0);
#define stdeuc (geometry == gNormal || geometry == gEuclid || geometry == gEuclidSquare) #define stdeuc (geometry == gNormal || geometry == gEuclid || geometry == gEuclidSquare)
#define smallsphere (S7 < 5) #define smallsphere (S7 < 5)
#define bigsphere (S7 == 5) #define bigsphere (S7 == 5)
#define ap4 (a4 && nontruncated) #define ap4 (a4 && nonchamfered)
#define euclid4 (euclid && a4) #define euclid4 (euclid && a4)
#define euclid6 (euclid && !a4) #define euclid6 (euclid && !a4)

View File

@ -532,7 +532,7 @@ void sominit(int initto) {
targetGeometry = gQuotient1; targetGeometry = gQuotient1;
restartGame('g'); restartGame('g');
} }
if(!nontruncated) restartGame('7'); */ if(!nonchamfered) restartGame('7'); */
printf("Initializing SOM (1)\n"); printf("Initializing SOM (1)\n");

View File

@ -175,7 +175,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(gs == 1) if(gs == 1)
c->wall = waPalace; c->wall = waPalace;
if(gs == 3) if(gs == 3)
c->wall = nontruncated ? waOpenGate : waClosedGate; c->wall = nonchamfered ? waOpenGate : waClosedGate;
if(gs == 4 && hrand(100) < 40) if(gs == 4 && hrand(100) < 40)
c->wall = waClosePlate; c->wall = waClosePlate;
if(gs == 6) if(gs == 6)
@ -192,7 +192,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
bool lookingForPrincess = !euclid && c->master->alt && !princess::challenge; bool lookingForPrincess = !euclid && c->master->alt && !princess::challenge;
bool pgate = false; bool pgate = false;
if(nontruncated) { if(nonchamfered) {
int i = fiftyval049(c); int i = fiftyval049(c);
if(i >= 8 && i <= 14 && !polarb50(c)) pgate = true; if(i >= 8 && i <= 14 && !polarb50(c)) pgate = true;
} }
@ -228,9 +228,9 @@ void giantLandSwitch(cell *c, int d, cell *from) {
} }
} }
} }
else if((hrand(100) < (lookingForPrincess ? (nontruncated ? 11 : 7) : 5) && cdist50(c)) || else if((hrand(100) < (lookingForPrincess ? (nonchamfered ? 11 : 7) : 5) && cdist50(c)) ||
(cdist50(c) == 0 && polarb50(c) && hrand(100) < 60)) { (cdist50(c) == 0 && polarb50(c) && hrand(100) < 60)) {
c->wall = hrand(100) < (lookingForPrincess ? (nontruncated ? 25 : 30):50) ? waClosePlate : waOpenPlate; c->wall = hrand(100) < (lookingForPrincess ? (nonchamfered ? 25 : 30):50) ? waClosePlate : waOpenPlate;
} }
else if(hrand(100) < (lookingForPrincess ? 3 : 5)) else if(hrand(100) < (lookingForPrincess ? 3 : 5))
c->wall = waTrapdoor; c->wall = waTrapdoor;
@ -245,9 +245,9 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(princess::generating) { if(princess::generating) {
// no Opening Plates nearby // no Opening Plates nearby
if(d <= 7 && c->wall == waOpenPlate && !nontruncated) if(d <= 7 && c->wall == waOpenPlate && !nonchamfered)
c->wall = waNone; c->wall = waNone;
if(d <= 7 && c->wall == waClosePlate && nontruncated) if(d <= 7 && c->wall == waClosePlate && nonchamfered)
c->wall = waOpenPlate; c->wall = waOpenPlate;
// no monsters nearby // no monsters nearby
if(d>0) c->monst = moNone; if(d>0) c->monst = moNone;
@ -346,7 +346,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
c->wall = waCavewall; c->wall = waCavewall;
else c->wall = waCavefloor; else c->wall = waCavefloor;
} }
else if(nontruncated) { else if(nonchamfered) {
if(polarb50(c)) if(polarb50(c))
c->wall = waCavewall; c->wall = waCavewall;
else c->wall = waCavefloor; else c->wall = waCavefloor;
@ -367,7 +367,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
c->monst = moSeep; c->monst = moSeep;
ONEMPTY { ONEMPTY {
if(hrand(nontruncated?400:1000) < PT(100 + 2 * (kills[moMiner] + kills[moLancer] + kills[moFlailer]), 200) && notDippingFor(itEmerald)) { if(hrand(nonchamfered?400:1000) < PT(100 + 2 * (kills[moMiner] + kills[moLancer] + kills[moFlailer]), 200) && notDippingFor(itEmerald)) {
// do not destroy walls! // do not destroy walls!
bool ok = true; bool ok = true;
for(int i=0; i<c->type; i++) if(c->mov[i]->wall == waCavewall) ok = false; for(int i=0; i<c->type; i++) if(c->mov[i]->wall == waCavewall) ok = false;
@ -966,7 +966,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laHalloween: case laHalloween:
if(d == 9) { if(d == 9) {
if(nontruncated) { if(nonchamfered) {
int fv = c->master->fiftyval; int fv = c->master->fiftyval;
if(fv == 1 || fv == 4 || fv == 2) if(fv == 1 || fv == 4 || fv == 2)
c->wall = waChasm; c->wall = waChasm;
@ -1075,7 +1075,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(ctof(c)) { if(ctof(c)) {
int id = c->master->fiftyval; int id = c->master->fiftyval;
if(id == 1) c->wall = waCharged; if(id == 1) c->wall = waCharged;
if(id == (elliptic && !nontruncated ? 3 : 9)) c->wall = waGrounded; if(id == (elliptic && !nonchamfered ? 3 : 9)) c->wall = waGrounded;
} }
} }
else if(S7 == 4) { else if(S7 == 4) {
@ -1097,7 +1097,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
} }
} }
} }
else if(nontruncated) { else if(nonchamfered) {
int i = zebra40(c); int i = zebra40(c);
if((i == 5 || i == 8) && hrand(100) < 20) c->wall = hrand(2) ? waCharged : waGrounded; if((i == 5 || i == 8) && hrand(100) < 20) c->wall = hrand(2) ? waCharged : waGrounded;
else if(i == 15) c->wall = waSandstone; else if(i == 15) c->wall = waSandstone;
@ -1221,7 +1221,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laHell: case laHell:
if(d == 9) { if(d == 9) {
if(hrand(1000) < (nontruncated ? 16 : 36) && celldist(c) >= 3) { if(hrand(1000) < (nonchamfered ? 16 : 36) && celldist(c) >= 3) {
for(int i=0; i<c->type; i++) { for(int i=0; i<c->type; i++) {
cell *c2 = createMov(c, i); cell *c2 = createMov(c, i);
setdist(c2, d+1, c); setdist(c2, d+1, c);
@ -1273,7 +1273,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laHive: case laHive:
if(d == 9) { if(d == 9) {
if(hrand(2000) < (chaosmode ? 1000 : nontruncated?200:2) && !safety) if(hrand(2000) < (chaosmode ? 1000 : nonchamfered?200:2) && !safety)
hive::createBugArmy(c); hive::createBugArmy(c);
if(hrand(2000) < 100 && !c->wall && !c->item && !c->monst) { if(hrand(2000) < 100 && !c->wall && !c->item && !c->monst) {
int nww = 0; int nww = 0;
@ -1493,14 +1493,14 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(d == 7 && c->wall == waNone) if(d == 7 && c->wall == waNone)
buildPrizeMirror(c, 1000); buildPrizeMirror(c, 1000);
ONEMPTY { ONEMPTY {
if(hrand((doCross && celldist(c) <= 5) ?450:16000) < 30+items[itRedGem]+yendor::hardness() && !pseudohept(c) && !c->monst && !c->wall && !(nontruncated && S3==4)) { if(hrand((doCross && celldist(c) <= 5) ?450:16000) < 30+items[itRedGem]+yendor::hardness() && !pseudohept(c) && !c->monst && !c->wall && !(nonchamfered && S3==4)) {
int i = -1; int i = -1;
for(int t=0; t<c->type; t++) if(c->mov[t]->mpdist > c->mpdist && !pseudohept(c->mov[t])) for(int t=0; t<c->type; t++) if(c->mov[t]->mpdist > c->mpdist && !pseudohept(c->mov[t]))
i = t; i = t;
if(i != -1 && !peace::on) if(i != -1 && !peace::on)
generateSnake(c, i); generateSnake(c, i);
} }
else if(hrand(16000) < 50+items[itRedGem]+yendor::hardness() && (nontruncated?hrand(10)<3:!ishept(c)) && !c->monst) else if(hrand(16000) < 50+items[itRedGem]+yendor::hardness() && (nonchamfered?hrand(10)<3:!ishept(c)) && !c->monst)
c->monst = moRedTroll, c->monst = moRedTroll,
c->mondir = NODIR; c->mondir = NODIR;
} }
@ -1530,7 +1530,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(hrand(1000) < 150 && celldist(c) >= 3 && !pseudohept(c)) if(hrand(1000) < 150 && celldist(c) >= 3 && !pseudohept(c))
c->wall = waSmallTree; c->wall = waSmallTree;
int q = 0; int q = 0;
if(!nontruncated && !chaosmode) for(int i=0; i<c->type; i++) if(!nonchamfered && !chaosmode) for(int i=0; i<c->type; i++)
if(c->mov[i] && !isWarped(c->mov[i]->land) && c->mov[i]->land != laCrossroads4) if(c->mov[i] && !isWarped(c->mov[i]->land) && c->mov[i]->land != laCrossroads4)
q++; q++;
if(q == 1) c->wall = waWarpGate; if(q == 1) c->wall = waWarpGate;
@ -1539,7 +1539,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(c->land == laWarpSea) { if(c->land == laWarpSea) {
c->wall = waSea; c->wall = waSea;
int q = 0; int q = 0;
if(!nontruncated && !chaosmode) for(int i=0; i<c->type; i++) if(!nonchamfered && !chaosmode) for(int i=0; i<c->type; i++)
if(c->mov[i] && !isWarped(c->mov[i]->land)) q++; if(c->mov[i] && !isWarped(c->mov[i]->land)) q++;
if(q == 1) c->wall = waWarpGate; if(q == 1) c->wall = waWarpGate;
} }
@ -1660,7 +1660,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
} }
else if(items[itHunting] < 10) { else if(items[itHunting] < 10) {
vector<cell*> next; vector<cell*> next;
forCellEx(c2, c) if(c2->mpdist > 7 && (nontruncated || !ctof(c2))) next.push_back(c2); forCellEx(c2, c) if(c2->mpdist > 7 && (nonchamfered || !ctof(c2))) next.push_back(c2);
if(size(next)) { if(size(next)) {
c->item = itHunting; c->item = itHunting;
cell *c3 = next[hrand(size(next))]; cell *c3 = next[hrand(size(next))];
@ -1840,7 +1840,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laMirrorOld: case laMirrorOld:
ONEMPTY { ONEMPTY {
if((nontruncated?pseudohept(c):!ishept(c)) && hrand(5000) < 120 && (peace::on || notDippingFor(itShard))) if((nonchamfered?pseudohept(c):!ishept(c)) && hrand(5000) < 120 && (peace::on || notDippingFor(itShard)))
c->wall = hrand(2) ? waMirror : waCloud; c->wall = hrand(2) ? waMirror : waCloud;
else if(ishept(c) && hrand(5000) < 10 * PRIZEMUL) else if(ishept(c) && hrand(5000) < 10 * PRIZEMUL)
placePrizeOrb(c); placePrizeOrb(c);
@ -1853,7 +1853,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laMirror: case laMirror:
ONEMPTY { ONEMPTY {
if((nontruncated?pseudohept(c):!ishept(c)) && hrand(1250) < 120 && (peace::on || notDippingFor(itShard))) if((nonchamfered?pseudohept(c):!ishept(c)) && hrand(1250) < 120 && (peace::on || notDippingFor(itShard)))
c->wall = hrand(2) ? waMirror : waCloud; c->wall = hrand(2) ? waMirror : waCloud;
else if(ishept(c) && hrand(5000) < 10 * PRIZEMUL) else if(ishept(c) && hrand(5000) < 10 * PRIZEMUL)
placePrizeOrb(c); placePrizeOrb(c);
@ -1954,7 +1954,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
else else
si.id = (zebra40(c)&2) ? 0 : zebra40(c) == 4 ? 8 : 1; si.id = (zebra40(c)&2) ? 0 : zebra40(c) == 4 ? 8 : 1;
c->wall = waSea; c->wall = waSea;
if(among(si.id, 0, 4, 16, nontruncated ? -1 : 24)) if(among(si.id, 0, 4, 16, nonchamfered ? -1 : 24))
c->wall = waDock; c->wall = waDock;
if(si.id == 8 && hrand(100) < 75) { if(si.id == 8 && hrand(100) < 75) {
c->wall = waBoat; c->wall = waBoat;
@ -2025,7 +2025,7 @@ void giantLandSwitch(cell *c, int d, cell *from) {
case laCrossroads5: case laCrossroads5:
if(c->wall == waTower) c->land = laCamelot; if(c->wall == waTower) c->land = laCamelot;
ONEMPTY { ONEMPTY {
if(nontruncated && c->land == laCrossroads5 && hrand(100) < 60) if(nonchamfered && c->land == laCrossroads5 && hrand(100) < 60)
c->wall = waBarrier; c->wall = waBarrier;
else if(!ctof(c) && !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; c->wall = hrand(2) ? waMirror : waCloud;
@ -2237,7 +2237,7 @@ void setdist(cell *c, int d, cell *from) {
if(buggyGeneration) { if(buggyGeneration) {
if(d < BARLEV) for(int i=0; i<c->type; i++) { if(d < BARLEV) for(int i=0; i<c->type; i++) {
setdist(createMov(c, i), d+(nontruncated?2:1), c); setdist(createMov(c, i), d+(nonchamfered?2:1), c);
} }
if(d >= BARLEV) c->item = itBuggy2; if(d >= BARLEV) c->item = itBuggy2;
return; return;
@ -2322,7 +2322,7 @@ void setdist(cell *c, int d, cell *from) {
placeLocalOrbs(c); placeLocalOrbs(c);
} }
if(nontruncated && c->wall == waMirrorWall && c->land == laMirror) if(nonchamfered && c->wall == waMirrorWall && c->land == laMirror)
c->land = laMirrorWall; // , c->item = itPirate; // not really a proper bugfix c->land = laMirrorWall; // , c->item = itPirate; // not really a proper bugfix
if(d == 7) playSeenSound(c); if(d == 7) playSeenSound(c);

View File

@ -1020,10 +1020,10 @@ int isLandValid(eLand l) {
return 1; return 1;
// not enough space // not enough space
if(l == laStorms && nontruncated && elliptic) if(l == laStorms && nonchamfered && elliptic)
return 0; return 0;
if(l == laStorms && nontruncated && S3 == 3) if(l == laStorms && nonchamfered && S3 == 3)
return 0; return 0;
// available only in weird geometries // available only in weird geometries
@ -1043,8 +1043,8 @@ int isLandValid(eLand l) {
if((l == laWildWest || l == laDual) && normalgame) if((l == laWildWest || l == laDual) && normalgame)
return 0; return 0;
// Crystal World is designed for truncated geometries // Crystal World is designed for chamfered geometries
if(l == laDual && nontruncated) if(l == laDual && nonchamfered)
return 0; return 0;
if(l == laHaunted && chaosmode) if(l == laHaunted && chaosmode)
@ -1093,11 +1093,11 @@ int isLandValid(eLand l) {
// works correctly only in some geometries // works correctly only in some geometries
if(l == laClearing) if(l == laClearing)
if(chaosmode || !(stdeuc || a38 || (a45 && !nontruncated) || (a47 && !nontruncated))) if(chaosmode || !(stdeuc || a38 || (a45 && !nonchamfered) || (a47 && !nonchamfered)))
return 0; return 0;
// does not work in non-truncated a4 // does not work in non-chamfered a4
if(l == laOvergrown && a4 && nontruncated) if(l == laOvergrown && a4 && nonchamfered)
return 0; return 0;
// does not work in bounded either // does not work in bounded either
@ -1116,9 +1116,9 @@ int isLandValid(eLand l) {
if((l == laBlizzard || l == laVolcano) && elliptic && S7 < 5) if((l == laBlizzard || l == laVolcano) && elliptic && S7 < 5)
return 0; return 0;
// Kraken does not really work in odd non-truncated geometries // Kraken does not really work in odd non-chamfered geometries
// (but we do have to allow it in Standard) // (but we do have to allow it in Standard)
if(l == laKraken && nontruncated && (S7&1)) { if(l == laKraken && nonchamfered && (S7&1)) {
if(!geometry) return 1; if(!geometry) return 1;
return 0; return 0;
} }
@ -1129,7 +1129,7 @@ int isLandValid(eLand l) {
// works in most spheres, Zebra quotient, and stdeuc // works in most spheres, Zebra quotient, and stdeuc
if(l == laWhirlwind) if(l == laWhirlwind)
if(!(stdeuc || quotient == 1 || (S7 == 4 && !nontruncated) || (bigsphere && nontruncated && !elliptic))) if(!(stdeuc || quotient == 1 || (S7 == 4 && !nonchamfered) || (bigsphere && nonchamfered && !elliptic)))
return 0; return 0;
// needs standard/Euclidean (needs fractal landscape) // needs standard/Euclidean (needs fractal landscape)
@ -1151,12 +1151,12 @@ int isLandValid(eLand l) {
if(l == laDragon && bounded) if(l == laDragon && bounded)
return 0; return 0;
// Graveyard pattern does not work on non-truncated weird geometries // Graveyard pattern does not work on non-chamfered weird geometries
if(l == laGraveyard) if(l == laGraveyard)
return geosupport_graveyard(); return geosupport_graveyard();
// Warped Coast does not work on non-truncated S3s (except standard heptagonal where we have to keep it) // Warped Coast does not work on non-chamfered S3s (except standard heptagonal where we have to keep it)
if(l == laWarpCoast && (S3==3) && nontruncated) { if(l == laWarpCoast && (S3==3) && nonchamfered) {
if(!geometry) return 1; if(!geometry) return 1;
return 0; return 0;
} }
@ -1174,7 +1174,7 @@ int isLandValid(eLand l) {
if(l == laTrollheim && !stdeuc) if(l == laTrollheim && !stdeuc)
return 1; return 1;
if(l == laReptile && (!stdeuc || nontruncated)) if(l == laReptile && (!stdeuc || nonchamfered))
return 1; return 1;
if(l == laCrossroads && weirdhyperbolic) if(l == laCrossroads && weirdhyperbolic)
@ -1190,14 +1190,14 @@ int isLandValid(eLand l) {
if(l == laCrossroads4 && !(stdeuc || smallbounded)) if(l == laCrossroads4 && !(stdeuc || smallbounded))
return 0; return 0;
if(l == laZebra && !(stdeuc || (a4 && nontruncated) || a46 || quotient == 1)) if(l == laZebra && !(stdeuc || (a4 && nonchamfered) || a46 || quotient == 1))
return 0; return 0;
if(l == laCrossroads3 && euclid) if(l == laCrossroads3 && euclid)
return 1; // because it is not accurate return 1; // because it is not accurate
if(l == laPrairie) { if(l == laPrairie) {
if(stdeuc || (bigsphere && !nontruncated && !elliptic) || (quotient == 2)) ; if(stdeuc || (bigsphere && !nonchamfered && !elliptic) || (quotient == 2)) ;
else if(!bounded) return 1; else if(!bounded) return 1;
else return 0; else return 0;
} }

View File

@ -6354,7 +6354,7 @@ S(
"You can try many different geometries here. We start by gluing " "You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. " "n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, " "Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'truncated' by " "or requires a hyperbolic space. The result may be then 'chamfered' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play " "replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is " "with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, " "obtained from the sphere by making the antipodes be the same point, "
@ -6362,7 +6362,7 @@ S(
"Have fun experimenting! " "Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, " "Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n" "except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries " "In standard geometry (chamfered or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this " "you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
@ -6407,7 +6407,7 @@ S("tetrahedron (buggy)", "čtyřstěn (problémový)")
S("tetrahedron", "čtyřstěn") // in case if it gets better S("tetrahedron", "čtyřstěn") // in case if it gets better
S("land", "kraj") S("land", "kraj")
S("truncated", "seříznutí") S("chamfered", "seříznutí")
S("does not matter", "nehraje roli") S("does not matter", "nehraje roli")
S("sides per face", "počet stran") S("sides per face", "počet stran")
S("faces per vertex", "stupeň vrcholů") S("faces per vertex", "stupeň vrcholů")
@ -6418,8 +6418,8 @@ S("quotient space", "kvocientový prostor")
S("size of the world", "velikost světa") S("size of the world", "velikost světa")
S("flat", "placka") S("flat", "placka")
// truncated or not truncated // chamfered or not chamfered
S(" (t)", " (s)") S(" (c)", " (s)")
S(" (n)", " (n)") S(" (n)", " (n)")
S("(locked)", "(uzamčeno)") S("(locked)", "(uzamčeno)")

View File

@ -6206,7 +6206,7 @@ S(
"You can try many different geometries here. We start by gluing " "You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. " "n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, " "Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'truncated' by " "or requires a hyperbolic space. The result may be then 'chamfered' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play " "replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is " "with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, " "obtained from the sphere by making the antipodes be the same point, "
@ -6214,7 +6214,7 @@ S(
"Have fun experimenting! " "Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, " "Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n" "except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries " "In standard geometry (chamfered or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this " "you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
@ -6257,7 +6257,7 @@ S("tetrahedron (buggy)", "czworościan (bugi)")
S("tetrahedron", "czworościan") // in case if it gets better S("tetrahedron", "czworościan") // in case if it gets better
S("land", "kraina") S("land", "kraina")
S("truncated", "przycięte") S("chamfered", "przycięte")
S("does not matter", "bez znaczenia") S("does not matter", "bez znaczenia")
S("sides per face", "boki ścian") S("sides per face", "boki ścian")
S("faces per vertex", "wierzchołki") S("faces per vertex", "wierzchołki")
@ -6268,8 +6268,8 @@ S("quotient space", "przestrzeń ilorazowa")
S("size of the world", "wielkość świata") S("size of the world", "wielkość świata")
S("flat", "płaska") S("flat", "płaska")
// truncated or not truncated // chamfered or not chamfered
S(" (t)", " (p)") S(" (c)", " (p)")
S(" (n)", " (n)") S(" (n)", " (n)")
S("(locked)", "(blok)") S("(locked)", "(blok)")
@ -6285,7 +6285,7 @@ S("Not implemented for spherical geometry. Please tell me if you really want thi
#undef Orb #undef Orb
// Hypersian Rug // Hypersian Rug
S("This makes sense only in hyperbolic or Torus geometry.", "To ma sens tylko w geometrii hiperbolicznej i na torusie.") // S("This makes sense only in hyperbolic or Torus geometry.", "To ma sens tylko w geometrii hiperbolicznej i na torusie.")
// for the map editor // for the map editor
N("Dragon Head", GEN_F, "Głowa Smoka", "Głowy Smoka", "Głowę Smoka", "Głową Smoka") N("Dragon Head", GEN_F, "Głowa Smoka", "Głowy Smoka", "Głowę Smoka", "Głową Smoka")

View File

@ -6429,7 +6429,7 @@ S(
"You can try many different geometries here. We start by gluing " "You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. " "n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, " "Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'truncated' by " "or requires a hyperbolic space. The result may be then 'chamfered' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play " "replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is " "with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, " "obtained from the sphere by making the antipodes be the same point, "
@ -6437,7 +6437,7 @@ S(
"Have fun experimenting! " "Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, " "Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n" "except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries " "In standard geometry (chamfered or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this " "you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
@ -6478,7 +6478,7 @@ S("tetrahedron (buggy)", "тетраэдр (ошибки)")
S("tetrahedron", "тетраэдр") // in case if it gets better S("tetrahedron", "тетраэдр") // in case if it gets better
S("land", "земля") S("land", "земля")
S("truncated", "усеченный") S("chamfered", "усеченный")
S("does not matter", "не важно") S("does not matter", "не важно")
S("sides per face", "сторон у клетка") S("sides per face", "сторон у клетка")
S("faces per vertex", "клеток в вершине") S("faces per vertex", "клеток в вершине")
@ -6489,8 +6489,8 @@ S("quotient space", "факторпространство")
S("size of the world", "размер мира") S("size of the world", "размер мира")
S("flat", "плоскость") S("flat", "плоскость")
// truncated or not truncated // chamfered or not chamfered
S(" (t)", " (у)") S(" (c)", " (у)")
S(" (n)", " (н)") S(" (n)", " (н)")
S("(locked)", "(закрыто)") S("(locked)", "(закрыто)")

View File

@ -88,7 +88,7 @@ namespace mapstream {
int32_t i = VERNUM; save(i); int32_t i = VERNUM; save(i);
save(patterns::whichPattern); save(patterns::whichPattern);
save(geometry); save(geometry);
save(nontruncated); save(nonchamfered);
if(geometry == gTorus) { if(geometry == gTorus) {
save(torusconfig::qty); save(torusconfig::qty);
save(torusconfig::dx); save(torusconfig::dx);
@ -173,7 +173,7 @@ namespace mapstream {
if(vernum >= 10203) { if(vernum >= 10203) {
load(geometry); load(geometry);
load(nontruncated); load(nonchamfered);
if(geometry == gTorus) { if(geometry == gTorus) {
load(torusconfig::qty); load(torusconfig::qty);
load(torusconfig::dx); load(torusconfig::dx);
@ -609,7 +609,7 @@ namespace mapeditor {
if(painttype == 4 && radius) { if(painttype == 4 && radius) {
if(where.c->type != copysource.c->type) return; if(where.c->type != copysource.c->type) return;
if(where.spin<0) where.spin=0; if(where.spin<0) where.spin=0;
if(!nontruncated && !ctof(mouseover) && ((where.spin&1) != (copysource.spin&1))) if(!nonchamfered && !ctof(mouseover) && ((where.spin&1) != (copysource.spin&1)))
cwspin(where, 1); cwspin(where, 1);
} }
if(painttype != 4) copysource.c = NULL; if(painttype != 4) copysource.c = NULL;
@ -1258,7 +1258,7 @@ namespace mapeditor {
fscanf(f, "%d%d%d%d\n", &tg, &nt, &wp, &patterns::subpattern_flags); fscanf(f, "%d%d%d%d\n", &tg, &nt, &wp, &patterns::subpattern_flags);
patterns::whichPattern = wp; patterns::whichPattern = wp;
if(tg != geometry) { targetgeometry = eGeometry(tg); restartGame('g', 0, true); } if(tg != geometry) { targetgeometry = eGeometry(tg); restartGame('g', 0, true); }
if(nt != nontruncated) { restartGame('7', 0, true); } if(nt != nonchamfered) { restartGame('7', 0, true); }
} }
while(true) { while(true) {
@ -1302,7 +1302,7 @@ namespace mapeditor {
fprintf(f, "HyperRogue saved picture\n"); fprintf(f, "HyperRogue saved picture\n");
fprintf(f, "%x\n", VERNUM_HEX); fprintf(f, "%x\n", VERNUM_HEX);
if(VERNUM_HEX >= 0xA0A0) if(VERNUM_HEX >= 0xA0A0)
fprintf(f, "%d %d %d %d\n", geometry, nontruncated, patterns::whichPattern, patterns::subpattern_flags); fprintf(f, "%d %d %d %d\n", geometry, nonchamfered, patterns::whichPattern, patterns::subpattern_flags);
for(int i=0; i<USERSHAPEGROUPS; i++) for(int j=0; j<USERSHAPEIDS; j++) { for(int i=0; i<USERSHAPEGROUPS; i++) for(int j=0; j<USERSHAPEIDS; j++) {
usershape *us = usershapes[i][j]; usershape *us = usershapes[i][j];
if(!us) continue; if(!us) continue;

View File

@ -431,7 +431,7 @@ void showChangeMode() {
dialog::addBoolItem(XLAT("Tutorial"), tour::on, 'T'); dialog::addBoolItem(XLAT("Tutorial"), tour::on, 'T');
#endif #endif
dialog::addBoolItem(XLAT("experiment with geometry"), geometry || nontruncated || viewdists, 'e'); dialog::addBoolItem(XLAT("experiment with geometry"), geometry || nonchamfered || viewdists, 'e');
dialog::addBoolItem(XLAT(SHMUPTITLE), (shmup::on || multi::players > 1), 's'); dialog::addBoolItem(XLAT(SHMUPTITLE), (shmup::on || multi::players > 1), 's');
if(!shmup::on) dialog::addSelItem(XLAT("hardcore mode"), if(!shmup::on) dialog::addSelItem(XLAT("hardcore mode"),
hardcore && !pureHardcore() ? XLAT("PARTIAL") : ONOFF(hardcore), 'h'); hardcore && !pureHardcore() ? XLAT("PARTIAL") : ONOFF(hardcore), 'h');

View File

@ -635,7 +635,7 @@ void generateSnake(cell *c, int i) {
c->monst = moHexSnake; c->monst = moHexSnake;
int cpair = (1<<pattern_threecolor(c)) | (1<<pattern_threecolor(c->mov[i])); int cpair = (1<<pattern_threecolor(c)) | (1<<pattern_threecolor(c->mov[i]));
preventbarriers(c); preventbarriers(c);
int len = nontruncated ? 2 : ROCKSNAKELENGTH; int len = nonchamfered ? 2 : ROCKSNAKELENGTH;
cell *c2 = c; cell *c2 = c;
vector<cell*> rocksnake; vector<cell*> rocksnake;
while(--len) { while(--len) {
@ -659,7 +659,7 @@ void generateSnake(cell *c, int i) {
i = goodsteps[hrand(size(goodsteps))]; i = goodsteps[hrand(size(goodsteps))];
} }
} }
if(size(rocksnake) < ROCKSNAKELENGTH/2 && !nontruncated) { if(size(rocksnake) < ROCKSNAKELENGTH/2 && !nonchamfered) {
for(int i=0; i<size(rocksnake); i++) for(int i=0; i<size(rocksnake); i++)
rocksnake[i]->monst = moNone; rocksnake[i]->monst = moNone;
} }

View File

@ -378,7 +378,7 @@ ld orbcrossfun(int tr) {
bool buildPrizeMirror(cell *c, int freq) { bool buildPrizeMirror(cell *c, int freq) {
if(inv::on) return false; if(inv::on) return false;
if(c->type == 7 && !nontruncated) return false; if(c->type == 7 && !nonchamfered) return false;
if(items[itShard] < 25) return false; if(items[itShard] < 25) return false;
if(freq && hrand(freq * 100 / orbprizefun(items[itShard])) >= 100) if(freq && hrand(freq * 100 / orbprizefun(items[itShard])) >= 100)
return false; return false;

View File

@ -205,7 +205,7 @@ int fiftyval200(cell *c) {
// zebraval // zebraval
int dir_truncated457(cell *c) { int dir_chamfered457(cell *c) {
int wset = 0; int wset = 0;
int has1 = 0; int has1 = 0;
for(int i=0; i<4; i++) { for(int i=0; i<4; i++) {
@ -233,7 +233,7 @@ int zebra40(cell *c) {
} }
else if(ctof(c)) return (c->master->zebraval/10); else if(ctof(c)) return (c->master->zebraval/10);
else if(a4) { else if(a4) {
int ws = dir_truncated457(c); int ws = dir_chamfered457(c);
if(ws < 0) return -ws; if(ws < 0) return -ws;
int tot = 0; int tot = 0;
array<int, 4> zebras; array<int, 4> zebras;
@ -526,7 +526,7 @@ namespace patterns {
si.dir = i; si.dir = i;
} }
else { else {
int d = dir_truncated457(c); int d = dir_chamfered457(c);
if(d >= 0) si.dir = d; if(d >= 0) si.dir = d;
else si.dir = (zebra40(createMov(c, 0)) & 4) ? 2 : 0; else si.dir = (zebra40(createMov(c, 0)) & 4) ? 2 : 0;
} }
@ -540,11 +540,11 @@ namespace patterns {
si.id = (c->master->fiftyval >> 1) & 3; si.id = (c->master->fiftyval >> 1) & 3;
else else
si.id = 0; si.id = 0;
if(nontruncated) if(nonchamfered)
si.id *= 4; si.id *= 4;
else else
si.id += 4; si.id += 4;
si.dir = (pat == PAT_COLORING && !nontruncated ? 1 : 0) + (c->master->fiftyval | (c->master->fiftyval & 8 ? 0 : 2)); si.dir = (pat == PAT_COLORING && !nonchamfered ? 1 : 0) + (c->master->fiftyval | (c->master->fiftyval & 8 ? 0 : 2));
si.symmetries = 2; si.symmetries = 2;
si.id += 8; si.id += 8;
si.id %= 12; si.id %= 12;
@ -687,13 +687,13 @@ namespace patterns {
if(subpattern_flags & SPF_FULLSYM) if(subpattern_flags & SPF_FULLSYM)
si.symmetries = 1; si.symmetries = 1;
} }
if(sphere && !(nontruncated) && !(S7 == 3)) if(sphere && !(nonchamfered) && !(S7 == 3))
si.symmetries = ctof(c) ? 1 : 2; si.symmetries = ctof(c) ? 1 : 2;
if(sphere && (sub & SPF_EXTRASYM)) { if(sphere && (sub & SPF_EXTRASYM)) {
si.symmetries = ctof(c) ? 1 : 2; si.symmetries = ctof(c) ? 1 : 2;
} }
if(a38) if(a38)
si.symmetries = (ctof(c) && !nontruncated) ? 1 : 2; si.symmetries = (ctof(c) && !nonchamfered) ? 1 : 2;
if(a457) { if(a457) {
si.symmetries = ctof(c) ? 1 : 2; si.symmetries = ctof(c) ? 1 : 2;
if(!ctof(c)) si.dir = 0; if(!ctof(c)) si.dir = 0;
@ -746,7 +746,7 @@ namespace patterns {
si.id = zebra40(c); // 4 to 43 si.id = zebra40(c); // 4 to 43
int t4 = si.id>>2, tcdir = 0; int t4 = si.id>>2, tcdir = 0;
if(nontruncated) tcdir = si.id^1; if(nonchamfered) tcdir = si.id^1;
else if(t4 == 10) tcdir = si.id-20; else if(t4 == 10) tcdir = si.id-20;
else if(t4 >= 4 && t4 < 7) tcdir = 40 + (si.id&3); else if(t4 >= 4 && t4 < 7) tcdir = 40 + (si.id&3);
@ -801,11 +801,11 @@ namespace patterns {
int look_for = -1; int look_for = -1;
int shft = 0; int shft = 0;
if(inr(si.id, 0, 4)) { if(inr(si.id, 0, 4)) {
look_for = si.id + (nontruncated ? 4 : 60); look_for = si.id + (nonchamfered ? 4 : 60);
if(symRotation) si.symmetries = 1; if(symRotation) si.symmetries = 1;
} }
else if(inr(si.id, 4, 32)) look_for = si.id + (nontruncated ? 28 : 168); else if(inr(si.id, 4, 32)) look_for = si.id + (nonchamfered ? 28 : 168);
else if(inr(si.id, 32, 60)) look_for = si.id + (nontruncated ? -28 : 112); else if(inr(si.id, 32, 60)) look_for = si.id + (nonchamfered ? -28 : 112);
else if(inr(si.id, 60, 88)) look_for = si.id - 56, shft = si.reflect ? 1 : 5; else if(inr(si.id, 60, 88)) look_for = si.id - 56, shft = si.reflect ? 1 : 5;
else if(inr(si.id, 88, 116)) look_for = si.id - 84, shft = 3; else if(inr(si.id, 88, 116)) look_for = si.id - 84, shft = 3;
else if(inr(si.id, 116, 144)) look_for = si.id + 56; else if(inr(si.id, 116, 144)) look_for = si.id + 56;
@ -849,7 +849,7 @@ namespace patterns {
if(euclid) if(euclid)
// use the torus ID // use the torus ID
si.id = fieldpattern::fieldval_uniq(c); si.id = fieldpattern::fieldval_uniq(c);
else if(nontruncated) else if(nonchamfered)
// use the actual field codes // use the actual field codes
si.id = fieldpattern::fieldval(c).first; si.id = fieldpattern::fieldval(c).first;
else else
@ -888,7 +888,7 @@ namespace patterns {
} }
int geosupport_threecolor() { int geosupport_threecolor() {
if(!nontruncated) { if(!nonchamfered) {
if(S7 % 2) return 1; if(S7 % 2) return 1;
return 2; return 2;
} }
@ -898,8 +898,8 @@ int geosupport_threecolor() {
} }
int geosupport_graveyard() { int geosupport_graveyard() {
// always works in truncated geometries // always works in chamfered geometries
if(!nontruncated) return 2; if(!nonchamfered) return 2;
// always works in patterns supporting three-color // always works in patterns supporting three-color
return geosupport_threecolor(); return geosupport_threecolor();
@ -911,19 +911,19 @@ int pattern_threecolor(cell *c) {
patterns::val38(c, si, patterns::SPF_ROT, patterns::PAT_COLORING); patterns::val38(c, si, patterns::SPF_ROT, patterns::PAT_COLORING);
return si.id >> 2; return si.id >> 2;
} }
if(a46 && !nontruncated) { if(a46 && !nonchamfered) {
patterns::patterninfo si; patterns::patterninfo si;
patterns::val46(c, si, 0, patterns::PAT_COLORING); patterns::val46(c, si, 0, patterns::PAT_COLORING);
int i = si.id; int i = si.id;
return i >> 2; return i >> 2;
} }
if(euclid) { if(euclid) {
if(a4 && nontruncated) return eupattern4(c); if(a4 && nonchamfered) return eupattern4(c);
return eupattern(c) % 3; return eupattern(c) % 3;
} }
if(S7 == 4 && S3 == 3) { if(S7 == 4 && S3 == 3) {
int codesN[6] = {0,1,2,1,2,0}; int codesN[6] = {0,1,2,1,2,0};
if(nontruncated) if(nonchamfered)
return codesN[c->master->fiftyval]; return codesN[c->master->fiftyval];
if(ctof(c)) if(ctof(c))
return 0; return 0;
@ -935,7 +935,7 @@ int pattern_threecolor(cell *c) {
return 2 - (c->spin(i)&1); return 2 - (c->spin(i)&1);
} }
} }
if(stdhyperbolic && nontruncated) { if(stdhyperbolic && nonchamfered) {
int z = zebra40(c); int z = zebra40(c);
if(z == 5 || z == 8 || z == 15) return 0; if(z == 5 || z == 8 || z == 15) return 0;
if(z == 10 || z == 12 || z == 7) return 2; if(z == 10 || z == 12 || z == 7) return 2;
@ -943,16 +943,16 @@ int pattern_threecolor(cell *c) {
if(z == 14 || z == 11) return 4; if(z == 14 || z == 11) return 4;
return 1; return 1;
} }
if(a46 && nontruncated) { if(a46 && nonchamfered) {
patterns::patterninfo si; patterns::patterninfo si;
patterns::val46(c, si, 0, patterns::PAT_COLORING); patterns::val46(c, si, 0, patterns::PAT_COLORING);
return si.id; return si.id;
} }
if(S7 == 5 && nontruncated) { if(S7 == 5 && nonchamfered) {
const int codes[12] = {1, 2, 0, 3, 2, 0, 0, 1, 3, 1, 2, 3}; const int codes[12] = {1, 2, 0, 3, 2, 0, 0, 1, 3, 1, 2, 3};
return codes[c->master->fiftyval]; return codes[c->master->fiftyval];
} }
if(S7 == 3 && nontruncated) if(S7 == 3 && nonchamfered)
return c->master->fiftyval; return c->master->fiftyval;
return !ishept(c); return !ishept(c);
} }
@ -965,7 +965,7 @@ bool pseudohept(cell *c) {
} }
bool warptype(cell *c) { bool warptype(cell *c) {
if(a4 && nontruncated) { if(a4 && nonchamfered) {
if(euclid) if(euclid)
return among(eupattern4(c), 1, 2); return among(eupattern4(c), 1, 2);
else else
@ -1123,7 +1123,7 @@ namespace patterns {
} }
dialog::addItem(XLAT("football"), 'F'); dialog::addItem(XLAT("football"), 'F');
if(S3 == 4 && nontruncated) if(S3 == 4 && nonchamfered)
dialog::addItem(XLAT("chessboard"), 'c'); dialog::addItem(XLAT("chessboard"), 'c');
dialog::addItem(XLAT("nice coloring"), 'T'); dialog::addItem(XLAT("nice coloring"), 'T');
@ -1205,7 +1205,7 @@ namespace patterns {
if(stdhyperbolic || euclid) if(stdhyperbolic || euclid)
dialog::addBoolItem(XLAT("Palace Pattern"), (whichPattern == PAT_PALACE), PAT_PALACE); dialog::addBoolItem(XLAT("Palace Pattern"), (whichPattern == PAT_PALACE), PAT_PALACE);
if(nontruncated && S3 == 4) if(nonchamfered && S3 == 4)
dialog::addBoolItem(XLAT("chessboard"), (whichPattern == PAT_CHESS), PAT_CHESS); dialog::addBoolItem(XLAT("chessboard"), (whichPattern == PAT_CHESS), PAT_CHESS);
if(a38 || a46 || euclid || S3 == 4) if(a38 || a46 || euclid || S3 == 4)
@ -1232,7 +1232,7 @@ namespace patterns {
if((euclid && whichPattern == PAT_COLORING) || if((euclid && whichPattern == PAT_COLORING) ||
(a38 && whichPattern == PAT_COLORING) || (a38 && whichPattern == PAT_COLORING) ||
(a4 && nontruncated && whichPattern == PAT_COLORING && !a46)) (a4 && nonchamfered && whichPattern == PAT_COLORING && !a46))
dialog::addBoolItem(XLAT("edit all three colors"), subpattern_flags & SPF_ROT, '0'); dialog::addBoolItem(XLAT("edit all three colors"), subpattern_flags & SPF_ROT, '0');
if(euclid && whichPattern == PAT_COLORING) if(euclid && whichPattern == PAT_COLORING)
@ -1241,8 +1241,8 @@ namespace patterns {
if(a46 && whichPattern == PAT_COLORING) if(a46 && whichPattern == PAT_COLORING)
dialog::addBoolItem(XLAT("rotate the color groups"), subpattern_flags & SPF_CHANGEROT, '4'); dialog::addBoolItem(XLAT("rotate the color groups"), subpattern_flags & SPF_CHANGEROT, '4');
if(a46 && whichPattern == PAT_COLORING && !nontruncated) if(a46 && whichPattern == PAT_COLORING && !nonchamfered)
dialog::addBoolItem(XLAT("edit both truncated colors"), subpattern_flags & SPF_TWOCOL, '5'); dialog::addBoolItem(XLAT("edit both chamfered colors"), subpattern_flags & SPF_TWOCOL, '5');
if( if(
(whichPattern == PAT_EMERALD && (stdhyperbolic || a38)) || (whichPattern == PAT_EMERALD && (stdhyperbolic || a38)) ||
@ -1261,15 +1261,15 @@ namespace patterns {
if(euclid && among(whichPattern, PAT_COLORING, 0)) if(euclid && among(whichPattern, PAT_COLORING, 0))
dialog::addBoolItem(XLAT("full symmetry"), subpattern_flags & SPF_FULLSYM, '!'); dialog::addBoolItem(XLAT("full symmetry"), subpattern_flags & SPF_FULLSYM, '!');
if(a38 && nontruncated && whichPattern == 0) { if(a38 && nonchamfered && whichPattern == 0) {
dialog::addBoolItem(XLAT("extra symmetries"), subpattern_flags & SPF_EXTRASYM, '='); dialog::addBoolItem(XLAT("extra symmetries"), subpattern_flags & SPF_EXTRASYM, '=');
} }
if(a46 && nontruncated && whichPattern == PAT_COLORING) { if(a46 && nonchamfered && whichPattern == PAT_COLORING) {
dialog::addBoolItem(XLAT("extra symmetries"), subpattern_flags & SPF_EXTRASYM, '='); dialog::addBoolItem(XLAT("extra symmetries"), subpattern_flags & SPF_EXTRASYM, '=');
} }
if((a38 || (sphere && S7 == 4) || euclid4 || a46) && !nontruncated) { if((a38 || (sphere && S7 == 4) || euclid4 || a46) && !nonchamfered) {
dialog::addBoolItem(XLAT("alternate coloring"), subpattern_flags & SPF_ALTERNATE, '\''); dialog::addBoolItem(XLAT("alternate coloring"), subpattern_flags & SPF_ALTERNATE, '\'');
dialog::addBoolItem(XLAT("football pattern"), subpattern_flags & SPF_FOOTBALL, '*'); dialog::addBoolItem(XLAT("football pattern"), subpattern_flags & SPF_FOOTBALL, '*');
} }
@ -1347,7 +1347,7 @@ namespace patterns {
struct changeable_pattern_geometry { struct changeable_pattern_geometry {
eGeometry geo; eGeometry geo;
bool nontrunc; bool nonchamf;
char whichPattern; char whichPattern;
int subpattern_flags; int subpattern_flags;
}; };
@ -1441,14 +1441,14 @@ namespace patterns {
for(int j=0; j<size(cpatterns[cgroup].geometries); j++) { for(int j=0; j<size(cpatterns[cgroup].geometries); j++) {
auto &g = cpatterns[cgroup].geometries[j]; auto &g = cpatterns[cgroup].geometries[j];
string s = XLAT(ginf[g.geo].name); string s = XLAT(ginf[g.geo].name);
s += truncatenames[g.nontrunc]; s += chamfernames[g.nonchamf];
if(g.subpattern_flags & SPF_ALTERNATE) s += " (alt)"; if(g.subpattern_flags & SPF_ALTERNATE) s += " (alt)";
if(cgroup == cpZebra) { if(cgroup == cpZebra) {
if(g.whichPattern == PAT_PALACE) s += " (Palace)"; if(g.whichPattern == PAT_PALACE) s += " (Palace)";
else if(g.whichPattern == PAT_EMERALD) s += " (Emerald)"; else if(g.whichPattern == PAT_EMERALD) s += " (Emerald)";
else s += " (Zebra)"; else s += " (Zebra)";
} }
dialog::addBoolItem(s, geometry == g.geo && nontruncated == g.nontrunc && whichPattern == g.whichPattern && subpattern_flags == g.subpattern_flags, 'a'+j); dialog::addBoolItem(s, geometry == g.geo && nonchamfered == g.nonchamf && whichPattern == g.whichPattern && subpattern_flags == g.subpattern_flags, 'a'+j);
} }
dialog::addBreak(100); dialog::addBreak(100);
dialog::addItem("more tuning", 'r'); dialog::addItem("more tuning", 'r');
@ -1466,7 +1466,7 @@ namespace patterns {
#endif #endif
auto &g = cpatterns[cgroup].geometries[uni - 'a']; auto &g = cpatterns[cgroup].geometries[uni - 'a'];
if(g.geo != geometry) { targetgeometry = g.geo; restartGame('g', false, true); } if(g.geo != geometry) { targetgeometry = g.geo; restartGame('g', false, true); }
if(g.nontrunc != nontruncated) restartGame('7', false, true); if(g.nonchamf != nonchamfered) restartGame('7', false, true);
whichPattern = g.whichPattern; whichPattern = g.whichPattern;
subpattern_flags = g.subpattern_flags; subpattern_flags = g.subpattern_flags;
#if CAP_TEXTURE #if CAP_TEXTURE
@ -1483,7 +1483,7 @@ namespace patterns {
for(int i=0; i<size(cpatterns); i++) for(int i=0; i<size(cpatterns); i++)
for(int j=0; j<size(cpatterns[i].geometries); j++) { for(int j=0; j<size(cpatterns[i].geometries); j++) {
auto &g = cpatterns[i].geometries[j]; auto &g = cpatterns[i].geometries[j];
if(geometry == g.geo && nontruncated == g.nontrunc && whichPattern == g.whichPattern && subpattern_flags == g.subpattern_flags) if(geometry == g.geo && nonchamfered == g.nonchamf && whichPattern == g.whichPattern && subpattern_flags == g.subpattern_flags)
cgroup = cpatterntype(i); cgroup = cpatterntype(i);
} }
old_cgroup = cgroup; old_cgroup = cgroup;
@ -1667,7 +1667,7 @@ namespace linepatterns {
case patBigTriangles: { case patBigTriangles: {
if(pseudohept(c) && !euclid) for(int i=0; i<S7; i++) if(pseudohept(c) && !euclid) for(int i=0; i<S7; i++)
if(c->master->move[i] < c->master) { if(c->master->move[i] < c->master) {
queueline(tC0(V), V*xspinpush0((nontruncated?M_PI:0) -2*M_PI*i/S7, tessf), col, 2); queueline(tC0(V), V*xspinpush0((nonchamfered?M_PI:0) -2*M_PI*i/S7, tessf), col, 2);
} }
break; break;
} }
@ -1675,20 +1675,20 @@ namespace linepatterns {
case patBigRings: { case patBigRings: {
if(pseudohept(c) && !euclid) for(int i=0; i<S7; i++) if(pseudohept(c) && !euclid) for(int i=0; i<S7; i++)
if(c->master->move[i] && c->master->move[i] < c->master && c->master->move[i]->dm4 == c->master->dm4) if(c->master->move[i] && c->master->move[i] < c->master && c->master->move[i]->dm4 == c->master->dm4)
queueline(tC0(V), V*xspinpush0((nontruncated?M_PI:0) -2*M_PI*i/S7, tessf), col, 2); queueline(tC0(V), V*xspinpush0((nonchamfered?M_PI:0) -2*M_PI*i/S7, tessf), col, 2);
break; break;
} }
case patTree: case patTree:
if(ctof(c) && !euclid) if(ctof(c) && !euclid)
queueline(tC0(V), V*ddi0(nontruncated?S42:0, tessf), col, 2); queueline(tC0(V), V*ddi0(nonchamfered?S42:0, tessf), col, 2);
break; break;
case patAltTree: case patAltTree:
if(ctof(c) && !euclid && c->master->alt) { if(ctof(c) && !euclid && c->master->alt) {
for(int i=0; i<S7; i++) for(int i=0; i<S7; i++)
if(c->master->move[i] && c->master->move[i]->alt == c->master->alt->move[0]) if(c->master->move[i] && c->master->move[i]->alt == c->master->alt->move[0])
queueline(tC0(V), V*xspinpush0((nontruncated?M_PI:0) -2*M_PI*i/S7, tessf), col, 2); queueline(tC0(V), V*xspinpush0((nonchamfered?M_PI:0) -2*M_PI*i/S7, tessf), col, 2);
} }
break; break;

View File

@ -1098,12 +1098,12 @@ hyperpoint hpxd(ld d, ld x, ld y, ld z) {
double scalef; double scalef;
hyperpoint hpxyzsc(double x, double y, double z) { hyperpoint hpxyzsc(double x, double y, double z) {
if(nontruncated) return hpxd(scalef, x, y, z); if(nonchamfered) return hpxd(scalef, x, y, z);
else return hpxyz(x,y,z); else return hpxyz(x,y,z);
} }
hyperpoint turtlevertex(int u, double x, double y, double z) { hyperpoint turtlevertex(int u, double x, double y, double z) {
ld scale = nontruncated ? scalef : 1; ld scale = nonchamfered ? scalef : 1;
if(u) scale /= 2; if(u) scale /= 2;
return hpxd(scale, x, y, z); return hpxd(scale, x, y, z);
} }
@ -1148,7 +1148,7 @@ void bshape(hpcshape& sh, int p, double shzoom, int shapeid, double bonus = 0) {
while(polydata[whereis + 2*qty] != NEWSHAPE) qty++; while(polydata[whereis + 2*qty] != NEWSHAPE) qty++;
double shzoomx = shzoom; double shzoomx = shzoom;
double shzoomy = shzoom; double shzoomy = shzoom;
if(shzoom == WOLF) shzoomx = 1.5 * (nontruncated ? crossf / hcrossf : 1), shzoomy = 1.6 * (nontruncated ? crossf / hcrossf : 1); if(shzoom == WOLF) shzoomx = 1.5 * (nonchamfered ? crossf / hcrossf : 1), shzoomy = 1.6 * (nonchamfered ? crossf / hcrossf : 1);
int rots2 = rots; int rots2 = rots;
// shapes 368..370 are specially designed // shapes 368..370 are specially designed
if(!(shapeid >= 368 && shapeid <= 370)) { if(!(shapeid >= 368 && shapeid <= 370)) {
@ -1267,21 +1267,21 @@ void buildpolys() {
} }
// scales // scales
scalef = nontruncated ? crossf / hcrossf7 : hcrossf / hcrossf7; scalef = nonchamfered ? crossf / hcrossf7 : hcrossf / hcrossf7;
if(euclid) scalef *= .52/crossf; if(euclid) scalef *= .52/crossf;
double scalef2 = nontruncated ? crossf / hcrossf7 * .88 : euclid ? scalef : hcrossf / hcrossf7; double scalef2 = nonchamfered ? crossf / hcrossf7 * .88 : euclid ? scalef : hcrossf / hcrossf7;
double spzoom = sphere ? 1.4375 : 1; double spzoom = sphere ? 1.4375 : 1;
double spzoom6 = sphere ? 1.2375 : 1; double spzoom6 = sphere ? 1.2375 : 1;
double spzoom7 = sphere ? .8 : 1; double spzoom7 = sphere ? .8 : 1;
double spzoomd7 = (nontruncated && sphere) ? 1 : spzoom7; double spzoomd7 = (nonchamfered && sphere) ? 1 : spzoom7;
double fac80 = a45 ? 1.4 : a46 ? 1.2 : (a38) ? .7 : .8; double fac80 = a45 ? 1.4 : a46 ? 1.2 : (a38) ? .7 : .8;
double fac94 = euclid ? .8 : a4 ? (nontruncated ? 1.1 : .9) : .94; double fac94 = euclid ? .8 : a4 ? (nonchamfered ? 1.1 : .9) : .94;
if(euclid) fac80 = fac94 = .9; if(euclid) fac80 = fac94 = .9;
@ -1296,11 +1296,11 @@ void buildpolys() {
#define SHADMUL (S3==4 ? 1.05 : 1.3) #define SHADMUL (S3==4 ? 1.05 : 1.3)
// procedural floors // procedural floors
double shexf = nontruncated ? crossf* .55 : hexf; double shexf = nonchamfered ? crossf* .55 : hexf;
double p = -.006; double p = -.006;
int td = ((nontruncated || euclid) && !(S7&1)) ? S42+S6 : 0; int td = ((nonchamfered || euclid) && !(S7&1)) ? S42+S6 : 0;
double trihepta0 = scalef*spzoom6*(.2776+p) * gsca(a4, 1.3, a46, .975, a47, .85, a38, .9) * bscale6; double trihepta0 = scalef*spzoom6*(.2776+p) * gsca(a4, 1.3, a46, .975, a47, .85, a38, .9) * bscale6;
double trihepta1 = (sphere ? .54 : scalef*spzoom6*(.5273-2*p)) * gsca(a4, .8, a46, 1.075, sphere4, 1.3) * bscale7; double trihepta1 = (sphere ? .54 : scalef*spzoom6*(.5273-2*p)) * gsca(a4, .8, a46, 1.075, sphere4, 1.3) * bscale7;
@ -1353,16 +1353,16 @@ void buildpolys() {
bool strict = false; bool strict = false;
if(a4 && nontruncated) fac94 *= 1.1; if(a4 && nonchamfered) fac94 *= 1.1;
if(a46 && nontruncated) fac94 *= .9; if(a46 && nonchamfered) fac94 *= .9;
double floorrad0 = shexf*fac80*spzoom; double floorrad0 = shexf*fac80*spzoom;
double floorrad1 = strict ? hcrossf : euclid ? shexf*fac80*spzoom : shexf*fac94; double floorrad1 = strict ? hcrossf : euclid ? shexf*fac80*spzoom : shexf*fac94;
if(euclid4) { if(euclid4) {
if(nontruncated) if(nonchamfered)
floorrad0 = floorrad1 = rhexf * .94; floorrad0 = floorrad1 = rhexf * .94;
else else
floorrad0 = hexvdist * .9, floorrad0 = hexvdist * .9,
@ -1513,7 +1513,7 @@ void buildpolys() {
hpcpush(ddi(0, -shexf*2.4) * C0); hpcpush(ddi(0, -shexf*2.4) * C0);
bshape(shMirror, PPR_WALL); bshape(shMirror, PPR_WALL);
if(nontruncated) { if(nonchamfered) {
for(int t=0; t<=S7; t++) hpcpush(ddi(t*12, shexf*MF(fac80,7)) * C0); for(int t=0; t<=S7; t++) hpcpush(ddi(t*12, shexf*MF(fac80,7)) * C0);
} }
else { else {
@ -1577,9 +1577,9 @@ void buildpolys() {
} }
double disksize = crossf; double disksize = crossf;
if(nontruncated && a38) disksize *= 2; if(nonchamfered && a38) disksize *= 2;
else if(a38) disksize *= 1.5; else if(a38) disksize *= 1.5;
else if(nontruncated && S6 == 8) disksize *= 1.5; else if(nonchamfered && S6 == 8) disksize *= 1.5;
bshape(shDisk, PPR_ITEM); bshape(shDisk, PPR_ITEM);
for(int i=0; i<=S84; i+=S3) for(int i=0; i<=S84; i+=S3)
@ -1793,9 +1793,9 @@ void buildpolys() {
if(a38) spzoom6 *= .9; if(a38) spzoom6 *= .9;
if(a4 && !nontruncated) spzoom6 *= 1.9, spzoom7 *= .9, spzoomd7 *= .9; if(a4 && !nonchamfered) spzoom6 *= 1.9, spzoom7 *= .9, spzoomd7 *= .9;
if(a46 && !nontruncated) spzoom6 *= .9; if(a46 && !nonchamfered) spzoom6 *= .9;
if(a47 && !nontruncated) spzoom6 *= .85; if(a47 && !nonchamfered) spzoom6 *= .85;
double espzoom6 = spzoom6, espzoomd7 = spzoomd7; double espzoom6 = spzoom6, espzoomd7 = spzoomd7;
@ -1823,18 +1823,18 @@ void buildpolys() {
bshape(shCrossFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9)*ffscale2, 5, ffspin2); bshape(shCrossFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9)*ffscale2, 5, ffspin2);
bshape(shCrossFloor[1], PPR_FLOOR, scalef*espzoomd7*gsca(sphere,.9)*ffscale2 * gsca(a47,1.3), 6, octroll); bshape(shCrossFloor[1], PPR_FLOOR, scalef*espzoomd7*gsca(sphere,.9)*ffscale2 * gsca(a47,1.3), 6, octroll);
double ntscale = gsca(nontruncated, gsca(a38, 1.4, a47, 2, a46, 1.525)); double ntscale = gsca(nonchamfered, gsca(a38, 1.4, a47, 2, a46, 1.525));
double ntrot = grot(a46&&nontruncated, .25, a38&&nontruncated, -.2); double ntrot = grot(a46&&nonchamfered, .25, a38&&nonchamfered, -.2);
bshape(shChargedFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9)*ffscale2, 7, ffspin2); bshape(shChargedFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9)*ffscale2, 7, ffspin2);
bshape(shChargedFloor[1], PPR_FLOOR, scalef*spzoomd7, 9); bshape(shChargedFloor[1], PPR_FLOOR, scalef*spzoomd7, 9);
bshape(shChargedFloor[2], PPR_FLOOR, scalef*espzoom6, 7); bshape(shChargedFloor[2], PPR_FLOOR, scalef*espzoom6, 7);
bshape(shChargedFloor[3], 12, spzoomd7 * gsca(a4 && euclid, .4, a4,1.2,sphere&&nontruncated,.9)* ntscale, 10, ntrot + grot(euclid4 && nontruncated, M_PI/4 + .1)); // nontruncated variant bshape(shChargedFloor[3], 12, spzoomd7 * gsca(a4 && euclid, .4, a4,1.2,sphere&&nonchamfered,.9)* ntscale, 10, ntrot + grot(euclid4 && nonchamfered, M_PI/4 + .1)); // nonchamfered variant
bshape(shSStarFloor[0], PPR_FLOOR, scalef*spzoom6*gsca(sphere,.8)*ffscale2, 11, grot(a4,.775)); bshape(shSStarFloor[0], PPR_FLOOR, scalef*spzoom6*gsca(sphere,.8)*ffscale2, 11, grot(a4,.775));
bshape(shSStarFloor[1], PPR_FLOOR, scalef*spzoomd7*gsca(a4,.85), 12, octroll); bshape(shSStarFloor[1], PPR_FLOOR, scalef*spzoomd7*gsca(a4,.85), 12, octroll);
bshape(shOverFloor[0], PPR_FLOOR, scalef*spzoom * gsca(a47,1.3, a45,1.3, a46,1.1), 13, grot(a47,-.75, a45,-.7, a46,.9)); bshape(shOverFloor[0], PPR_FLOOR, scalef*spzoom * gsca(a47,1.3, a45,1.3, a46,1.1), 13, grot(a47,-.75, a45,-.7, a46,.9));
if(nontruncated) { if(nonchamfered) {
if(a4) bshape(shOverFloor[1], PPR_FLOOR, 1, 368 + S7 - 5, 0); if(a4) bshape(shOverFloor[1], PPR_FLOOR, 1, 368 + S7 - 5, 0);
else bshape(shOverFloor[1], PPR_FLOOR, gsca(a38,1.3, sphere, .83), 14, octroll + grot(a38,.4)); else bshape(shOverFloor[1], PPR_FLOOR, gsca(a38,1.3, sphere, .83), 14, octroll + grot(a38,.4));
} }
@ -1843,12 +1843,12 @@ void buildpolys() {
bshape(shTriFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9, a4,.9)*ffscale2, 17, ffspin2 + grot(a47,.1)); bshape(shTriFloor[0], PPR_FLOOR, scalef*espzoom6*gsca(sphere,.9, a4,.9)*ffscale2, 17, ffspin2 + grot(a47,.1));
bshape(shTriFloor[1], PPR_FLOOR, scalef*espzoomd7*ffscale2*gsca(a4,1.2, a47,1.5), 18, octroll + grot(a4,.25, a47,-.1, sphere4,.7) + grot(euclid&&a4, M_PI/8)); bshape(shTriFloor[1], PPR_FLOOR, scalef*espzoomd7*ffscale2*gsca(a4,1.2, a47,1.5), 18, octroll + grot(a4,.25, a47,-.1, sphere4,.7) + grot(euclid&&a4, M_PI/8));
bshape(shFeatherFloor[0], PPR_FLOOR, scalef*spzoom6*ffscale2, 19, ffspin2); bshape(shFeatherFloor[0], PPR_FLOOR, scalef*spzoom6*ffscale2, 19, ffspin2);
if(nontruncated) bshape(shFeatherFloor[1], PPR_FLOOR, sphere ? .83 : gsca(ap4,1.1) * ntscale, 20, ntrot); if(nonchamfered) bshape(shFeatherFloor[1], PPR_FLOOR, sphere ? .83 : gsca(ap4,1.1) * ntscale, 20, ntrot);
else bshape(shFeatherFloor[1], PPR_FLOOR, scalef*spzoom7*gsca(sphere,1.1,a4,1.1)*ffscale2*ntscale, 21, sphere?1.3:ntrot); else bshape(shFeatherFloor[1], PPR_FLOOR, scalef*spzoom7*gsca(sphere,1.1,a4,1.1)*ffscale2*ntscale, 21, sphere?1.3:ntrot);
bshape(shFeatherFloor[2], PPR_FLOOR, scalef*1.1, 22); // Euclidean variant bshape(shFeatherFloor[2], PPR_FLOOR, scalef*1.1, 22); // Euclidean variant
bshape(shBarrowFloor[0], PPR_FLOOR, gsca(euclid,.9) * spzoom6 * gsca(a467,1.7, a46,.8, a38,1.4) * gsca(euclid&&a4, .7), 23); bshape(shBarrowFloor[0], PPR_FLOOR, gsca(euclid,.9) * spzoom6 * gsca(a467,1.7, a46,.8, a38,1.4) * gsca(euclid&&a4, .7), 23);
bshape(shBarrowFloor[1], PPR_FLOOR, spzoomd7 * gsca(a4,1.15, a467,1.9, a46,.8, a38,1.5, sphere&&nontruncated,.9) * gsca(euclid&&a4, .5), 24, octroll - grot(a47,.1)); bshape(shBarrowFloor[1], PPR_FLOOR, spzoomd7 * gsca(a4,1.15, a467,1.9, a46,.8, a38,1.5, sphere&&nonchamfered,.9) * gsca(euclid&&a4, .5), 24, octroll - grot(a47,.1));
bshape(shBarrowFloor[2], PPR_FLOOR, ntscale*gsca(sphere||euclid,.9) * gsca(euclid&&a4&&nontruncated, .5), 25, ntrot + grot(euclid&&a4&&nontruncated, M_PI/4)); bshape(shBarrowFloor[2], PPR_FLOOR, ntscale*gsca(sphere||euclid,.9) * gsca(euclid&&a4&&nonchamfered, .5), 25, ntrot + grot(euclid&&a4&&nonchamfered, M_PI/4));
bshape(shNewFloor[0], PPR_FLOOR, scalef*espzoom6 * ffscale2, 26, ffspin2); bshape(shNewFloor[0], PPR_FLOOR, scalef*espzoom6 * ffscale2, 26, ffspin2);
bshape(shNewFloor[1], PPR_FLOOR, scalef*espzoomd7 * ffscale2, 27, octroll); bshape(shNewFloor[1], PPR_FLOOR, scalef*espzoomd7 * ffscale2, 27, octroll);
@ -1930,7 +1930,7 @@ void buildpolys() {
zoomShape(shDesertFloor[j], shRedRockFloor[i-1][j], 1 - .1 * i, PPR_FLOORa+i); zoomShape(shDesertFloor[j], shRedRockFloor[i-1][j], 1 - .1 * i, PPR_FLOORa+i);
bshape(shPowerFloor[0], PPR_FLOOR_DRAGON, scalef*espzoom6*gsca(sphere,.8)*ffscale2, 57, ffspin2); bshape(shPowerFloor[0], PPR_FLOOR_DRAGON, scalef*espzoom6*gsca(sphere,.8)*ffscale2, 57, ffspin2);
bshape(shPowerFloor[1], PPR_FLOOR_DRAGON, scalef*espzoomd7*ffscale2, 58, octroll); bshape(shPowerFloor[1], PPR_FLOOR_DRAGON, scalef*espzoomd7*ffscale2, 58, octroll);
bshape(shRoseFloor[2], PPR_FLOOR, 1, 173); // nontruncated bshape(shRoseFloor[2], PPR_FLOOR, 1, 173); // nonchamfered
bshape(shRoseFloor[0], PPR_FLOOR, gsca(euclid,.9), 174); bshape(shRoseFloor[0], PPR_FLOOR, gsca(euclid,.9), 174);
bshape(shRoseFloor[1], PPR_FLOOR, gsca(euclid,.9) * scalef * gsca(ap4,.85), 175, grot(ap4, M_PI/8)); bshape(shRoseFloor[1], PPR_FLOOR, gsca(euclid,.9) * scalef * gsca(ap4,.85), 175, grot(ap4, M_PI/8));
@ -1942,7 +1942,7 @@ void buildpolys() {
bshape(shTurtleFloor[0], PPR_FLOOR, gsca(euclid,.9, sphere, .9*1.3, a4, 1.6, a38, 1.3, a467, 1.4) * gsca(euclid&&a4, .9), 176); bshape(shTurtleFloor[0], PPR_FLOOR, gsca(euclid,.9, sphere, .9*1.3, a4, 1.6, a38, 1.3, a467, 1.4) * gsca(euclid&&a4, .9), 176);
bshape(shTurtleFloor[1], PPR_FLOOR, scalef * gsca(euclid,.9, a4, .9, a47,1.3) * gsca(euclid&&a4, .8), 177, octroll - grot(a47,.1)); bshape(shTurtleFloor[1], PPR_FLOOR, scalef * gsca(euclid,.9, a4, .9, a47,1.3) * gsca(euclid&&a4, .8), 177, octroll - grot(a47,.1));
bshape(shTurtleFloor[2], PPR_FLOOR, ntscale * gsca(sphere && nontruncated, .9) * gsca(euclid&&a4&&nontruncated, .5), 178, ntrot + grot(euclid&&a4&&nontruncated, M_PI/4)); // nontruncated bshape(shTurtleFloor[2], PPR_FLOOR, ntscale * gsca(sphere && nonchamfered, .9) * gsca(euclid&&a4&&nonchamfered, .5), 178, ntrot + grot(euclid&&a4&&nonchamfered, M_PI/4)); // nonchamfered
bshape(shDragonFloor[0], PPR_FLOOR_DRAGON, gsca(a4,1.6, a38, 1.3) * gsca(euclid&&a4, .5), 181, ffspin2); bshape(shDragonFloor[0], PPR_FLOOR_DRAGON, gsca(a4,1.6, a38, 1.3) * gsca(euclid&&a4, .5), 181, ffspin2);
bshape(shDragonFloor[1], PPR_FLOOR_DRAGON, gsca(sphere, .9, a38, 1.1, a4,.9) * scalef, 182, octroll); bshape(shDragonFloor[1], PPR_FLOOR_DRAGON, gsca(sphere, .9, a38, 1.1, a4,.9) * scalef, 182, octroll);
@ -1951,7 +1951,7 @@ void buildpolys() {
bshape(shZebra[1], PPR_FLOOR, scalef, 163); bshape(shZebra[1], PPR_FLOOR, scalef, 163);
bshape(shZebra[2], PPR_FLOOR, scalef, 164); bshape(shZebra[2], PPR_FLOOR, scalef, 164);
bshape(shZebra[3], PPR_FLOOR, scalef, 165); bshape(shZebra[3], PPR_FLOOR, scalef, 165);
bshape(shZebra[4], PPR_FLOOR, 1, 166); // for nontruncated bshape(shZebra[4], PPR_FLOOR, 1, 166); // for nonchamfered
bshape(shEmeraldFloor[0], PPR_FLOOR, scalef, 167); // 4 bshape(shEmeraldFloor[0], PPR_FLOOR, scalef, 167); // 4
bshape(shEmeraldFloor[1], PPR_FLOOR, scalef, 168); // 12 bshape(shEmeraldFloor[1], PPR_FLOOR, scalef, 168); // 12
bshape(shEmeraldFloor[2], PPR_FLOOR, scalef, 169); // 16 bshape(shEmeraldFloor[2], PPR_FLOOR, scalef, 169); // 16
@ -1965,9 +1965,9 @@ void buildpolys() {
bshape(shTower[4], PPR_FLOOR_TOWER, scalef, 200); // 9 bshape(shTower[4], PPR_FLOOR_TOWER, scalef, 200); // 9
bshape(shTower[5], PPR_FLOOR_TOWER, scalef, 201); // 10 bshape(shTower[5], PPR_FLOOR_TOWER, scalef, 201); // 10
bshape(shTower[6], PPR_FLOOR_TOWER, scalef, 202); // 10 bshape(shTower[6], PPR_FLOOR_TOWER, scalef, 202); // 10
bshape(shTower[7], PPR_FLOOR_TOWER, 1, 203); // nontruncated 7 bshape(shTower[7], PPR_FLOOR_TOWER, 1, 203); // nonchamfered 7
bshape(shTower[8], PPR_FLOOR_TOWER, 1, 204); // nontruncated 11 bshape(shTower[8], PPR_FLOOR_TOWER, 1, 204); // nonchamfered 11
bshape(shTower[9], PPR_FLOOR_TOWER, 1, 205); // nontruncated 15 bshape(shTower[9], PPR_FLOOR_TOWER, 1, 205); // nonchamfered 15
bshape(shTower[10], PPR_FLOOR_TOWER, scalef, 206); // Euclidean bshape(shTower[10], PPR_FLOOR_TOWER, scalef, 206); // Euclidean
// structures & walls // structures & walls
@ -2000,17 +2000,17 @@ void buildpolys() {
copyshape(shJoint, shDisk, PPR_ONTENTACLE); copyshape(shJoint, shDisk, PPR_ONTENTACLE);
bshape(shTentHead, PPR_ONTENTACLE, scalef, 79); bshape(shTentHead, PPR_ONTENTACLE, scalef, 79);
bshape(shWormHead, PPR_ONTENTACLE, scalef, 80); bshape(shWormHead, PPR_ONTENTACLE, scalef, 80);
if(nontruncated) bshape(shDragonSegment, PPR_TENTACLE1, 1, 233); if(nonchamfered) bshape(shDragonSegment, PPR_TENTACLE1, 1, 233);
else bshape(shDragonSegment, PPR_TENTACLE1, scalef, 234); else bshape(shDragonSegment, PPR_TENTACLE1, scalef, 234);
bshape(shDragonWings, PPR_ONTENTACLE, scalef, 237); bshape(shDragonWings, PPR_ONTENTACLE, scalef, 237);
bshape(shDragonLegs, PPR_TENTACLE0, scalef, 238); bshape(shDragonLegs, PPR_TENTACLE0, scalef, 238);
if(nontruncated) bshape(shDragonTail, PPR_TENTACLE1, 1, 239); if(nonchamfered) bshape(shDragonTail, PPR_TENTACLE1, 1, 239);
else bshape(shDragonTail, PPR_TENTACLE1, scalef, 240); else bshape(shDragonTail, PPR_TENTACLE1, scalef, 240);
bshape(shDragonNostril, PPR_ONTENTACLE_EYES, scalef, 241); bshape(shDragonNostril, PPR_ONTENTACLE_EYES, scalef, 241);
bshape(shDragonHead, PPR_ONTENTACLE, scalef, 242); bshape(shDragonHead, PPR_ONTENTACLE, scalef, 242);
if(nontruncated) bshape(shSeaTentacle, PPR_TENTACLE1, 1, 245); if(nonchamfered) bshape(shSeaTentacle, PPR_TENTACLE1, 1, 245);
else bshape(shSeaTentacle, PPR_TENTACLE1, 1, 246); else bshape(shSeaTentacle, PPR_TENTACLE1, 1, 246);
ld ksc = nontruncated ? 1.8 : 1.5; ld ksc = nonchamfered ? 1.8 : 1.5;
bshape(shKrakenHead, PPR_ONTENTACLE, ksc, 247); bshape(shKrakenHead, PPR_ONTENTACLE, ksc, 247);
bshape(shKrakenEye, PPR_ONTENTACLE_EYES, ksc, 248); bshape(shKrakenEye, PPR_ONTENTACLE_EYES, ksc, 248);
bshape(shKrakenEye2, PPR_ONTENTACLE_EYES2, ksc, 249); bshape(shKrakenEye2, PPR_ONTENTACLE_EYES2, ksc, 249);
@ -2241,10 +2241,10 @@ void buildpolys() {
for(int v=0; v<13; v++) for(int z=0; z<2; z++) for(int v=0; v<13; v++) for(int z=0; z<2; z++)
copyshape(shTortoise[v][4+z], shTortoise[v][2+z], shTortoise[v][2+z].prio + (PPR_CARRIED-PPR_ITEM)); copyshape(shTortoise[v][4+z], shTortoise[v][2+z], shTortoise[v][2+z].prio + (PPR_CARRIED-PPR_ITEM));
if(nontruncated) bshape(shMagicSword, PPR_MAGICSWORD, 1, 243); if(nonchamfered) bshape(shMagicSword, PPR_MAGICSWORD, 1, 243);
else bshape(shMagicSword, PPR_MAGICSWORD, 1, 244); else bshape(shMagicSword, PPR_MAGICSWORD, 1, 244);
if(nontruncated) bshape(shMagicShovel, PPR_MAGICSWORD, 1, 333); if(nonchamfered) bshape(shMagicShovel, PPR_MAGICSWORD, 1, 333);
else bshape(shMagicShovel, PPR_MAGICSWORD, 1, 333); else bshape(shMagicShovel, PPR_MAGICSWORD, 1, 333);
bshape(shBead0, 20, 1, 250); bshape(shBead0, 20, 1, 250);
@ -2378,7 +2378,7 @@ bool isSpecial(const hpcshape &h) {
const hpcshape& getSeabed(const hpcshape& c) { const hpcshape& getSeabed(const hpcshape& c) {
if(&c == &shCloudFloor[2]) return shCloudSeabed[2]; if(&c == &shCloudFloor[2]) return shCloudSeabed[2];
if(&c == &shCaveFloor[2]) return shCaveSeabed[2]; if(&c == &shCaveFloor[2]) return shCaveSeabed[2];
if(nontruncated || euclid || sphere) return c; if(nonchamfered || euclid || sphere) return c;
if(&c == &shFloor[0]) return shFullFloor[0]; if(&c == &shFloor[0]) return shFullFloor[0];
if(&c == &shFloor[1]) return shFullFloor[1]; if(&c == &shFloor[1]) return shFullFloor[1];
if(&c == &shCaveFloor[0]) return shCaveSeabed[0]; if(&c == &shCaveFloor[0]) return shCaveSeabed[0];
@ -3430,7 +3430,7 @@ NEWSHAPE, 366, 1, 2, 0.120242,0.202432, 0.476077,0.202192,
NEWSHAPE, 367, 1, 2, -0.096569,0.019944, 0.040859,0.019906, 0.037742,0.058710, 0.116624,-0.000000, NEWSHAPE, 367, 1, 2, -0.096569,0.019944, 0.040859,0.019906, 0.037742,0.058710, 0.116624,-0.000000,
// overgrown for 4-5 to 4-7 non-truncated // overgrown for 4-5 to 4-7 non-chamfered
NEWSHAPE, 368, 5, 1, -0.722750,-0.522024, -0.310675,-0.189104, -0.809015,-0.052887, -0.464722,0.060902, -1.057795,0.207750, NEWSHAPE, 368, 5, 1, -0.722750,-0.522024, -0.310675,-0.189104, -0.809015,-0.052887, -0.464722,0.060902, -1.057795,0.207750,
NEWSHAPE, 369, 6, 1, 1.125689,-0.648796, 0.574166,-0.456509, 0.822679,-1.131184, 0.174168,-0.605003, 0.411340,-1.336854, NEWSHAPE, 369, 6, 1, 1.125689,-0.648796, 0.574166,-0.456509, 0.822679,-1.131184, 0.174168,-0.605003, 0.411340,-1.336854,
NEWSHAPE, 370, 7, 1, 1.034599,-1.366924, 0.528060,-0.892063, 0.490794,-1.701844, 0.081991,-0.819912, 0.042928,-1.637383, NEWSHAPE, 370, 7, 1, 1.034599,-1.366924, 0.528060,-0.892063, 0.490794,-1.701844, 0.081991,-0.819912, 0.042928,-1.637383,
@ -3457,20 +3457,20 @@ NEWSHAPE
/* floors */ /* floors */
// need eswap // need eswap
#define DESERTFLOOR (nontruncated ? shCloudFloor : shDesertFloor)[ct6] #define DESERTFLOOR (nonchamfered ? shCloudFloor : shDesertFloor)[ct6]
#define BUTTERFLYFLOOR (nontruncated ? shFloor : shButterflyFloor)[ct6] #define BUTTERFLYFLOOR (nonchamfered ? shFloor : shButterflyFloor)[ct6]
#define PALACEFLOOR (nontruncated?shFloor:shPalaceFloor)[ct6] #define PALACEFLOOR (nonchamfered?shFloor:shPalaceFloor)[ct6]
#define SSTARFLOOR (nontruncated ? shCloudFloor : shSStarFloor)[ct6] #define SSTARFLOOR (nonchamfered ? shCloudFloor : shSStarFloor)[ct6]
#define POWERFLOOR (nontruncated ? shStarFloor : shPowerFloor)[ct6] #define POWERFLOOR (nonchamfered ? shStarFloor : shPowerFloor)[ct6]
#define CHARGEDFLOOR (nontruncated ? shChargedFloor[3] : ct6 ? shFloor[1] : shChargedFloor[0]) #define CHARGEDFLOOR (nonchamfered ? shChargedFloor[3] : ct6 ? shFloor[1] : shChargedFloor[0])
#define DEMONFLOOR shDemonFloor[ct6] #define DEMONFLOOR shDemonFloor[ct6]
#define NEWFLOOR (nontruncated ? shCloudFloor : shNewFloor)[ct6] #define NEWFLOOR (nonchamfered ? shCloudFloor : shNewFloor)[ct6]
#define CROSSFLOOR (nontruncated ? shFloor : shCrossFloor)[ct6] #define CROSSFLOOR (nonchamfered ? shFloor : shCrossFloor)[ct6]
#define TROLLFLOOR shTrollFloor[ct6] #define TROLLFLOOR shTrollFloor[ct6]
#define BARROWFLOOR shBarrowFloor[(euclid&&!a4)?0:nontruncated?2:ct6] #define BARROWFLOOR shBarrowFloor[(euclid&&!a4)?0:nonchamfered?2:ct6]
#define LAVAFLOOR (nontruncated ? shFloor : shLavaFloor)[ct6] #define LAVAFLOOR (nonchamfered ? shFloor : shLavaFloor)[ct6]
#define TRIFLOOR ((nontruncated ? shFloor : shTriFloor)[ct6]) #define TRIFLOOR ((nonchamfered ? shFloor : shTriFloor)[ct6])
#define TURTLEFLOOR shTurtleFloor[nontruncated ? 2 : ct6] #define TURTLEFLOOR shTurtleFloor[nonchamfered ? 2 : ct6]
#define ROSEFLOOR shRoseFloor[ct6] #define ROSEFLOOR shRoseFloor[ct6]
#define ECT ((euclid&&!a4)?2:ct6) #define ECT ((euclid&&!a4)?2:ct6)
@ -3479,14 +3479,14 @@ NEWSHAPE
#define PLAINFLOOR shFloor[ct6] #define PLAINFLOOR shFloor[ct6]
#define FULLFLOOR shFullFloor[ct6] #define FULLFLOOR shFullFloor[ct6]
#define CAVEFLOOR shCaveFloor[ECT] #define CAVEFLOOR shCaveFloor[ECT]
#define OVERFLOOR shOverFloor[euclid&&a4&&nontruncated?2:ECT] #define OVERFLOOR shOverFloor[euclid&&a4&&nonchamfered?2:ECT]
#define CLOUDFLOOR shCloudFloor[ECT] #define CLOUDFLOOR shCloudFloor[ECT]
#define FEATHERFLOOR shFeatherFloor[euclid&&a4&&nontruncated?2:ECT] #define FEATHERFLOOR shFeatherFloor[euclid&&a4&&nonchamfered?2:ECT]
#define MFLOOR1 shMFloor[ct6] #define MFLOOR1 shMFloor[ct6]
#define MFLOOR2 shMFloor2[ct6] #define MFLOOR2 shMFloor2[ct6]
#define STARFLOOR shStarFloor[ECT] #define STARFLOOR shStarFloor[ECT]
#define DRAGONFLOOR shDragonFloor[ECT] #define DRAGONFLOOR shDragonFloor[ECT]
#define SWITCHFLOOR shSwitchFloor[nontruncated?2:ct6] #define SWITCHFLOOR shSwitchFloor[nonchamfered?2:ct6]
// fix Warp // fix Warp
// fix Kraken // fix Kraken

View File

@ -520,7 +520,7 @@ namespace sag {
} }
void initSnake(int n) { void initSnake(int n) {
if(sphere && nontruncated) n = 12; if(sphere && nonchamfered) n = 12;
else if(sphere) n = 32; else if(sphere) n = 32;
numsnake = n; numsnake = n;
snakecells.resize(numsnake); snakecells.resize(numsnake);
@ -1127,7 +1127,7 @@ void drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
} }
hyperpoint h = tC0(V * m->at); hyperpoint h = tC0(V * m->at);
transmatrix V2 = rgpushxto0(h) * ypush(nontruncated ? .3 : .2); transmatrix V2 = rgpushxto0(h) * ypush(nonchamfered ? .3 : .2);
if(doshow) queuestr(V2, (svg::in ? .28 : .2) * crossf / hcrossf, vd.name, backcolor ? 0x000000 : 0xFFFF00, svg::in ? 0 : 1); if(doshow) queuestr(V2, (svg::in ? .28 : .2) * crossf / hcrossf, vd.name, backcolor ? 0x000000 : 0xFFFF00, svg::in ? 0 : 1);
lastptd().info = vd.info; lastptd().info = vd.info;
} }
@ -1768,7 +1768,7 @@ using namespace tour;
string cname() { string cname() {
if(euclid) return "coord-6.txt"; if(euclid) return "coord-6.txt";
if(nontruncated) return "coord-7.txt"; if(nonchamfered) return "coord-7.txt";
return "coord-67.txt"; return "coord-67.txt";
} }

View File

@ -43,7 +43,7 @@ int modediff(score *S) {
if(S->box[238]) g = gSphere; if(S->box[238]) g = gSphere;
if(S->box[239]) g = gElliptic; if(S->box[239]) g = gElliptic;
if(max(S->box[197], 1) != multi::players) diff += 8; if(max(S->box[197], 1) != multi::players) diff += 8;
if(S->box[186] != nontruncated) diff += 16; if(S->box[186] != nonchamfered) diff += 16;
if(S->box[196] != chaosmode) diff += 32; if(S->box[196] != chaosmode) diff += 32;
if(S->box[119] != shmup::on) diff += 64; if(S->box[119] != shmup::on) diff += 64;
if(pureHardcore() && !isHardcore(S)) diff += 128; if(pureHardcore() && !isHardcore(S)) diff += 128;

View File

@ -3344,7 +3344,7 @@ transmatrix calc_relative_matrix_help(cell *c, heptagon *h1) {
transmatrix gm = Id; transmatrix gm = Id;
heptagon *h2 = c->master; heptagon *h2 = c->master;
transmatrix where = Id; transmatrix where = Id;
if(!nontruncated) for(int d=0; d<S7; d++) if(h2->c7->mov[d] == c) if(!nonchamfered) for(int d=0; d<S7; d++) if(h2->c7->mov[d] == c)
where = hexmove[d]; where = hexmove[d];
// always add to last! // always add to last!
while(h1 != h2) { while(h1 != h2) {
@ -3413,8 +3413,8 @@ void virtualRebase(cell*& base, transmatrix& at, bool tohex) {
hs.h = h; hs.h = h;
hs.spin = d; hs.spin = d;
heptspin hs2 = hsstep(hs, 0); heptspin hs2 = hsstep(hs, 0);
transmatrix V2 = spin((nontruncated?M_PI:0)-hs2.spin*2*M_PI/S7) * invheptmove[d]; transmatrix V2 = spin((nonchamfered?M_PI:0)-hs2.spin*2*M_PI/S7) * invheptmove[d];
if(nontruncated) V2 = V2 * spin(M_PI); if(nonchamfered) V2 = V2 * spin(M_PI);
double newz = (V2 * at * C0) [2]; double newz = (V2 * at * C0) [2];
if(newz < currz) { if(newz < currz) {
currz = newz; currz = newz;
@ -3424,7 +3424,7 @@ void virtualRebase(cell*& base, transmatrix& at, bool tohex) {
} }
if(!newbase) { if(!newbase) {
if(tohex && !nontruncated) for(int d=0; d<S7; d++) { if(tohex && !nonchamfered) for(int d=0; d<S7; d++) {
cell *c = createMov(base, d); cell *c = createMov(base, d);
transmatrix V2 = spin(-base->spn(d)*2*M_PI/S6) * invhexmove[d]; transmatrix V2 = spin(-base->spn(d)*2*M_PI/S6) * invhexmove[d];
double newz = (V2 *at * C0) [2]; double newz = (V2 *at * C0) [2];

View File

@ -114,7 +114,7 @@ void initgame() {
if(firstland == laElementalWall) cwt.c->land = randomElementalLand(); if(firstland == laElementalWall) cwt.c->land = randomElementalLand();
if(tactic::on && (isGravityLand(firstland) || firstland == laOcean) && firstland != laMountain) if(tactic::on && (isGravityLand(firstland) || firstland == laOcean) && firstland != laMountain)
cwt.c->land = nontruncated ? laCrossroads : laCrossroads2; cwt.c->land = nonchamfered ? laCrossroads : laCrossroads2;
createMov(cwt.c, 0); createMov(cwt.c, 0);
setdist(cwt.c, BARLEV, NULL); setdist(cwt.c, BARLEV, NULL);
@ -547,7 +547,7 @@ void applyBoxes() {
applyBoxBool(survivalist); applyBoxBool(survivalist);
if(loadingHi) applyBoxI(itLotus); if(loadingHi) applyBoxI(itLotus);
else applyBoxNum(truelotus, "lotus/escape"); else applyBoxNum(truelotus, "lotus/escape");
applyBoxBool(nontruncated, "heptagons only"); applyBoxBool(nonchamfered, "heptagons only");
applyBoxI(itRose); applyBoxI(itRose);
applyBoxOrb(itOrbBeauty); applyBoxOrb(itOrbBeauty);
applyBoxI(itCoral); applyBoxI(itCoral);
@ -686,7 +686,7 @@ void loadBoxHigh() {
dynamicval<eGeometry> sp2(geometry, (eGeometry) savebox[116]); dynamicval<eGeometry> sp2(geometry, (eGeometry) savebox[116]);
dynamicval<bool> sp3(shmup::on, savebox[119]); dynamicval<bool> sp3(shmup::on, savebox[119]);
dynamicval<bool> sp4(chaosmode, savebox[196]); dynamicval<bool> sp4(chaosmode, savebox[196]);
dynamicval<bool> sp5(nontruncated, savebox[186]); dynamicval<bool> sp5(nonchamfered, savebox[186]);
if(savebox[238]) geometry = gSphere; if(savebox[238]) geometry = gSphere;
if(savebox[239]) geometry = gElliptic; if(savebox[239]) geometry = gElliptic;
@ -822,7 +822,7 @@ void saveStats(bool emergency = false) {
fprintf(f, "Total enemies killed: %d\n", tkills()); fprintf(f, "Total enemies killed: %d\n", tkills());
fprintf(f, "cells generated: %d\n", cellcount); fprintf(f, "cells generated: %d\n", cellcount);
if(pureHardcore()) fprintf(f, "Pure hardcore mode\n"); if(pureHardcore()) fprintf(f, "Pure hardcore mode\n");
if(nontruncated) fprintf(f, "Heptagons only mode\n"); if(nonchamfered) fprintf(f, "Heptagons only mode\n");
if(chaosmode) fprintf(f, "Chaos mode\n"); if(chaosmode) fprintf(f, "Chaos mode\n");
if(shmup::on) fprintf(f, "Shoot-em up mode\n"); if(shmup::on) fprintf(f, "Shoot-em up mode\n");
if(inv::on) fprintf(f, "Inventory mode\n"); if(inv::on) fprintf(f, "Inventory mode\n");
@ -1013,7 +1013,7 @@ namespace gamestack {
gdn.View = View; gdn.View = View;
gdn.geometry = geometry; gdn.geometry = geometry;
gdn.shmup = shmup::on; gdn.shmup = shmup::on;
gdn.hepta = nontruncated; gdn.hepta = nonchamfered;
gd.push_back(gdn); gd.push_back(gdn);
} }
@ -1024,7 +1024,7 @@ namespace gamestack {
viewctr = gdn.viewctr; viewctr = gdn.viewctr;
View = gdn.View; View = gdn.View;
geometry = gdn.geometry; geometry = gdn.geometry;
nontruncated = gdn.hepta; nonchamfered = gdn.hepta;
if(shmup::on) shmup::clearMonsters(); if(shmup::on) shmup::clearMonsters();
shmup::on = gdn.shmup; shmup::on = gdn.shmup;
resetGeometry(); resetGeometry();
@ -1105,7 +1105,7 @@ void restartGame(char switchWhat, bool push, bool keep_screens) {
if(switchWhat == 'T') { if(switchWhat == 'T') {
geometry = gNormal; geometry = gNormal;
yendor::on = tactic::on = princess::challenge = peace::on = inv::on = false; yendor::on = tactic::on = princess::challenge = peace::on = inv::on = false;
chaosmode = nontruncated = randomPatternsMode = false; chaosmode = nonchamfered = randomPatternsMode = false;
shmup::on = false; shmup::on = false;
resetGeometry(); resetGeometry();
tour::on = !tour::on; tour::on = !tour::on;
@ -1113,7 +1113,7 @@ void restartGame(char switchWhat, bool push, bool keep_screens) {
#endif #endif
if(switchWhat == '7') { if(switchWhat == '7') {
if(euclid6) geometry = gNormal; if(euclid6) geometry = gNormal;
nontruncated = !nontruncated; nonchamfered = !nonchamfered;
resetGeometry(); resetGeometry();
#if CAP_TEXTURE #if CAP_TEXTURE
if(texture::tstate == texture::tsActive) if(texture::tstate == texture::tsActive)
@ -1126,7 +1126,7 @@ void restartGame(char switchWhat, bool push, bool keep_screens) {
if(geometry == targetgeometry) geometry = gNormal; if(geometry == targetgeometry) geometry = gNormal;
else geometry = targetgeometry; else geometry = targetgeometry;
if(chaosmode && (euclid || sphere || quotient)) chaosmode = false; if(chaosmode && (euclid || sphere || quotient)) chaosmode = false;
if(nontruncated && euclid6) nontruncated = false; if(nonchamfered && euclid6) nonchamfered = false;
resetGeometry(); resetGeometry();
#if CAP_TEXTURE #if CAP_TEXTURE

View File

@ -367,7 +367,7 @@ bool apply(cell *c, const transmatrix &V, int col) {
typedef tuple<eGeometry, bool, char, int, eModel, ld, ld> texture_parameters; typedef tuple<eGeometry, bool, char, int, eModel, ld, ld> texture_parameters;
static const auto current_texture_parameters = tie(geometry, nontruncated, patterns::whichPattern, patterns::subpattern_flags, pmodel, vid.scale, vid.alpha); static const auto current_texture_parameters = tie(geometry, nonchamfered, patterns::whichPattern, patterns::subpattern_flags, pmodel, vid.scale, vid.alpha);
texture_parameters orig_texture_parameters; texture_parameters orig_texture_parameters;
@ -655,7 +655,7 @@ patterns::patterninfo si_save;
saverlist texturesavers; saverlist texturesavers;
bool target_nontrunc; bool target_nonchamf;
void init_textureconfig() { void init_textureconfig() {
texturesavers = move(savers); texturesavers = move(savers);
@ -673,7 +673,7 @@ void init_textureconfig() {
addsaver(vid.yposition, "Y position", 0); addsaver(vid.yposition, "Y position", 0);
addsaver(vid.xposition, "X position", 0); addsaver(vid.xposition, "X position", 0);
addsaver(vid.camera_angle, "camera angle", 0); addsaver(vid.camera_angle, "camera angle", 0);
addsaverenum(target_nontrunc, "chamfering", false); addsaverenum(target_nonchamf, "chamfering", false);
// ... geometry parameters // ... geometry parameters
addsaver(patterns::whichPattern, "pattern", 0); addsaver(patterns::whichPattern, "pattern", 0);
@ -707,7 +707,7 @@ bool save_textureconfig() {
if(!f) return false; if(!f) return false;
targetgeometry = geometry; targetgeometry = geometry;
target_nontrunc = nontruncated; target_nonchamf = nonchamfered;
for(auto s: texturesavers) if(s->dosave()) for(auto s: texturesavers) if(s->dosave())
fprintf(f, "%s=%s\n", s->name.c_str(), s->save().c_str()); fprintf(f, "%s=%s\n", s->name.c_str(), s->save().c_str());
@ -736,7 +736,7 @@ bool load_textureconfig() {
return load_textureconfig(); return load_textureconfig();
} }
if(nontruncated != target_nontrunc) { if(nonchamfered != target_nonchamf) {
restartGame('7'); restartGame('7');
} }
} }

View File

@ -79,7 +79,7 @@ bool handleKeyTour(int sym, int uni) {
int flags = slides[currentslide].flags; int flags = slides[currentslide].flags;
if((sym == SDLK_RETURN || sym == SDLK_KP_ENTER) && (!inhelp || (flags & QUICKSKIP))) { if((sym == SDLK_RETURN || sym == SDLK_KP_ENTER) && (!inhelp || (flags & QUICKSKIP))) {
popScreenAll(); popScreenAll();
if(geometry || nontruncated) { if(geometry || nonchamfered) {
popGame(); popGame();
if(!(flags & QUICKGEO)) return true; if(!(flags & QUICKGEO)) return true;
} }
@ -91,7 +91,7 @@ bool handleKeyTour(int sym, int uni) {
return true; return true;
} }
if(sym == SDLK_BACKSPACE) { if(sym == SDLK_BACKSPACE) {
if(geometry || nontruncated) { if(geometry || nonchamfered) {
popGame(); popGame();
if(!(flags & QUICKGEO)) return true; if(!(flags & QUICKGEO)) return true;
} }
@ -139,7 +139,7 @@ bool handleKeyTour(int sym, int uni) {
} }
} }
if(geometry || nontruncated) { if(geometry || nonchamfered) {
popGame(); popGame();
presentation(pmGeometryReset); presentation(pmGeometryReset);
return true; return true;
@ -253,7 +253,7 @@ namespace ss {
dialog::display(); dialog::display();
keyhandler = [] (int sym, int uni) { keyhandler = [] (int sym, int uni) {
if(uni >= 'a' && uni < 'a' + sssize) { if(uni >= 'a' && uni < 'a' + sssize) {
if(geometry || nontruncated) { if(geometry || nonchamfered) {
popGame(); popGame();
presentation(pmGeometryReset); presentation(pmGeometryReset);
} }

View File

@ -817,12 +817,12 @@ int modecode() {
else if(pureHardcore()) xcode ++; else if(pureHardcore()) xcode ++;
if(euclid) xcode += 6; if(euclid) xcode += 6;
else if(nontruncated) xcode += 3; else if(nonchamfered) xcode += 3;
if(sphere) { if(sphere) {
xcode += 9; xcode += 9;
if(elliptic) xcode += 6; if(elliptic) xcode += 6;
if(nontruncated) xcode += 3; if(nonchamfered) xcode += 3;
} }
if(chaosmode) xcode += 21; if(chaosmode) xcode += 21;
@ -857,7 +857,7 @@ void buildmodetable() {
extern bool hardcore; extern bool hardcore;
hardcore = (b%3 == 1); hardcore = (b%3 == 1);
shmup::on = (b%3 == 2); shmup::on = (b%3 == 2);
nontruncated = (b/3)%7 == 1 || (b/3)%7 == 4 || (b/3)%7 == 6; nonchamfered = (b/3)%7 == 1 || (b/3)%7 == 4 || (b/3)%7 == 6;
geometry = gNormal; geometry = gNormal;
if((b/3)%7 == 2) geometry = gEuclid; if((b/3)%7 == 2) geometry = gEuclid;
if((b/3)%7 >= 3) geometry = gSphere; if((b/3)%7 >= 3) geometry = gSphere;
@ -876,7 +876,7 @@ void buildmodetable() {
if(hardcore) printf(" hardcore"); if(hardcore) printf(" hardcore");
else if(shmup::on) printf(" shmup"); else if(shmup::on) printf(" shmup");
else printf(" softcore"); else printf(" softcore");
if(nontruncated) printf(" heptagonal"); if(nonchamfered) printf(" heptagonal");
if(euclid) printf(" euclidean"); if(euclid) printf(" euclidean");
else if(elliptic) printf(" elliptic"); else if(elliptic) printf(" elliptic");
else if(sphere) printf(" spherical"); else if(sphere) printf(" spherical");