diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 344a2a1b9c..8c839701c0 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,7 @@ August 4, 2009 +- Added the MF6_STEPMISSILE flag so that the Whirlwind can "walk" up steps. +- Changed the dword definition of PalEntry to uint32 so that it has one + consistent definition across all source files. - Swapped the order of floor and ceiling moves in DElevator::Tick() so that if an elevator contains an actor exactly the same height as it, it will not be blocked. diff --git a/src/actor.h b/src/actor.h index 073bc867a1..1085f1650a 100644 --- a/src/actor.h +++ b/src/actor.h @@ -311,6 +311,7 @@ enum MF6_NOFEAR = 0x00000010, // Not scared of frightening players MF6_BUMPSPECIAL = 0x00000020, // Actor executes its special when being collided (as the ST flag) MF6_DONTHARMSPECIES = 0x00000040, // Don't hurt one's own species with explosions (hitscans, too?) + MF6_STEPMISSILE = 0x00000080, // Missile can "walk" up steps // --- mobj.renderflags --- diff --git a/src/doomtype.h b/src/doomtype.h index 08f187aeb5..2748f18273 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -155,9 +155,9 @@ enum struct PalEntry { PalEntry () {} - PalEntry (DWORD argb) { d = argb; } - operator DWORD () const { return d; } - PalEntry &operator= (DWORD other) { d = other; return *this; } + PalEntry (uint32 argb) { d = argb; } + operator uint32 () const { return d; } + PalEntry &operator= (uint32 other) { d = other; return *this; } PalEntry InverseColor() const { PalEntry nc; nc.a = a; nc.r = 255 - r; nc.g = 255 - g; nc.b = 255 - b; return nc; } #ifdef WORDS_BIGENDIAN PalEntry (BYTE ir, BYTE ig, BYTE ib) : a(0), r(ir), g(ig), b(ib) {} @@ -168,7 +168,7 @@ struct PalEntry { BYTE a,r,g,b; }; - DWORD d; + uint32 d; }; #else PalEntry (BYTE ir, BYTE ig, BYTE ib) : b(ib), g(ig), r(ir), a(0) {} @@ -179,7 +179,7 @@ struct PalEntry { BYTE b,g,r,a; }; - DWORD d; + uint32 d; }; #endif }; diff --git a/src/p_map.cpp b/src/p_map.cpp index 5a4e75518e..f29d1a0bd7 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -1606,7 +1606,7 @@ bool P_TryMove (AActor *thing, fixed_t x, fixed_t y, { // too big a step up goto pushline; } - else if ((thing->flags & MF_MISSILE) && tm.floorz > thing->z) + else if ((thing->flags & MF_MISSILE)&& !(thing->flags6 && MF6_STEPMISSILE) && tm.floorz > thing->z) { // [RH] Don't let normal missiles climb steps goto pushline; } @@ -1910,7 +1910,7 @@ bool P_CheckMove(AActor *thing, fixed_t x, fixed_t y) { // too big a step up return false; } - else if ((thing->flags & MF_MISSILE) && tm.floorz > newz) + else if ((thing->flags & MF_MISSILE) && !(thing->flags6 && MF6_STEPMISSILE) && tm.floorz > newz) { // [RH] Don't let normal missiles climb steps return false; } diff --git a/src/thingdef/thingdef_data.cpp b/src/thingdef/thingdef_data.cpp index 7e3d25780e..84c814b29e 100644 --- a/src/thingdef/thingdef_data.cpp +++ b/src/thingdef/thingdef_data.cpp @@ -217,6 +217,7 @@ static FFlagDef ActorFlags[]= DEFINE_FLAG(MF6, NOFEAR, AActor, flags6), DEFINE_FLAG(MF6, BUMPSPECIAL, AActor, flags6), DEFINE_FLAG(MF6, DONTHARMSPECIES, AActor, flags6), + DEFINE_FLAG(MF6, STEPMISSILE, AActor, flags6), // Effect flags DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects), diff --git a/wadsrc/static/actors/heretic/ironlich.txt b/wadsrc/static/actors/heretic/ironlich.txt index f9cfa3a61e..4b7e0ff17b 100644 --- a/wadsrc/static/actors/heretic/ironlich.txt +++ b/wadsrc/static/actors/heretic/ironlich.txt @@ -154,6 +154,7 @@ ACTOR Whirlwind native -ACTIVATEMCROSS +SEEKERMISSILE +EXPLOCOUNT + +StepMissile RenderStyle Translucent Alpha 0.4