- fixed: The SaveVersion check for the USDF related changes for the current dialogue did not have the correct version number.

- fixed: All blood spawning functions checked the ALLOWPARTICLES flag on the class defaults before actor replacement instead of after.


SVN r2563 (trunk)
This commit is contained in:
Christoph Oelckers 2010-08-21 19:50:07 +00:00
parent 1460b8feed
commit 96a8f1ceee
2 changed files with 15 additions and 8 deletions

View File

@ -722,19 +722,26 @@ public:
const PClass *GetBloodType(int type = 0) const const PClass *GetBloodType(int type = 0) const
{ {
const PClass *bloodcls;
if (type == 0) if (type == 0)
{ {
return PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType, NAME_Blood)); bloodcls = PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType, NAME_Blood));
} }
else if (type == 1) else if (type == 1)
{ {
return PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType2, NAME_BloodSplatter)); bloodcls = PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType2, NAME_BloodSplatter));
} }
else if (type == 2) else if (type == 2)
{ {
return PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType3, NAME_AxeBlood)); bloodcls = PClass::FindClass((ENamedName)GetClass()->Meta.GetMetaInt(AMETA_BloodType3, NAME_AxeBlood));
} }
else return NULL; else return NULL;
if (bloodcls != NULL)
{
bloodcls = bloodcls->ActorInfo->GetReplacement()->Class;
}
return bloodcls;
} }
// Calculate amount of missile damage // Calculate amount of missile damage

View File

@ -361,7 +361,7 @@ void AActor::Serialize (FArchive &arc)
arc << foo; arc << foo;
} }
if (SaveVersion > 2500) // adjust after merging into trunk! if (SaveVersion > 2560)
{ {
arc << ConversationRoot << Conversation; arc << ConversationRoot << Conversation;
} }
@ -4486,7 +4486,7 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
if (bloodcls!=NULL && bloodtype <= 1) if (bloodcls!=NULL && bloodtype <= 1)
{ {
z += pr_spawnblood.Random2 () << 10; z += pr_spawnblood.Random2 () << 10;
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE); th = Spawn (bloodcls, x, y, z, NO_REPLACE); // GetBloodType already performed the replacement
th->velz = FRACUNIT*2; th->velz = FRACUNIT*2;
th->angle = dir; th->angle = dir;
if (gameinfo.gametype & GAME_DoomChex) if (gameinfo.gametype & GAME_DoomChex)
@ -4549,7 +4549,7 @@ void P_BloodSplatter (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
{ {
AActor *mo; AActor *mo;
mo = Spawn(bloodcls, x, y, z, ALLOW_REPLACE); mo = Spawn(bloodcls, x, y, z, NO_REPLACE); // GetBloodType already performed the replacement
mo->target = originator; mo->target = originator;
mo->velx = pr_splatter.Random2 () << 10; mo->velx = pr_splatter.Random2 () << 10;
mo->vely = pr_splatter.Random2 () << 10; mo->vely = pr_splatter.Random2 () << 10;
@ -4590,7 +4590,7 @@ void P_BloodSplatter2 (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
x += ((pr_splat()-128)<<11); x += ((pr_splat()-128)<<11);
y += ((pr_splat()-128)<<11); y += ((pr_splat()-128)<<11);
mo = Spawn (bloodcls, x, y, z, ALLOW_REPLACE); mo = Spawn (bloodcls, x, y, z, NO_REPLACE); // GetBloodType already performed the replacement
mo->target = originator; mo->target = originator;
// colorize the blood! // colorize the blood!
@ -4629,7 +4629,7 @@ void P_RipperBlood (AActor *mo, AActor *bleeder)
if (bloodcls!=NULL && bloodtype <= 1) if (bloodcls!=NULL && bloodtype <= 1)
{ {
AActor *th; AActor *th;
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE); th = Spawn (bloodcls, x, y, z, NO_REPLACE); // GetBloodType already performed the replacement
if (gameinfo.gametype == GAME_Heretic) if (gameinfo.gametype == GAME_Heretic)
th->flags |= MF_NOGRAVITY; th->flags |= MF_NOGRAVITY;
th->velx = mo->velx >> 1; th->velx = mo->velx >> 1;