Code: Select all
class armor_EventHandler : EventHandler
{
bool bGrid;
int tCounter;
int armor;
override void WorldLoaded(WorldEvent e)
{
bGrid = false;
}
override void RenderOverlay(RenderEvent e)
{
if (bGrid)
{
color hexColor = "Green";
int alpha = 255;
double thickness = 5;
int edge = 400;
if (armor < 100)
{
alpha = int(255 * armor / 100);
thickness = 5 * armor / 100;
}
for (int cX = 100; cX < Screen.GetWidth(); cX += 100)
{
if (cX < edge || cX > Screen.GetWidth() - edge && cX + 40 < Screen.GetWidth())
{
for (int cY = 100; cY < Screen.GetHeight() - 50; cY += 100)
{
if (Random(0, 100) < armor)
{
// top
Screen.DrawThickLine(cX - 40, cY, cX - 20, cY + 33, thickness, hexColor, alpha);
Screen.DrawThickLine(cX - 20, cY + 33, cX + 20, cY + 33, thickness, hexColor, alpha);
Screen.DrawThickLine(cX + 20, cY + 33, cX + 40, cY, thickness, hexColor, alpha);
// bottom
Screen.DrawThickLine(cX + 40, cY, cX + 20, cY - 33, thickness, hexColor, alpha);
Screen.DrawThickLine(cX + 20, cY - 33, cX - 20, cY - 33, thickness, hexColor, alpha);
Screen.DrawThickLine(cX - 20, cY - 33, cX - 40, cY, thickness, hexColor, alpha);
}
}
}
}
}
}
override void WorldTick()
{
if (tCounter < 14)
{
tCounter++;
}
else
{
bGrid = false;
}
}
override void WorldThingDamaged(WorldEvent e)
{
if (e.thing && e.thing is "PlayerPawn")
{
armor = e.thing.CountInv("BasicArmor");
if (armor > 0)
{
e.thing.A_StartSound("arhit", CHAN_BODY, CHANF_OVERLAP);
bGrid = true;
tCounter = 0;
}
}
}
}
Can't decide how I feel about this as is - it's a work in progress - but it does the job.