Use disk segments for Orbs of Vaulting & Phasing.

This commit is contained in:
Jacob Mandelson 2022-09-14 18:11:52 -07:00
parent 92fc237a3e
commit 2933b256e0
3 changed files with 10 additions and 3 deletions

View File

@ -253,7 +253,7 @@ hpcshape
shTriheptaSpecial[14],
shCross, shGiantStar[2], shLake, shMirror,
shHalfFloor[6], shHalfMirror[3],
shGem[2], shStar, shFlash, shDisk, shHalfDisk, shDiskT, shDiskS, shDiskM, shDiskSq, shEccentricDisk,
shGem[2], shStar, shFlash, shDisk, shHalfDisk, shDiskT, shDiskS, shDiskM, shDiskSq, shEccentricDisk, shDiskSegment,
shTinyBird, shTinyShark,
shEgg, shSmallEgg,
shRing, shSpikedRing, shTargetRing, shSawRing, shGearRing, shPeaceRing,

View File

@ -1131,15 +1131,18 @@ EX bool drawItemType(eItem it, cell *c, const shiftmatrix& V, color_t icol, int
(it == itOrbPurity) ? &cgi.shSmallEgg :
(it == itOrbLightning) ? &cgi.shLightningBolt :
(it == itOrbTime) ? &cgi.shHourglass :
(it == itOrbIllusion || it == itOrbInvis) ? &cgi.shHumanoid :
(it == itOrbIllusion || it == itOrbInvis || it == itOrbTeleport) ? &cgi.shHumanoid :
(it == itOrbPhasing || it == itOrbDash) ? &cgi.shDiskSegment :
NULL;
queuepolyat(Vit, cgi.shDisk, dark, prio);
if (shape)
queuepolyat(Vit, *shape, (it == itOrbInvis) ? 0x20 : 0x80, prio);
queuepolyat(Vit, *shape, (it == itOrbInvis || it == itOrbTeleport) ? 0x20 : 0x80, prio);
if (it == itOrbSide1 || shape == &cgi.shEccentricDisk)
queuepolyat(Vit*Mirror, *shape, 0x80, prio);
if (it == itOrbEnergy)
queuepolyat(Vit*Mirror, *shape, col, prio);
if (it == itOrbPhasing || it == itOrbDash)
queuepolyat(Vit*Mirror, *shape, col, prio);
if (it == itOrbIntensity || it == itOrbImpact)
queuepolyat(Vit, cgi.shDiskM, 0x80, prio);
if (it == itOrbHorns) {

View File

@ -589,6 +589,10 @@ void geometry_information::procedural_shapes() {
for(int i=0; i<=S84/2; i+=SD3)
hpcpush(ddi(i, orbsize * .2) * C0);
bshape(shDiskSegment, PPR::ITEM);
for(int i=0; i<=S84/2.5; i+=SD3)
hpcpush(ddi(i, orbsize * .2) * C0);
bshape(shMoonDisk, PPR::ITEM);
for(int i=0; i<=S84; i+=SD3)
if(i <= S84 * 2 / 3)