mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-29 16:31:16 +00:00
- Update to ZDoom r1817:
- Fixed: If a damaged actor has negative mass, it needs to have its damage thrust set to maximum instead of 0. See Action Doom's broken glass "CommanderKeens". - Changed the SCROLLTYPE define so that any extra bits set cause it to default to 7. This effects action.wad, MAP02, lines 12054 and 12059, which had them at 128, so they no longer scrolled in r832+. - added support for Vavoom skyboxes from Gez's experimental build. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@451 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
0e0da97bbe
commit
67a7c1b1b7
14 changed files with 420 additions and 278 deletions
|
@ -1,3 +1,48 @@
|
|||
September 11, 2009
|
||||
- Added warning messages when loading maps that have non-zero values in
|
||||
unused line argument fields, because these maps could potentially break
|
||||
in the future if the argument is later assigned a meaning. (Hopefully
|
||||
all the argument counts in actionspecials.h are accurate. I found a
|
||||
few that were wrong.)
|
||||
|
||||
September 10, 2009
|
||||
- Fixed: If a damaged actor has negative mass, it needs to have its damage
|
||||
thrust set to maximum instead of 0. See Action Doom's broken glass
|
||||
"CommanderKeens".
|
||||
- Changed the SCROLLTYPE define so that any extra bits set cause it to default
|
||||
to 7. This effects action.wad, MAP02, lines 12054 and 12059, which had them
|
||||
at 128, so they no longer scrolled in r832+.
|
||||
|
||||
September 9, 2009
|
||||
- Look for files in Mac-like places on Macs.
|
||||
- Fixed: The non-Windows CreatePath can fail if part of the path already
|
||||
exists, because mkdir will return an error code for trying to recreate
|
||||
an existing directory.
|
||||
|
||||
September 8, 2009
|
||||
- Because entryway timed it, here is a new version of R_PointToAngle2 that is
|
||||
closer to the original. The old code was shorter but a little slower. The
|
||||
new code is a bit faster than the original with VC++ and about the same
|
||||
with GCC. Interestingly, GCC produces code for Killough's version that
|
||||
performs about the same as the original, but when compiled with VC++,
|
||||
Killough's is notably worse.
|
||||
|
||||
September 8, 2009 (Changes by Graf Zahl)
|
||||
- moved ENDOOM lump name definition into gameinfo.
|
||||
- moved default item drop style into gameinfo.
|
||||
- moved default respawn time into gameinfo.
|
||||
- moved default inventory max amount into gameinfo.
|
||||
- turned Heretic's blocking of the sector for LS_Plat_RaiseAndStayTx0 into
|
||||
a parameter instead of having the game mode decide.
|
||||
|
||||
September 7, 2009
|
||||
- Applied vertical SBARINFO inventory bar patch.
|
||||
|
||||
September 7, 2009 (Changes by Graf Zahl)
|
||||
- moved definition of games' default armor icons into gameinfo definition.
|
||||
- fixed: The PNG loader for true color textures overwrote the IDAT size with
|
||||
the IDAT id when reading the image.
|
||||
|
||||
September 6, 2009 (Changes by Graf Zahl)
|
||||
- fixed: Trying to pick up an object of the Ammo base class caused a crash.
|
||||
- changed line_t's sidenum into sidedef pointers.
|
||||
|
|
|
@ -1,233 +1,234 @@
|
|||
DEFINE_SPECIAL(Polyobj_StartLine, 1, -1, -1)
|
||||
DEFINE_SPECIAL(Polyobj_RotateLeft, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_RotateRight, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_Move, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_ExplicitLine, 5, -1, -1)
|
||||
DEFINE_SPECIAL(Polyobj_MoveTimes8, 6, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_DoorSwing, 7, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_DoorSlide, 8, 5, 5)
|
||||
DEFINE_SPECIAL(Line_Horizon, 9, -1, 0) // [RH] draw one-sided wall at horizon
|
||||
DEFINE_SPECIAL(Door_Close, 10, 2, 2)
|
||||
DEFINE_SPECIAL(Door_Open, 11, 2, 3)
|
||||
DEFINE_SPECIAL(Door_Raise, 12, 3, 4)
|
||||
DEFINE_SPECIAL(Door_LockedRaise, 13, 4, 5)
|
||||
DEFINE_SPECIAL(Door_Animated, 14, 3, 3)
|
||||
DEFINE_SPECIAL(Autosave, 15, 0, 0) // [RH] Save the game *now*
|
||||
DEFINE_SPECIAL(Transfer_WallLight, 16, -1, -1)
|
||||
DEFINE_SPECIAL(Thing_Raise, 17, 1, 1)
|
||||
DEFINE_SPECIAL(StartConversation, 18, 1, 2)
|
||||
DEFINE_SPECIAL(Thing_Stop, 19, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_LowerByValue, 20, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_LowerToLowest, 21, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToNearest, 22, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseByValue, 23, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseToHighest, 24, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseToNearest, 25, 2, 2)
|
||||
DEFINE_SPECIAL(Stairs_BuildDown, 26, 5, 5)
|
||||
DEFINE_SPECIAL(Stairs_BuildUp, 27, 5, 5)
|
||||
DEFINE_SPECIAL(Floor_RaiseAndCrush, 28, 3, 4)
|
||||
DEFINE_SPECIAL(Pillar_Build, 29, 3, 3)
|
||||
DEFINE_SPECIAL(Pillar_Open, 30, 4, 4)
|
||||
DEFINE_SPECIAL(Stairs_BuildDownSync, 31, 4, 4)
|
||||
DEFINE_SPECIAL(Stairs_BuildUpSync, 32, 4, 4)
|
||||
DEFINE_SPECIAL(ForceField, 33, 0, 0) // [RH] Strife's forcefield special (148)
|
||||
DEFINE_SPECIAL(ClearForceField, 34, 1, 1) // [RH] Remove Strife's forcefield from tagged sectors
|
||||
DEFINE_SPECIAL(Floor_RaiseByValueTimes8, 35, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_LowerByValueTimes8, 36, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_MoveToValue, 37, 3, 4)
|
||||
DEFINE_SPECIAL(Ceiling_Waggle, 38, 5, 5) // [RH] Complement of Floor_Waggle
|
||||
DEFINE_SPECIAL(Teleport_ZombieChanger, 39, 2, 2) // [RH] Needed for Strife
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValue, 40, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValue, 41, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaise, 42, 3, 4)
|
||||
DEFINE_SPECIAL(Ceiling_LowerAndCrush, 43, 3, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushStop, 44, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStay, 45, 3, 4)
|
||||
DEFINE_SPECIAL(Floor_CrushStop, 46, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_MoveToValue, 47, 3, 4)
|
||||
DEFINE_SPECIAL(Sector_Attach3dMidtex, 48, -1, -1)
|
||||
DEFINE_SPECIAL(GlassBreak, 49, 0, 1)
|
||||
DEFINE_SPECIAL(ExtraFloor_LightOnly, 50, -1, -1)
|
||||
DEFINE_SPECIAL(Sector_SetLink, 51, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Wall, 52, 5, 5)
|
||||
DEFINE_SPECIAL(Line_SetTextureOffset, 53, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_ChangeFlags, 54, 3, 3)
|
||||
// special name, special number, min script args, max script args, num args on a line
|
||||
DEFINE_SPECIAL(Polyobj_StartLine, 1, -1, -1, 4)
|
||||
DEFINE_SPECIAL(Polyobj_RotateLeft, 2, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_RotateRight, 3, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_Move, 4, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_ExplicitLine, 5, -1, -1, 5)
|
||||
DEFINE_SPECIAL(Polyobj_MoveTimes8, 6, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_DoorSwing, 7, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_DoorSlide, 8, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Line_Horizon, 9, -1, 0, 0) // [RH] draw one-sided wall at horizon
|
||||
DEFINE_SPECIAL(Door_Close, 10, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Door_Open, 11, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Door_Raise, 12, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Door_LockedRaise, 13, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Door_Animated, 14, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Autosave, 15, 0, 0, 0) // [RH] Save the game *now*
|
||||
DEFINE_SPECIAL(Transfer_WallLight, 16, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Thing_Raise, 17, 1, 1, 1)
|
||||
DEFINE_SPECIAL(StartConversation, 18, 1, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_Stop, 19, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_LowerByValue, 20, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_LowerToLowest, 21, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToNearest, 22, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseByValue, 23, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseToHighest, 24, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseToNearest, 25, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Stairs_BuildDown, 26, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Stairs_BuildUp, 27, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Floor_RaiseAndCrush, 28, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Pillar_Build, 29, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Pillar_Open, 30, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Stairs_BuildDownSync, 31, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Stairs_BuildUpSync, 32, 4, 4, 4)
|
||||
DEFINE_SPECIAL(ForceField, 33, 0, 0, 0) // [RH] Strife's forcefield special (148)
|
||||
DEFINE_SPECIAL(ClearForceField, 34, 1, 1, 1) // [RH] Remove Strife's forcefield from tagged sectors
|
||||
DEFINE_SPECIAL(Floor_RaiseByValueTimes8, 35, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_LowerByValueTimes8, 36, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_MoveToValue, 37, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_Waggle, 38, 5, 5, 4) // [RH] Complement of Floor_Waggle
|
||||
DEFINE_SPECIAL(Teleport_ZombieChanger, 39, 2, 2, 2) // [RH] Needed for Strife
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValue, 40, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValue, 41, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaise, 42, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_LowerAndCrush, 43, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushStop, 44, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStay, 45, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Floor_CrushStop, 46, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_MoveToValue, 47, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_Attach3dMidtex, 48, -1, -1, 3)
|
||||
DEFINE_SPECIAL(GlassBreak, 49, 0, 1, 1)
|
||||
DEFINE_SPECIAL(ExtraFloor_LightOnly, 50, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Sector_SetLink, 51, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Wall, 52, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Line_SetTextureOffset, 53, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_ChangeFlags, 54, 3, 3, 3)
|
||||
|
||||
DEFINE_SPECIAL(Plat_PerpetualRaise, 60, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_Stop, 61, 1, 1)
|
||||
DEFINE_SPECIAL(Plat_DownWaitUpStay, 62, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_DownByValue, 63, 4, 4)
|
||||
DEFINE_SPECIAL(Plat_UpWaitDownStay, 64, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_UpByValue, 65, 4, 4)
|
||||
DEFINE_SPECIAL(Floor_LowerInstant, 66, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseInstant, 67, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_MoveToValueTimes8, 68, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_MoveToValueTimes8, 69, 4, 4)
|
||||
DEFINE_SPECIAL(Teleport, 70, 1, 3)
|
||||
DEFINE_SPECIAL(Teleport_NoFog, 71, 1, 3)
|
||||
DEFINE_SPECIAL(ThrustThing, 72, 2, 4)
|
||||
DEFINE_SPECIAL(DamageThing, 73, 1, 1)
|
||||
DEFINE_SPECIAL(Teleport_NewMap, 74, 2, 3)
|
||||
DEFINE_SPECIAL(Teleport_EndGame, 75, 0, 0)
|
||||
DEFINE_SPECIAL(TeleportOther, 76, 3, 3)
|
||||
DEFINE_SPECIAL(TeleportGroup, 77, 5, 5)
|
||||
DEFINE_SPECIAL(TeleportInSector, 78, 4, 5)
|
||||
DEFINE_SPECIAL(Plat_PerpetualRaise, 60, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_Stop, 61, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Plat_DownWaitUpStay, 62, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_DownByValue, 63, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Plat_UpWaitDownStay, 64, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_UpByValue, 65, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Floor_LowerInstant, 66, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseInstant, 67, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_MoveToValueTimes8, 68, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_MoveToValueTimes8, 69, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Teleport, 70, 1, 3, 3)
|
||||
DEFINE_SPECIAL(Teleport_NoFog, 71, 1, 3, 3)
|
||||
DEFINE_SPECIAL(ThrustThing, 72, 2, 4, 4)
|
||||
DEFINE_SPECIAL(DamageThing, 73, 1, 2, 2)
|
||||
DEFINE_SPECIAL(Teleport_NewMap, 74, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Teleport_EndGame, 75, 0, 0, 0)
|
||||
DEFINE_SPECIAL(TeleportOther, 76, 3, 3, 3)
|
||||
DEFINE_SPECIAL(TeleportGroup, 77, 5, 5, 5)
|
||||
DEFINE_SPECIAL(TeleportInSector, 78, 4, 5, 5)
|
||||
|
||||
DEFINE_SPECIAL(ACS_Execute, 80, 1, 5)
|
||||
DEFINE_SPECIAL(ACS_Suspend, 81, 2, 2)
|
||||
DEFINE_SPECIAL(ACS_Terminate, 82, 2, 2)
|
||||
DEFINE_SPECIAL(ACS_LockedExecute, 83, 5, 5)
|
||||
DEFINE_SPECIAL(ACS_ExecuteWithResult, 84, 1, 4)
|
||||
DEFINE_SPECIAL(ACS_LockedExecuteDoor, 85, 5, 5)
|
||||
DEFINE_SPECIAL(ACS_Execute, 80, 1, 5, 5)
|
||||
DEFINE_SPECIAL(ACS_Suspend, 81, 2, 2, 2)
|
||||
DEFINE_SPECIAL(ACS_Terminate, 82, 2, 2, 2)
|
||||
DEFINE_SPECIAL(ACS_LockedExecute, 83, 5, 5, 5)
|
||||
DEFINE_SPECIAL(ACS_ExecuteWithResult, 84, 1, 4, 4)
|
||||
DEFINE_SPECIAL(ACS_LockedExecuteDoor, 85, 5, 5, 5)
|
||||
|
||||
DEFINE_SPECIAL(Polyobj_OR_RotateLeft, 90, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_RotateRight, 91, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_Move, 92, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_OR_MoveTimes8, 93, 4, 4)
|
||||
DEFINE_SPECIAL(Pillar_BuildAndCrush, 94, 4, 5)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_LowerByValue, 95, 3, 3)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_RaiseByValue, 96, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_RotateLeft, 90, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_RotateRight, 91, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_Move, 92, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_OR_MoveTimes8, 93, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Pillar_BuildAndCrush, 94, 4, 5, 5)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_LowerByValue, 95, 3, 3, 3)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_RaiseByValue, 96, 3, 3, 3)
|
||||
|
||||
DEFINE_SPECIAL(Scroll_Texture_Left, 100, -1, -1)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Right, 101, -1, -1)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Up, 102, -1, -1)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Down, 103, -1, -1)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Left, 100, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Right, 101, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Up, 102, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Down, 103, -1, -1, 2)
|
||||
|
||||
DEFINE_SPECIAL(Light_ForceLightning, 109, 1, 1)
|
||||
DEFINE_SPECIAL(Light_RaiseByValue, 110, 2, 2)
|
||||
DEFINE_SPECIAL(Light_LowerByValue, 111, 2, 2)
|
||||
DEFINE_SPECIAL(Light_ChangeToValue, 112, 2, 2)
|
||||
DEFINE_SPECIAL(Light_Fade, 113, 3, 3)
|
||||
DEFINE_SPECIAL(Light_Glow, 114, 4, 4)
|
||||
DEFINE_SPECIAL(Light_Flicker, 115, 3, 3)
|
||||
DEFINE_SPECIAL(Light_Strobe, 116, 5, 5)
|
||||
DEFINE_SPECIAL(Light_Stop, 117, 1, 1)
|
||||
DEFINE_SPECIAL(Light_ForceLightning, 109, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Light_RaiseByValue, 110, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Light_LowerByValue, 111, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Light_ChangeToValue, 112, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Light_Fade, 113, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Light_Glow, 114, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Light_Flicker, 115, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Light_Strobe, 116, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Light_Stop, 117, 1, 1, 1)
|
||||
|
||||
DEFINE_SPECIAL(Thing_Damage, 119, 2, 3)
|
||||
DEFINE_SPECIAL(Radius_Quake, 120, 5, 5) // Earthquake
|
||||
DEFINE_SPECIAL(Line_SetIdentification, 121, -1, -1)
|
||||
DEFINE_SPECIAL(Thing_Damage, 119, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Radius_Quake, 120, 5, 5, 5) // Earthquake
|
||||
DEFINE_SPECIAL(Line_SetIdentification, 121, -1, -1, 5)
|
||||
|
||||
#if 0 // Skull Tag specials that might be added later
|
||||
Thing_SetGravity, 122, -1, -1)
|
||||
Thing_ReverseGravity, 123, -1, -1)
|
||||
Thing_RevertGravity, 124, -1, -1)
|
||||
#endif
|
||||
DEFINE_SPECIAL(Thing_Move, 125, 2, 3)
|
||||
DEFINE_SPECIAL(Thing_Move, 125, 2, 3, 3)
|
||||
#if 0 // Skull Tag special I doubt I will add
|
||||
Thing_SetSprite, 126, -1, -1)
|
||||
#endif
|
||||
DEFINE_SPECIAL(Thing_SetSpecial, 127, 5, 5)
|
||||
DEFINE_SPECIAL(ThrustThingZ, 128, 4, 4)
|
||||
DEFINE_SPECIAL(UsePuzzleItem, 129, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Activate, 130, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Deactivate, 131, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Remove, 132, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Destroy, 133, 1, 2)
|
||||
DEFINE_SPECIAL(Thing_Projectile, 134, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_Spawn, 135, 3, 4)
|
||||
DEFINE_SPECIAL(Thing_ProjectileGravity, 136, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_SpawnNoFog, 137, 3, 4)
|
||||
DEFINE_SPECIAL(Floor_Waggle, 138, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_SpawnFacing, 139, 2, 4)
|
||||
DEFINE_SPECIAL(Sector_ChangeSound, 140, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_SetSpecial, 127, 5, 5, 5)
|
||||
DEFINE_SPECIAL(ThrustThingZ, 128, 4, 4, 4)
|
||||
DEFINE_SPECIAL(UsePuzzleItem, 129, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Activate, 130, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Deactivate, 131, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Remove, 132, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_Destroy, 133, 1, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_Projectile, 134, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_Spawn, 135, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Thing_ProjectileGravity, 136, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_SpawnNoFog, 137, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Floor_Waggle, 138, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_SpawnFacing, 139, 2, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_ChangeSound, 140, 2, 2, 2)
|
||||
|
||||
DEFINE_SPECIAL(Teleport_NoStop, 154, 2, 3)
|
||||
DEFINE_SPECIAL(Teleport_NoStop, 154, 2, 3, 3)
|
||||
// GZDoom/Vavoom specials
|
||||
// Although ZDoom doesn't support them it's better to have them defined so that
|
||||
// WADs using them somewhere can at least be started without aborting due
|
||||
// to an error message.
|
||||
DEFINE_SPECIAL(FS_Execute, 158, 1, 4)
|
||||
DEFINE_SPECIAL(Sector_SetPlaneReflection, 159, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_Set3DFloor, 160, -1, -1)
|
||||
DEFINE_SPECIAL(Sector_SetContents, 161, -1, -1)
|
||||
DEFINE_SPECIAL(FS_Execute, 158, 1, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_SetPlaneReflection, 159, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_Set3DFloor, 160, -1, -1, 5)
|
||||
DEFINE_SPECIAL(Sector_SetContents, 161, -1, -1, 5) // It probably doesn't use 5 args. Oh well.
|
||||
|
||||
// [RH] Begin new specials for ZDoom
|
||||
DEFINE_SPECIAL(Generic_Crusher2, 169, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingScale2, 170, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetFloorScale2, 171, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_UpNearestWaitDownStay, 172, 3, 3)
|
||||
DEFINE_SPECIAL(NoiseAlert, 173, 2, 2)
|
||||
DEFINE_SPECIAL(SendToCommunicator, 174, 4, 4)
|
||||
DEFINE_SPECIAL(Thing_ProjectileIntercept, 175, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_ChangeTID, 176, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_Hate, 177, 2, 3)
|
||||
DEFINE_SPECIAL(Thing_ProjectileAimed, 178, 4, 5)
|
||||
DEFINE_SPECIAL(ChangeSkill, 179, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_SetTranslation, 180, 2, 2)
|
||||
DEFINE_SPECIAL(Plane_Align, 181, -1, -1)
|
||||
DEFINE_SPECIAL(Line_Mirror, 182, -1, 0)
|
||||
DEFINE_SPECIAL(Line_AlignCeiling, 183, 2, 2)
|
||||
DEFINE_SPECIAL(Line_AlignFloor, 184, 2, 2)
|
||||
DEFINE_SPECIAL(Sector_SetRotation, 185, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingPanning, 186, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFloorPanning, 187, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingScale, 188, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFloorScale, 189, 5, 5)
|
||||
DEFINE_SPECIAL(Static_Init, 190, -1, -1)
|
||||
DEFINE_SPECIAL(SetPlayerProperty, 191, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToHighestFloor, 192, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerInstant, 193, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseInstant, 194, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStayA, 195, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseA, 196, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseSilentA, 197, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValueTimes8, 198, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValueTimes8, 199, 3, 3)
|
||||
DEFINE_SPECIAL(Generic_Floor, 200, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Ceiling, 201, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Door, 202, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Lift, 203, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Stairs, 204, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Crusher, 205, 5, 5)
|
||||
DEFINE_SPECIAL(Plat_DownWaitUpStayLip, 206, 4, 5)
|
||||
DEFINE_SPECIAL(Plat_PerpetualRaiseLip, 207, 4, 4)
|
||||
DEFINE_SPECIAL(TranslucentLine, 208, 2, 3)
|
||||
DEFINE_SPECIAL(Transfer_Heights, 209, -1, -1)
|
||||
DEFINE_SPECIAL(Transfer_FloorLight, 210, -1, -1)
|
||||
DEFINE_SPECIAL(Transfer_CeilingLight, 211, -1, -1)
|
||||
DEFINE_SPECIAL(Sector_SetColor, 212, 4, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFade, 213, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_SetDamage, 214, 3, 3)
|
||||
DEFINE_SPECIAL(Teleport_Line, 215, 2, 2)
|
||||
DEFINE_SPECIAL(Sector_SetGravity, 216, 3, 3)
|
||||
DEFINE_SPECIAL(Stairs_BuildUpDoom, 217, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetWind, 218, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_SetFriction, 219, 2, 2)
|
||||
DEFINE_SPECIAL(Sector_SetCurrent, 220, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Both, 221, 5, 5)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Model, 222, -1, -1)
|
||||
DEFINE_SPECIAL(Scroll_Floor, 223, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Ceiling, 224, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Offsets, 225, -1, -1)
|
||||
DEFINE_SPECIAL(ACS_ExecuteAlways, 226, 1, 5)
|
||||
DEFINE_SPECIAL(PointPush_SetForce, 227, -1, -1)
|
||||
DEFINE_SPECIAL(Plat_RaiseAndStayTx0, 228, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_SetGoal, 229, 3, 4)
|
||||
DEFINE_SPECIAL(Plat_UpByValueStayTx, 230, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_ToggleCeiling, 231, 1, 1)
|
||||
DEFINE_SPECIAL(Light_StrobeDoom, 232, 3, 3)
|
||||
DEFINE_SPECIAL(Light_MinNeighbor, 233, 1, 1)
|
||||
DEFINE_SPECIAL(Light_MaxNeighbor, 234, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_TransferTrigger, 235, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_TransferNumeric, 236, 1, 1)
|
||||
DEFINE_SPECIAL(ChangeCamera, 237, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseToLowestCeiling, 238, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseByValueTxTy, 239, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseByTexture, 240, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToLowestTxTy, 241, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToHighest, 242, 3, 3)
|
||||
DEFINE_SPECIAL(Exit_Normal, 243, 1, 1)
|
||||
DEFINE_SPECIAL(Exit_Secret, 244, 1, 1)
|
||||
DEFINE_SPECIAL(Elevator_RaiseToNearest, 245, 2, 2)
|
||||
DEFINE_SPECIAL(Elevator_MoveToFloor, 246, 2, 2)
|
||||
DEFINE_SPECIAL(Elevator_LowerToNearest, 247, 2, 2)
|
||||
DEFINE_SPECIAL(HealThing, 248, 1, 2)
|
||||
DEFINE_SPECIAL(Door_CloseWaitOpen, 249, 3, 4)
|
||||
DEFINE_SPECIAL(Floor_Donut, 250, 3, 3)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_LowerRaise, 251, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseToNearest, 252, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToLowest, 253, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToFloor, 254, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStaySilA, 255, 4, 5)
|
||||
DEFINE_SPECIAL(Generic_Crusher2, 169, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingScale2, 170, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetFloorScale2, 171, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_UpNearestWaitDownStay, 172, 3, 3, 3)
|
||||
DEFINE_SPECIAL(NoiseAlert, 173, 2, 2, 2)
|
||||
DEFINE_SPECIAL(SendToCommunicator, 174, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Thing_ProjectileIntercept, 175, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Thing_ChangeTID, 176, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_Hate, 177, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Thing_ProjectileAimed, 178, 4, 5, 5)
|
||||
DEFINE_SPECIAL(ChangeSkill, 179, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Thing_SetTranslation, 180, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Plane_Align, 181, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Line_Mirror, 182, -1, 0, 0)
|
||||
DEFINE_SPECIAL(Line_AlignCeiling, 183, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Line_AlignFloor, 184, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Sector_SetRotation, 185, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingPanning, 186, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFloorPanning, 187, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingScale, 188, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFloorScale, 189, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Static_Init, 190, -1, -1, 3)
|
||||
DEFINE_SPECIAL(SetPlayerProperty, 191, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToHighestFloor, 192, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerInstant, 193, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseInstant, 194, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStayA, 195, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseA, 196, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseSilentA, 197, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValueTimes8, 198, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValueTimes8, 199, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Generic_Floor, 200, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Ceiling, 201, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Door, 202, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Lift, 203, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Stairs, 204, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Generic_Crusher, 205, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Plat_DownWaitUpStayLip, 206, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Plat_PerpetualRaiseLip, 207, 4, 4, 4)
|
||||
DEFINE_SPECIAL(TranslucentLine, 208, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Transfer_Heights, 209, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Transfer_FloorLight, 210, -1, -1, 1)
|
||||
DEFINE_SPECIAL(Transfer_CeilingLight, 211, -1, -1, 1)
|
||||
DEFINE_SPECIAL(Sector_SetColor, 212, 4, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetFade, 213, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_SetDamage, 214, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Teleport_Line, 215, 2, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetGravity, 216, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Stairs_BuildUpDoom, 217, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetWind, 218, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Sector_SetFriction, 219, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Sector_SetCurrent, 220, 4, 4, 4)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Both, 221, 5, 5, 5)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Model, 222, -1, -1, 2)
|
||||
DEFINE_SPECIAL(Scroll_Floor, 223, 4, 4, 5)
|
||||
DEFINE_SPECIAL(Scroll_Ceiling, 224, 4, 4, 5)
|
||||
DEFINE_SPECIAL(Scroll_Texture_Offsets, 225, -1, -1, 1)
|
||||
DEFINE_SPECIAL(ACS_ExecuteAlways, 226, 1, 5, 5)
|
||||
DEFINE_SPECIAL(PointPush_SetForce, 227, -1, -1, 4)
|
||||
DEFINE_SPECIAL(Plat_RaiseAndStayTx0, 228, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Thing_SetGoal, 229, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Plat_UpByValueStayTx, 230, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_ToggleCeiling, 231, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Light_StrobeDoom, 232, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Light_MinNeighbor, 233, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Light_MaxNeighbor, 234, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_TransferTrigger, 235, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Floor_TransferNumeric, 236, 1, 1, 1)
|
||||
DEFINE_SPECIAL(ChangeCamera, 237, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseToLowestCeiling, 238, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_RaiseByValueTxTy, 239, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseByTexture, 240, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToLowestTxTy, 241, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Floor_LowerToHighest, 242, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Exit_Normal, 243, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Exit_Secret, 244, 1, 1, 1)
|
||||
DEFINE_SPECIAL(Elevator_RaiseToNearest, 245, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Elevator_MoveToFloor, 246, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Elevator_LowerToNearest, 247, 2, 2, 2)
|
||||
DEFINE_SPECIAL(HealThing, 248, 1, 2, 2)
|
||||
DEFINE_SPECIAL(Door_CloseWaitOpen, 249, 3, 4, 4)
|
||||
DEFINE_SPECIAL(Floor_Donut, 250, 3, 3, 3)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_LowerRaise, 251, 3, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseToNearest, 252, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToLowest, 253, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToFloor, 254, 2, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStaySilA, 255, 4, 5, 5)
|
||||
|
||||
#undef DEFINE_SPECIAL
|
||||
|
|
|
@ -40,24 +40,13 @@ void ABasicArmor::Tick ()
|
|||
AbsorbCount = 0;
|
||||
if (!Icon.isValid())
|
||||
{
|
||||
switch (gameinfo.gametype)
|
||||
{
|
||||
case GAME_Chex:
|
||||
case GAME_Doom:
|
||||
Icon = TexMan.CheckForTexture (SavePercent == FRACUNIT/3 ? "ARM1A0" : "ARM2A0", FTexture::TEX_Any);
|
||||
break;
|
||||
const char *icon = gameinfo.ArmorIcon1;
|
||||
|
||||
case GAME_Heretic:
|
||||
Icon = TexMan.CheckForTexture (SavePercent == FRACUNIT/2 ? "SHLDA0" : "SHD2A0", FTexture::TEX_Any);
|
||||
break;
|
||||
if (SavePercent >= gameinfo.Armor2Percent && gameinfo.ArmorIcon2[0] != 0)
|
||||
icon = gameinfo.ArmorIcon2;
|
||||
|
||||
case GAME_Strife:
|
||||
Icon = TexMan.CheckForTexture (SavePercent == FRACUNIT/3 ? "I_ARM2" : "I_ARM1", FTexture::TEX_Any);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (icon[0] != 0)
|
||||
Icon = TexMan.CheckForTexture (icon, FTexture::TEX_Any);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -270,6 +270,7 @@ enum //drawinventorybar flags
|
|||
DRAWINVENTORYBAR_NOARROWS = 0x4,
|
||||
DRAWINVENTORYBAR_ALWAYSSHOWCOUNTER = 0x8,
|
||||
DRAWINVENTORYBAR_TRANSLUCENT = 0x10,
|
||||
DRAWINVENTORYBAR_VERTICAL = 0x20,
|
||||
};
|
||||
|
||||
enum //drawgem flags
|
||||
|
@ -404,7 +405,7 @@ private:
|
|||
void DrawFace(const char *defaultFace, int accuracy, int stateflags, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets);
|
||||
int updateState(bool xdth, bool animatedgodmode);
|
||||
void DrawInventoryBar(int type, int num, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, bool alwaysshow,
|
||||
SBarInfoCoordinate counterx, SBarInfoCoordinate countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter, int bgalpha);
|
||||
SBarInfoCoordinate counterx, SBarInfoCoordinate countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter, int bgalpha, bool vertical);
|
||||
void DrawGem(FTexture* chain, FTexture* gem, int value, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, int padleft, int padright, int chainsize,
|
||||
bool wiggle, bool translate);
|
||||
FRemapTable* getTranslation();
|
||||
|
|
|
@ -765,6 +765,7 @@ void DSBarInfo::doCommands(SBarInfoBlock &block, int xOffset, int yOffset, int a
|
|||
bool artibox = true;
|
||||
bool noarrows = false;
|
||||
bool alwaysshowcounter = false;
|
||||
bool vertical = false;
|
||||
int bgalpha = alpha;
|
||||
if((cmd.flags & DRAWINVENTORYBAR_ALWAYSSHOW))
|
||||
alwaysshow = true;
|
||||
|
@ -776,11 +777,13 @@ void DSBarInfo::doCommands(SBarInfoBlock &block, int xOffset, int yOffset, int a
|
|||
alwaysshowcounter = true;
|
||||
if(cmd.flags & DRAWINVENTORYBAR_TRANSLUCENT)
|
||||
bgalpha = fixed_t((((double) alpha / (double) FRACUNIT) * ((double) HX_SHADOW / (double) FRACUNIT)) * FRACUNIT);
|
||||
if((cmd.flags & DRAWINVENTORYBAR_VERTICAL))
|
||||
vertical = true;
|
||||
if(drawingFont != cmd.font)
|
||||
{
|
||||
drawingFont = cmd.font;
|
||||
}
|
||||
DrawInventoryBar(cmd.special, cmd.value, cmd.x, cmd.y, xOffset, yOffset, alpha, block.fullScreenOffsets, alwaysshow, cmd.sbcoord2, cmd.sbcoord3, cmd.translation, artibox, noarrows, alwaysshowcounter, bgalpha);
|
||||
DrawInventoryBar(cmd.special, cmd.value, cmd.x, cmd.y, xOffset, yOffset, alpha, block.fullScreenOffsets, alwaysshow, cmd.sbcoord2, cmd.sbcoord3, cmd.translation, artibox, noarrows, alwaysshowcounter, bgalpha, vertical);
|
||||
break;
|
||||
}
|
||||
case SBARINFO_DRAWBAR:
|
||||
|
@ -1650,11 +1653,15 @@ void DSBarInfo::DrawFace(const char *defaultFace, int accuracy, int stateflags,
|
|||
}
|
||||
|
||||
void DSBarInfo::DrawInventoryBar(int type, int num, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, bool alwaysshow,
|
||||
SBarInfoCoordinate counterx, SBarInfoCoordinate countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter, int bgalpha)
|
||||
SBarInfoCoordinate counterx, SBarInfoCoordinate countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter, int bgalpha, bool vertical)
|
||||
{ //yes, there is some Copy & Paste here too
|
||||
AInventory *item;
|
||||
int i;
|
||||
int spacing = (type != GAME_Strife) ? Images[invBarOffset + imgARTIBOX]->GetScaledWidth() + 1 : Images[invBarOffset + imgCURSOR]->GetScaledWidth() - 1;
|
||||
int spacing = 0;
|
||||
if(!vertical)
|
||||
spacing = (type != GAME_Strife) ? Images[invBarOffset + imgARTIBOX]->GetScaledWidth() + 1 : Images[invBarOffset + imgCURSOR]->GetScaledWidth() - 1;
|
||||
else
|
||||
spacing = (type != GAME_Strife) ? Images[invBarOffset + imgARTIBOX]->GetScaledHeight() + 1 : Images[invBarOffset + imgCURSOR]->GetScaledHeight() - 1;
|
||||
|
||||
// If the player has no artifacts, don't draw the bar
|
||||
CPlayer->mo->InvFirst = ValidateInvFirst(num);
|
||||
|
@ -1662,54 +1669,57 @@ void DSBarInfo::DrawInventoryBar(int type, int num, SBarInfoCoordinate x, SBarIn
|
|||
{
|
||||
for(item = CPlayer->mo->InvFirst, i = 0; item != NULL && i < num; item = item->NextInv(), ++i)
|
||||
{
|
||||
SBarInfoCoordinate rx = x + i*spacing;
|
||||
SBarInfoCoordinate rx = x + (!vertical ? i*spacing : 0);
|
||||
SBarInfoCoordinate ry = y + (vertical ? i*spacing : 0);
|
||||
if(drawArtiboxes)
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgARTIBOX], rx, y, xOffset, yOffset, bgalpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgARTIBOX], rx, ry, xOffset, yOffset, bgalpha, fullScreenOffsets);
|
||||
}
|
||||
if(type != GAME_Strife) //Strife draws the cursor before the icons
|
||||
DrawGraphic(TexMan(item->Icon), rx, y, xOffset, yOffset, alpha, fullScreenOffsets, false, item->Amount <= 0);
|
||||
DrawGraphic(TexMan(item->Icon), rx, ry, xOffset, yOffset, alpha, fullScreenOffsets, false, item->Amount <= 0);
|
||||
if(item == CPlayer->mo->InvSel)
|
||||
{
|
||||
if(type == GAME_Heretic)
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, y+29, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, ry+29, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
else if(type == GAME_Hexen)
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, y-1, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, ry-1, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
else if(type == GAME_Strife)
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgCURSOR], rx-6, y-2, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgCURSOR], rx-6, ry-2, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, y, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgSELECTBOX], rx, ry, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
}
|
||||
if(type == GAME_Strife)
|
||||
DrawGraphic(TexMan(item->Icon), rx, y, xOffset, yOffset, alpha, fullScreenOffsets, false, item->Amount <= 0);
|
||||
DrawGraphic(TexMan(item->Icon), rx, ry, xOffset, yOffset, alpha, fullScreenOffsets, false, item->Amount <= 0);
|
||||
if(alwaysshowcounter || item->Amount != 1)
|
||||
{
|
||||
DrawNumber(item->Amount, 3, counterx + (i*spacing), countery, xOffset, yOffset, alpha, fullScreenOffsets, translation);
|
||||
DrawNumber(item->Amount, 3, counterx+(!vertical ? i*spacing : 0), countery+(vertical ? i*spacing : 0), xOffset, yOffset, alpha, fullScreenOffsets, translation);
|
||||
}
|
||||
}
|
||||
for (; i < num && drawArtiboxes; ++i)
|
||||
{
|
||||
DrawGraphic(Images[invBarOffset + imgARTIBOX], x + (i*spacing), y, xOffset, yOffset, bgalpha, fullScreenOffsets);
|
||||
DrawGraphic(Images[invBarOffset + imgARTIBOX], x + (!vertical ? (i*spacing) : 0), y + (vertical ? (i*spacing) : 0), xOffset, yOffset, bgalpha, fullScreenOffsets);
|
||||
}
|
||||
// Is there something to the left?
|
||||
if (!noArrows && CPlayer->mo->FirstInv() != CPlayer->mo->InvFirst)
|
||||
{
|
||||
int offset = type != GAME_Strife ? -12 : 14;
|
||||
DrawGraphic(Images[!(gametic & 4) ?
|
||||
invBarOffset + imgINVLFGEM1 : invBarOffset + imgINVLFGEM2], x + ((type != GAME_Strife) ? -12 : -14), y, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
invBarOffset + imgINVLFGEM1 : invBarOffset + imgINVLFGEM2], x + (!vertical ? offset : 0), y + (vertical ? offset : 0), xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
// Is there something to the right?
|
||||
if (!noArrows && item != NULL)
|
||||
{
|
||||
int offset = type != GAME_Strife ? num*31+2 : num*35-4;
|
||||
DrawGraphic(Images[!(gametic & 4) ?
|
||||
invBarOffset + imgINVRTGEM1 : invBarOffset + imgINVRTGEM2], x + ((type != GAME_Strife) ? num*31+2 : num*35-4), y, xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
invBarOffset + imgINVRTGEM1 : invBarOffset + imgINVRTGEM2], x + (!vertical ? offset : 0), y + (vertical ? offset : 0), xOffset, yOffset, alpha, fullScreenOffsets);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -805,7 +805,7 @@ void SBarInfo::ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block)
|
|||
else if(sc.Compare("Strife"))
|
||||
cmd.special = GAME_Strife;
|
||||
else
|
||||
sc.ScriptError("Unkown style '%s'.", sc.String);
|
||||
sc.ScriptError("Unknown style '%s'.", sc.String);
|
||||
|
||||
sc.MustGetToken(',');
|
||||
while(sc.CheckToken(TK_Identifier))
|
||||
|
@ -830,6 +830,10 @@ void SBarInfo::ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block)
|
|||
{
|
||||
cmd.flags |= DRAWINVENTORYBAR_TRANSLUCENT;
|
||||
}
|
||||
else if(sc.Compare("vertical"))
|
||||
{
|
||||
cmd.flags |= DRAWINVENTORYBAR_VERTICAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
sc.ScriptError("Unknown flag '%s'.", sc.String);
|
||||
|
|
|
@ -103,6 +103,50 @@ void gl_ParseSkybox(FScanner &sc)
|
|||
TexMan.AddTexture(sb);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// gl_ParseVavoomSkybox
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void gl_ParseVavoomSkybox(FScanner &sc)
|
||||
{
|
||||
while (sc.GetString())
|
||||
{
|
||||
int facecount=0;
|
||||
int maplump = -1;
|
||||
FSkyBox * sb = new FSkyBox;
|
||||
uppercopy(sb->Name, sc.String);
|
||||
sb->Name[8]=0;
|
||||
sb->fliptop = true;
|
||||
sc.MustGetStringName("{");
|
||||
while (!sc.CheckString("}"))
|
||||
{
|
||||
if (facecount<6)
|
||||
{
|
||||
sc.MustGetStringName("{");
|
||||
sc.MustGetStringName("map");
|
||||
sc.MustGetString();
|
||||
|
||||
maplump = Wads.CheckNumForFullName(sc.String, true);
|
||||
if (maplump==-1)
|
||||
Printf("Texture '%s' not found in Vavoom skybox '%s'\n", sc.String, sb->Name);
|
||||
|
||||
sb->faces[facecount] = FTexture::CreateTexture(maplump, FTexture::TEX_Wall);
|
||||
if (!sb->faces[facecount])
|
||||
Printf("Unable to create texture from '%s' in Vavoom skybox '%s'\n", sc.String, sb->Name);
|
||||
sc.MustGetStringName("}");
|
||||
}
|
||||
facecount++;
|
||||
}
|
||||
if (facecount != 6)
|
||||
{
|
||||
sc.ScriptError("%s: Vavoom skybox definition requires 6 faces", sb->Name);
|
||||
}
|
||||
sb->SetSize();
|
||||
TexMan.AddTexture(sb);
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
@ -1230,6 +1274,13 @@ void gl_LoadDynLightDefs(const char * defsLump)
|
|||
FScanner sc(workingLump);
|
||||
gl_DoParseDefs(sc, workingLump);
|
||||
}
|
||||
lastLump = 0;
|
||||
if ((stricmp(defsLump, "GLDEFS") == 0) &&
|
||||
((workingLump = Wads.FindLump("SKYBOXES", &lastLump)) != -1))
|
||||
{
|
||||
FScanner sc(workingLump);
|
||||
gl_ParseVavoomSkybox(sc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -336,8 +336,17 @@ void GLWall::SplitWall(sector_t * frontsector, bool translucent)
|
|||
#ifndef FLOAT_ENGINE
|
||||
if (i<lightlist.Size()-1)
|
||||
{
|
||||
lightbottomleft = lightlist[i+1].plane.ZatPoint(x1,y1);
|
||||
lightbottomright= lightlist[i+1].plane.ZatPoint(x2,y2);
|
||||
secplane_t &p = lightlist[i+1].plane;
|
||||
if (p.a | p.b)
|
||||
{
|
||||
lightbottomleft = p.ZatPoint(x1,y1);
|
||||
lightbottomright= p.ZatPoint(x2,y2);
|
||||
}
|
||||
else
|
||||
{
|
||||
lightbottomleft =
|
||||
lightbottomright= p.ZatPoint(x2,y2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1047,7 +1047,13 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage
|
|||
|
||||
// Calculate this as float to avoid overflows so that the
|
||||
// clamping that had to be done here can be removed.
|
||||
double fltthrust = clamp((damage * 0.125 * kickback) / target->Mass, 0.,mod == NAME_MDK? 10. : 32.);
|
||||
double fltthrust;
|
||||
|
||||
fltthrust = mod == NAME_MDK ? 10 : 32;
|
||||
if (target->Mass > 0)
|
||||
{
|
||||
fltthrust = clamp((damage * 0.125 * kickback) / target->Mass, 0., fltthrust);
|
||||
}
|
||||
|
||||
thrust = FLOAT2FIXED(fltthrust);
|
||||
|
||||
|
|
|
@ -3193,18 +3193,29 @@ lnSpecFunc LineSpecials[256] =
|
|||
LS_Ceiling_CrushRaiseAndStaySilA
|
||||
};
|
||||
|
||||
struct FLineSpecial
|
||||
{
|
||||
const char *name;
|
||||
BYTE number;
|
||||
SBYTE min_args;
|
||||
SBYTE max_args;
|
||||
};
|
||||
|
||||
#define DEFINE_SPECIAL(name, num, min, max) {#name, num, min, max},
|
||||
static FLineSpecial LineSpecialNames[]={
|
||||
#define DEFINE_SPECIAL(name, num, min, max, mmax) {#name, num, min, max, mmax},
|
||||
static FLineSpecial LineSpecialNames[] = {
|
||||
#include "actionspecials.h"
|
||||
};
|
||||
const FLineSpecial *LineSpecialsInfo[256];
|
||||
|
||||
static int STACK_ARGS lscmp (const void * a, const void * b)
|
||||
{
|
||||
return stricmp( ((FLineSpecial*)a)->name, ((FLineSpecial*)b)->name);
|
||||
}
|
||||
|
||||
static struct InitLineSpecials
|
||||
{
|
||||
InitLineSpecials()
|
||||
{
|
||||
qsort(LineSpecialNames, countof(LineSpecialNames), sizeof(FLineSpecial), lscmp);
|
||||
for (size_t i = 0; i < countof(LineSpecialNames); ++i)
|
||||
{
|
||||
assert(LineSpecialsInfo[LineSpecialNames[i].number] == NULL);
|
||||
LineSpecialsInfo[LineSpecialNames[i].number] = &LineSpecialNames[i];
|
||||
}
|
||||
}
|
||||
} DoInit;
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
@ -3213,22 +3224,9 @@ static FLineSpecial LineSpecialNames[]={
|
|||
// Finds a line special and also returns the min and max argument count.
|
||||
//
|
||||
//==========================================================================
|
||||
static int STACK_ARGS lscmp (const void * a, const void * b)
|
||||
{
|
||||
return stricmp( ((FLineSpecial*)a)->name, ((FLineSpecial*)b)->name);
|
||||
}
|
||||
|
||||
|
||||
int P_FindLineSpecial (const char *string, int *min_args, int *max_args)
|
||||
{
|
||||
static bool sorted=false;
|
||||
|
||||
if (!sorted)
|
||||
{
|
||||
qsort(LineSpecialNames, countof(LineSpecialNames), sizeof(FLineSpecial), lscmp);
|
||||
sorted = true;
|
||||
}
|
||||
|
||||
int min = 0, max = countof(LineSpecialNames) - 1;
|
||||
|
||||
while (min <= max)
|
||||
|
@ -3252,4 +3250,3 @@ int P_FindLineSpecial (const char *string, int *min_args, int *max_args)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,12 +37,23 @@
|
|||
|
||||
#include "doomtype.h"
|
||||
|
||||
#define DEFINE_SPECIAL(name, num, min, max) name = num,
|
||||
#define DEFINE_SPECIAL(name, num, min, max, map) name = num,
|
||||
|
||||
typedef enum {
|
||||
#include "actionspecials.h"
|
||||
} linespecial_t;
|
||||
|
||||
struct FLineSpecial
|
||||
{
|
||||
const char *name;
|
||||
BYTE number;
|
||||
SBYTE min_args;
|
||||
SBYTE max_args;
|
||||
BYTE map_args;
|
||||
};
|
||||
|
||||
extern const FLineSpecial *LineSpecialsInfo[256];
|
||||
|
||||
typedef enum {
|
||||
Init_Gravity = 0,
|
||||
Init_Color = 1,
|
||||
|
|
|
@ -972,7 +972,8 @@ void P_SpawnSpecials (void)
|
|||
P_SpawnFriction(); // phares 3/12/98: New friction model using linedefs
|
||||
P_SpawnPushers(); // phares 3/20/98: New pusher model using linedefs
|
||||
|
||||
for (i=0; i<numlines; i++)
|
||||
for (i = 0; i < numlines; i++)
|
||||
{
|
||||
switch (lines[i].special)
|
||||
{
|
||||
int s;
|
||||
|
@ -1090,7 +1091,7 @@ void P_SpawnSpecials (void)
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
// [RH] Start running any open scripts on this map
|
||||
FBehavior::StaticStartTypedScripts (SCRIPT_Open, NULL, false);
|
||||
}
|
||||
|
@ -1311,7 +1312,7 @@ DScroller::DScroller (fixed_t dx, fixed_t dy, const line_t *l,
|
|||
|
||||
// Amount (dx,dy) vector linedef is shifted right to get scroll amount
|
||||
#define SCROLL_SHIFT 5
|
||||
#define SCROLLTYPE(i) ((i)<=0 ? 7:(i))
|
||||
#define SCROLLTYPE(i) (((i) <= 0) || ((i) & ~7) ? 7 : (i))
|
||||
|
||||
// Initialize the scrollers
|
||||
static void P_SpawnScrollers(void)
|
||||
|
@ -1326,6 +1327,21 @@ static void P_SpawnScrollers(void)
|
|||
int control = -1, accel = 0; // no control sector or acceleration
|
||||
int special = l->special;
|
||||
|
||||
// Check for undefined parameters that are non-zero and output messages for them.
|
||||
// We don't report for specials we don't understand.
|
||||
if (special != 0)
|
||||
{
|
||||
int max = LineSpecialsInfo[special] != NULL ? LineSpecialsInfo[special]->map_args : countof(l->args);
|
||||
for (int arg = max; arg < countof(l->args); ++arg)
|
||||
{
|
||||
if (l->args[arg] != 0)
|
||||
{
|
||||
Printf("Line %d (type %d:%s), arg %d is %d (should be 0)\n",
|
||||
i, special, LineSpecialsInfo[special]->name, arg+1, l->args[arg]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// killough 3/7/98: Types 245-249 are same as 250-254 except that the
|
||||
// first side's sector's heights cause scrolling when they change, and
|
||||
// this linedef controls the direction and speed of the scrolling. The
|
||||
|
|
|
@ -1258,7 +1258,7 @@ DEFINE_CLASS_PROPERTY(maxamount, I, Inventory)
|
|||
//==========================================================================
|
||||
DEFINE_CLASS_PROPERTY(defmaxamount, 0, Inventory)
|
||||
{
|
||||
defaults->MaxAmount = gameinfo.gametype == GAME_Heretic ? 16 : 25;
|
||||
defaults->MaxAmount = gameinfo.definventorymaxamount;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1090,10 +1090,12 @@ void ST_Endoom()
|
|||
{
|
||||
if (showendoom == 0) exit(0);
|
||||
|
||||
int endoom_lump = Wads.CheckNumForName (
|
||||
gameinfo.gametype & GAME_DoomChex ? "ENDOOM" :
|
||||
gameinfo.gametype == GAME_Heretic? "ENDTEXT" :
|
||||
gameinfo.gametype == GAME_Strife? "ENDSTRF" : NULL);
|
||||
if (gameinfo.Endoom[0] == 0)
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int endoom_lump = Wads.CheckNumForName (gameinfo.Endoom);
|
||||
|
||||
BYTE endoom_screen[4000];
|
||||
BYTE *font;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue