diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp index c49845688..bc8275ddd 100644 --- a/src/gl/scene/gl_sprite.cpp +++ b/src/gl/scene/gl_sprite.cpp @@ -79,7 +79,6 @@ EXTERN_CVAR (Float, transsouls) extern TArray sprites; extern TArray SpriteFrames; -extern TArray BloodTranslationColors; enum HWRenderStyle { diff --git a/src/r_data/r_translate.cpp b/src/r_data/r_translate.cpp index 2b8849b68..d8bff43d4 100644 --- a/src/r_data/r_translate.cpp +++ b/src/r_data/r_translate.cpp @@ -726,7 +726,7 @@ int FRemapTable::StoreTranslation(int slot) // //---------------------------------------------------------------------------- -TArray BloodTranslationColors; +static TArray BloodTranslationColors; int CreateBloodTranslation(PalEntry color) { @@ -754,7 +754,9 @@ int CreateBloodTranslation(PalEntry color) I_Error("Too many blood colors"); } FRemapTable *trans = new FRemapTable; - for (i = 0; i < 256; i++) + trans->Palette[0] = 0; + trans->Remap[0] = 0; + for (i = 1; i < 256; i++) { int bright = MAX(MAX(GPalette.BaseColors[i].r, GPalette.BaseColors[i].g), GPalette.BaseColors[i].b); PalEntry pe = PalEntry(255, color.r*bright/255, color.g*bright/255, color.b*bright/255); diff --git a/src/r_data/r_translate.h b/src/r_data/r_translate.h index f3c2c55c3..7c8f821b0 100644 --- a/src/r_data/r_translate.h +++ b/src/r_data/r_translate.h @@ -108,8 +108,6 @@ void R_GetPlayerTranslation (int color, const struct FPlayerColorSet *colorset, extern const uint8_t IcePalette[16][3]; -extern TArray BloodTranslationColors; - int CreateBloodTranslation(PalEntry color); int R_FindCustomTranslation(FName name); diff --git a/src/swrenderer/line/r_renderdrawsegment.cpp b/src/swrenderer/line/r_renderdrawsegment.cpp index b32520707..47fa2fb76 100644 --- a/src/swrenderer/line/r_renderdrawsegment.cpp +++ b/src/swrenderer/line/r_renderdrawsegment.cpp @@ -126,6 +126,7 @@ namespace swrenderer bool wrap = (curline->linedef->flags & ML_WRAP_MIDTEX) || (curline->sidedef->Flags & WALLF_WRAP_MIDTEX); // [RH] Draw fog partition + bool renderwall = true; bool notrelevant = false; if (ds->bFogBoundary) { @@ -135,17 +136,17 @@ namespace swrenderer RenderFogBoundary renderfog; renderfog.Render(Thread, x1, x2, mceilingclip, mfloorclip, wallshade, rw_light, rw_lightstep, basecolormap); - if (!ds->maskedtexturecol) - { - if (!(ds->bFakeBoundary && !(ds->bFakeBoundary & 4)) || visible) - notrelevant = RenderWall(ds, x1, x2, walldrawerargs, columndrawerargs, visible, basecolormap, wallshade, wrap); - } + if (ds->maskedtexturecol == nullptr) + renderwall = false; } - else if (!(ds->bFakeBoundary && !(ds->bFakeBoundary & 4)) || visible) + else if ((ds->bFakeBoundary && !(ds->bFakeBoundary & 4)) || !visible) { - notrelevant = RenderWall(ds, x1, x2, walldrawerargs, columndrawerargs, visible, basecolormap, wallshade, wrap); + renderwall = false; } + if (renderwall) + notrelevant = RenderWall(ds, x1, x2, walldrawerargs, columndrawerargs, visible, basecolormap, wallshade, wrap); + if (ds->bFakeBoundary & 3) { RenderFakeWallRange(ds, x1, x2, wallshade); diff --git a/src/swrenderer/scene/r_translucent_pass.cpp b/src/swrenderer/scene/r_translucent_pass.cpp index 6afa2fcc9..a8ba85d25 100644 --- a/src/swrenderer/scene/r_translucent_pass.cpp +++ b/src/swrenderer/scene/r_translucent_pass.cpp @@ -165,6 +165,8 @@ namespace swrenderer { RenderDrawSegment renderer(Thread); renderer.Render(ds, ds->x1, ds->x2); + if (renew && ds->bFogBoundary) // don't draw fogboundary again + ds->bFogBoundary = false; } } } diff --git a/src/v_draw.cpp b/src/v_draw.cpp index b60c17616..2377e8f7d 100644 --- a/src/v_draw.cpp +++ b/src/v_draw.cpp @@ -94,7 +94,7 @@ int GetUIScale(int altval) int vmax = screen->GetHeight() / 200; int hmax = screen->GetWidth() / 320; int max = MAX(vmax, hmax); - return MIN(scaleval, max); + return MAX(1,MIN(scaleval, max)); } // [RH] Stretch values to make a 320x200 image best fit the screen diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index 0025c52b4..de77d385b 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -711,6 +711,8 @@ OB_IRONLICH = "%o was devastated by an ironlich."; OB_IRONLICHHIT = "%o got up-close and personal with an ironlich."; OB_BONEKNIGHT = "%o was axed by an undead warrior."; OB_BONEKNIGHTHIT = "%o was slain by an undead warrior."; +OB_MINOTAUR = "%o was blasted into cinders by a Maulotaur."; +OB_MINOTAURHIT = "%o was pulped by a Maulotaur."; OB_MUMMY = "%o was smashed by a golem."; OB_MUMMYLEADER = "%o was shrieked to death by a nitrogolem."; OB_SNAKE = "%o was rattled by an ophidian."; diff --git a/wadsrc/static/zscript/raven/minotaur.txt b/wadsrc/static/zscript/raven/minotaur.txt index 243500f4e..1738bc3f6 100644 --- a/wadsrc/static/zscript/raven/minotaur.txt +++ b/wadsrc/static/zscript/raven/minotaur.txt @@ -28,6 +28,8 @@ class Minotaur : Actor ActiveSound "minotaur/active"; DropItem "ArtiSuperHealth", 51; DropItem "PhoenixRodAmmo", 84, 10; + Obituary "$OB_MINOTAUR"; + HitObituary "$OB_MINOTAURHIT"; } States