1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-11-10 02:33:00 +00:00

fixed player ratling 3D models

This commit is contained in:
Zeno Rogue
2025-10-09 23:47:40 +02:00
parent 67af069c9d
commit 9148104122
2 changed files with 22 additions and 18 deletions

View File

@@ -184,6 +184,7 @@ EX void ShadowV(const shiftmatrix& V, const hpcshape& bp, PPR prio IS(PPR::MONST
#define VLEG at_smart_lof(V, cgi.LEG)
#define VGROIN at_smart_lof(V, cgi.GROIN)
#define VBODY at_smart_lof(V, cgi.BODY)
#define VRAT (GDIM == 2 ? VHEAD : V * lzpush(cgi.AHEAD - zc(0.4) - zc(0.98) + cgi.HEAD))
#define VBODY1 at_smart_lof(V, cgi.BODY1)
#define VBODY2 at_smart_lof(V, cgi.BODY2)
#define VBODY3 at_smart_lof(V, cgi.BODY3)
@@ -500,7 +501,7 @@ EX bool drawMonsterType(eMonster m, cell *where, const shiftmatrix& V1, color_t
if(m == moRoseLady) {
// queuepoly(V, girl ? cgi.shGoatHead : cgi.shDemon, 0x800000FF);
// make her hair a bit darker to stand out in 3D
queuepoly(VHEAD1, hair, evil ? 0x500050FF : GDIM == 3 ? 0x666A64FF : 0x332A22FF);
queuepoly(&hair == &cgi.shRatHead ? VRAT : VHEAD1, hair, evil ? 0x500050FF : GDIM == 3 ? 0x666A64FF : 0x332A22FF);
}
else if(m == moRoseBeauty) {
if(girl) {
@@ -514,19 +515,20 @@ EX bool drawMonsterType(eMonster m, cell *where, const shiftmatrix& V1, color_t
}
}
else {
queuepoly(VHEAD1, hair, evil ? 0xC00000FF : 0x332A22FF);
queuepoly(&hair == &cgi.shRatHead ? VRAT : VHEAD1, hair, evil ? 0xC00000FF : 0x332A22FF);
}
if(&hair == &cgi.shRatHead) {
queuepoly(VHEAD, cgi.shWolf1, 0x008000FF);
queuepoly(VHEAD, cgi.shWolf2, 0x008000FF);
queuepoly(VHEAD, cgi.shWolf3, darkena(0x202020, 0, 0xFF));
auto V1 = VRAT;
queuepoly(V1, cgi.shWolf1, 0x008000FF);
queuepoly(V1, cgi.shWolf2, 0x008000FF);
queuepoly(V1, cgi.shWolf3, darkena(0x202020, 0, 0xFF));
}
else if(&hair == &cgi.shSkull) {
queuepoly(VHEAD, cgi.shSkullEyes, darkena(0x202020, 0, 0xFF));
}
else queuepoly(VHEAD, cgi.shPFace, facecolor);
if(id == pshRatling) queuepoly(VLEG, cgi.shRatTail, darkena(col, 0, 0xFF));
humanoid_eyes(V, evil ? 0x0000C0FF : 0x00C000FF, facecolor);
if(id != pshRatling) humanoid_eyes(V, evil ? 0x0000C0FF : 0x00C000FF, facecolor);
return true;
}
@@ -1079,7 +1081,7 @@ EX bool drawMonsterType(eMonster m, cell *where, const shiftmatrix& V1, color_t
}
#if MAXMDIM >= 4
else {
shiftmatrix V1 = V * lzpush(cgi.AHEAD - zc(0.4) - zc(0.98) + cgi.HEAD); // * cpush(0, cgi.scalefactor * (-0.1));
shiftmatrix V1 = VRAT;
queuepoly(V1, cgi.shRatHead, darkena(col, 0, 0xFF));
/*

View File

@@ -502,22 +502,23 @@ EX void drawPlayer_humanoid(eMonster m, cell *where, const shiftmatrix& V, color
// queuepoly(V, shHood, darkena(0xFF00, 1, 0xFF));
}
else if(id == pshRatling) {
queuepoly(VHEAD, cgi.shRatHead, fc(500, cs.haircolor, 1));
queuepoly(VHEAD, cgi.shWolf1, cs.eyecolor);
queuepoly(VHEAD, cgi.shWolf2, cs.eyecolor);
queuepoly(VHEAD, cgi.shWolf3, darkena(0x202020, 0, 0xFF));
shiftmatrix V1 = VRAT; // * cpush(0, cgi.scalefactor * (-0.1));
queuepoly(V1, cgi.shRatHead, fc(500, cs.haircolor, 1));
queuepoly(V1, cgi.shWolf1, cs.eyecolor);
queuepoly(V1, cgi.shWolf2, cs.eyecolor);
queuepoly(V1, cgi.shWolf3, darkena(0x202020, 0, 0xFF));
}
else if(id == pshSkeleton) {
if(GDIM == 2) queuepoly(VHEAD, cgi.shSkull, fc(500, cs.haircolor, 1));
if(GDIM == 2) queuepoly(VHEAD1, cgi.shSkullEyes, 0x000000FF);
humanoid_eyes(V, cs.eyecolor, cs.skincolor);
}
else {
queuepoly(VHEAD, cgi.shPFace, fc(500, cs.skincolor, 1));
queuepoly(VHEAD1, (cs.charid&1) ? cgi.shFemaleHair : cgi.shPHead, fc(150, cs.haircolor, 2));
humanoid_eyes(V, cs.eyecolor, cs.skincolor);
}
humanoid_eyes(V, cs.eyecolor, cs.skincolor);
#if CAP_COMPLEX2
if(camelot::knighted)
queuepoly(VBODY * VBS, id == pshRatling ? cgi.shRatCape1 : cgi.shKnightCloak, darkena(cloakcolor(camelot::knighted), 1, 0xFF));
@@ -676,10 +677,11 @@ EX void drawMimic(eMonster m, cell *where, const shiftmatrix& V, color_t col, do
#endif
if(&body == &cgi.shYeti) {
queuepoly(VHEAD1, cgi.shRatHead, darkena(col, 1, 0xC0));
queuepoly(VHEAD, cgi.shWolf1, darkena(col, 2, 0xC0));
queuepoly(VHEAD, cgi.shWolf2, darkena(col, 2, 0xC0));
queuepoly(VHEAD, cgi.shWolf3, darkena(col, 2, 0xC0));
shiftmatrix V1 = VRAT;
queuepoly(V1, cgi.shRatHead, darkena(col, 1, 0xC0));
queuepoly(V1, cgi.shWolf1, darkena(col, 2, 0xC0));
queuepoly(V1, cgi.shWolf2, darkena(col, 2, 0xC0));
queuepoly(V1, cgi.shWolf3, darkena(col, 2, 0xC0));
}
else if(&body == &cgi.shSkeletonBody) {
queuepoly(VHEAD1, cgi.shSkull, darkena(col, 1, 0xC0));
@@ -697,7 +699,7 @@ EX void drawMimic(eMonster m, cell *where, const shiftmatrix& V, color_t col, do
queuepoly(VBODY2 * VBS, cgi.shPrincessDress, darkena(col, 1, 0XC0));
if(id == pshRatling) queuepoly(VLEG, cgi.shRatTail, darkena(col, 1, 0xC0));
humanoid_eyes(V, 0xFF, darkena(col, 0, 0x40));
if(&body != &cgi.shYeti) humanoid_eyes(V, 0xFF, darkena(col, 0, 0x40));
}
}