diff --git a/graph.cpp b/graph.cpp index e4e3e06a..86be1687 100644 --- a/graph.cpp +++ b/graph.cpp @@ -2083,13 +2083,19 @@ bool drawMonster(const transmatrix& Vparam, int ct, cell *c, int col) { ld length; chainAnimation(c, Vb, c->mov[c->mondir], c->mondir, 0, Vparam, length); Vb = Vb * pispin; + Vb = Vb * xpush(tentacle_length - cellgfxdist(c, c->mondir)); + } + else if(gp::on) { + transmatrix T = shmup::calc_relative_matrix(c->mov[c->mondir], c); + Vb = Vb * T * rspintox(tC0(inverse(T))) * xpush(tentacle_length); } - else Vb = Vb * ddspin(c, c->mondir, S42); - if(gp::on) Vb = Vb * xpush(crossf * .6); else { - if(weirdhyperbolic || sphere) Vb = Vb * xpush(-(hexhexdist - hcrossf7)); - if(ctof(c) && !euclid) Vb = Vb * xpush(hexhexdist - hcrossf); + Vb = Vb * ddspin(c, c->mondir, S42); + Vb = Vb * xpush(tentacle_length - cellgfxdist(c, c->mondir)); } + + // if(ctof(c) && !euclid) Vb = Vb * xpush(hexhexdist - hcrossf); + // return nonbitrunc ? tessf * gp::scale : (c->type == 6 && (i&1)) ? hexhexdist : crossf; return drawMonsterTypeDH(m, c, Vb, col, darkhistory, footphase); } diff --git a/polygons.cpp b/polygons.cpp index 231f4fe4..549d0e5d 100644 --- a/polygons.cpp +++ b/polygons.cpp @@ -1165,6 +1165,8 @@ hpcshape shFloorGP[32][32][6], shFloorSideGP[SIDEPARS][32][32][6][8]; +ld tentacle_length; + #define USERLAYERS 32 #define USERSHAPEGROUPS 4 #define USERSHAPEIDS 4096 @@ -2216,9 +2218,24 @@ void buildpolys() { else bshape(shDragonTail, PPR_TENTACLE1, scalef, 240); bshape(shDragonNostril, PPR_ONTENTACLE_EYES, scalef, 241); bshape(shDragonHead, PPR_ONTENTACLE, scalef, 242); - if(nonbitrunc) bshape(shSeaTentacle, PPR_TENTACLE1, gp::scale, 245); - else bshape(shSeaTentacle, PPR_TENTACLE1, 1, 246); - ld ksc = (nonbitrunc ? 1.8 : 1.5) * gp::scale; + + ld krsc = 1; + if(sphere) krsc *= 2; + if(S7 ==8) krsc *= 1.3; + + if(nonbitrunc && !gp::on) { + tentacle_length = 1.52; + bshape(shSeaTentacle, PPR_TENTACLE1, 1, 245); + } + else if(gp::on) { + tentacle_length = 0.566256 * 1.6 * gp::scale * krsc; + bshape(shSeaTentacle, PPR_TENTACLE1, 1.6 * gp::scale * krsc, 246); + } + else { + tentacle_length = 0.566256 * gp::scale; + bshape(shSeaTentacle, PPR_TENTACLE1, gp::scale, 246); + } + ld ksc = (nonbitrunc ? 1.8 : 1.5) * gp::scale * krsc; bshape(shKrakenHead, PPR_ONTENTACLE, ksc, 247); bshape(shKrakenEye, PPR_ONTENTACLE_EYES, ksc, 248); bshape(shKrakenEye2, PPR_ONTENTACLE_EYES2, ksc, 249);