Commit graph

60 commits

Author SHA1 Message Date
Randy Heit
603e905c42 SVN r314 (trunk) 2006-08-31 00:16:12 +00:00
Christoph Oelckers
ab947ce16b - Added custom fail messages to the puzzle items.
SVN r299 (trunk)
2006-08-18 22:22:39 +00:00
Christoph Oelckers
f66b7de8c8 - Took MF2_WINDTHRUST off AMorphedMonster. This is something that should not
be a default setting.
- Moved a_artiegg.cpp to g_shared and renamed it to a_morph.cpp to better reflect
  its meaning.
- Fixed: AMorphProjectile's PlayerClass and MonsterClass members must be serialized
  as FNames. Serializing them as ints is not safe because name indices are not 
  guaranteed to be the same each time the game is started. Same for APlayerPawn's
  MorphWeapon member.
- Converted EggFX, ArtiEgg, PorkFX and ArtiPork to DECORATE. 
- Added a new parameter to A_FireCustomMissile. Previously it always aimed
  straight ahead and altered the projectile's angle according to the resulting
  direction. If the 6th parameter is 1 now it will aim at the specified angle
  directly.
- Changed custom morphing to be based on a new MorphProjectile class, not
  the Heretic specific EggFX. The EggFX properties are now prefixed with
  'MorphProjectile.'. 


SVN r297 (trunk)
2006-08-17 09:54:42 +00:00
Randy Heit
a6d656b108 - Updated thingdef_specials.h for the new thingdef_specials.gperf file.
- Created a new MorphedMonster class that Chicken and Pig now derive from.
  This class automatically takes care of unmorphing the monster when its
  time is up.
- Made PlayerClass and MonsterClass properties of EggFX. You can override
  these in a subclass to create new kinds of morpher projectiles. Along with
  that, MorphWeapon is a new property of PlayerPawn that controls what type
  of weapon you have available while morphed ("None" means you have no
  weapons).
- Changed morphed monsters to record the time when they want to unmorph, not
  the time left until they unmorph. This simplifies calling
  P_UpdateMorhpedMonster() because you don't need to pass it a tic count.
- Added an optional second parameter to A_SpawnDebris and an optional
  fifth parameter to A_SpawnItem that both do the same thing: If you set it
  to 1, then the spawned actor will be assigned the same translation table
  as the actor that called the function.
- Moved the blood colorization in P_SpawnBlood() ahead of the SetDamage()
  call so that the blood color will available to the states of the blood
  actor.
- Extended the puke command so that giving it a negative script number will
  act like ACS_ExecuteAlways and always execute the script. (Ugh. Why did I
  use's Raven's cheat code to name this command?)


SVN r296 (trunk)
2006-08-17 00:19:26 +00:00
Randy Heit
7dc4be302f - Added action special support to the thingdef expression evaluator. Now you
can use them like normal functions, which is probably most useful for
  ACS_ExecuteWithResult.


SVN r294 (trunk)
2006-08-16 20:56:06 +00:00
Randy Heit
b25c7722f3 - Added the ACS commands
ReplaceTextures (str old_texture, str new_texture, optional bool not_lower,
      optional bool not_mid, optional bool not_upper, optional bool not_floor,
      optional bool not_ceiling); and
  SectorDamage (int tag, int amount, str type, bool players_only, bool in_air,
      str protection_item, bool subclasses_okay);
- Added the vid_nowidescreen cvar to disable widescreen aspect ratio
  correction. When this is enabled, the only display ratio available is 4:3
  (and 5:4 if vid_tft is set).
- Added support for setting an actor's damage property to an expression
  through decorate. Just enclose it within parentheses, and the expression
  will be evaluated exactly as-is without the normal Doom damage calculation.
  So if you want something that does exactly 6 damage, use a "Damage (6)"
  property. To deal normal Doom missile damage, you can use
  "Damage (random(1,8)*6)" instead of "Damage 6".
- Moved InvFirst and InvSel into APlayerPawn so that they can be consistantly
  maintained by ObtainInventory.


SVN r288 (trunk)
2006-08-12 02:30:57 +00:00
Christoph Oelckers
688476b9aa August 10, 2006 (Changes by Graf Zahl)
- Fixed: CheckActorInventory stored the return value in the wrong address
  on the ACS stack.
- Fixed: Skin sounds weren't properly restored after a SNDINFO reset.
- Added a more flexible ACS ChangeLevel function. It gets passed a level name
  instead of a level number and has several additional options (e.g. changing
  skill, starting the map without monsters and clearing the players' inventories. (UNTESTED!)
- Changed Thing_Activate so that passing a tid of 0 activates the calling actor.
- Changed Thing_Remove so that passing a tid of 0 removes the calling actor.
- Added DECORATE parameters to A_Saw.

SVN r283 (trunk)
2006-08-10 15:28:12 +00:00
Randy Heit
3a552d4aa0 - It turns out that the Visual C++ 2005 runtime calls IsDebuggerPresent, which
is not available under Windows 95. Since this is (or at least should be) the
  only thing preventing us from running under Windows 95, I added a stub that
  replaces __imp__IsDebuggerPresent@0 with a pointer to a function that checks
  for the real thing.


SVN r279 (trunk)
2006-08-02 04:57:36 +00:00
Christoph Oelckers
5ac0789e6e - Added a type check to Spawn(actorname,...) to allow it to print a
meaningful message instead of the nondescript 
  'Tried to spawn a class-less actor'.
- Converted AGlassJunk to DECORATE and made the spawn function a little
  more flexible so that replacing the shard is easier.
- Converted ABloodSplatter to DECORATE.
- Removed A_Jiggle because it never worked properly.
- Changed DECORATE parser to allow commas between arguments for multi-
  argument properties. For all newly added properties this format will
  become mandatory but for backwards compatibility it is optional for
  old ones.
- Added a check for negative indices to TAutoGrowArray::SetVal to prevent
  passing an index of -1 from crashing the game.
- Fixed: Morphing must clear the weapon's flash sprite.
- Fixed: Resurrecting a morphed player caused a crash.
- Fixed: Random sounds that recursively refer to themselves caused a stack
  overflow. Now they print a warning and get ignored.


SVN r277 (trunk)
2006-07-31 10:22:53 +00:00
Christoph Oelckers
3f90f1655c - Used the new explosion handling to clean up the old style projectile
definitions. The SimpleProjectile class is gone and it uses the meta
  data and A_ExplodeParms instead now.
- Removed the deprecation warnings for explosion parameters again because 
  the new system is fully inheritable and therefore useful.
- Changed the explosion properties into meta data and adjusted A_ExplodeParams
  to use these when called without any parameters. Also removed all special
  parsing for A_Explode so now this function can be called with expressions
  like any other function.
- Changed DECORATE parsing so that functions with completely optional 
  parameter lists don't create an empty list when called without parameters.

SVN r274 (trunk)
2006-07-29 10:47:14 +00:00
Randy Heit
06681ec72d - Version bump to 2.1.4.
- Fixed: Friendlies would not turn to face you when you engaged them in
  conversation, nor would they reliably return to their original facing when
  you stopped talking to them.
- Added deprecation warnings for the DontHurtShooter, ExplosionRadius, and
  ExplosionDamage actor "properties." They were considered deprecated before;
  now this is explicitly stated when they are used. The problem with them is
  that they are not really properties and do not behave like other properties
  and cannot be inherited, because they are really just an alternate way of
  specifying parameters for A_Explode. (Anything that currently prints a
  deprecation warning will be removed completely in 2.2.0, which will be the
  version where custom state labels make their debut.)


SVN r272 (trunk)
2006-07-29 01:26:24 +00:00
Christoph Oelckers
f203219d24 - Changed player sprite translation for the menu so that it uses a regular
translation table instead of a local custom buffer.
- Fixed: ResetBaggage must set MeleeDamage to 0.


SVN r271 (trunk)
2006-07-26 09:50:17 +00:00
Christoph Oelckers
e5a26c75fa - Added replacement handling to A_BossDeath.
SVN r260 (trunk)
2006-07-16 15:00:10 +00:00
Christoph Oelckers
ecce60e8f9 SVN r258 (trunk) 2006-07-16 09:10:45 +00:00
Randy Heit
5e37e4a0b8 - Fixed: Makefile.mgw was mysteriously missing some targets. After fixing that,
I also removed some of GCC's warnings.


SVN r255 (trunk)
2006-07-16 01:25:29 +00:00
Christoph Oelckers
31c749058b - Generalized Hexen's class-based spawning to be a property of the player class
so now it is available in all games.
- Replaced the call to A_FlameSnd in the HereticPlayer's burn death sequence
  with A_FireScream and defined *burndeath for Heretic.
- Added Grubber's custom player class support.


SVN r250 (trunk)
2006-07-13 10:17:56 +00:00
Randy Heit
38a073626f - Changed decorate replacement to be opt-in instead of opt-out. This allows for
greater flexibility in what can be replaced (replaced actors need not be ancestors
  of actors that replace them) at the expense of not having universal actor
  replacement. Instances where replacements work:
   - Line specials that spawn things (Thing_Spawn and related)
   - ACS spawning commands (SpawnSpot and the like)
   - Spawning mapthings at level load time in P_SpawnMapThing()
   - Spawning items off of dead dudes in P_DropItem()
   - The A_SpawnItem decorate function
   - The summon and summonfriend console commands
   - ThingCount will count both original actors and their replacements as the same
     things.
  TBD: Should the ACS inventory functions use replacements too, or not?


SVN r249 (trunk)
2006-07-13 03:34:50 +00:00
Christoph Oelckers
5541dc69f1 - Fixed: Specifying 'strifefallingdamage' in MAPINFO cleared all other flags.
- Fixed: maxstepheight and maxdropoffheight were stored as ints instead of 
  fixed_t's by the DECORATE parser.


SVN r239 (trunk)
2006-07-08 20:17:52 +00:00
Randy Heit
6695e255ce - Added actor replacement for DECORATE. This works at a higher level than
using duplicate DoomEdNums and will affect all attempts to spawn the
  replaced actor. However, because this happens for all spawns and not just
  at map load, the replacing actor must be compatible with the replaced
  actor, which means that an actor can only serve as a replacement for one
  of its baseclasses. For example, if you want to use a modified imp, you can
  use this DECORATE:
      actor MyImp : DoomImp replaces DoompImp
      {
          // Put changed properties here
      }
- New: The IWAD dialog now remembers the last IWAD you picked and
  automatically highlights it the next time you run the game. This also
  applies if you check "Don't ask me this again": The IWAD selected will be
  the one that gets automatically loaded, not the one located first. (Using
  the -iwad parameter will not change the default IWAD.) In addition, you
  can now bring the dialog up even if you disable it by holding down SHIFT
  during startup.
- Changed ExtractFilePath() and ExtractFileBase() to return FStrings instead
  of writing to a provided output buffer. ExtractFileBase() can also
  optionally keep the file's extension in the result.
- Removed the -heapsize parameter entirely. The informational message should
  no longer be needed.
- Removed -maxdemo parameter. There's no point to having it around since
  the demo buffer grows automatically.


SVN r238 (trunk)
2006-07-08 02:17:35 +00:00
Christoph Oelckers
43c1ec4a74 - Fixed: Changed initialization of Weapon.Kickback so that it is only done
for direct descendants of AWeapon and not for every weapon being defined.
- Changed parsing of actor names back to not use C-mode. This change breaks
  any definition that contain periods in their name and apparently there's
  more than anyone could expect. Also altered the parser to manually check
  for colons inside the parsed string so that placing spaces around them
  is no longer necessary.
- Fixed: Weapons could be picked up for ammo even if they gave none.
- Fixed: A_Beacon was missing a NULL pointer check for the beacon's owner.
- Fixed: The status bar tried to access CPlayer->camera without checking
  its validity. In spy mode there is a possibility that it is NULL.

SVN r237 (trunk)
2006-07-03 09:07:56 +00:00
Christoph Oelckers
9e6d5c8fd9 - Fixed: G_NewInit destroyed the players' userinfo data.
- Changed the special radius damage handling for the barrel and boss brain
  into an actor flag.
- Added A_RadiusThrust code pointer for DECORATE and adjusted the radius 
  attack functions accordingly.


SVN r236 (trunk)
2006-07-02 21:58:10 +00:00
Randy Heit
9eb0aa1a02 - Fixed: G_InitLevelLocals() needs to OR in the crouching bits, otherwise it
discards the jumping bits.
- ProcessActor() now sets C mode before retrieving the actor's name.
- Fixed: The new SC_GetString() scanner accepted slashes at the end of tokens
  when not in C mode, even if they were the start of a comment. Now if you
  want a slash at the end, you must quote it.


SVN r211 (trunk)
2006-06-21 23:22:17 +00:00
Christoph Oelckers
1bd6ac028b - Converted a_doomhealth.cpp to DECORATE.
- Added a PickupMessage property to the internal actor parser, replaced
  most of the virtual PickupMessages with it and placed the code that
  reads the metadata into AInventory::PickupMessage. Now the
  PickupMessage method is truly virtual and I can do:
   Added a Health.LowMessage property to define double message items like
   Doom's medikit in DECORATE.
- Since defining Mana3 as an ammo type and then overriding the TryPickup
  method means that this item defeats all ammo checks in the game it might
  as well be defined as a CustomInventory item. At least this fixes the
  amount given in easy and very hard skills.
- Converted all ammo items to DECORATE.
- Changed internal property setting of ammo types and sister weapons
  to use fuglyname as for DECORATE definitions. This allows to export
  the ammo definitions into DECORATE definitions without doing it for
  the weapons themselves.
- Replaced obituary methods with actor properties.
- Fixed: The secret map check didn't work for maps inside Zips.



SVN r196 (trunk)
2006-06-17 20:29:41 +00:00
Christoph Oelckers
3eb63cf1fa For some unknown reason the HasBehavior check in P_OpenMapData was gone.
SVN r193 (trunk)
2006-06-15 16:23:41 +00:00
Christoph Oelckers
bb5a44fc90 - Fixed: The skin loader assumed that all skin textures are in Doom patch
format. Now it calls FTexture::CreateTexture to do proper checks.
- Removed the PickupSound method from FakeInventory and changed it so that
  it uses AInventory::PickupSound to store its custom pickup sound.
- Removed the PickupMessage method from FakeInventory. This can be handled
  by the standard pickup message code now that it uses the meta data for the
  message.
- Fixed: The maximum indices for StrifeTypes were inconsistent. Now the
  allowed range is 0-1000 in all situations.
- Fixed: Setting a local SNDINFO for a map deleted all skin based sounds.
- Added a crouchsprite property to the skin info.
- Fixed: Crouching sprites must be checked each frame, not just each tic.
- Added an srand call to D_DoomMain in order to randomize the values returned
  by rand which is being used to shuffle the playlist.


SVN r185 (trunk)
2006-06-11 11:28:48 +00:00
Randy Heit
e2179d5c2d Guess what. It's not 2005 anymore.
SVN r184 (trunk)
2006-06-11 01:37:00 +00:00
Christoph Oelckers
15681d0588 - Added a StartConversation special that allows automatic activation of Strife
dialogs.
- Added Thing_Raise special that allows Arch-Vile like resurrections from scripts
  or DECORATE states.
- Added a RadiusDamageFactor property for actors. This replaces the hard coded
  factor of 0.25 for Hexen's players.
- Added new SpawnProjectile function to ACS. It's the same as Thing_Projectile2
  but the projectile is specified by name, not spawn ID.
- Added MAPINFO option to set the compatibility flags. If this is done these
  explicit settings will take precedence over the compatflags CVAR.

SVN r164 (trunk)
2006-06-03 12:30:11 +00:00
Christoph Oelckers
fb31db860d - Fixed: Monsters couldn't hurt other monsters of the same species if they
were supposed to hate them.
- Since I was editing the file anyway I added checks for Heretic's and Strife's
  damaging floor types to DCajunMaster::IsDangerous.
- Added a NULL pointer check to DCajunMaster::TurnToAng because a crash log
  indicated that this can happen.
- Fixed: Strife's energy pod contains 20 units when dropped by monsters.
  To achieve this I added an Ammo.DropAmount property because there are
  no other means to control this from inside a conversation script.

SVN r151 (trunk)
2006-05-28 14:54:01 +00:00
Randy Heit
df799ade24 - Fixed GCC 4 warnings in FNodeBuilder::CreateSubsectorsForReal().
- Changed f_finale.cpp/atkstates[] into a static variable, since its
  anonymous type prevents it from being accessed from other files anyway.
- Fixed: The behavior of the eventtail advancement in d_net.cpp/CheckAbort()
  was compiler-dependant.
- Fixed warnings GCC 4 threw up while compiling re2c and lemon.
- Removed __cdecl from makewad.c again. This is already defined as a builtin
  for MinGW, and redefining it produces a warning. (Why is main explicitly
  declared __cdecl anyway?)
- Fixed building ccdv-win32 with GCC 4. GCC 4 creates a memcpy call, which
  won't work because it doesn't get linked with the standard C library.


SVN r135 (trunk)
2006-05-22 01:34:07 +00:00
Christoph Oelckers
f8bdceab38 - Fixed: The automap code had the check for rotation reversed.
- Changed type PClass::FreeIndices to TArray<unsigned int> because that's
  the type of the indices.
- Fixed: makewad.c needs __cdecl for non-Windows builds.
- Fixed: FinishThingdef didn't check whether the WeaponClass pointer in
  AWeaponPiece was a valid name.



SVN r133 (trunk)
2006-05-20 09:16:08 +00:00
Christoph Oelckers
3431564b02 - Increased the StrifeTypes array to 999 entries so that custom WADs have
more flexibility.



SVN r131 (trunk)
2006-05-19 21:31:25 +00:00
Randy Heit
6cd1e2ce6a - Fixed: CopyPlayer() in p_saveg.cpp should use normal assignment, not
memcpy to copy the player structures.
- Fixed compilation with MinGW again and removed most of the new warnings.

And following is the log that I forgot to paste in for the previous commit:

- Changed the memory management for FString. Instead of using a garbage
  collected heap, it now uses normal heap calls and reference counting to
  implement lazy copying. You may now use bitwise operators to move
  (but not copy!) FStrings around in memory. This means that the
  CopyForTArray template function is gone, since TArrays can now freely
  move their contents around without bothering with their specifics.
  
  There is one important caveat, however. It is not acceptable to blindly 0
  an FString's contents. This necessitated the creation of a proper
  constructor for player_s so that it can be reset without using memset. I
  did a quick scan of all memsets in the source and didn't see anything else
  with a similar problem, but it's possible I missed something.
- Fixed: Build tiles were never deallocated.
- Fixed: Using Build's palette.dat only got half the palette right.


SVN r117 (trunk)
2006-05-16 04:19:20 +00:00
Christoph Oelckers
afd6a1258f - Added a show_obituaries option to disable obituaries without disabling
other more important message types which have lower priority for some
  reason.
- Added a menu option for show_messages after accidentally switching it
  off far too often and wondering why no messages appear.
- Added crouching DoomPlayer sprites submitted by Enjay.
- Fixed DF_NO_CROUCH was not checked.
- Fixed: The intermission script parser had some of its cases in the
  keyword parser incorrectly sorted.
- Fixed: atterm was still defined to take a STACK_ARGS function argument.
- Added an AltFlash state for weapons.
- Turned FloatSpeed into an actor property and changed the value to 5
  for all floating Strife actors, as a comment in the source indicated.
(r114 below):
- Added GZDoom's code for Vavoom slope things because I wanted to test
  something with a map from Silent Steel.
- Added nocrouch and allowcrouch MAPINFO commands and a DF_NO_CROUCH
  dmflag.
- Added GZDoom's crouching code after cleaning it up so that adding
  crouching sprites will be easier.

SVN r115 (trunk)
2006-05-15 15:28:46 +00:00
Christoph Oelckers
caed57baa5 SVN r114 (trunk) 2006-05-14 14:30:13 +00:00
Christoph Oelckers
bb617dfbfd - Changed: The decision whether blood splatter sprites are spawned is no
longer determined by game. Instead there's a new flag, MF5_BLOODSPLATTER
  which is deciding what to do. To keep backwards compatibility this flag
  is unset for projectiles in Doom and Strife and set for them in Heretic 
  and Hexen. The same applies to DECORATE but of course the flag can be
  manipulated here.
- BLODxx sprites are now globally renamed to BLUDxx when not playing Doom. 
  This allows using the same states in every game, including the 
  Raven-specific blood actors.
- Gave the bullet puff and the axe blood masses of 5 so that the make small
  splashes.
- Added A_Light(value) code pointer for DECORATE to generalize the weapon
  light effect.
- Added 'noskillmenu' option to MAPINFO episode definitions. This is for
  WADs that want to implement a skill selection level.
- Added APROP_ChaseGoal and APROP_Frightened actor properties for ACS.
- Added MF5_CHASEGOAL flag that makes monsters to go after their goal even
  if they have a valid target.
- Fixed some issues with the changes to P_NewChaseDir I made to include
  MBF's dropoff logic.
- Added a PowerFrightener powerup class. It seemed like such a waste to
  have this cool feature but no means to use it in a decent fashion.
- Fixed: S_Init and S_ParseSndInfo should call atterm only once but not
  each time they are called.

SVN r112 (trunk)
2006-05-13 12:41:15 +00:00
Christoph Oelckers
159c548c5a - Changed A_ChangeFlag so that it doesn't need to alter the flag
string. With strings being passed as names this is unsafe.
- Removed unused parameter types from the function parameter parser for
  DECORATE.
- Changed: All actor name parameters in DECORATE are now passed as 
  FNames, not as strings. 
- Fixed: The MAPINFO parser stored the RedirectType as a type pointer.
  But at this point DECORATE hasn't been read yet so this was limited to
  the internal classes.
- Fixed: TXT_NEED_IDCARD wasn't terminated with a ';'.
- Fixed: Strife's DeadRebel was missing its DoomEdNum.
- With names as type identifiers it is no longer necessary to remap
  the monster types to internal constants in A_BossDeath.
- Fixed: A_BossDeath got the string from a name - just to get a name from
  the string. Using the name directly is sufficient.


SVN r103 (trunk)
2006-05-10 15:07:14 +00:00
Randy Heit
032526340a - Redid ClearLcoks() fix that I accidentally removed.
SVN r102 (trunk)
2006-05-10 04:12:43 +00:00
Randy Heit
d878c2e7d6 - Backported the classnames-are-names changes from the FP code.
SVN r97 (trunk)
2006-05-10 02:40:43 +00:00
Christoph Oelckers
763efb3682 - Fixed: Skin definitions were never freed.
- Fixed: Names in terrain definitions were never freed. Replacing them with
  FNames would have been a good idea anyway.
- Fixed: The lock definitions were never freed.
- Fixed: FDoorAnimation was missing a destructor.
- Fixed: animation and switch definitions were never freed.
- Replaced all other places where FindType was used with FNames with 
  IFindType.

SVN r90 (trunk)
2006-05-09 15:07:45 +00:00
Christoph Oelckers
ace3ed1188 May 9, 2006 (Changes by Graf Zahl)
- Fixed: If you want to use a name as the missile parameter for the basic
  attack functions the type search in DoAttack must be case insensitive.
- Fixed: APowerup::DoEffect must do more thorough checks before resetting
  the fixed colormap.


SVN r89 (trunk)
2006-05-09 08:58:30 +00:00
Randy Heit
df17a60f5d - Fixed: The names in the Depths array in m_options.cpp were never freed.
- Fixed: FDoomEdMap needed a destructor.
- Fixed: Decal animators were never freed.
- Fixed: Colormaps were never freed.
- Fixed: Memory allocated in R_InitTranslationTables() was never freed.
- Fixed: R_InitParticles() allocated way more memory than it needed to. (And the
  particle memory was never freed, either.)
- Fixed: FMetaTable::FreeMeta() should use delete[] to free string metadata.
- Fixed: FConfigFile::ClearCurrentSection() must cast the entry to a char *
  before deleting it, because that's the way it was allocated.
- Fixed definitions of DeadZombieMan and DeadShotgunGuy in doom/deadthings.txt.
  Skip_super resets the dropitem list, so having it after "DropItem None" is
  pointless.
- Fixed: Decorate DropItem information was never freed.
- Fixed: FinishStates() allocated even 0-entry state arrays.
- Fixed: Default actor instances were never freed.
- Fixed: FRandomSoundList never freed its sound list.
- Fixed: Level and cluster strings read from MAPINFO were never freed.
- Fixed: Episode names were never freed.
- Fixed: InverseColormap and GoldColormap were never freed. Since they're always
  allocated, they can just be arrays rather than pointers.
- Fixed: FFont destructor never freed any of the character data or the font's name.
- Fixed: Fonts were not freed at exit.
- Fixed: FStringTable::LoadLanguage() did not call SC_Close().
- Fixed: When using the -iwad parameter, IdentifyVersion() did not release the
  buffer it created to hold the parameter's path.


SVN r88 (trunk)
2006-05-09 03:40:15 +00:00
Christoph Oelckers
d4160f7211 May 7, 2006 (Changes by Graf Zahl)
- Added a misc/secret sound definition for Heretic.
- Fixed: Powered up weapons were not properly deselected when the level ended
  and their ready state was different from the main weapon's.
- Made some improvements to A_CountdownArg.
- Removed the 'Yes', 'No' and 'Greetings' state assignment commands. They haven't
  been documented and thus haven't been used at all so far. Therefore they don't 
  need to be handled considering that they will go away anyway.
- Changed the DECORATE state parser so that Stop can also be specified right after
  a label, in addition to goto.


SVN r84 (trunk)
2006-05-07 23:55:17 +00:00
Christoph Oelckers
605a9a7715 May 6, 2006 (Changes by Graf Zahl)
- Converted a_zombie.cpp and most of a_strifestuff.cpp to DECORATE.
- Converted a_strifekeys.cpp to DECORATE and moved the pickup messages to the
  string table.
- Removed the WIF_HITS_GHOSTS weapon flag and replaced it with MF2_THRUGHOST. 
  There is no need to keep two flags around with virtually the same meaning.
- Changed the ShadowArmor to use the VISIBILITYPULSE flag to change its translucency.
  It looks much better now than the cheap code pointer based blinking it used before.
- Converted most of a_strifeitems.cpp to DECORATE and moved the pickup messages 
  to the string table.
- Converted a_strifearmor.cpp to DECORATE and moved the pickup messages to the
  string table.
- Moved the messages for killing spectres to the string table.
- Converted the quest items to DECORATE. Also changed A_GiveQuestItem to get
  the messages it prints from the string table instead of the quest item's tag
  string.

May 5, 2006 (Changes by Graf Zahl)
- Removed the hopelessly outdated thingdef_doc.txt file from the repository.
- Converted a_peasant.cpp and a_ratbuddy.cpp to DECORATE.
- Fixed: C_DoKey didn't treat an empty string as 'no binding' when checking for
  valid double bindings.
- Converted a_merchants.cpp to DECORATE.
- Added MF5_NODAMAGE flag to generalize the behavior of Strife's merchants which
  can be shot but take no damage from getting hurt.
- Converted a_beggars.cpp to DECORATE.
- Added an Inventory.GiveQuest property. This makes it possible to define all of
  Strife's original items that also give a quest item in DECORATE but it is also 
  useful to define items like the ones in Day of the Acolyte without ugly workarounds.
- Added a Tag property and Strife teaser conversation IDs to DECORATE so now it is 
  possible to define many of Strife's items.
- Added a FastSpeed property to DECORATE so that projectiles can finally be
  assigned a higher speed for fast mode.
- Added a ACS_LockedExecuteDoor special. It is basically the same as the existing
  ACS_LockedExecute but it uses the 'door' message instead of 'remote'. This
  cannot be integrated into ACS_LockedExecute because all its arguments are already
  in use.
- Added a fully customizable A_CustomMeleeAttack function for DECORATE.


SVN r83 (trunk)
2006-05-07 00:27:22 +00:00
Randy Heit
3c9b55d1db SVN r81 (trunk) 2006-05-06 03:25:12 +00:00
Randy Heit
ea3b76815d - Removed -bpal parameter. Blood's blood.pal is loaded from blood.rff, and
its tiles are loaded from the same directory.
- RFF files now load their entire directories into the lumplist.
- Added char * and const char * type coversions for FString, so FStrings can be
  freely passed to functions expecting C strings. (Except varargs functions,
  which still require manually fetching the C string out of it.)
- Renamed the name class to FName.
- Renamed the string class to FString to emphasize that it is not std::string.


SVN r74 (trunk)
2006-05-03 22:45:01 +00:00
Christoph Oelckers
0e69196370 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)
2006-05-03 14:54:48 +00:00
Christoph Oelckers
29cd024aba SVN r71 (trunk) 2006-04-30 21:49:18 +00:00
Christoph Oelckers
790ff69f52 - Removed ABossEye::Serialize because it didn't do anything.
- Fixed the issues with .96x's railgun code and added it to the current
  version.
- Fixed: Setting of the friendly Minotaur's angle was inconsistent and
  could cause it to move backwards in a féw situation.
- Fixed: The minotaur did checks for type by checking for the MF_FRIENDLY
  flag, not by checking for the actor class. That made it impossible to
  spawn friendly 'normal' minotaurs.
- Moved a few virtual methods which are only applicable to the friendly
  minotaur to AMinotaurFriend.
- Fixed: The friendly minotaur checked the master's health instead of
  the target's when deciding whether to switch targets. Replaced with
  MF4_NOTARGETSWITCH.
- Fixed: maybedrawnow must not draw the console unless the background
  texture has been set up.

SVN r66 (trunk)
2006-04-23 20:12:27 +00:00
Randy Heit
7e7ab6b4ec - Fixed compilation with mingw again.
- Added multiple-choice sound sequences. These overcome one of the major
  deficiences of the Hexen-inherited SNDSEQ system while still being Hexen
  compatible: Custom door sounds can now use different opening and closing
  sequences, for both normal and blazing speeds.
- Added a serializer for TArray.
- Added a countof macro to doomtype.h. See the1's blog to find out why
  it's implemented the way it is.
    <http://blogs.msdn.com/the1/articles/210011.aspx>
- Added a new method to FRandom for getting random numbers larger than 255,
  which lets me:
- Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics.
- Fixed: If you're going to have sector_t.SoundTarget, then they need to
  be included in the pointer cleanup scans.
- Ported back newer name code from 2.1.
- Fixed: Using -warp with only one parameter in Doom and Heretic to
  select a map on episode 1 no longer worked.
- New: Loading a multiplayer save now restores the players based on
  their names rather than on their connection order. Using connection
  order was sensible when -net was the only way to start a network game,
  but with -host/-join, it's not so nice. Also, if there aren't enough
  players in the save, then the extra players will be spawned normally,
  so you can continue a saved game with more players than you started it
  with.
- Added some new SNDSEQ commands to make it possible to define Heretic's
  ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence,
  delayonce, and restart. With these, it is basically possible to obsolete
  all of the $ambient SNDINFO commands.
- Fixed: Sound sequences would only execute one command each time they were
  ticked.
- Fixed: No bounds checking was done on the volume sound sequences played at.
- Fixed: The tic parameter to playloop was useless and caused it to
  act like a redundant playrepeat. I have removed all the logic that
  caused playloop to play repeating sounds, and now it acts like an
  infinite sequence of play/delay commands until the sequence is
  stopped.
- Fixed: Sound sequences were ticked every frame, not every tic, so all
  the delay commands were timed incorrectly and varied depending on your
  framerate. Since this is useful for restarting looping sounds that got
  cut off, I have not changed this. Instead, the delay commands now
  record the tic when execution should resume, not the number of tics
  left to delay.


SVN r57 (trunk)
2006-04-21 01:22:55 +00:00
Christoph Oelckers
8e631eca0b SVN r54 (trunk) 2006-04-18 22:15:05 +00:00