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:
@@ -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));
|
||||
|
||||
/*
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user