- Added DTA_TopOffset and DTA_LeftOffset values to the automap background drawer.

- Fixed: DECORATE color translations with explicit colors didn't work because the
  code treated byte values as fixed point.
- Fixed: LEVEL_NOALLIES must clear MF_FRIENDLY off any spawned actor except players.
  Otherwise it doesn't work properly.
- Fixed: Entering a backslash in the player's name box caused a crash because 
  the code analyzing the string was missing a NULL pointer check.
- Fixed: Thing_Hate and Teleport_ZombieChanger unconditionally made state jumps,
  even for dead monsters.
- Fixed: The palette flash for item pickup was not reset upon a player's death.
- Fixed: P_DamageMobj tried to get damage multiplier information from the
  damage inflictor, not the attacker.
- Fixed: PowerTimeFreezer::DoEffect did not call its superclass method.
- fixed: When morphed monsters died they tried to set MF3_STAYMORPHED for the
  attacker, not themselves. This caused a crash when they were killed by a crusher.


SVN r539 (trunk)
This commit is contained in:
Christoph Oelckers 2007-07-12 15:15:57 +00:00
parent 8f6fdc1d21
commit 2829361c5c
12 changed files with 45 additions and 13 deletions

View file

@ -19,7 +19,7 @@ CFLAGS += -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DNEED_STRUPR
LDFLAGS += -lFLAC++ -lFLAC -lz -ljpeg -lfmod `sdl-config --libs` `pkg-config gtk+-2.0 --libs`
NASMFLAGS += -f elf -DM_TARGET_LINUX
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ sdl/ textures/ )
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ sdl/ textures/ thingdef/)
VPATH = $(SRCDIRS)
INCLUDES = $(addprefix -I,$(SRCDIRS))
CFLAGS += $(INCLUDES)

View file

@ -1,3 +1,20 @@
July 12, 2007 (Changes by Graf Zahl)
- Added DTA_TopOffset and DTA_LeftOffset values to the automap background drawer.
- Fixed: DECORATE color translations with explicit colors didn't work because the
code treated byte values as fixed point.
- Fixed: LEVEL_NOALLIES must clear MF_FRIENDLY off any spawned actor except players.
Otherwise it doesn't work properly.
- Fixed: Entering a backslash in the player's name box caused a crash because
the code analyzing the string was missing a NULL pointer check.
- Fixed: Thing_Hate and Teleport_ZombieChanger unconditionally made state jumps,
even for dead monsters.
- Fixed: The palette flash for item pickup was not reset upon a player's death.
- Fixed: P_DamageMobj tried to get damage multiplier information from the
damage inflictor, not the attacker.
- Fixed: PowerTimeFreezer::DoEffect did not call its superclass method.
- fixed: When morphed monsters died they tried to set MF3_STAYMORPHED for the
attacker, not themselves. This caused a crash when they were killed by a crusher.
May 28, 2007 (Changes by Graf Zahl)
- Split thingdef.cpp into several files so that the state and property code
no longer gets in the way of the main parser.

View file

@ -1108,7 +1108,7 @@ void AM_clearFB (int color)
{
for (x = mapxstart >> MAPBITS; x < f_w; x += pwidth)
{
screen->DrawTexture (mapback, x, y, DTA_ClipBottom, f_h, TAG_DONE);
screen->DrawTexture (mapback, x, y, DTA_ClipBottom, f_h, DTA_TopOffset, 0, DTA_LeftOffset, 0, TAG_DONE);
}
}
}

View file

@ -589,7 +589,7 @@ void D_ReadUserInfoStrings (int i, BYTE **stream, bool update)
value = ptr;
infotype++;
}
else
else if (breakpt != NULL)
{
value = breakpt + 1;
if ( (breakpt = strchr (value, '\\')) )

View file

@ -1398,6 +1398,7 @@ void APowerTimeFreezer::InitEffect( )
void APowerTimeFreezer::DoEffect( )
{
Super::DoEffect();
if ( EffectTics > 4*32
|| (( EffectTics > 3*32 && EffectTics <= 4*32 ) && EffectTics % 16 != 0 )
|| (( EffectTics > 2*32 && EffectTics <= 3*32 ) && EffectTics % 8 != 0 )

View file

@ -375,7 +375,7 @@ void AMorphedMonster::Destroy ()
void AMorphedMonster::Die (AActor *source, AActor *inflictor)
{
// Dead things don't unmorph
source->flags3 |= MF3_STAYMORPHED;
flags3 |= MF3_STAYMORPHED;
Super::Die (source, inflictor);
if (UnmorphedMe != NULL && (UnmorphedMe->flags & MF_UNMORPHED))
{

View file

@ -892,13 +892,13 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage
return;
}
// Handle active damage modifiers (e.g. PowerDamage)
if (inflictor->Inventory != NULL)
{
int olddam = damage;
inflictor->Inventory->ModifyDamage(olddam, mod, damage, false);
if (olddam != damage && damage <= 0) return;
}
}
// Handle active damage modifiers (e.g. PowerDamage)
if (source != NULL && source->Inventory != NULL)
{
int olddam = damage;
source->Inventory->ModifyDamage(olddam, mod, damage, false);
if (olddam != damage && damage <= 0) return;
}
// Handle passive damage modifiers (e.g. PowerProtection)
if (target->Inventory != NULL)

View file

@ -773,7 +773,7 @@ FUNC(LS_Teleport_ZombieChanger)
if (it != NULL)
{
EV_Teleport (arg0, arg1, ln, backSide, it, false, false, false);
it->SetState (it->FindState(NAME_Pain));
if (it->health >= 0) it->SetState (it->FindState(NAME_Pain));
return true;
}
return false;
@ -1286,7 +1286,7 @@ FUNC(LS_Thing_Hate)
hater->target = hatee;
if (!(hater->flags2 & MF2_DORMANT))
{
hater->SetState (hater->SeeState);
if (hater->health > 0) hater->SetState (hater->SeeState);
}
}
}

View file

@ -3220,6 +3220,10 @@ AActor *AActor::StaticSpawn (const PClass *type, fixed_t ix, fixed_t iy, fixed_t
return NULL;
}
}
if (level.flags & LEVEL_NOALLIES && !actor->player)
{
actor->flags &= ~MF_FRIENDLY;
}
// [RH] Count monsters whenever they are spawned.
if (actor->CountsAsKill())
{

View file

@ -1035,6 +1035,8 @@ void APlayerPawn::Die (AActor *source, AActor *inflictor)
{
Super::Die (source, inflictor);
if (player != NULL && player->mo == this) player->bonuscount = 0;
if (player != NULL && player->mo != this)
{ // Make the real player die, too
player->mo->Die (source, inflictor);

View file

@ -194,6 +194,8 @@ int main (int argc, char **argv)
GtkAvailable = gtk_init_check (&argc, &argv);
setlocale (LC_ALL, "C");
if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_NOPARACHUTE) == -1)
{
fprintf (stderr, "Could not initialize SDL:\n%s\n", SDL_GetError());

View file

@ -609,6 +609,12 @@ static void AddToTranslation(unsigned char * translation, char * range)
gs = g2 - g1;
bs = b2 - b1;
}
r <<= FRACBITS;
g <<= FRACBITS;
b <<= FRACBITS;
rs <<= FRACBITS;
gs <<= FRACBITS;
bs <<= FRACBITS;
if (start == end)
{
translation[start] = ColorMatcher.Pick