- Fixed: Items which should stay but had an IF_ALWAYSPICKUP flag were removed.

- Fixed: The pickup flash must only play when an item is picked up so the 
  correct place to spawn it is in AInventory::Touch, not in AInventory::GoAway.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@193 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
Christoph Oelckers 2008-10-26 17:06:41 +00:00
parent f1b237d90f
commit f71f47eaab
4 changed files with 60 additions and 20 deletions

View file

@ -1,8 +1,35 @@
October 26, 2008 (Changes by Graf Zahl)
- Added read and write barriers to the actor pointer in the sound channel
structure.
- Fixed: Items which should stay but had an IF_ALWAYSPICKUP flag were removed.
- Fixed: The pickup flash must only play when an item is picked up so the
correct place to spawn it is in AInventory::Touch, not in AInventory::GoAway.
- Fixed: A_Jump didn't properly determine a state's owner anymore when called
from weapons.
October 25, 2008 (Changes by Graf Zahl)
- Added NULL checks to all places where class names are passed as DECORATE
parameters.
- All DECORATE parameters are passed as expressions now. This change allows
for compile time checks of all class names being used in DECORATE so many
incorrect definitions may output warnings now.
October 23, 2008 (Changes by Graf Zahl)
- Changed: S_StopChannel now resets the actor's sound flags. The previous bug
made me think that delaying this until FMod calls the end of sound callback
may simply be too late.
- Fixed: The high level sound code must not rely on FMod immediately returning
the sound channel data when a sound is being stopped. This caused
an endless loop when changing levels with Strife's Flamethrower active.
October 22, 2008 (Changes by Graf Zahl)
- Changed DECORATE sound and color parameters to use expressions.
October 21, 2008 (Changes by Graf Zahl)
- Added a proper function parser to the expression evaluator and converted
sin/cos and action specials to use it. The old evaluator is gone now.
- fixed some GCC problems with autosegs.
October 20, 2008
- Game time is now frozen during screen wipes. This obsoletes the DEM_WIPEON
and DEM_WIPEOFF commands. Fixes multimap demos desyncing when played back

View file

@ -553,19 +553,11 @@ bool AInventory::GoAway ()
// Dropped items never stick around
if (flags & MF_DROPPED)
{
if (PickupFlash != NULL)
{
Spawn(PickupFlash, x, y, z, ALLOW_REPLACE);
}
return false;
}
if (!ShouldStay ())
{
if (PickupFlash != NULL)
{
Spawn(PickupFlash, x, y, z, ALLOW_REPLACE);
}
Hide ();
if (ShouldRespawn ())
{
@ -893,8 +885,13 @@ void AInventory::Touch (AActor *toucher)
toucher = toucher->player->mo;
}
if (!CallTryPickup (toucher))
return;
// This is the only situation when a pickup flash should ever play.
if (!CallTryPickup (toucher)) return;
if (PickupFlash != NULL && !ShouldStay())
{
Spawn(PickupFlash, x, y, z, ALLOW_REPLACE);
}
if (!(ItemFlags & IF_QUIET))
{
@ -1264,7 +1261,7 @@ bool AInventory::CallTryPickup (AActor *toucher)
{
bool res = TryPickup(toucher);
if (!res && (ItemFlags & IF_ALWAYSPICKUP))
if (!res && (ItemFlags & IF_ALWAYSPICKUP) && !ShouldStay())
{
res = true;
GoAwayAndDie();

View file

@ -1637,9 +1637,13 @@ void M_NewGame(int choice)
}
else if (EpiDef.numitems <= 1)
{
if (EpisodeNoSkill[0])
if (AllSkills.Size() == 1)
{
M_ChooseSkill(2);
M_ChooseSkill(0);
}
else if (EpisodeNoSkill[0])
{
M_ChooseSkill(AllSkills.Size() == 2? 1:2);
}
else
{
@ -1823,12 +1827,16 @@ void M_Episode (int choice)
epi = choice;
if (EpisodeNoSkill[choice])
if (AllSkills.Size() == 1)
{
M_ChooseSkill(2);
M_ChooseSkill(0);
return;
}
else if (EpisodeNoSkill[choice])
{
M_ChooseSkill(AllSkills.Size() == 2? 1:2);
return;
}
M_StartupSkillMenu(NULL);
}
@ -1858,13 +1866,17 @@ static void SCClass (int option)
{
M_SetupNextMenu (&EpiDef);
}
else if (AllSkills.Size() == 1)
{
M_ChooseSkill(0);
}
else if (!EpisodeNoSkill[0])
{
M_StartupSkillMenu(playerclass);
}
else
{
M_ChooseSkill(2);
M_ChooseSkill(AllSkills.Size() == 2? 1:2);
}
}
@ -1886,9 +1898,13 @@ static void M_ChooseClass (int choice)
{
M_SetupNextMenu (&EpiDef);
}
else if (AllSkills.Size() == 1)
{
M_ChooseSkill(0);
}
else if (EpisodeNoSkill[0])
{
M_ChooseSkill(2);
M_ChooseSkill(AllSkills.Size() == 2? 1:2);
}
else
{

View file

@ -3,5 +3,5 @@
// This file was automatically generated by the
// updaterevision tool. Do not edit by hand.
#define ZD_SVN_REVISION_STRING "1276"
#define ZD_SVN_REVISION_NUMBER 1276
#define ZD_SVN_REVISION_STRING "1278"
#define ZD_SVN_REVISION_NUMBER 1278