From 0e691963709c34c8f99afc48e31afb3750c58d4c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 3 May 2006 14:54:48 +0000 Subject: [PATCH] May 3, 2006 (Changes by Graf Zahl) - Removed doom.x, heretic.x and strife.x from the SVN repository. These are generated files. - Fixed: A_PainDie has to check whether a valid target exists before calling IsFriend. - Fixed: FDecalLib::FindAnimator needs a signed counter to work properly. May 1, 2006 (Changes by Graf Zahl) - Added support for game specific pickup messages, if only to be able to define Raven's invulnerability item in DECORATE. - Removed A_TreeDeath because it is no longer used. - Fixed: When picking up a PowerupGiver for an active powerup the blend color and the duration were transferred to a temorary item and never took effect. They have to be trnasferred to the newly created powerup item before trying to give it to the player, not afterward. - Made the colormap of the InvulnerabilitySphere item specific. The base power class still needs to have its color adjusted per game though and since Raven's invulnerability item is used in both Hexen and Heretic it can't define its own colormap/blend. - Separated the invulnerability colormaps from the game being played and made them item specific. They can also be specified as regular blend colors in DECORATE now. - Converted a_hereticarmor.cpp and most of a_doomartifacts.cpp, a_hereticartifacts.cpp and a_heretickeys.cpp to DECORATE. - Changed the Soulsphere to be a real health item with the Dehacked modifications made in d_dehacked.cpp as for most other items which need to be adjusted. - Added IF_BIGPOWERUP flag to AInventory to expose the RESPAWN_SUPER dmflag to DECORATE. Also removed the now obsolete ShouldRespawn methods from AInvulnerabilitySphere and ABlurSphere. - Converted a_splashes.cpp to DECORATE. - Converted most of a_debris.cpp to DECORATE. SVN r73 (trunk) --- default.cbd | 14 +- docs/rh-log.txt | 33 ++ src/actor.h | 2 +- src/c_cmds.cpp | 5 +- src/d_dehacked.cpp | 31 +- src/d_main.cpp | 2 + src/decallib.cpp | 4 +- src/g_doom/a_arachnotron.cpp | 6 - src/g_doom/a_doomartifacts.cpp | 201 ---------- src/g_doom/a_painelemental.cpp | 2 +- src/g_game.cpp | 5 + src/g_heretic/a_hereticarmor.cpp | 58 --- src/g_heretic/a_hereticartifacts.cpp | 31 -- src/g_heretic/a_heretickeys.cpp | 100 ----- src/g_heretic/a_hereticmisc.cpp | 25 -- src/g_hexen/a_flame.cpp | 207 ----------- src/g_hexen/a_hexenspecialdecs.cpp | 21 -- src/g_raven/a_ravenartifacts.cpp | 168 --------- src/g_raven/a_ravenhealth.cpp | 31 -- src/g_shared/a_artifacts.cpp | 69 ++-- src/g_shared/a_artifacts.h | 3 + src/g_shared/a_debris.cpp | 274 +------------- src/g_shared/a_keys.h | 10 - src/g_shared/a_pickups.cpp | 1 + src/g_shared/a_pickups.h | 1 + src/g_shared/a_sharedglobal.h | 32 +- src/g_shared/a_splashes.cpp | 229 ------------ src/r_main.cpp | 17 +- src/r_main.h | 2 + src/r_segs.cpp | 2 +- src/sc_man.cpp | 2 +- src/thingdef.cpp | 41 ++- src/thingdef_codeptr.cpp | 24 ++ src/v_palette.cpp | 56 +-- src/v_palette.h | 3 +- wadsrc/decorate/decorate.txt | 12 + wadsrc/decorate/doom/doomartifacts.txt | 127 +++++++ wadsrc/decorate/doom/doomdecorations.txt | 2 +- wadsrc/decorate/heretic/hereticarmor.txt | 39 ++ wadsrc/decorate/heretic/hereticartifacts.txt | 44 +++ wadsrc/decorate/heretic/heretickeys.txt | 54 +++ wadsrc/decorate/hexen/flame.txt | 116 ++++++ wadsrc/decorate/hexen/hexenarmor.txt | 1 + wadsrc/decorate/hexen/hexendecorations.txt | 1 + wadsrc/decorate/hexen/hexenkeys.txt | 1 + wadsrc/decorate/hexen/hexenspecialdecs.txt | 1 + wadsrc/decorate/hexen/puzzleitems.txt | 1 + wadsrc/decorate/hexen/scriptprojectiles.txt | 1 + wadsrc/decorate/hexen/speedboots.txt | 1 + wadsrc/decorate/raven/ravenartifacts.txt | 108 ++++++ wadsrc/decorate/raven/ravenhealth.txt | 15 + wadsrc/decorate/shared/debris.txt | 362 +++++++++++++++++++ wadsrc/decorate/shared/splashes.txt | 199 ++++++++++ wadsrc/wadsrc.vcproj | 71 ++++ wadsrc/xlat/doom.x | Bin 2849 -> 0 bytes wadsrc/xlat/heretic.x | Bin 2849 -> 0 bytes wadsrc/xlat/strife.x | Bin 1649 -> 0 bytes wadsrc/zdoom.lst | 20 + zdoom.vcproj | 75 ---- 59 files changed, 1430 insertions(+), 1533 deletions(-) delete mode 100644 src/g_heretic/a_hereticarmor.cpp delete mode 100644 src/g_hexen/a_flame.cpp delete mode 100644 src/g_raven/a_ravenartifacts.cpp delete mode 100644 src/g_raven/a_ravenhealth.cpp delete mode 100644 src/g_shared/a_splashes.cpp create mode 100644 wadsrc/decorate/doom/doomartifacts.txt create mode 100644 wadsrc/decorate/heretic/hereticarmor.txt create mode 100644 wadsrc/decorate/heretic/hereticartifacts.txt create mode 100644 wadsrc/decorate/heretic/heretickeys.txt create mode 100644 wadsrc/decorate/hexen/flame.txt create mode 100644 wadsrc/decorate/hexen/hexenarmor.txt create mode 100644 wadsrc/decorate/hexen/hexendecorations.txt create mode 100644 wadsrc/decorate/hexen/hexenkeys.txt create mode 100644 wadsrc/decorate/hexen/hexenspecialdecs.txt create mode 100644 wadsrc/decorate/hexen/puzzleitems.txt create mode 100644 wadsrc/decorate/hexen/scriptprojectiles.txt create mode 100644 wadsrc/decorate/hexen/speedboots.txt create mode 100644 wadsrc/decorate/raven/ravenartifacts.txt create mode 100644 wadsrc/decorate/raven/ravenhealth.txt create mode 100644 wadsrc/decorate/shared/debris.txt create mode 100644 wadsrc/decorate/shared/splashes.txt delete mode 100644 wadsrc/xlat/doom.x delete mode 100644 wadsrc/xlat/heretic.x delete mode 100644 wadsrc/xlat/strife.x diff --git a/default.cbd b/default.cbd index 55d477e79..b32f4102b 100644 --- a/default.cbd +++ b/default.cbd @@ -160,26 +160,26 @@ ${COMPILER} "autostart.cpp a.nas blocks.nas misc.nas tmap.nas tmap2.nas tmap3.na v_video.cpp vectors.cpp name.cpp zstring.cpp zstringpool.cpp zstrformat.cpp \ w_wad.cpp wi_stuff.cpp a_arachnotron.cpp a_archvile.cpp a_bossbrain.cpp \ a_bruiser.cpp a_cacodemon.cpp a_cyberdemon.cpp a_demon.cpp \ - a_doomarmor.cpp a_doomartifacts.cpp a_doomdecorations.cpp a_doomhealth.cpp \ - a_doomimp.cpp a_doomkeys.cpp a_doommisc.cpp a_doomplayer.cpp a_doomweaps.cpp \ + a_doomartifacts.cpp a_doomhealth.cpp \ + a_doomimp.cpp a_doommisc.cpp a_doomplayer.cpp a_doomweaps.cpp \ a_fatso.cpp a_keen.cpp a_lostsoul.cpp a_painelemental.cpp a_possessed.cpp \ a_revenant.cpp a_scriptedmarine.cpp a_spidermaster.cpp doom_sbar.cpp a_beast.cpp \ - a_chicken.cpp a_clink.cpp a_dsparil.cpp a_hereticarmor.cpp \ - a_hereticartifacts.cpp a_hereticdecorations.cpp a_hereticimp.cpp a_heretickeys.cpp \ + a_chicken.cpp a_clink.cpp a_dsparil.cpp \ + a_hereticartifacts.cpp a_hereticimp.cpp a_heretickeys.cpp \ a_hereticmisc.cpp a_hereticplayer.cpp a_hereticweaps.cpp a_ironlich.cpp \ a_knight.cpp a_mummy.cpp a_snake.cpp a_wizard.cpp heretic_sbar.cpp a_bats.cpp \ a_bishop.cpp a_blastradius.cpp a_boostarmor.cpp a_centaur.cpp a_clericboss.cpp \ a_clericflame.cpp a_clericholy.cpp a_clericmace.cpp a_clericplayer.cpp \ a_clericstaff.cpp a_demons.cpp a_dragon.cpp a_ettin.cpp a_fighteraxe.cpp \ a_fighterboss.cpp a_fighterhammer.cpp a_fighterplayer.cpp a_fighterquietus.cpp \ - a_firedemon.cpp a_flame.cpp a_flechette.cpp a_fog.cpp a_healingradius.cpp \ + a_firedemon.cpp a_flechette.cpp a_fog.cpp a_healingradius.cpp \ a_heresiarch.cpp a_hexenarmor.cpp a_hexendecorations.cpp a_hexenkeys.cpp \ a_hexenspecialdecs.cpp a_iceguy.cpp a_korax.cpp a_mageboss.cpp a_magecone.cpp \ a_magelightning.cpp a_mageplayer.cpp a_magestaff.cpp a_magewand.cpp a_mana.cpp \ a_pig.cpp a_puzzleitems.cpp a_scriptprojectiles.cpp a_serpent.cpp a_speedboots.cpp \ a_spike.cpp a_summon.cpp a_teleportother.cpp a_weaponpieces.cpp a_wraith.cpp \ hexen_sbar.cpp a_artiegg.cpp a_artitele.cpp a_minotaur.cpp a_ravenambient.cpp \ - a_ravenartifacts.cpp a_ravenhealth.cpp a_acolyte.cpp a_alienspectres.cpp \ + a_acolyte.cpp a_alienspectres.cpp \ a_beggars.cpp a_coin.cpp a_crusader.cpp a_entityboss.cpp a_inquisitor.cpp \ a_loremaster.cpp a_macil.cpp a_merchants.cpp a_oracle.cpp a_peasant.cpp \ a_programmer.cpp a_questitems.cpp a_ratbuddy.cpp a_reaver.cpp a_rebels.cpp \ @@ -190,7 +190,7 @@ ${COMPILER} "autostart.cpp a.nas blocks.nas misc.nas tmap.nas tmap2.nas tmap3.na a_camera.cpp a_debris.cpp a_decals.cpp a_flashfader.cpp a_fountain.cpp \ a_hatetarget.cpp a_keys.cpp a_lightning.cpp a_movingcamera.cpp a_pickups.cpp \ a_quake.cpp a_secrettrigger.cpp a_sectoraction.cpp a_sharedmisc.cpp a_skies.cpp \ - a_soundenvironment.cpp a_soundsequence.cpp a_spark.cpp a_splashes.cpp a_waterzone.cpp a_weaponpiece.cpp a_weapons.cpp \ + a_soundenvironment.cpp a_soundsequence.cpp a_spark.cpp a_waterzone.cpp a_weaponpiece.cpp a_weapons.cpp \ hudmessages.cpp shared_sbar.cpp fmopl.cpp mlkernel.cpp mlopl.cpp mlopl_io.cpp \ opl_mus_player.cpp fmodsound.cpp i_music.cpp i_sound.cpp music_cd.cpp \ music_flac.cpp music_midi_midiout.cpp music_midi_stream.cpp music_midi_timidity.cpp \ diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 7eeb37833..b9d01f3b5 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,36 @@ +May 3, 2006 (Changes by Graf Zahl) +- Removed doom.x, heretic.x and strife.x from the SVN repository. These + are generated files. +- Fixed: A_PainDie has to check whether a valid target exists before + calling IsFriend. +- Fixed: FDecalLib::FindAnimator needs a signed counter to work properly. + +May 1, 2006 (Changes by Graf Zahl) +- Added support for game specific pickup messages, if only to be able + to define Raven's invulnerability item in DECORATE. +- Removed A_TreeDeath because it is no longer used. +- Fixed: When picking up a PowerupGiver for an active powerup the + blend color and the duration were transferred to a temorary item + and never took effect. They have to be trnasferred to the newly created + powerup item before trying to give it to the player, not afterward. +- Made the colormap of the InvulnerabilitySphere item specific. + The base power class still needs to have its color adjusted + per game though and since Raven's invulnerability item is used in both + Hexen and Heretic it can't define its own colormap/blend. +- Separated the invulnerability colormaps from the game being played + and made them item specific. They can also be specified as regular + blend colors in DECORATE now. +- Converted a_hereticarmor.cpp and most of a_doomartifacts.cpp, + a_hereticartifacts.cpp and a_heretickeys.cpp to DECORATE. +- Changed the Soulsphere to be a real health item with the Dehacked + modifications made in d_dehacked.cpp as for most other items which + need to be adjusted. +- Added IF_BIGPOWERUP flag to AInventory to expose the RESPAWN_SUPER + dmflag to DECORATE. Also removed the now obsolete ShouldRespawn methods + from AInvulnerabilitySphere and ABlurSphere. +- Converted a_splashes.cpp to DECORATE. +- Converted most of a_debris.cpp to DECORATE. + May 1, 2006 - Made loading of Build's palette.dat automatic if it's found inside a loaded group file, but the -bpal parameter remains for now. diff --git a/src/actor.h b/src/actor.h index 48f898c8b..2c6a6123d 100644 --- a/src/actor.h +++ b/src/actor.h @@ -588,7 +588,7 @@ public: BYTE frame; // sprite frame to draw BYTE xscale, yscale; // Scaling values; 63 is normal size BYTE RenderStyle; // Style to draw this actor with - WORD renderflags; // Different rendering flags + DWORD renderflags; // Different rendering flags WORD picnum; // Draw this instead of sprite if != 0xffff SWORD TIDtoHate; // TID of things to hate (0 if none) DWORD effects; // [RH] see p_effect.h diff --git a/src/c_cmds.cpp b/src/c_cmds.cpp index cc0c26507..23c21d995 100644 --- a/src/c_cmds.cpp +++ b/src/c_cmds.cpp @@ -67,6 +67,7 @@ #include "r_sky.h" extern FILE *Logfile; +extern bool insave; CVAR (Bool, sv_cheats, false, CVAR_SERVERINFO | CVAR_LATCH) @@ -90,12 +91,12 @@ BOOL CheckCheatmode () CCMD (quit) { - exit (0); + if (!insave) exit (0); } CCMD (exit) { - exit (0); + if (!insave) exit (0); } /* diff --git a/src/d_dehacked.cpp b/src/d_dehacked.cpp index db5c29437..ac4cd1bf2 100644 --- a/src/d_dehacked.cpp +++ b/src/d_dehacked.cpp @@ -1628,19 +1628,38 @@ static int PatchMisc (int dummy) ABasicArmorPickup *armor; armor = static_cast (GetDefaultByName ("GreenArmor")); - armor->SaveAmount = 100 * deh.GreenAC; - armor->SavePercent = deh.GreenAC == 1 ? FRACUNIT/3 : FRACUNIT/2; + if (armor!=NULL) + { + armor->SaveAmount = 100 * deh.GreenAC; + armor->SavePercent = deh.GreenAC == 1 ? FRACUNIT/3 : FRACUNIT/2; + } armor = static_cast (GetDefaultByName ("BlueArmor")); - armor->SaveAmount = 100 * deh.BlueAC; - armor->SavePercent = deh.BlueAC == 1 ? FRACUNIT/3 : FRACUNIT/2; + if (armor!=NULL) + { + armor->SaveAmount = 100 * deh.BlueAC; + armor->SavePercent = deh.BlueAC == 1 ? FRACUNIT/3 : FRACUNIT/2; + } ABasicArmorBonus *barmor; barmor = static_cast (GetDefaultByName ("ArmorBonus")); - barmor->MaxSaveAmount = deh.MaxArmor; + if (barmor!=NULL) + { + barmor->MaxSaveAmount = deh.MaxArmor; + } AHealth *health; health = static_cast (GetDefaultByName ("HealthBonus")); - if (deh.MaxHealth != -1) health->MaxAmount = deh.MaxHealth; + if (deh.MaxHealth != -1 && health!=NULL) + { + health->MaxAmount = deh.MaxHealth; + } + + health = static_cast (GetDefaultByName ("Soulsphere")); + if (health!=NULL) + { + health->Amount = deh.SoulsphereHealth; + health->MaxAmount = deh.MaxSoulsphere; + } // 0xDD means "enable infighting" if (infighting == 0xDD) diff --git a/src/d_main.cpp b/src/d_main.cpp index 503d09144..79556b44e 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -149,6 +149,7 @@ EXTERN_CVAR (Bool, st_scale) extern BOOL gameisdead; extern bool demorecording; extern bool M_DemoNoPlay; // [RH] if true, then skip any demos in the loop +extern bool insave; extern cycle_t WallCycles, PlaneCycles, MaskedCycles, WallScanCycles; @@ -690,6 +691,7 @@ void D_ErrorCleanup () players[0].playerstate = PST_LIVE; gameaction = ga_fullconsole; menuactive = MENU_Off; + insave=false; } //========================================================================== diff --git a/src/decallib.cpp b/src/decallib.cpp index bf53705c4..f6f9fa907 100644 --- a/src/decallib.cpp +++ b/src/decallib.cpp @@ -1324,9 +1324,9 @@ DThinker *FDecalCombinerAnim::CreateThinker (DBaseDecal *actor, side_t *wall) co FDecalAnimator *FDecalLib::FindAnimator (const char *name) { - unsigned int i; + int i; - for (i = Animators.Size ()-1; i >= 0; --i) + for (i = (int)Animators.Size ()-1; i >= 0; --i) { if (stricmp (name, Animators[i]->Name) == 0) { diff --git a/src/g_doom/a_arachnotron.cpp b/src/g_doom/a_arachnotron.cpp index ae2f2fd53..27fb0ef1d 100644 --- a/src/g_doom/a_arachnotron.cpp +++ b/src/g_doom/a_arachnotron.cpp @@ -148,12 +148,6 @@ void A_BspiAttack (AActor *self) if (!self->target) return; - // [RH] Andy Baker's stealth monsters - if (self->flags & MF_STEALTH) - { - self->visdir = 1; - } - A_FaceTarget (self); // launch a missile diff --git a/src/g_doom/a_doomartifacts.cpp b/src/g_doom/a_doomartifacts.cpp index 63673f5c5..308664dc9 100644 --- a/src/g_doom/a_doomartifacts.cpp +++ b/src/g_doom/a_doomartifacts.cpp @@ -12,86 +12,6 @@ #include "p_enemy.h" #include "p_effect.h" -// Invulnerability Sphere --------------------------------------------------- - -class AInvulnerabilitySphere : public APowerupGiver -{ - DECLARE_ACTOR (AInvulnerabilitySphere, APowerupGiver) -public: - bool ShouldRespawn (); -protected: - const char *PickupMessage (); -}; - -FState AInvulnerabilitySphere::States[] = -{ - S_BRIGHT (PINV, 'A', 6, NULL , &States[1]), - S_BRIGHT (PINV, 'B', 6, NULL , &States[2]), - S_BRIGHT (PINV, 'C', 6, NULL , &States[3]), - S_BRIGHT (PINV, 'D', 6, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AInvulnerabilitySphere, Doom, 2022, 133) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_ALWAYSPICKUP) - PROP_Inventory_MaxAmount (0) - PROP_PowerupGiver_Powerup ("PowerInvulnerable") -END_DEFAULTS - -const char *AInvulnerabilitySphere::PickupMessage () -{ - return GStrings("GOTINVUL"); -} - -bool AInvulnerabilitySphere::ShouldRespawn () -{ - return Super::ShouldRespawn () && (dmflags & DF_RESPAWN_SUPER); -} - -// Soulsphere -------------------------------------------------------------- - -class ASoulsphere : public AInventory -{ - DECLARE_ACTOR (ASoulsphere, AInventory) -public: - virtual bool Use (bool pickup) - { - player_t *player = Owner->player; - if (player->health < deh.MaxSoulsphere) - { - player->health += deh.SoulsphereHealth; - if (player->health > deh.MaxSoulsphere) - player->health = deh.MaxSoulsphere; - player->mo->health = player->health; - } - return true; - } -protected: - virtual const char *PickupMessage () - { - return GStrings("GOTSUPER"); - } -}; - -FState ASoulsphere::States[] = -{ - S_BRIGHT (SOUL, 'A', 6, NULL , &States[1]), - S_BRIGHT (SOUL, 'B', 6, NULL , &States[2]), - S_BRIGHT (SOUL, 'C', 6, NULL , &States[3]), - S_BRIGHT (SOUL, 'D', 6, NULL , &States[4]), - S_BRIGHT (SOUL, 'C', 6, NULL , &States[5]), - S_BRIGHT (SOUL, 'B', 6, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (ASoulsphere, Doom, 2013, 25) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_ALWAYSPICKUP|IF_FANCYPICKUPSOUND) - PROP_Inventory_MaxAmount (0) - PROP_SpawnState (0) - PROP_Inventory_PickupSound ("misc/p_pkup") -END_DEFAULTS - // Mega sphere -------------------------------------------------------------- class AMegasphere : public APowerupGiver @@ -181,124 +101,3 @@ IMPLEMENT_ACTOR (ABerserk, Doom, 2023, 134) PROP_PowerupGiver_Powerup ("PowerStrength") END_DEFAULTS -// Invisibility ------------------------------------------------------------- - -class ABlurSphere : public APowerupGiver -{ - DECLARE_ACTOR (ABlurSphere, APowerupGiver) -public: - virtual void PostBeginPlay () - { - Super::PostBeginPlay (); - effects |= FX_VISIBILITYPULSE; - visdir = -1; - } - virtual bool ShouldRespawn () - { - return Super::ShouldRespawn () && (dmflags & DF_RESPAWN_SUPER); - } -protected: - virtual const char *PickupMessage () - { - return GStrings("GOTINVIS"); - } -}; - -FState ABlurSphere::States[] = -{ - S_BRIGHT (PINS, 'A', 6, NULL , &States[1]), - S_BRIGHT (PINS, 'B', 6, NULL , &States[2]), - S_BRIGHT (PINS, 'C', 6, NULL , &States[3]), - S_BRIGHT (PINS, 'D', 6, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (ABlurSphere, Doom, 2024, 135) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_RenderStyle (STYLE_Translucent) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_ALWAYSPICKUP) - PROP_Inventory_MaxAmount (0) - PROP_PowerupGiver_Powerup ("PowerInvisibility") -END_DEFAULTS - -// Radiation suit (aka iron feet) ------------------------------------------- - -class ARadSuit : public APowerupGiver -{ - DECLARE_ACTOR (ARadSuit, APowerupGiver) -protected: - virtual const char *PickupMessage () - { - return GStrings("GOTSUIT"); - } -}; - -FState ARadSuit::States[] = -{ - S_BRIGHT (SUIT, 'A', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ARadSuit, Doom, 2025, 136) - PROP_HeightFixed (46) - PROP_Flags (MF_SPECIAL) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_ALWAYSPICKUP) - PROP_Inventory_MaxAmount (0) - PROP_PowerupGiver_Powerup ("PowerIronFeet") -END_DEFAULTS - -// infrared ----------------------------------------------------------------- - -class AInfrared : public APowerupGiver -{ - DECLARE_ACTOR (AInfrared, APowerupGiver) -protected: - virtual const char *PickupMessage () - { - return GStrings("GOTVISOR"); - } -}; - -FState AInfrared::States[] = -{ - S_BRIGHT (PVIS, 'A', 6, NULL , &States[1]), - S_NORMAL (PVIS, 'B', 6, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AInfrared, Doom, 2045, 138) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_ALWAYSPICKUP) - PROP_Inventory_MaxAmount (0) - PROP_PowerupGiver_Powerup ("PowerLightAmp") -END_DEFAULTS - -// Allmap ------------------------------------------------------------------- - -class AAllmap : public AMapRevealer -{ - DECLARE_ACTOR (AAllmap, AMapRevealer) -protected: - const char *PickupMessage () - { - return GStrings("GOTMAP"); - } -}; - -FState AAllmap::States[] = -{ - S_BRIGHT (PMAP, 'A', 6, NULL , &States[1]), - S_BRIGHT (PMAP, 'B', 6, NULL , &States[2]), - S_BRIGHT (PMAP, 'C', 6, NULL , &States[3]), - S_BRIGHT (PMAP, 'D', 6, NULL , &States[4]), - S_BRIGHT (PMAP, 'C', 6, NULL , &States[5]), - S_BRIGHT (PMAP, 'B', 6, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AAllmap, Doom, 2026, 137) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Inventory_FlagsSet (IF_ALWAYSPICKUP|IF_FANCYPICKUPSOUND) - PROP_Inventory_MaxAmount (0) - PROP_SpawnState (0) - PROP_Inventory_PickupSound ("misc/p_pkup") -END_DEFAULTS diff --git a/src/g_doom/a_painelemental.cpp b/src/g_doom/a_painelemental.cpp index e397b36f9..f8ced5858 100644 --- a/src/g_doom/a_painelemental.cpp +++ b/src/g_doom/a_painelemental.cpp @@ -222,7 +222,7 @@ void A_DualPainAttack (AActor *self) void A_PainDie (AActor *self) { - if (self->IsFriend (self->target)) + if (self->target != NULL && self->IsFriend (self->target)) { // And I thought you were my friend! self->flags &= ~MF_FRIENDLY; } diff --git a/src/g_game.cpp b/src/g_game.cpp index 1ae89f1e1..e8d76d5b8 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -113,6 +113,7 @@ bool sendpause; // send a pause event next tic bool sendsave; // send a save event next tic bool sendturn180; // [RH] send a 180 degree turn next tic bool usergame; // ok to save / end game +bool insave; // Game is saving - used to block exit commands BOOL timingdemo; // if true, exit with report on completion BOOL nodrawers; // for comparative timing purposes @@ -1153,6 +1154,7 @@ void G_PlayerReborn (int player) { APowerup *invul = static_cast(actor->GiveInventoryType (RUNTIME_CLASS(APowerInvulnerable))); invul->EffectTics = 2*TICRATE; + invul->BlendColor = 0; // don't mess with the view actor->effects |= FX_RESPAWNINVUL; // [RH] special effect } } @@ -1959,6 +1961,7 @@ void G_DoSaveGame (bool okForQuicksave) return; } + insave=true; G_SnapshotLevel (); FILE *stdfile = fopen (savegamefile.GetChars(), "wb"); @@ -1968,6 +1971,7 @@ void G_DoSaveGame (bool okForQuicksave) Printf ("Could not create savegame '%s'\n", savegamefile.GetChars()); savegamefile = ""; gameaction = ga_nothing; + insave = false; return; } @@ -2038,6 +2042,7 @@ void G_DoSaveGame (bool okForQuicksave) BackupSaveName = savegamefile; savegamefile = ""; + insave = false; } diff --git a/src/g_heretic/a_hereticarmor.cpp b/src/g_heretic/a_hereticarmor.cpp deleted file mode 100644 index 7052581d7..000000000 --- a/src/g_heretic/a_hereticarmor.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "info.h" -#include "a_pickups.h" -#include "d_player.h" -#include "gstrings.h" -#include "p_local.h" -#include "gi.h" - -// Silver Shield (Shield1) -------------------------------------------------- - -class ASilverShield : public ABasicArmorPickup -{ - DECLARE_ACTOR (ASilverShield, ABasicArmorPickup) -protected: - virtual const char *PickupMessage () - { - return GStrings("TXT_ITEMSHIELD1"); - } -}; - -FState ASilverShield::States[] = -{ - S_NORMAL (SHLD, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASilverShield, Heretic, 85, 68) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOATBOB) - PROP_BasicArmorPickup_SavePercent (FRACUNIT/2) - PROP_BasicArmorPickup_SaveAmount (100) - PROP_SpawnState (0) - PROP_Inventory_Icon ("SHLDA0") -END_DEFAULTS - -// Enchanted shield (Shield2) ----------------------------------------------- - -class AEnchantedShield : public ABasicArmorPickup -{ - DECLARE_ACTOR (AEnchantedShield, ABasicArmorPickup) -protected: - virtual const char *PickupMessage () - { - return GStrings("TXT_ITEMSHIELD2"); - } -}; - -FState AEnchantedShield::States[] = -{ - S_NORMAL (SHD2, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AEnchantedShield, Heretic, 31, 69) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOATBOB) - PROP_BasicArmorPickup_SavePercent (FRACUNIT*3/4) - PROP_BasicArmorPickup_SaveAmount (200) - PROP_SpawnState (0) - PROP_Inventory_Icon ("SHD2A0") -END_DEFAULTS diff --git a/src/g_heretic/a_hereticartifacts.cpp b/src/g_heretic/a_hereticartifacts.cpp index efca9c302..4caf8ad54 100644 --- a/src/g_heretic/a_hereticartifacts.cpp +++ b/src/g_heretic/a_hereticartifacts.cpp @@ -6,37 +6,6 @@ #include "p_enemy.h" #include "s_sound.h" -// Invisibility ------------------------------------------------------------- - -class AArtiInvisibility : public APowerupGiver -{ - DECLARE_ACTOR (AArtiInvisibility, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AArtiInvisibility::States[] = -{ - S_BRIGHT (INVS, 'A', 350, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiInvisibility, Heretic, 75, 135) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_RenderStyle (STYLE_Translucent) - PROP_Alpha (HR_SHADOW) - PROP_SpawnState (0) - PROP_Inventory_RespawnTics (30+4200) - PROP_Inventory_FlagsSet (IF_PICKUPFLASH) - PROP_Inventory_Icon ("ARTIINVS") - PROP_PowerupGiver_Powerup ("PowerGhost") -END_DEFAULTS - -const char *AArtiInvisibility::PickupMessage () -{ - return GStrings("TXT_ARTIINVISIBILITY"); -} - // Tome of power ------------------------------------------------------------ class AArtiTomeOfPower : public APowerupGiver diff --git a/src/g_heretic/a_heretickeys.cpp b/src/g_heretic/a_heretickeys.cpp index 3231bf369..c8f83bea6 100644 --- a/src/g_heretic/a_heretickeys.cpp +++ b/src/g_heretic/a_heretickeys.cpp @@ -5,106 +5,6 @@ #include "p_local.h" #include "a_keys.h" -IMPLEMENT_STATELESS_ACTOR (AHereticKey, Heretic, -1, 0) - PROP_Flags (MF_SPECIAL|MF_NOTDMATCH) - PROP_RadiusFixed (20) - PROP_HeightFixed (16) -END_DEFAULTS - -// Green key ------------------------------------------------------------ - -class AKeyGreen : public AHereticKey -{ - DECLARE_ACTOR (AKeyGreen, AHereticKey) -public: - const char *PickupMessage (); -}; - -FState AKeyGreen::States[] = -{ - S_BRIGHT (AKYY, 'A', 3, NULL , &States[1]), - S_BRIGHT (AKYY, 'B', 3, NULL , &States[2]), - S_BRIGHT (AKYY, 'C', 3, NULL , &States[3]), - S_BRIGHT (AKYY, 'D', 3, NULL , &States[4]), - S_BRIGHT (AKYY, 'E', 3, NULL , &States[5]), - S_BRIGHT (AKYY, 'F', 3, NULL , &States[6]), - S_BRIGHT (AKYY, 'G', 3, NULL , &States[7]), - S_BRIGHT (AKYY, 'H', 3, NULL , &States[8]), - S_BRIGHT (AKYY, 'I', 3, NULL , &States[9]), - S_BRIGHT (AKYY, 'J', 3, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AKeyGreen, Heretic, 73, 86) - PROP_SpawnState (0) -END_DEFAULTS - -const char *AKeyGreen::PickupMessage () -{ - return GStrings("TXT_GOTGREENKEY"); -} - -// Blue key ----------------------------------------------------------------- - -class AKeyBlue : public AHereticKey -{ - DECLARE_ACTOR (AKeyBlue, AHereticKey) -public: - const char *PickupMessage (); -}; - -FState AKeyBlue::States[] = -{ - S_BRIGHT (BKYY, 'A', 3, NULL , &States[1]), - S_BRIGHT (BKYY, 'B', 3, NULL , &States[2]), - S_BRIGHT (BKYY, 'C', 3, NULL , &States[3]), - S_BRIGHT (BKYY, 'D', 3, NULL , &States[4]), - S_BRIGHT (BKYY, 'E', 3, NULL , &States[5]), - S_BRIGHT (BKYY, 'F', 3, NULL , &States[6]), - S_BRIGHT (BKYY, 'G', 3, NULL , &States[7]), - S_BRIGHT (BKYY, 'H', 3, NULL , &States[8]), - S_BRIGHT (BKYY, 'I', 3, NULL , &States[9]), - S_BRIGHT (BKYY, 'J', 3, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AKeyBlue, Heretic, 79, 85) - PROP_SpawnState (0) -END_DEFAULTS - -const char *AKeyBlue::PickupMessage () -{ - return GStrings("TXT_GOTBLUEKEY"); -} - -// Yellow key --------------------------------------------------------------- - -class AKeyYellow : public AHereticKey -{ - DECLARE_ACTOR (AKeyYellow, AHereticKey) -public: - const char *PickupMessage (); -}; - -FState AKeyYellow::States[] = -{ - S_BRIGHT (CKYY, 'A', 3, NULL , &States[1]), - S_BRIGHT (CKYY, 'B', 3, NULL , &States[2]), - S_BRIGHT (CKYY, 'C', 3, NULL , &States[3]), - S_BRIGHT (CKYY, 'D', 3, NULL , &States[4]), - S_BRIGHT (CKYY, 'E', 3, NULL , &States[5]), - S_BRIGHT (CKYY, 'F', 3, NULL , &States[6]), - S_BRIGHT (CKYY, 'G', 3, NULL , &States[7]), - S_BRIGHT (CKYY, 'H', 3, NULL , &States[8]), - S_BRIGHT (CKYY, 'I', 3, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (AKeyYellow, Heretic, 80, 87) - PROP_SpawnState (0) -END_DEFAULTS - -const char *AKeyYellow::PickupMessage () -{ - return GStrings("TXT_GOTYELLOWKEY"); -} // --- Key gizmos ----------------------------------------------------------- diff --git a/src/g_heretic/a_hereticmisc.cpp b/src/g_heretic/a_hereticmisc.cpp index 0ffb03fba..ad543de0d 100644 --- a/src/g_heretic/a_hereticmisc.cpp +++ b/src/g_heretic/a_hereticmisc.cpp @@ -357,31 +357,6 @@ void A_AccTeleGlitter (AActor *actor) } } -// Super map ---------------------------------------------------------------- - -class ASuperMap : public AMapRevealer -{ - DECLARE_ACTOR (ASuperMap, AMapRevealer) -protected: - const char *PickupMessage () - { - return GStrings("TXT_ITEMSUPERMAP"); - } -}; - -FState ASuperMap::States[] = -{ -#define S_ITEM_SPMP 0 - S_NORMAL (SPMP, 'A', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ASuperMap, Heretic, 35, 137) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - - PROP_SpawnState (0) -END_DEFAULTS - // --- Volcano -------------------------------------------------------------- void A_VolcanoSet (AActor *); diff --git a/src/g_hexen/a_flame.cpp b/src/g_hexen/a_flame.cpp deleted file mode 100644 index 449c73ace..000000000 --- a/src/g_hexen/a_flame.cpp +++ /dev/null @@ -1,207 +0,0 @@ -#include "actor.h" -#include "info.h" -#include "a_action.h" -#include "s_sound.h" - -void A_FlameCheck (AActor *); - -// Temp Small Flame -------------------------------------------------------- - -class AFlameSmallTemp : public AActor -{ - DECLARE_ACTOR (AFlameSmallTemp, AActor) -}; - -FState AFlameSmallTemp::States[] = -{ - S_BRIGHT (FFSM, 'A', 3, NULL , &States[1]), - S_BRIGHT (FFSM, 'B', 3, NULL , &States[2]), - S_BRIGHT (FFSM, 'C', 2, A_FlameCheck , &States[3]), - S_BRIGHT (FFSM, 'C', 2, NULL , &States[4]), - S_BRIGHT (FFSM, 'D', 3, NULL , &States[5]), - S_BRIGHT (FFSM, 'E', 3, A_FlameCheck , &States[0]), -}; - -IMPLEMENT_ACTOR (AFlameSmallTemp, Hexen, 10500, 96) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (0) -END_DEFAULTS - -// Temp Large Flame --------------------------------------------------------- - -class AFlameLargeTemp : public AActor -{ - DECLARE_ACTOR (AFlameLargeTemp, AActor) -}; - -FState AFlameLargeTemp::States[] = -{ - S_BRIGHT (FFLG, 'A', 4, NULL , &States[1]), - S_BRIGHT (FFLG, 'B', 4, A_FlameCheck , &States[2]), - S_BRIGHT (FFLG, 'C', 4, NULL , &States[3]), - S_BRIGHT (FFLG, 'D', 4, A_FlameCheck , &States[4]), - S_BRIGHT (FFLG, 'E', 4, NULL , &States[5]), - S_BRIGHT (FFLG, 'F', 4, A_FlameCheck , &States[6]), - S_BRIGHT (FFLG, 'G', 4, NULL , &States[7]), - S_BRIGHT (FFLG, 'H', 4, A_FlameCheck , &States[8]), - S_BRIGHT (FFLG, 'I', 4, NULL , &States[9]), - S_BRIGHT (FFLG, 'J', 4, A_FlameCheck , &States[10]), - S_BRIGHT (FFLG, 'K', 4, NULL , &States[11]), - S_BRIGHT (FFLG, 'L', 4, A_FlameCheck , &States[12]), - S_BRIGHT (FFLG, 'M', 4, NULL , &States[13]), - S_BRIGHT (FFLG, 'N', 4, A_FlameCheck , &States[14]), - S_BRIGHT (FFLG, 'O', 4, NULL , &States[15]), - S_BRIGHT (FFLG, 'P', 4, A_FlameCheck , &States[4]), -}; - -IMPLEMENT_ACTOR (AFlameLargeTemp, Hexen, 10502, 98) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (0) -END_DEFAULTS - -// Small Flame -------------------------------------------------------------- - -class AFlameSmall : public AActor -{ - DECLARE_ACTOR (AFlameSmall, AActor) -public: - void Activate (AActor *activator); - void Deactivate (AActor *activator); -}; - -FState AFlameSmall::States[] = -{ -#define S_FLAME_SMALL1 0 - S_BRIGHT (FFSM, 'A', 3, NULL , &States[S_FLAME_SMALL1+1]), - S_BRIGHT (FFSM, 'A', 3, A_UnHideThing , &States[S_FLAME_SMALL1+2]), - S_BRIGHT (FFSM, 'A', 3, NULL , &States[S_FLAME_SMALL1+3]), - S_BRIGHT (FFSM, 'B', 3, NULL , &States[S_FLAME_SMALL1+4]), - S_BRIGHT (FFSM, 'C', 3, NULL , &States[S_FLAME_SMALL1+5]), - S_BRIGHT (FFSM, 'D', 3, NULL , &States[S_FLAME_SMALL1+6]), - S_BRIGHT (FFSM, 'E', 3, NULL , &States[S_FLAME_SMALL1+2]), - -#define S_FLAME_SDORM1 (S_FLAME_SMALL1+7) - S_NORMAL (FFSM, 'A', 2, NULL , &States[S_FLAME_SDORM1+1]), - S_NORMAL (FFSM, 'B', 2, A_HideThing , &States[S_FLAME_SDORM1+2]), - S_NORMAL (FFSM, 'C', 200, NULL , &States[S_FLAME_SDORM1+2]), - -}; - -IMPLEMENT_ACTOR (AFlameSmall, Hexen, 10501, 97) - PROP_Flags2 (MF2_NOTELEPORT|RF_INVISIBLE) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (S_FLAME_SMALL1) -END_DEFAULTS - -void AFlameSmall::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); - SetState (&States[S_FLAME_SMALL1]); -} - -void AFlameSmall::Deactivate (AActor *activator) -{ - Super::Deactivate (activator); - SetState (&States[S_FLAME_SDORM1]); -} - -// Large Flame -------------------------------------------------------------- - -class AFlameLarge : public AActor -{ - DECLARE_ACTOR (AFlameLarge, AActor) -public: - void Activate (AActor *activator); - void Deactivate (AActor *activator); -}; - -FState AFlameLarge::States[] = -{ -#define S_FLAME_LARGE1 0 - S_BRIGHT (FFLG, 'A', 2, NULL , &States[S_FLAME_LARGE1+1]), - S_BRIGHT (FFLG, 'A', 2, A_UnHideThing , &States[S_FLAME_LARGE1+2]), - S_BRIGHT (FFLG, 'A', 4, NULL , &States[S_FLAME_LARGE1+3]), - S_BRIGHT (FFLG, 'B', 4, NULL , &States[S_FLAME_LARGE1+4]), - S_BRIGHT (FFLG, 'C', 4, NULL , &States[S_FLAME_LARGE1+5]), - S_BRIGHT (FFLG, 'D', 4, NULL , &States[S_FLAME_LARGE1+6]), - S_BRIGHT (FFLG, 'E', 4, NULL , &States[S_FLAME_LARGE1+7]), - S_BRIGHT (FFLG, 'F', 4, NULL , &States[S_FLAME_LARGE1+8]), - S_BRIGHT (FFLG, 'G', 4, NULL , &States[S_FLAME_LARGE1+9]), - S_BRIGHT (FFLG, 'H', 4, NULL , &States[S_FLAME_LARGE1+10]), - S_BRIGHT (FFLG, 'I', 4, NULL , &States[S_FLAME_LARGE1+11]), - S_BRIGHT (FFLG, 'J', 4, NULL , &States[S_FLAME_LARGE1+12]), - S_BRIGHT (FFLG, 'K', 4, NULL , &States[S_FLAME_LARGE1+13]), - S_BRIGHT (FFLG, 'L', 4, NULL , &States[S_FLAME_LARGE1+14]), - S_BRIGHT (FFLG, 'M', 4, NULL , &States[S_FLAME_LARGE1+15]), - S_BRIGHT (FFLG, 'N', 4, NULL , &States[S_FLAME_LARGE1+16]), - S_BRIGHT (FFLG, 'O', 4, NULL , &States[S_FLAME_LARGE1+17]), - S_BRIGHT (FFLG, 'P', 4, NULL , &States[S_FLAME_LARGE1+6]), - -#define S_FLAME_LDORM1 (S_FLAME_LARGE1+18) - S_NORMAL (FFLG, 'D', 2, NULL , &States[S_FLAME_LDORM1+1]), - S_NORMAL (FFLG, 'C', 2, NULL , &States[S_FLAME_LDORM1+2]), - S_NORMAL (FFLG, 'B', 2, NULL , &States[S_FLAME_LDORM1+3]), - S_NORMAL (FFLG, 'A', 2, A_HideThing , &States[S_FLAME_LDORM1+4]), - S_NORMAL (FFLG, 'A', 200, NULL , &States[S_FLAME_LDORM1+4]), -}; - -IMPLEMENT_ACTOR (AFlameLarge, Hexen, 10503, 99) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderFlags (RF_INVISIBLE) - PROP_RenderStyle (STYLE_Add) - PROP_SpawnState (S_FLAME_LARGE1) -END_DEFAULTS - -void AFlameLarge::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); - SetState (&States[S_FLAME_LARGE1]); -} - -void AFlameLarge::Deactivate (AActor *activator) -{ - Super::Deactivate (activator); - SetState (&States[S_FLAME_LDORM1]); -} - -//=========================================================================== -// -// A_FlameCheck -// -//=========================================================================== - -void A_FlameCheck (AActor *actor) -{ - if (!actor->args[0]--) // Called every 8 tics - { - actor->Destroy (); - } -} - - - -//=========================================================================== -// -// Hexen uses 2 different spawn IDs for these actors -// -//=========================================================================== - -class AFlameSmall2 : public AFlameSmall -{ - DECLARE_ACTOR (AFlameSmall2, AFlameSmall) -}; - -IMPLEMENT_STATELESS_ACTOR (AFlameSmall2, Hexen, -1, 66) -END_DEFAULTS - -class AFlameLarge2 : public AFlameLarge -{ - DECLARE_ACTOR (AFlameLarge2, AFlameLarge) -}; - -IMPLEMENT_STATELESS_ACTOR (AFlameLarge2, Hexen, -1, 67) -END_DEFAULTS diff --git a/src/g_hexen/a_hexenspecialdecs.cpp b/src/g_hexen/a_hexenspecialdecs.cpp index 191a132d3..b0bd013da 100644 --- a/src/g_hexen/a_hexenspecialdecs.cpp +++ b/src/g_hexen/a_hexenspecialdecs.cpp @@ -870,27 +870,6 @@ void AZShrub2::GetExplodeParms (int &damage, int &distance, bool &hurtSrc) distance = 64; } -//=========================================================================== -// -// A_TreeDeath -// -//=========================================================================== - -void A_TreeDeath (AActor *actor) -{ - if (actor->DamageType != MOD_FIRE) - { - actor->height <<= 2; - actor->flags |= MF_SHOOTABLE; - actor->flags &= ~(MF_CORPSE+MF_DROPOFF); - actor->health = 35; - return; - } - else - { - actor->SetState (actor->MeleeState); - } -} // Poison Shroom ------------------------------------------------------------ diff --git a/src/g_raven/a_ravenartifacts.cpp b/src/g_raven/a_ravenartifacts.cpp deleted file mode 100644 index a11f36211..000000000 --- a/src/g_raven/a_ravenartifacts.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include "info.h" -#include "a_pickups.h" -#include "a_artifacts.h" -#include "gstrings.h" -#include "p_local.h" -#include "s_sound.h" -#include "gi.h" - -// Health ------------------------------------------------------------------- - -class AArtiHealth : public AHealthPickup -{ - DECLARE_ACTOR (AArtiHealth, AHealthPickup) -public: - const char *PickupMessage (); -}; - -FState AArtiHealth::States[] = -{ - S_NORMAL (PTN2, 'A', 4, NULL, &States[1]), - S_NORMAL (PTN2, 'B', 4, NULL, &States[2]), - S_NORMAL (PTN2, 'C', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiHealth, Raven, 82, 24) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnHealth (25) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_PICKUPFLASH|IF_FANCYPICKUPSOUND) - PROP_Inventory_Icon ("ARTIPTN2") - PROP_Inventory_PickupSound ("misc/p_pkup") -END_DEFAULTS - -const char *AArtiHealth::PickupMessage () -{ - return GStrings("TXT_ARTIHEALTH"); -} - -// Super health ------------------------------------------------------------- - -class AArtiSuperHealth : public AHealthPickup -{ - DECLARE_ACTOR (AArtiSuperHealth, AHealthPickup) -public: - const char *PickupMessage (); -}; - -FState AArtiSuperHealth::States[] = -{ - S_NORMAL (SPHL, 'A', 350, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiSuperHealth, Raven, 32, 25) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_SpawnHealth (100) - PROP_Inventory_FlagsSet (IF_PICKUPFLASH|IF_FANCYPICKUPSOUND) - PROP_Inventory_Icon ("ARTISPHL") - PROP_Inventory_PickupSound ("misc/p_pkup") -END_DEFAULTS - -const char *AArtiSuperHealth::PickupMessage () -{ - return GStrings("TXT_ARTISUPERHEALTH"); -} - -// Flight ------------------------------------------------------------------- - -class AArtiFly : public APowerupGiver -{ - DECLARE_ACTOR (AArtiFly, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AArtiFly::States[] = -{ - S_NORMAL (SOAR, 'A', 5, NULL, &States[1]), - S_NORMAL (SOAR, 'B', 5, NULL, &States[2]), - S_NORMAL (SOAR, 'C', 5, NULL, &States[3]), - S_NORMAL (SOAR, 'B', 5, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiFly, Raven, 83, 15) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_Inventory_RespawnTics (30+4200) - PROP_Inventory_FlagsSet (IF_INTERHUBSTRIP|IF_PICKUPFLASH) - PROP_Inventory_Icon ("ARTISOAR") - PROP_PowerupGiver_Powerup ("PowerFlight") -END_DEFAULTS - -const char *AArtiFly::PickupMessage () -{ - return GStrings("TXT_ARTIFLY"); -} - -// Invulnerability ---------------------------------------------------------- - -class AArtiInvulnerability : public APowerupGiver -{ - DECLARE_ACTOR (AArtiInvulnerability, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AArtiInvulnerability::States[] = -{ - S_NORMAL (INVU, 'A', 3, NULL, &States[1]), - S_NORMAL (INVU, 'B', 3, NULL, &States[2]), - S_NORMAL (INVU, 'C', 3, NULL, &States[3]), - S_NORMAL (INVU, 'D', 3, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiInvulnerability, Raven, 84, 133) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_Inventory_RespawnTics (30+4200) - PROP_Inventory_FlagsSet (IF_PICKUPFLASH) - PROP_Inventory_Icon ("ARTIINVU") - PROP_PowerupGiver_Powerup ("PowerInvulnerable") -END_DEFAULTS - -const char *AArtiInvulnerability::PickupMessage () -{ - if (gameinfo.gametype == GAME_Hexen) - { - return GStrings("TXT_ARTIINVULNERABILITY2"); - } - else - { - return GStrings("TXT_ARTIINVULNERABILITY"); - } -} - -// Torch -------------------------------------------------------------------- - -class AArtiTorch : public APowerupGiver -{ - DECLARE_ACTOR (AArtiTorch, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AArtiTorch::States[] = -{ - S_BRIGHT (TRCH, 'A', 3, NULL, &States[1]), - S_BRIGHT (TRCH, 'B', 3, NULL, &States[2]), - S_BRIGHT (TRCH, 'C', 3, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AArtiTorch, Raven, 33, 73) - PROP_Flags (MF_SPECIAL|MF_COUNTITEM) - PROP_Flags2 (MF2_FLOATBOB) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_PICKUPFLASH) - PROP_Inventory_Icon ("ARTITRCH") - PROP_PowerupGiver_Powerup ("PowerTorch") -END_DEFAULTS - -const char *AArtiTorch::PickupMessage () -{ - return GStrings("TXT_ARTITORCH"); -} diff --git a/src/g_raven/a_ravenhealth.cpp b/src/g_raven/a_ravenhealth.cpp deleted file mode 100644 index e58e49cee..000000000 --- a/src/g_raven/a_ravenhealth.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "info.h" -#include "a_pickups.h" -#include "d_player.h" -#include "gstrings.h" -#include "p_local.h" - -// Crystal vial ------------------------------------------------------------- - -class ACrystalVial : public AHealth -{ - DECLARE_ACTOR (ACrystalVial, AHealth) -protected: - virtual const char *PickupMessage () - { - return GStrings("TXT_ITEMHEALTH"); - } -}; - -FState ACrystalVial::States[] = -{ - S_NORMAL (PTN1, 'A', 3, NULL , &States[1]), - S_NORMAL (PTN1, 'B', 3, NULL , &States[2]), - S_NORMAL (PTN1, 'C', 3, NULL , &States[0]) -}; - -IMPLEMENT_ACTOR (ACrystalVial, Raven, 81, 23) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOATBOB) - PROP_Inventory_Amount (10) - PROP_SpawnState (0) -END_DEFAULTS diff --git a/src/g_shared/a_artifacts.cpp b/src/g_shared/a_artifacts.cpp index 2bf099d5b..3f4721834 100644 --- a/src/g_shared/a_artifacts.cpp +++ b/src/g_shared/a_artifacts.cpp @@ -44,17 +44,18 @@ bool APowerupGiver::Use (bool pickup) { APowerup *power = static_cast (Spawn (PowerupType, 0, 0, 0)); + if (EffectTics != 0) + { + power->EffectTics = EffectTics; + } + if (BlendColor != 0) + { + power->BlendColor = BlendColor; + } + power->ItemFlags |= ItemFlags & IF_ALWAYSPICKUP; if (power->TryPickup (Owner)) { - if (EffectTics != 0) - { - power->EffectTics = EffectTics; - } - if (BlendColor != 0) - { - power->BlendColor = BlendColor; - } return true; } power->GoAwayAndDie (); @@ -91,6 +92,14 @@ void APowerup::Tick () else if (EffectTics > 0) { DoEffect (); + + if (EffectTics > BLINKTHRESHOLD || (EffectTics & 8)) + { + if (BlendColor == INVERSECOLOR) Owner->player->fixedcolormap = INVERSECOLORMAP; + else if (BlendColor == GOLDCOLOR) Owner->player->fixedcolormap = GOLDCOLORMAP; + } + else Owner->player->fixedcolormap = 0; + if (--EffectTics == 0) { Destroy (); @@ -118,7 +127,10 @@ void APowerup::Serialize (FArchive &arc) PalEntry APowerup::GetBlend () { - if (EffectTics <= 4*32 && !(EffectTics & 8)) + if (EffectTics <= BLINKTHRESHOLD && !(EffectTics & 8)) + return 0; + + if (BlendColor == INVERSECOLOR || BlendColor == GOLDCOLOR) return 0; return BlendColor; @@ -213,7 +225,12 @@ bool APowerup::HandlePickup (AInventory *item) return true; } // Only increase the EffectTics, not decrease it. - EffectTics = MAX (EffectTics, power->EffectTics); + // Color also gets transferred only when the new item has an effect. + if (power->EffectTics > EffectTics) + { + EffectTics = power->EffectTics; + BlendColor = power->BlendColor; + } power->ItemFlags |= IF_PICKUPGOOD; return true; } @@ -259,6 +276,25 @@ IMPLEMENT_STATELESS_ACTOR (APowerInvulnerable, Any, -1, 0) PROP_Inventory_Icon ("SPSHLD0") END_DEFAULTS +// Need to set the default for each game here +AT_GAME_SET(PowerInvulnerable) +{ + APowerInvulnerable * invul = GetDefault(); + switch (gameinfo.gametype) + { + case GAME_Doom: + case GAME_Strife: + invul->BlendColor = INVERSECOLOR; + break; + + case GAME_Heretic: + invul->BlendColor = GOLDCOLOR; + break; + + default: + break; + } +} //=========================================================================== // // APowerInvulnerable :: InitEffect @@ -281,19 +317,6 @@ void APowerInvulnerable::InitEffect () void APowerInvulnerable::DoEffect () { Owner->player->mo->SpecialInvulnerabilityHandling (APlayerPawn::INVUL_Active); - if (gameinfo.gametype != GAME_Hexen) - { - if ((EffectTics > BLINKTHRESHOLD || (EffectTics & 8)) && - !(Owner->player->mo->effects & FX_RESPAWNINVUL) && - 0 == BlendColor.a) // [RH] No special colormap if there is a blend - { - Owner->player->fixedcolormap = NUMCOLORMAPS; - } - else - { - Owner->player->fixedcolormap = 0; - } - } } //=========================================================================== diff --git a/src/g_shared/a_artifacts.h b/src/g_shared/a_artifacts.h index cb2bb044d..24c6b6e49 100644 --- a/src/g_shared/a_artifacts.h +++ b/src/g_shared/a_artifacts.h @@ -4,6 +4,9 @@ #include "farchive.h" #include "a_pickups.h" +#define INVERSECOLOR 0x00345678 +#define GOLDCOLOR 0x009abcde + #define STREAM_ENUM(e) \ inline FArchive &operator<< (FArchive &arc, e &i) \ { \ diff --git a/src/g_shared/a_debris.cpp b/src/g_shared/a_debris.cpp index 76a584d0f..2a7550d25 100644 --- a/src/g_shared/a_debris.cpp +++ b/src/g_shared/a_debris.cpp @@ -4,115 +4,6 @@ static FRandom pr_dirt ("SpawnDirt"); -// Convenient macros -------------------------------------------------------- - -#define _DEBCOMMON(cls,parent,ns,dstate,sid) \ - class cls : public parent { DECLARE_STATELESS_ACTOR (cls, parent) static FState States[ns]; }; \ - IMPLEMENT_ACTOR (cls, Any, -1, sid) \ - PROP_DeathState (dstate) \ - PROP_SpawnState (0) - -#define _DEBSTARTSTATES(cls,ns) \ - END_DEFAULTS FState cls::States[ns] = - -#define DEBRIS(cls,spawnnum,ns,dstate) \ - _DEBCOMMON(cls,AActor,ns,dstate,spawnnum) \ - PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE) \ - PROP_Flags2 (MF2_NOTELEPORT) \ - _DEBSTARTSTATES(cls,ns) - -#define SHARD(cls,spawnnum,ns,dstate) \ - _DEBCOMMON(cls,AGlassShard,ns,dstate,spawnnum) \ - PROP_RadiusFixed (5) \ - PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY) \ - PROP_Flags2 (MF2_NOTELEPORT|MF2_HEXENBOUNCE) \ - _DEBSTARTSTATES(cls,ns) - -// Rocks -------------------------------------------------------------------- - -#define S_ROCK1 0 -#define S_ROCK1_D (S_ROCK1+1) - -DEBRIS (ARock1, 41, 2, S_ROCK1_D) -{ - S_NORMAL (ROKK, 'A', 20, NULL, &States[S_ROCK1]), - S_NORMAL (ROKK, 'A', 10, NULL, NULL) -}; - -#define S_ROCK2 0 -#define S_ROCK2_D (S_ROCK2+1) - -DEBRIS (ARock2, 42, 2, S_ROCK2_D) -{ - S_NORMAL (ROKK, 'B', 20, NULL, &States[S_ROCK2]), - S_NORMAL (ROKK, 'B', 10, NULL, NULL) -}; - -#define S_ROCK3 0 -#define S_ROCK3_D (S_ROCK3+1) - -DEBRIS (ARock3, 43, 2, S_ROCK3_D) -{ - S_NORMAL (ROKK, 'C', 20, NULL, &States[S_ROCK3+0]), - S_NORMAL (ROKK, 'C', 10, NULL, NULL) -}; - -// Dirt --------------------------------------------------------------------- - -#define S_DIRT1 0 -#define S_DIRT1_D (S_DIRT1+1) - -DEBRIS (ADirt1, 44, 2, S_DIRT1_D) -{ - S_NORMAL (ROKK, 'D', 20, NULL, &States[S_DIRT1]), - S_NORMAL (ROKK, 'D', 10, NULL, NULL) -}; - -#define S_DIRT2 0 -#define S_DIRT2_D (S_DIRT2+1) - -DEBRIS (ADirt2, 45, 2, S_DIRT2_D) -{ - S_NORMAL (ROKK, 'E', 20, NULL, &States[S_DIRT2]), - S_NORMAL (ROKK, 'E', 10, NULL, NULL) -}; - -#define S_DIRT3 0 -#define S_DIRT3_D (S_DIRT3+1) - -DEBRIS (ADirt3, 46, 2, S_DIRT3_D) -{ - S_NORMAL (ROKK, 'F', 20, NULL, &States[S_DIRT3]), - S_NORMAL (ROKK, 'F', 10, NULL, NULL) -}; - -#define S_DIRT4 0 -#define S_DIRT4_D (S_DIRT4+1) - -DEBRIS (ADirt4, 47, 2, S_DIRT4_D) -{ - S_NORMAL (ROKK, 'G', 20, NULL, &States[S_DIRT4]), - S_NORMAL (ROKK, 'G', 10, NULL, NULL) -}; - -#define S_DIRT5 0 -#define S_DIRT5_D (S_DIRT5+1) - -DEBRIS (ADirt5, 48, 2, S_DIRT5_D) -{ - S_NORMAL (ROKK, 'H', 20, NULL, &States[S_DIRT5]), - S_NORMAL (ROKK, 'H', 10, NULL, NULL) -}; - -#define S_DIRT6 0 -#define S_DIRT6_D (S_DIRT6+1) - -DEBRIS (ADirt6, 49, 2, S_DIRT6_D) -{ - S_NORMAL (ROKK, 'I', 20, NULL, &States[S_DIRT6]), - S_NORMAL (ROKK, 'I', 10, NULL, NULL) -}; - // Stained glass ------------------------------------------------------------ class AGlassShard : public AActor @@ -121,140 +12,19 @@ class AGlassShard : public AActor public: bool FloorBounceMissile (secplane_t &plane) { - fixed_t bouncemomz = FixedMul (momz, (fixed_t)(-0.3*FRACUNIT)); - - if (abs (bouncemomz) < (FRACUNIT/2)) + if (!Super::FloorBounceMissile (plane)) { - Destroy (); - } - else - { - if (!Super::FloorBounceMissile (plane)) + if (abs (momz) < (FRACUNIT/2)) { - momz = bouncemomz; - return false; + Destroy (); } + return false; } return true; } }; -IMPLEMENT_ABSTRACT_ACTOR (AGlassShard) - -#define S_SGSHARD1 0 -#define S_SGSHARD1_D (S_SGSHARD1+5) - -SHARD (ASGShard1, 54, 6, S_SGSHARD1_D) -{ - S_NORMAL (SGSA, 'A', 4, NULL , &States[S_SGSHARD1+1]), - S_NORMAL (SGSA, 'B', 4, NULL , &States[S_SGSHARD1+2]), - S_NORMAL (SGSA, 'C', 4, NULL , &States[S_SGSHARD1+3]), - S_NORMAL (SGSA, 'D', 4, NULL , &States[S_SGSHARD1+4]), - S_NORMAL (SGSA, 'E', 4, NULL , &States[S_SGSHARD1+0]), - - S_NORMAL (SGSA, 'E', 30, NULL , NULL) -}; - -#define S_SGSHARD2 0 -#define S_SGSHARD2_D (S_SGSHARD2+5) - -SHARD (ASGShard2, 55, 6, S_SGSHARD2_D) -{ - S_NORMAL (SGSA, 'F', 4, NULL , &States[S_SGSHARD2+1]), - S_NORMAL (SGSA, 'G', 4, NULL , &States[S_SGSHARD2+2]), - S_NORMAL (SGSA, 'H', 4, NULL , &States[S_SGSHARD2+3]), - S_NORMAL (SGSA, 'I', 4, NULL , &States[S_SGSHARD2+4]), - S_NORMAL (SGSA, 'J', 4, NULL , &States[S_SGSHARD2+0]), - - S_NORMAL (SGSA, 'J', 30, NULL , NULL) -}; - -#define S_SGSHARD3 0 -#define S_SGSHARD3_D (S_SGSHARD3+5) - -SHARD (ASGShard3, 56, 6, S_SGSHARD3_D) -{ - S_NORMAL (SGSA, 'K', 4, NULL , &States[S_SGSHARD3+1]), - S_NORMAL (SGSA, 'L', 4, NULL , &States[S_SGSHARD3+2]), - S_NORMAL (SGSA, 'M', 4, NULL , &States[S_SGSHARD3+3]), - S_NORMAL (SGSA, 'N', 4, NULL , &States[S_SGSHARD3+4]), - S_NORMAL (SGSA, 'O', 4, NULL , &States[S_SGSHARD3+0]), - - S_NORMAL (SGSA, 'O', 30, NULL , NULL) -}; - -#define S_SGSHARD4 0 -#define S_SGSHARD4_D (S_SGSHARD4+5) - -SHARD (ASGShard4, 57, 6, S_SGSHARD4_D) -{ - S_NORMAL (SGSA, 'P', 4, NULL , &States[S_SGSHARD4+1]), - S_NORMAL (SGSA, 'Q', 4, NULL , &States[S_SGSHARD4+2]), - S_NORMAL (SGSA, 'R', 4, NULL , &States[S_SGSHARD4+3]), - S_NORMAL (SGSA, 'S', 4, NULL , &States[S_SGSHARD4+4]), - S_NORMAL (SGSA, 'T', 4, NULL , &States[S_SGSHARD4+0]), - - S_NORMAL (SGSA, 'T', 30, NULL , NULL) -}; - -#define S_SGSHARD5 0 -#define S_SGSHARD5_D (S_SGSHARD5+5) - -SHARD (ASGShard5, 58, 6, S_SGSHARD5_D) -{ - S_NORMAL (SGSA, 'U', 4, NULL , &States[S_SGSHARD5+1]), - S_NORMAL (SGSA, 'V', 4, NULL , &States[S_SGSHARD5+2]), - S_NORMAL (SGSA, 'W', 4, NULL , &States[S_SGSHARD5+3]), - S_NORMAL (SGSA, 'X', 4, NULL , &States[S_SGSHARD5+4]), - S_NORMAL (SGSA, 'Y', 4, NULL , &States[S_SGSHARD5+0]), - - S_NORMAL (SGSA, 'Y', 30, NULL , NULL) -}; - -#define S_SGSHARD6 0 -#define S_SGSHARD6_D (S_SGSHARD6+1) - -SHARD (ASGShard6, 59, 2, S_SGSHARD6_D) -{ - S_NORMAL (SGSB, 'A', 4, NULL , &States[S_SGSHARD6+0]), - S_NORMAL (SGSB, 'A', 30, NULL , NULL) -}; - -#define S_SGSHARD7 0 -#define S_SGSHARD7_D (S_SGSHARD7+1) - -SHARD (ASGShard7, 60, 2, S_SGSHARD7_D) -{ - S_NORMAL (SGSB, 'B', 4, NULL , &States[S_SGSHARD7+0]), - S_NORMAL (SGSB, 'B', 30, NULL , NULL) -}; - -#define S_SGSHARD8 0 -#define S_SGSHARD8_D (S_SGSHARD8+1) - -SHARD (ASGShard8, 61, 2, S_SGSHARD8_D) -{ - S_NORMAL (SGSB, 'C', 4, NULL , &States[S_SGSHARD8+0]), - S_NORMAL (SGSB, 'C', 30, NULL , NULL) -}; - -#define S_SGSHARD9 0 -#define S_SGSHARD9_D (S_SGSHARD9+1) - -SHARD (ASGShard9, 62, 2, S_SGSHARD9_D) -{ - S_NORMAL (SGSB, 'D', 4, NULL , &States[S_SGSHARD9+0]), - S_NORMAL (SGSB, 'D', 30, NULL , NULL) -}; - -#define S_SGSHARD0 0 -#define S_SGSHARD0_D (S_SGSHARD0+1) - -SHARD (ASGShard0, 63, 2, S_SGSHARD0_D) -{ - S_NORMAL (SGSB, 'E', 4, NULL , &States[S_SGSHARD0+0]), - S_NORMAL (SGSB, 'E', 30, NULL , NULL) -}; +IMPLEMENT_ABSTRACT_ACTOR(AGlassShard) // Dirt stuff @@ -269,30 +39,16 @@ void P_SpawnDirt (AActor *actor, fixed_t radius) x = actor->x + FixedMul(radius,finecosine[angle]); y = actor->y + FixedMul(radius,finesine[angle]); z = actor->z + (pr_dirt()<<9) + FRACUNIT; - switch (pr_dirt()%6) + + char fmt[8]; + sprintf(fmt, "Dirt%d", 1 + pr_dirt()%6); + dtype = TypeInfo::FindType(fmt); + if (dtype) { - case 0: - dtype = RUNTIME_CLASS(ADirt1); - break; - case 1: - dtype = RUNTIME_CLASS(ADirt2); - break; - case 2: - dtype = RUNTIME_CLASS(ADirt3); - break; - case 3: - dtype = RUNTIME_CLASS(ADirt4); - break; - case 4: - dtype = RUNTIME_CLASS(ADirt5); - break; - case 5: - dtype = RUNTIME_CLASS(ADirt6); - break; - } - mo = Spawn (dtype, x, y, z); - if (mo) - { - mo->momz = pr_dirt()<<10; + mo = Spawn (dtype, x, y, z); + if (mo) + { + mo->momz = pr_dirt()<<10; + } } } diff --git a/src/g_shared/a_keys.h b/src/g_shared/a_keys.h index 99ae97d14..df01b7a93 100644 --- a/src/g_shared/a_keys.h +++ b/src/g_shared/a_keys.h @@ -15,16 +15,6 @@ protected: virtual bool ShouldStay (); }; -class ADoomKey : public AKey -{ - DECLARE_STATELESS_ACTOR (ADoomKey, AKey) -}; - -class AHereticKey : public AKey -{ - DECLARE_STATELESS_ACTOR (AHereticKey, AKey) -}; - class AHexenKey : public AKey { DECLARE_STATELESS_ACTOR (AHexenKey, AKey) diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index 10cd7fd47..bd4ea65c0 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -498,6 +498,7 @@ bool AInventory::SpecialDropAction (AActor *dropper) bool AInventory::ShouldRespawn () { + if ((ItemFlags & IF_BIGPOWERUP) && !(dmflags & DF_RESPAWN_SUPER)) return false; return !!(dmflags & DF_ITEMS_RESPAWN); } diff --git a/src/g_shared/a_pickups.h b/src/g_shared/a_pickups.h index 89e6ac9d6..2ee2adeb9 100644 --- a/src/g_shared/a_pickups.h +++ b/src/g_shared/a_pickups.h @@ -85,6 +85,7 @@ enum IF_PICKUPFLASH = 1<<9, // Item "flashes" when picked up IF_ALWAYSPICKUP = 1<<10, // For IF_AUTOACTIVATE, MaxAmount=0 items: Always "pick up", even if it doesn't do anything IF_FANCYPICKUPSOUND = 1<<11, // Play pickup sound in "surround" mode + IF_BIGPOWERUP = 1<<12, // Affected by RESPAWN_SUPER dmflag }; struct vissprite_t; diff --git a/src/g_shared/a_sharedglobal.h b/src/g_shared/a_sharedglobal.h index 40ea81e3e..f992b6070 100644 --- a/src/g_shared/a_sharedglobal.h +++ b/src/g_shared/a_sharedglobal.h @@ -80,7 +80,7 @@ public: DWORD AlphaColor; WORD Translation; WORD PicNum; - WORD RenderFlags; + DWORD RenderFlags; BYTE RenderStyle; protected: @@ -116,36 +116,6 @@ private: DImpactDecal(); }; -class AWaterSplashBase : public AActor -{ - DECLARE_ACTOR (AWaterSplashBase, AActor) -}; - -class AWaterSplash : public AActor -{ - DECLARE_ACTOR (AWaterSplash, AActor) -}; - -class ALavaSplash : public AActor -{ - DECLARE_ACTOR (ALavaSplash, AActor) -}; - -class ALavaSmoke : public AActor -{ - DECLARE_ACTOR (ALavaSmoke, AActor) -}; - -class ASludgeSplash : public AActor -{ - DECLARE_ACTOR (ASludgeSplash, AActor) -}; - -class ASludgeChunk : public AActor -{ - DECLARE_ACTOR (ASludgeChunk, AActor) -}; - class AAmbientSound : public AActor { DECLARE_STATELESS_ACTOR (AAmbientSound, AActor) diff --git a/src/g_shared/a_splashes.cpp b/src/g_shared/a_splashes.cpp deleted file mode 100644 index 6e24826ac..000000000 --- a/src/g_shared/a_splashes.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#include "actor.h" -#include "a_sharedglobal.h" -#include "m_random.h" -#include "gi.h" - -// Water -------------------------------------------------------------------- - -FState AWaterSplash::States[] = -{ -#define S_SPLASH 0 - S_NORMAL (SPSH, 'A', 8, NULL, &States[1]), - S_NORMAL (SPSH, 'B', 8, NULL, &States[2]), - S_NORMAL (SPSH, 'C', 8, NULL, &States[3]), - S_NORMAL (SPSH, 'D', 16, NULL, NULL), - -#define S_SPLASHX (S_SPLASH+4) - S_NORMAL (SPSH, 'D', 10, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AWaterSplash, Any, -1, 0) - PROP_RadiusFixed (2) - PROP_HeightFixed (4) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF) - PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH) - PROP_Flags3 (MF3_DONTSPLASH|MF3_DONTBLAST) - - PROP_SpawnState (S_SPLASH) - PROP_DeathState (S_SPLASHX) -END_DEFAULTS - -FState AWaterSplashBase::States[] = -{ - S_NORMAL (SPSH, 'E', 5, NULL, &States[1]), - S_NORMAL (SPSH, 'F', 5, NULL, &States[2]), - S_NORMAL (SPSH, 'G', 5, NULL, &States[3]), - S_NORMAL (SPSH, 'H', 5, NULL, &States[4]), - S_NORMAL (SPSH, 'I', 5, NULL, &States[5]), - S_NORMAL (SPSH, 'J', 5, NULL, &States[6]), - S_NORMAL (SPSH, 'K', 5, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AWaterSplashBase, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY) - PROP_Flags3 (MF3_DONTSPLASH|MF3_DONTBLAST) - - PROP_SpawnState (0) -END_DEFAULTS - -// Lava --------------------------------------------------------------------- - -FState ALavaSplash::States[] = -{ - S_BRIGHT (LVAS, 'A', 5, NULL, &States[1]), - S_BRIGHT (LVAS, 'B', 5, NULL, &States[2]), - S_BRIGHT (LVAS, 'C', 5, NULL, &States[3]), - S_BRIGHT (LVAS, 'D', 5, NULL, &States[4]), - S_BRIGHT (LVAS, 'E', 5, NULL, &States[5]), - S_BRIGHT (LVAS, 'F', 5, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALavaSplash, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) -END_DEFAULTS - -FState ALavaSmoke::States[] = -{ - S_BRIGHT (LVAS, 'G', 5, NULL, &States[1]), - S_BRIGHT (LVAS, 'H', 5, NULL, &States[2]), - S_BRIGHT (LVAS, 'I', 5, NULL, &States[3]), - S_BRIGHT (LVAS, 'J', 5, NULL, &States[4]), - S_BRIGHT (LVAS, 'K', 5, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALavaSmoke, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP) - PROP_RenderStyle (STYLE_Translucent) - - PROP_SpawnState (0) -END_DEFAULTS - -AT_GAME_SET (LavaSmoke) -{ - ALavaSmoke *def = GetDefault(); - def->alpha = (gameinfo.gametype == GAME_Heretic ? HR_SHADOW : HX_SHADOW); -} - -// Sludge ------------------------------------------------------------------- - -FState ASludgeChunk::States[] = -{ -#define S_SLUDGECHUNK 0 - S_NORMAL (SLDG, 'A', 8, NULL, &States[1]), - S_NORMAL (SLDG, 'B', 8, NULL, &States[2]), - S_NORMAL (SLDG, 'C', 8, NULL, &States[3]), - S_NORMAL (SLDG, 'D', 8, NULL, NULL), - -#define S_SLUDGECHUNKX (S_SLUDGECHUNK+4) - S_NORMAL (SLDG, 'D', 6, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASludgeChunk, Any, -1, 0) - PROP_RadiusFixed (2) - PROP_HeightFixed (4) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF) - PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (S_SLUDGECHUNK) - PROP_DeathState (S_SLUDGECHUNKX) -END_DEFAULTS - -FState ASludgeSplash::States[] = -{ - S_NORMAL (SLDG, 'E', 6, NULL, &States[1]), - S_NORMAL (SLDG, 'F', 6, NULL, &States[2]), - S_NORMAL (SLDG, 'G', 6, NULL, &States[3]), - S_NORMAL (SLDG, 'H', 6, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASludgeSplash, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) -END_DEFAULTS - -/* - * These next four classes are not used by me anywhere. - * They are for people who want to use them in a TERRAIN lump. - */ - -class ABloodSplash : public AActor -{ - DECLARE_ACTOR (ABloodSplash, AActor); -}; -class ABloodSplashBase : public AActor -{ - DECLARE_ACTOR (ABloodSplashBase, AActor); -}; -class ASlimeSplash : public AActor -{ - DECLARE_ACTOR (ASlimeSplash, AActor) -}; -class ASlimeChunk : public AActor -{ - DECLARE_ACTOR (ASlimeChunk, AActor) -}; - -// Blood (water with a different sprite) ------------------------------------ - -FState ABloodSplash::States[] = -{ - S_NORMAL (BSPH, 'A', 8, NULL, &States[1]), - S_NORMAL (BSPH, 'B', 8, NULL, &States[2]), - S_NORMAL (BSPH, 'C', 8, NULL, &States[3]), - S_NORMAL (BSPH, 'D', 16, NULL, NULL), - - S_NORMAL (BSPH, 'D', 10, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABloodSplash, Any, -1, 0) - PROP_RadiusFixed (2) - PROP_HeightFixed (4) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF) - PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) - PROP_DeathState (4) -END_DEFAULTS - -FState ABloodSplashBase::States[] = -{ - S_NORMAL (BSPH, 'E', 5, NULL, &States[1]), - S_NORMAL (BSPH, 'F', 5, NULL, &States[2]), - S_NORMAL (BSPH, 'G', 5, NULL, &States[3]), - S_NORMAL (BSPH, 'H', 5, NULL, &States[4]), - S_NORMAL (BSPH, 'I', 5, NULL, &States[5]), - S_NORMAL (BSPH, 'J', 5, NULL, &States[6]), - S_NORMAL (BSPH, 'K', 5, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABloodSplashBase, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) -END_DEFAULTS - -// Slime (sludge with a different sprite) ----------------------------------- - -FState ASlimeChunk::States[] = -{ - S_NORMAL (SLIM, 'A', 8, NULL, &States[1]), - S_NORMAL (SLIM, 'B', 8, NULL, &States[2]), - S_NORMAL (SLIM, 'C', 8, NULL, &States[3]), - S_NORMAL (SLIM, 'D', 8, NULL, NULL), - - S_NORMAL (SLIM, 'D', 6, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASlimeChunk, Any, -1, 0) - PROP_RadiusFixed (2) - PROP_HeightFixed (4) - PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF) - PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) - PROP_DeathState (4) -END_DEFAULTS - -FState ASlimeSplash::States[] = -{ - S_NORMAL (SLIM, 'E', 6, NULL, &States[1]), - S_NORMAL (SLIM, 'F', 6, NULL, &States[2]), - S_NORMAL (SLIM, 'G', 6, NULL, &States[3]), - S_NORMAL (SLIM, 'H', 6, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASlimeSplash, Any, -1, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY) - PROP_Flags3 (MF3_DONTSPLASH) - - PROP_SpawnState (0) -END_DEFAULTS diff --git a/src/r_main.cpp b/src/r_main.cpp index 76f67bb1d..64f265218 100644 --- a/src/r_main.cpp +++ b/src/r_main.cpp @@ -1124,15 +1124,24 @@ void R_SetupFrame (AActor *actor) fixedlightlev = player->fixedcolormap*256; fixedcolormap = NormalLight.Maps; } - else + else switch (player->fixedcolormap) { - fixedcolormap = InvulnerabilityColormap; + case INVERSECOLORMAP: + fixedcolormap = InverseColormap; + break; + + case GOLDCOLORMAP: + fixedcolormap = GoldColormap; + break; + + default: + break; } } // [RH] Inverse light for shooting the Sigil else if (extralight == INT_MIN) { - fixedcolormap = InvulnerabilityColormap; + fixedcolormap = InverseColormap; extralight = 0; } @@ -1419,7 +1428,7 @@ void R_RenderActorView (AActor *actor) R_FindParticleSubsectors (); clock (WallCycles); - WORD savedflags = camera->renderflags; + DWORD savedflags = camera->renderflags; // Never draw the player unless in chasecam mode if (!r_showviewer) { diff --git a/src/r_main.h b/src/r_main.h index f15ea0797..dbce68da2 100644 --- a/src/r_main.h +++ b/src/r_main.h @@ -86,6 +86,8 @@ extern int r_Yaspect; // Number of diminishing brightness levels. // There a 0-31, i.e. 32 LUT in the COLORMAP lump. #define NUMCOLORMAPS 32 +#define INVERSECOLORMAP 32 +#define GOLDCOLORMAP 33 // The size of a single colormap, in bits #define COLORMAPSHIFT 8 diff --git a/src/r_segs.cpp b/src/r_segs.cpp index 93ca55c05..319b675d9 100644 --- a/src/r_segs.cpp +++ b/src/r_segs.cpp @@ -1824,7 +1824,7 @@ static void R_RenderDecal (side_t *wall, DBaseDecal *decal, drawseg_t *clipper, yscale = decal->ScaleY; WallSpriteTile = TexMan(decal->PicNum); - flipx = decal->RenderFlags & RF_XFLIP; + flipx = (byte)(decal->RenderFlags & RF_XFLIP); if (WallSpriteTile->UseType == FTexture::TEX_Null) { diff --git a/src/sc_man.cpp b/src/sc_man.cpp index 1ce575d0c..60c0bfc7e 100644 --- a/src/sc_man.cpp +++ b/src/sc_man.cpp @@ -836,7 +836,7 @@ void SC_RestoreScriptState() sc_Crossed = ss.sc_Crossed; sc_FileScripts = ss.sc_FileScripts; ScriptName = *ss.ScriptName; - delete ss.ScriptName; + ::delete ss.ScriptName; ScriptBuffer = ss.ScriptBuffer; ScriptPtr = ss.ScriptPtr; ScriptEndPtr = ss.ScriptEndPtr; diff --git a/src/thingdef.cpp b/src/thingdef.cpp index 7954f5938..42e559e9d 100644 --- a/src/thingdef.cpp +++ b/src/thingdef.cpp @@ -225,6 +225,7 @@ static flagdef ActorFlags[]= DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects), DEFINE_FLAG2(FX_ROCKET, ROCKETTRAIL, AActor, effects), DEFINE_FLAG2(FX_GRENADE, GRENADETRAIL, AActor, effects), + DEFINE_FLAG(RF, INVISIBLE, AActor, renderflags), }; static flagdef InventoryFlags[] = @@ -239,6 +240,7 @@ static flagdef InventoryFlags[] = DEFINE_FLAG(IF, PICKUPFLASH, AInventory, ItemFlags), DEFINE_FLAG(IF, ALWAYSPICKUP, AInventory, ItemFlags), DEFINE_FLAG(IF, FANCYPICKUPSOUND, AInventory, ItemFlags), + DEFINE_FLAG(IF, BIGPOWERUP, AInventory, ItemFlags), }; static flagdef WeaponFlags[] = @@ -496,6 +498,7 @@ ACTOR(DualPainAttack) ACTOR(GiveToTarget) ACTOR(TakeFromTarget) ACTOR(JumpIfInTargetInventory) +ACTOR(CountdownArg) #include "d_dehackedactions.h" @@ -679,6 +682,7 @@ AFuncDesc AFTable[]= FUNC(A_JumpIfInTargetInventory, "MXL" ) FUNC(A_GiveToTarget, "Mx" ) FUNC(A_TakeFromTarget, "Mx" ) + FUNC(A_CountdownArg, "X") }; //========================================================================== @@ -2502,8 +2506,15 @@ static void ActorRenderStyle (AActor *defaults, Baggage &bag) //========================================================================== static void ActorAlpha (AActor *defaults, Baggage &bag) { - SC_MustGetFloat(); - defaults->alpha=fixed_t(sc_Float*FRACUNIT); + if (SC_CheckString("DEFAULT")) + { + defaults->alpha = gameinfo.gametype==GAME_Heretic? HR_SHADOW : HX_SHADOW; + } + else + { + SC_MustGetFloat(); + defaults->alpha=fixed_t(sc_Float*FRACUNIT); + } } //========================================================================== @@ -2955,7 +2966,18 @@ static void InventoryDefMaxAmount (AInventory *defaults, Baggage &bag) //========================================================================== static void InventoryPickupmsg (AInventory *defaults, Baggage &bag) { + // allow game specific pickup messages + const char * games[] = {"Doom", "Heretic", "Hexen", "Raven", "Strife", NULL}; + int gamemode[]={GAME_Doom, GAME_Heretic, GAME_Hexen, GAME_Raven, GAME_Strife}; + SC_MustGetString(); + int game = SC_MatchString(games); + + if (game!=-1) + { + SC_MustGetString(); + if (!(gameinfo.gametype&gamemode[game])) return; + } bag.Info->Class->Meta.SetMetaString(AIMETA_PickupMessage, sc_String); } @@ -3167,6 +3189,18 @@ static void PowerupColor (APowerupGiver *defaults, Baggage &bag) else { SC_MustGetString(); + + if (SC_Compare("INVERSEMAP")) + { + defaults->BlendColor = INVERSECOLOR; + return; + } + else if (SC_Compare("GOLDMAP")) + { + defaults->BlendColor = GOLDCOLOR; + return; + } + int c = V_GetColor(NULL, sc_String); r=RPART(c); g=GPART(c); @@ -3175,7 +3209,8 @@ static void PowerupColor (APowerupGiver *defaults, Baggage &bag) SC_MustGetFloat(); alpha=int(sc_Float*255); alpha=clamp(alpha, 0, 255); - defaults->BlendColor = MAKEARGB(alpha, r, g, b); + if (alpha!=0) defaults->BlendColor = MAKEARGB(alpha, r, g, b); + else defaults->BlendColor = 0; } //========================================================================== diff --git a/src/thingdef_codeptr.cpp b/src/thingdef_codeptr.cpp index 1c4fd0c04..cf9d9f06d 100644 --- a/src/thingdef_codeptr.cpp +++ b/src/thingdef_codeptr.cpp @@ -1373,6 +1373,7 @@ void A_DoChase(AActor * actor, bool fastchase, FState * meleestate, FState * mis void A_ExtChase(AActor * self) { int index=CheckIndex(4, &CallingState); + if (index<0) return; A_DoChase(self, false, EvalExpressionI (StateParameters[index], self) ? self->MeleeState:NULL, @@ -1390,6 +1391,7 @@ void A_ExtChase(AActor * self) void A_Jiggle(AActor * self) { int index=CheckIndex(2, &CallingState); + if (index<0) return; int xmax = EvalExpressionI (StateParameters[index], self); int ymax = EvalExpressionI (StateParameters[index+1], self); @@ -1412,6 +1414,7 @@ void A_Jiggle(AActor * self) void A_DropInventory(AActor * self) { int index=CheckIndex(1, &CallingState); + if (index<0) return; const TypeInfo * ti = TypeInfo::FindType((const char*)StateParameters[index]); if (ti) { @@ -1432,6 +1435,7 @@ void A_DropInventory(AActor * self) void A_SetBlend(AActor * self) { int index=CheckIndex(3); + if (index<0) return; PalEntry color = StateParameters[index]; float alpha = clamp (EvalExpressionF (StateParameters[index+1], self), 0, 1); int tics = EvalExpressionI (StateParameters[index+2], self); @@ -1455,6 +1459,7 @@ void A_JumpIf(AActor * self) { FState * CallingState; int index=CheckIndex(2, &CallingState); + if (index<0) return; int expression = EvalExpressionI (StateParameters[index], self); if (index>=0 && expression) DoJump(self, CallingState, StateParameters[index+1]); @@ -1492,3 +1497,22 @@ void A_KillChildren(AActor * self) } } +//=========================================================================== +// +// A_CountdownArg +// +//=========================================================================== +void A_CountdownArg(AActor * self) +{ + int index=CheckIndex(1); + if (index<0) return; + index = EvalExpressionI (StateParameters[index], self); + + if (index<=0 || index>5) return; + if (!self->args[index]--) + { + self->SetState(self->DeathState); + } + +} + diff --git a/src/v_palette.cpp b/src/v_palette.cpp index ca4921fc0..4700dfd6d 100644 --- a/src/v_palette.cpp +++ b/src/v_palette.cpp @@ -59,7 +59,8 @@ extern "C" { FDynamicColormap NormalLight; } FPalette GPalette; -BYTE *InvulnerabilityColormap; +BYTE *InverseColormap; +BYTE *GoldColormap; int Near255; FColorMatcher ColorMatcher; @@ -384,35 +385,34 @@ void InitPalette () NormalLight.Color = PalEntry (255, 255, 255); NormalLight.Fade = 0; - InvulnerabilityColormap = new BYTE[NUMCOLORMAPS*256]; - // build special maps (e.g. invulnerability) - shade = InvulnerabilityColormap; - if (gameinfo.gametype & (GAME_Doom|GAME_Strife)) - { // Doom invulnerability is an inverted grayscale - // Strife uses it when firing the Sigil - int grayint; - for (c = 0; c < 256; c++) - { - grayint = (65535 - - (GPalette.BaseColors[c].r * 77 + - GPalette.BaseColors[c].g * 143 + - GPalette.BaseColors[c].b * 37)) >> 8; - *shade++ = ColorMatcher.Pick (grayint, grayint, grayint); - } - } - else - { // Heretic invulnerability is a golden shade - int intensity; + int intensity; - for (c = 0; c < 256; c++) - { - intensity = GPalette.BaseColors[c].r * 77 + - GPalette.BaseColors[c].g * 143 + - GPalette.BaseColors[c].b * 37; - *shade++ = ColorMatcher.Pick ( - MIN (255, (intensity+intensity/2)>>8), intensity>>8, 0); - } + // Doom invulnerability is an inverted grayscale + // Strife uses it when firing the Sigil + InverseColormap = new BYTE[NUMCOLORMAPS*256]; + shade = InverseColormap; + + for (c = 0; c < 256; c++) + { + intensity = (65535 - + (GPalette.BaseColors[c].r * 77 + + GPalette.BaseColors[c].g * 143 + + GPalette.BaseColors[c].b * 37)) >> 8; + *shade++ = ColorMatcher.Pick (intensity, intensity, intensity); + } + + // Heretic invulnerability is a golden shade + GoldColormap = new BYTE[NUMCOLORMAPS*256]; + shade = GoldColormap; + + for (c = 0; c < 256; c++) + { + intensity = GPalette.BaseColors[c].r * 77 + + GPalette.BaseColors[c].g * 143 + + GPalette.BaseColors[c].b * 37; + *shade++ = ColorMatcher.Pick ( + MIN (255, (intensity+intensity/2)>>8), intensity>>8, 0); } } diff --git a/src/v_palette.h b/src/v_palette.h index c103b2a96..ffa36a8a1 100644 --- a/src/v_palette.h +++ b/src/v_palette.h @@ -77,7 +77,8 @@ struct FDynamicColormap FDynamicColormap *Next; }; -extern BYTE *InvulnerabilityColormap; +extern BYTE *InverseColormap; +extern BYTE *GoldColormap; extern FPalette GPalette; extern "C" { extern FDynamicColormap NormalLight; diff --git a/wadsrc/decorate/decorate.txt b/wadsrc/decorate/decorate.txt index db44a787b..cd7172355 100644 --- a/wadsrc/decorate/decorate.txt +++ b/wadsrc/decorate/decorate.txt @@ -1,5 +1,17 @@ +#include "actors/shared/debris.txt" +#include "actors/shared/splashes.txt" + #include "actors/doom/doomarmor.txt" +#include "actors/doom/doomartifacts.txt" #include "actors/doom/doomkeys.txt" #include "actors/doom/doomdecorations.txt" +#include "actors/raven/ravenartifacts.txt" +#include "actors/raven/ravenhealth.txt" + +#include "actors/heretic/hereticarmor.txt" +#include "actors/heretic/hereticartifacts.txt" +#include "actors/heretic/heretickeys.txt" #include "actors/heretic/hereticdecorations.txt" + +#include "actors/hexen/flame.txt" diff --git a/wadsrc/decorate/doom/doomartifacts.txt b/wadsrc/decorate/doom/doomartifacts.txt new file mode 100644 index 000000000..4262d68e9 --- /dev/null +++ b/wadsrc/decorate/doom/doomartifacts.txt @@ -0,0 +1,127 @@ +// Invulnerability Sphere --------------------------------------------------- + +ACTOR InvulnerabilitySphere : PowerupGiver 2022 +{ + Game Doom + SpawnID 133 + +COUNTITEM + +INVENTORY.AUTOACTIVATE + +INVENTORY.ALWAYSPICKUP + +INVENTORY.BIGPOWERUP + Inventory.MaxAmount 0 + Powerup.Type Invulnerable + Powerup.Color InverseMap + Inventory.PickupMessage "$GOTINVUL" + States + { + Spawn: + PINV ABCD 6 Bright + Loop + } +} + +// Soulsphere -------------------------------------------------------------- + +ACTOR Soulsphere : Health 2013 +{ + Game Doom + SpawnID 25 + +COUNTITEM + +INVENTORY.AUTOACTIVATE + +INVENTORY.ALWAYSPICKUP + +INVENTORY.FANCYPICKUPSOUND + Inventory.Amount 100 + Inventory.MaxAmount 200 + Inventory.PickupMessage "$GOTSUPER" + Inventory.PickupSound "misc/p_pkup" + States + { + Spawn: + SOUL ABCDCB 6 Bright + Loop + } +} + +// Invisibility ------------------------------------------------------------- + +ACTOR BlurSphere : PowerupGiver 2024 +{ + Game Doom + SpawnID 135 + +COUNTITEM + +VISIBILITYPULSE + +INVENTORY.AUTOACTIVATE + +INVENTORY.ALWAYSPICKUP + +INVENTORY.BIGPOWERUP + Inventory.MaxAmount 0 + Powerup.Type Invisibility + RenderStyle Translucent + Inventory.PickupMessage "$GOTINVIS" + States + { + Spawn: + PINS ABCD 6 Bright + Loop + } +} + +// Radiation suit (aka iron feet) ------------------------------------------- + +ACTOR RadSuit : PowerupGiver 2025 +{ + Game Doom + SpawnID 136 + Height 46 + +INVENTORY.AUTOACTIVATE + +INVENTORY.ALWAYSPICKUP + Inventory.MaxAmount 0 + Powerup.Type IronFeet + States + { + Spawn: + SUIT A -1 Bright + Stop + } +} + +// infrared ----------------------------------------------------------------- + +ACTOR Infrared : PowerupGiver 2045 +{ + Game Doom + SpawnID 138 + +COUNTITEM + +INVENTORY.AUTOACTIVATE + +INVENTORY.ALWAYSPICKUP + Inventory.MaxAmount 0 + Powerup.Type LightAmp + Inventory.PickupMessage "$GOTVISOR" + States + { + Spawn: + PVIS A 6 Bright + PVIS B 6 + Loop + } +} + +// Allmap ------------------------------------------------------------------- + +ACTOR Allmap : MapRevealer 2026 +{ + Game Doom + SpawnID 137 + +COUNTITEM + +INVENTORY.FANCYPICKUPSOUND + +INVENTORY.ALWAYSPICKUP + Inventory.MaxAmount 0 + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$GOTMAP" + States + { + Spawn: + PMAP ABCDCB 6 Bright + Loop + } +} + diff --git a/wadsrc/decorate/doom/doomdecorations.txt b/wadsrc/decorate/doom/doomdecorations.txt index b31098ad2..4dcdc885f 100644 --- a/wadsrc/decorate/doom/doomdecorations.txt +++ b/wadsrc/decorate/doom/doomdecorations.txt @@ -688,7 +688,7 @@ ACTOR HangTSkull 76 // Hanging from top without a brain ---------------------------------------- -ACTOR AHangTNoBrain 78 +ACTOR HangTNoBrain 78 { Game Doom Radius 16 diff --git a/wadsrc/decorate/heretic/hereticarmor.txt b/wadsrc/decorate/heretic/hereticarmor.txt new file mode 100644 index 000000000..e027f4f47 --- /dev/null +++ b/wadsrc/decorate/heretic/hereticarmor.txt @@ -0,0 +1,39 @@ + +// Silver Shield (Shield1) -------------------------------------------------- + +Actor SilverShield : BasicArmorPickup 85 +{ + Game Heretic + SpawnID 68 + +FLOATBOB + Inventory.Pickupmessage "$TXT_ITEMSHIELD1" + Inventory.Icon "SHLDA0" + Armor.Savepercent 50 + Armor.Saveamount 100 + States + { + Spawn: + SHLD A -1 + stop + } +} + +// Enchanted shield (Shield2) ----------------------------------------------- + +Actor EnchantedShield : BasicArmorPickup 31 +{ + Game Heretic + SpawnID 69 + +FLOATBOB + Inventory.Pickupmessage "$TXT_ITEMSHIELD2" + Inventory.Icon "SHD2A0" + Armor.Savepercent 75 + Armor.Saveamount 200 + States + { + Spawn: + SHD2 A -1 + stop + } +} + diff --git a/wadsrc/decorate/heretic/hereticartifacts.txt b/wadsrc/decorate/heretic/hereticartifacts.txt new file mode 100644 index 000000000..04c7afee7 --- /dev/null +++ b/wadsrc/decorate/heretic/hereticartifacts.txt @@ -0,0 +1,44 @@ +// Super map ---------------------------------------------------------------- + +ACTOR SuperMap : MapRevealer 35 +{ + Game Heretic + SpawnID 137 + +COUNTITEM + +INVENTORY.ALWAYSPICKUP + +FLOATBOB + Inventory.MaxAmount 0 + Inventory.PickupMessage "$TXT_ITEMSUPERMAP" + States + { + Spawn: + SPMP A -1 + Stop + } +} + + +// Invisibility ------------------------------------------------------------- + +ACTOR ArtiInvisibility : PowerupGiver 75 +{ + Game Heretic + SpawnID 135 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + RenderStyle Translucent + Alpha 0.4 + Inventory.RespawnTics 4230 + Inventory.Icon ARTIINVS + Powerup.Type Ghost + Inventory.PickupMessage "$TXT_ARTIINVISIBILITY" + States + { + Spawn: + INVS A 350 Bright + Loop + } +} + + diff --git a/wadsrc/decorate/heretic/heretickeys.txt b/wadsrc/decorate/heretic/heretickeys.txt new file mode 100644 index 000000000..073fc3248 --- /dev/null +++ b/wadsrc/decorate/heretic/heretickeys.txt @@ -0,0 +1,54 @@ + +ACTOR HereticKey : Key +{ + +NOTDMATCH + Radius 20 + Height 16 +} + +// Green key ------------------------------------------------------------ + +ACTOR KeyGreen : HereticKey 73 +{ + Game Heretic + SpawnID 86 + Inventory.PickupMessage "$TXT_GOTGREENKEY" + States + { + Spawn: + AKYY ABCDEFGHIJ 3 Bright + Loop + } +} + +// Blue key ----------------------------------------------------------------- + +ACTOR KeyBlue : HereticKey 79 +{ + Game Heretic + SpawnID 85 + Inventory.PickupMessage "$TXT_GOTBLUEKEY" + States + { + Spawn: + BKYY ABCDEFGHIJ 3 Bright + Loop + } +} + +// Yellow key --------------------------------------------------------------- + +ACTOR KeyYellow : HereticKey 80 +{ + Game Heretic + SpawnID 87 + Inventory.PickupMessage "$TXT_GOTYELLOWKEY" + States + { + Spawn: + CKYY ABCDEFGHI 3 Bright + Loop + } +} + + diff --git a/wadsrc/decorate/hexen/flame.txt b/wadsrc/decorate/hexen/flame.txt new file mode 100644 index 000000000..276e55768 --- /dev/null +++ b/wadsrc/decorate/hexen/flame.txt @@ -0,0 +1,116 @@ +// Temp Small Flame -------------------------------------------------------- + +ACTOR AFlameSmallTemp 10500 +{ + Game Hexen + SpawnID 96 + +NOTELEPORT + RenderStyle Add + States + { + Spawn: + FFSM AB 3 Bright + FFSM C 2 Bright A_CountdownArg(1) + FFSM C 2 Bright + FFSM D 3 Bright + FFSM E 3 Bright A_CountdownArg(1) + Loop + } +} + + +// Temp Large Flame --------------------------------------------------------- + +ACTOR AFlameLargeTemp 10502 +{ + Game Hexen + SpawnID 98 + +NOTELEPORT + RenderStyle Add + States + { + Spawn: + FFLG A 4 Bright + FFLG B 4 Bright A_CountdownArg(1) + FFLG C 4 Bright + FFLG D 4 Bright A_CountdownArg(1) + FFLG E 4 Bright + FFLG F 4 Bright A_CountdownArg(1) + FFLG G 4 Bright + FFLG H 4 Bright A_CountdownArg(1) + FFLG I 4 Bright + FFLG J 4 Bright A_CountdownArg(1) + FFLG K 4 Bright + FFLG L 4 Bright A_CountdownArg(1) + FFLG M 4 Bright + FFLG N 4 Bright A_CountdownArg(1) + FFLG O 4 Bright + FFLG P 4 Bright A_CountdownArg(1) + Goto Spawn+4 + } +} + +// Small Flame -------------------------------------------------------------- + +ACTOR FlameSmall : SwitchableDecoration 10501 +{ + Game Hexen + SpawnID 97 + +NOTELEPORT + +INVISIBLE + RenderStyle Add + States + { + Active: + FFSM A 0 Bright A_PlaySound("Ignite") + Spawn: + FFSM A 3 Bright + FFSM A 3 Bright A_UnHideThing + FFSM ABCDE 3 Bright + Goto Spawn+2 + Inactive: + FFSM A 2 + FFSM B 2 A_HideThing + FFSM C 200 + Wait + } +} + +ACTOR FlameSmall2 : FlameSmall +{ + Game Hexen + SpawnID 66 +} + +// Large Flame -------------------------------------------------------------- + +ACTOR FlameLarge : SwitchableDecoration 10503 +{ + Game Hexen + SpawnID 99 + +NOTELEPORT + +INVISIBLE + RenderStyle Add + States + { + Active: + FFLG A 0 Bright A_PlaySound("Ignite") + Spawn: + FFLG A 2 Bright + FFLG A 2 Bright A_UnHideThing + FFLG ABCDEFGHIJKLMNOP 4 Bright + Goto Spawn+6 + Inactive: + FFLG DCB 2 + FFLG A 2 A_HideThing + FFLG A 200 + Wait + } +} + +ACTOR FlameLarge2 : FlameLarge +{ + Game Hexen + SpawnID 67 +} + diff --git a/wadsrc/decorate/hexen/hexenarmor.txt b/wadsrc/decorate/hexen/hexenarmor.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/hexenarmor.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/hexendecorations.txt b/wadsrc/decorate/hexen/hexendecorations.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/hexendecorations.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/hexenkeys.txt b/wadsrc/decorate/hexen/hexenkeys.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/hexenkeys.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/hexenspecialdecs.txt b/wadsrc/decorate/hexen/hexenspecialdecs.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/hexenspecialdecs.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/puzzleitems.txt b/wadsrc/decorate/hexen/puzzleitems.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/puzzleitems.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/scriptprojectiles.txt b/wadsrc/decorate/hexen/scriptprojectiles.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/scriptprojectiles.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/hexen/speedboots.txt b/wadsrc/decorate/hexen/speedboots.txt new file mode 100644 index 000000000..2cf8925e9 --- /dev/null +++ b/wadsrc/decorate/hexen/speedboots.txt @@ -0,0 +1 @@ +// diff --git a/wadsrc/decorate/raven/ravenartifacts.txt b/wadsrc/decorate/raven/ravenartifacts.txt new file mode 100644 index 000000000..05190bb6d --- /dev/null +++ b/wadsrc/decorate/raven/ravenartifacts.txt @@ -0,0 +1,108 @@ + +// Health ------------------------------------------------------------------- + +ACTOR ArtiHealth : HealthPickup 82 +{ + Game Raven + SpawnID 24 + Health 25 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + +INVENTORY.FANCYPICKUPSOUND + Inventory.Icon ARTIPTN2 + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$TXT_ARTIHEALTH" + States + { + Spawn: + PTN2 ABC 4 + Loop + } +} + +// Super health ------------------------------------------------------------- + +ACTOR ArtiSuperHealth : HealthPickup 32 +{ + Game Raven + SpawnID 25 + Health 100 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + +INVENTORY.FANCYPICKUPSOUND + Inventory.Icon ARTISPHL + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$TXT_ARTISUPERHEALTH" + States + { + Spawn: + SPHL A 350 + Loop + } +} + +// Flight ------------------------------------------------------------------- + +ACTOR ArtiFly : PowerupGiver 83 +{ + Game Raven + SpawnID 15 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + +INVENTORY.INTERHUBSTRIP + Inventory.RespawnTics 4230 + Inventory.Icon ARTISOAR + Inventory.PickupMessage "$TXT_ARTIFLY" + Powerup.Type Flight + States + { + Spawn: + SOAR ABCB 5 + Loop + } +} + +// Invulnerability ---------------------------------------------------------- + +ACTOR ArtiInvulnerability : PowerupGiver 84 +{ + Game Raven + SpawnID 133 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + Inventory.RespawnTics 4230 + Inventory.Icon ARTIINVU + Inventory.PickupMessage "$TXT_ARTIINVULNERABILITY" + Inventory.PickupMessage Hexen "$TXT_ARTIINVULNERABILITY2" + Powerup.Type Invulnerable + States + { + Spawn: + INVU ABCD 3 + Loop + } +} + +// Torch -------------------------------------------------------------------- + +ACTOR ArtiTorch : PowerupGiver 33 +{ + Game Raven + SpawnID 73 + +COUNTITEM + +FLOATBOB + +INVENTORY.PICKUPFLASH + Inventory.Icon ARTITRCH + Inventory.PickupMessage "$TXT_ARTITORCH" + Powerup.Type Torch + States + { + Spawn: + TRCH ABC 3 Bright + Loop + } +} diff --git a/wadsrc/decorate/raven/ravenhealth.txt b/wadsrc/decorate/raven/ravenhealth.txt new file mode 100644 index 000000000..af951be1b --- /dev/null +++ b/wadsrc/decorate/raven/ravenhealth.txt @@ -0,0 +1,15 @@ +ACTOR CrystalVial : Health 81 +{ + Game Raven + SpawnID 23 + +FLOATBOB + Inventory.Amount 10 + Inventory.PickupMessage "$TXT_ITEMHEALTH" + States + { + Spawn: + PTN1 ABC 3 + Loop + } +} + diff --git a/wadsrc/decorate/shared/debris.txt b/wadsrc/decorate/shared/debris.txt new file mode 100644 index 000000000..7e788dd6e --- /dev/null +++ b/wadsrc/decorate/shared/debris.txt @@ -0,0 +1,362 @@ + +// Rocks -------------------------------------------------------------------- + +ACTOR Rock1 +{ + SpawnID 41 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK A 20 + Loop + Death: + ROKK A 10 + Stop + } +} + +ACTOR Rock2 +{ + SpawnID 42 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK B 20 + Loop + Death: + ROKK B 10 + Stop + } +} + + +ACTOR Rock3 +{ + SpawnID 43 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK C 20 + Loop + Death: + ROKK C 10 + Stop + } +} + + +// Dirt -------------------------------------------------------------------- + +ACTOR Dirt1 +{ + SpawnID 44 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK D 20 + Loop + Death: + ROKK D 10 + Stop + } +} + +ACTOR Dirt2 +{ + SpawnID 45 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK E 20 + Loop + Death: + ROKK E 10 + Stop + } +} + +ACTOR Dirt3 +{ + SpawnID 46 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK F 20 + Loop + Death: + ROKK F 10 + Stop + } +} + +ACTOR Dirt4 +{ + SpawnID 47 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK G 20 + Loop + Death: + ROKK G 10 + Stop + } +} + +ACTOR Dirt5 +{ + SpawnID 48 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK H 20 + Loop + Death: + ROKK H 10 + Stop + } +} + +ACTOR Dirt6 +{ + SpawnID 49 + +NOBLOCKMAP + +DROPOFF + +MISSILE + +NOTELEPORT + States + { + Spawn: + ROKK I 20 + Loop + Death: + ROKK I 10 + Stop + } +} + +// Stained glass ------------------------------------------------------------ + + +ACTOR SGShard1 : GlassShard +{ + SpawnID 54 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSA ABCDE 4 + Loop + Death: + SGSA E 30 + Stop + } +} + +ACTOR SGShard2 : GlassShard +{ + SpawnID 55 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSA FGHIJ 4 + Loop + Death: + SGSA J 30 + Stop + } +} + +ACTOR SGShard3 : GlassShard +{ + SpawnID 56 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSA KLMNO 4 + Loop + Death: + SGSA O 30 + Stop + } +} + +ACTOR SGShard4 : GlassShard +{ + SpawnID 57 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSA PQRST 4 + Loop + Death: + SGSA T 30 + Stop + } +} + +ACTOR SGShard5 : GlassShard +{ + SpawnID 58 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSA UVWXY 4 + Loop + Death: + SGSA Y 30 + Stop + } +} + +ACTOR SGShard6 : GlassShard +{ + SpawnID 59 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSB A 4 + Loop + Death: + SGSB A 30 + Stop + } +} + +ACTOR SGShard7 : GlassShard +{ + SpawnID 60 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSB B 4 + Loop + Death: + SGSB B 30 + Stop + } +} + +ACTOR SGShard8 : GlassShard +{ + SpawnID 61 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSB C 4 + Loop + Death: + SGSB C 30 + Stop + } +} + +ACTOR SGShard9 : GlassShard +{ + SpawnID 62 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSB D 4 + Loop + Death: + SGSB D 30 + Stop + } +} + +ACTOR SGShard0 : GlassShard +{ + SpawnID 63 + Radius 5 + Projectile + -ACTIVATEMCROSS + -ACTIVATEIMPACT + BounceFactor 0.3 + States + { + Spawn: + SGSB E 4 + Loop + Death: + SGSB E 30 + Stop + } +} + diff --git a/wadsrc/decorate/shared/splashes.txt b/wadsrc/decorate/shared/splashes.txt new file mode 100644 index 000000000..f82cc80f0 --- /dev/null +++ b/wadsrc/decorate/shared/splashes.txt @@ -0,0 +1,199 @@ + +// Water -------------------------------------------------------------------- + +ACTOR WaterSplash +{ + Radius 2 + Height 4 + +NOBLOCKMAP + +MISSILE + +DROPOFF + +NOTELEPORT + +LOWGRAVITY + +CANNOTPUSH + +DONTSPLASH + +DONTBLAST + States + { + Spawn: + SPSH ABC 8 + SPSH D 16 + Stop + Death: + SPSH D 10 + Stop + } +} + + +ACTOR WaterSplashBase +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + +DONTBLAST + States + { + Spawn: + SPSH EFGHIJK 5 + Stop + } +} + +// Lava --------------------------------------------------------------------- + +ACTOR LavaSplash +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + +DONTBLAST + States + { + Spawn: + LVAS ABCDEF 5 Bright + Stop + } +} + +ACTOR LavaSmoke +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + RenderStyle Translucent + Alpha Default + States + { + Spawn: + LVAS GHIJK 5 Bright + Stop + } +} + +// Sludge ------------------------------------------------------------------- + +ACTOR SludgeChunk +{ + Radius 2 + Height 4 + +NOBLOCKMAP + +MISSILE + +DROPOFF + +NOTELEPORT + +LOWGRAVITY + +CANNOTPUSH + +DONTSPLASH + States + { + Spawn: + SLDG ABCD 8 + Stop + Death: + SLDG D 6 + Stop + } +} + +ACTOR SludgeSplash +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + States + { + Spawn: + SLDG EFGH 6 + Stop + } +} + +/* + * These next four classes are not used by me anywhere. + * They are for people who want to use them in a TERRAIN lump. + */ + +// Blood (water with a different sprite) ------------------------------------ + +ACTOR BloodSplash +{ + Radius 2 + Height 4 + +NOBLOCKMAP + +MISSILE + +DROPOFF + +NOTELEPORT + +LOWGRAVITY + +CANNOTPUSH + +DONTSPLASH + +DONTBLAST + States + { + Spawn: + BSPH ABC 8 + BSPH D 16 + Stop + Death: + BSPH D 10 + Stop + } +} + + +ACTOR BloodSplashBase +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + +DONTBLAST + States + { + Spawn: + BSPH EFGHIJK 5 + Stop + } +} + +// Slime (sludge with a different sprite) ----------------------------------- + +ACTOR SlimeChunk +{ + Radius 2 + Height 4 + +NOBLOCKMAP + +MISSILE + +DROPOFF + +NOTELEPORT + +LOWGRAVITY + +CANNOTPUSH + +DONTSPLASH + States + { + Spawn: + SLIM ABCD 8 + Stop + Death: + SLIM D 6 + Stop + } +} + +ACTOR SlimeSplash +{ + +NOBLOCKMAP + +NOCLIP + +NOGRAVITY + +DONTSPLASH + States + { + Spawn: + SLIM EFGH 6 + Stop + } +} + diff --git a/wadsrc/wadsrc.vcproj b/wadsrc/wadsrc.vcproj index c0d6d9e1b..e5566e5aa 100644 --- a/wadsrc/wadsrc.vcproj +++ b/wadsrc/wadsrc.vcproj @@ -241,6 +241,9 @@ + + @@ -248,6 +251,74 @@ RelativePath=".\decorate\doom\doomkeys.txt"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + d?Ao&v zSHroPXQt7A7Vy`g4`M1~p*Vj;W6opf_oom)Kt4$73*^QTwW2%mXK5E14uIsmMv$Mj4z*SsAfUErDeShQWjK+ph9A`wH-ln zgR%Ii4PJVlxIwr{$I=X1HkC8zIj&KsFtI#D3hTc$4Pc;_ zb4@L+SyLHaP7b>{IqU{bkFAVyvT^2QkIW2ULQgtRa%xLD*c!gr=pI*YXVdVwL-+ z(eP!Gb$x@D1T8UedV;oxKY0qRvf+E4PphD8*JTbWc~r-uh9Rn{Q7w)dhFC_wyipV= zDp1s5MonbYxW$rKd83qVYl9p61 zdeNe!Q-N|%5||_@Nzy}-lyr|Kb?qlL1^zF+ZAKYER*)5CMOjH!lC^(FuKZ)dr8H6Y#!T+vj zLKKqVf73G|3Q6$gH6uj9zmr9*y`OPbU}6)rnb-v=u?Zzc16*QX5-zy_E$L}VKJD}T zKj=F~*lkR*2(w0S<0U)gy}Z&y@Dvk4oDsgfWO0#M{9DP zX472d7xPj#=WbxMjs`Ij7KF}r-0HS)DSz3H0veZD=5#yVUdG4|j%wM_+-SU#o&474 zXNNHG+|oa6r0|@uDp^5`fqb17|GRB4Hj_Q_~hk# zDl|QQY}uBr*8LvZ23;Sc!D0;umb3<2Nqf*GJ=FVY|GqK|4Tq6GpqY)nFGK z*tfbyufZL-b9^G}yR_$86YVzgKjP3a?h5sxt1zk^daj*t-J~0>&N4i@26y3}@d-xn zDD8@qwqlv_co^CW%XN<4IK&FuYphWg_KuIwIgZ=9B89rEF{nGgukI+B;T>w%@up5x k-Q>M?NmvippqfU##5g`zXL)*-RYt#|=gINw|I^w30B$~e3;+NC diff --git a/wadsrc/xlat/heretic.x b/wadsrc/xlat/heretic.x deleted file mode 100644 index 51b1de1948f398b0226074a0b267d33f2f912f31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2849 zcmcJQ%ZnXF6vn^mzB9IyJLDSB+`xeKfGDVB9EAufcA_z>I5GYK8A3*JH|if?C$o{P z1VL~qg1B%Mi0+2Fh+txTFC=PwV0?>C;)^JH{Z4%~NzCBVySTqTRj2BF=hUh02j=(f z!PRhX`k6ik&jNk}1|X&~X3OA@Xl(E}27@WY(`aaVA^w40kJel8j{?=t^rQ8iu!J!m z;#b+lP;>4A2CKw3m`I%4qOH%P>1dq=_d?WWzF600m#r5?G|d!Vn5Nvr!m@A(vB+J` z3l1oiqx8gKWE>Kf;g`VR@aN&5BF;&K0`0w@GaNj@LD$5;^ITFvk}Q9d2Bmtt0&SIC z9BgfQJkBbySXx*8Vq-ul&)aBNEPr<%i!-1je8J6m&~HXFlvL!TY@-mALy*p(ut9Qz&WLk%;OU1fDX3;aXG_b@Hb_}eC4vfx#nx5? z$qmXjNOe%sLE?kN2W1-1=wp^m8?_4)%T1)P{#(-ksPfjW zY;5aY!uQdt*;{(B*$wO-8;l!dX^=&>K~~;e*ae1V4YI+^@~STLYwb`4wy;?|Dnk)* zpK{nGP>ZLQP?m3j*JcJ@3j+@>Thk157|Fmc7qYc1YZ*z$L0DhMgr=pI*K!Z~VwL-+ z*6^j1b$x?ef?N#jo}lI7&wSrQS@1pg=UhQquFD)$@~9JwYKEvojXL6}W{9Qr%Ns?3 zq5?%VW>iN;wOcHSl{ZRxc_`k#QqK!$_+m+lo)kSPu_O^mB9cTTiAbf(brF)ZBxy`W`rpCce9Aq4>HaPOl*QS6I+84n^0mjKo|Rx&}9vB>B%MU_Idsf zr%~~9M%ZmkvIw(A@8Bid<^AkwBDjl*AkGS3Ub5(97JmnKXDkYCqZ{~@{JJ!7tsA;6 z%&bo@KbKwIjJuxEIvT`Cm=!u(af`c^u6(i;1vDaFWzs*fxBv(&0n8j`5QWxvLs=gWIuv{Kn<$253AiY?s$HXou)-#Axr%8axFD zo?Bg`*WeD^IX;>7U0QREiFTX#kGSj@_aOD5t1zk^daj*t-J}~WZf1CN4er7{>r<)acsABMGAFSV_0|oK;2O?!#mWj<4v8Y ky2*R(lCU1GLDfgSopF4w&O(1PtBgUzktfHm|4)1W1D_vzvj6}9 diff --git a/wadsrc/xlat/strife.x b/wadsrc/xlat/strife.x deleted file mode 100644 index 83f3551fc803d204df501610468a9037e0d87e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1649 zcmYLJNpFo|7(I7rUAOnvtszwrdEf6%O2R@DiIwC=3=63$jUQ07u`9p8@C!s@Vab+? zgb+i5v`92XVrohxl(d={YQ+NQdCrF}dhRoyXL!HeeS3S+f&zL^*U&fvgf=uls5)%S zm7h^DaNXIY&=sb*KtT2qR!|garha z4c|mUh4$>A1sEK_Izsl#ZAk-3lEQkB1Cm&8R-tau#lfb9XJas)nc|AOOo!v|fK9CT z7!?jHY;k3_+LMJGHn=i$qSB0Yu#po zs2-wtMwN}C8?__aY~kp`K-9pZ7E8$%8$~N>3{g|WeoRFXjq0;Ue52Zpq8&v$s?VrC zqne1K9ks`P?SoZ}eX66$#q;_C4>eO3w&drdvSE(g$gW0DLK~VURULwqJabdBIRoB} zd1g{_Wv1kKP05+NB;`pd2lH^vHBO>w>lE;KP2!Rapv7-f58DNNK}J62;av!H3<5p~ zlejX2jNS5hz3DbdZIVioN=VuT!7e&Wx|?yoJ`6Rf1BUO||7Gnclad|bDSA$zVH3>E zgi>_Cp{8NsqDx-3s(KxQ8cyy5&Z3$wpuuGRtU3g>zmLoxXZ}WOdYm1in?p@f6~#IW z4aucd%2pL>m9iixnytYv6)82&ED}_3jIE5Sqf4Bb*%mv&%UB%LU(kyk8o(8n;-kJw zSkvSES@<=DUk8rtM1g7>&key%!7bnfo4$>@H?~BD+64^{xa+C!F}#1Rr?xC(aDwB? za^GDZ&}wBLa^a(1k6?cm@JO}^uEV+=cI6}+`@gs+p5-Y6ERK8=p;&OwXTX60Jg1HD zBG36!sbA%*>IA0o#@d<2GK1Gx>O16D<}K!ZgsZg2<$@J9G?McY?^%<-XS~FRT=|h* Z^RP*Vb!Sz6PGFx4hR+kW_Vx7we*j9|`nCW7 diff --git a/wadsrc/zdoom.lst b/wadsrc/zdoom.lst index d99816c05..8d0062f8f 100644 --- a/wadsrc/zdoom.lst +++ b/wadsrc/zdoom.lst @@ -178,13 +178,33 @@ strfinfo.txt mapinfo/strife.txt acs/strfhelp.o strfhelp.o +======== ======== # Decorate stuff decorate.txt decorate/decorate.txt +actors/shared/debris.txt decorate/shared/debris.txt +actors/shared/splashes.txt decorate/shared/splashes.txt + actors/doom/doomarmor.txt decorate/doom/doomarmor.txt +actors/doom/doomartifacts.txt decorate/doom/doomartifacts.txt actors/doom/doomkeys.txt decorate/doom/doomkeys.txt actors/doom/doomdecorations.txt decorate/doom/doomdecorations.txt +actors/raven/ravenartifacts.txt decorate/raven/ravenartifacts.txt +actors/raven/ravenhealth.txt decorate/raven/ravenhealth.txt + +actors/heretic/hereticarmor.txt decorate/heretic/hereticarmor.txt +actors/heretic/hereticartifacts.txt decorate/heretic/hereticartifacts.txt +actors/heretic/heretickeys.txt decorate/heretic/heretickeys.txt actors/heretic/hereticdecorations.txt decorate/heretic/hereticdecorations.txt + +actors/hexen/flame.txt decorate/hexen/flame.txt +actors/hexen/hexenarmor.txt decorate/hexen/hexenarmor.txt +actors/hexen/hexendecorations.txt decorate/hexen/hexendecorations.txt +actors/hexen/hexenkeys.txt decorate/hexen/hexenkeys.txt +actors/hexen/hexenspecialdecs.txt decorate/hexen/hexenspecialdecs.txt +actors/hexen/puzzleitems.txt decorate/hexen/puzzleitems.txt +actors/hexen/scriptprojectiles.txt decorate/hexen/scriptprojectiles.txt +actors/hexen/speedboots.txt decorate/hexen/speedboots.txt diff --git a/zdoom.vcproj b/zdoom.vcproj index 9a1cbcb19..ab8db4713 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -2708,21 +2708,6 @@ AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/> - - - - - - - - - - - - - - - - - - - - - - - - @@ -3290,21 +3245,6 @@ AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/> - - - - - - - - - - - - - - - -