This commit is contained in:
Rachael Alexanderson 2017-01-04 12:56:35 -05:00
commit ac22d80170
1 changed files with 14 additions and 0 deletions

View File

@ -238,6 +238,7 @@ TArray<PClassActor *> TouchedActors;
char *UnchangedSpriteNames; char *UnchangedSpriteNames;
int NumUnchangedSprites; int NumUnchangedSprites;
bool changedStates;
// Sprite<->Class map for ADehackedPickup::DetermineType // Sprite<->Class map for ADehackedPickup::DetermineType
static struct DehSpriteMap static struct DehSpriteMap
@ -988,6 +989,7 @@ static int PatchThing (int thingy)
{ {
statedef.MakeStateDefines(type); statedef.MakeStateDefines(type);
patchedStates = true; patchedStates = true;
changedStates = true;
} }
if (!strnicmp (Line1, "Initial", 7)) if (!strnicmp (Line1, "Initial", 7))
@ -1460,6 +1462,7 @@ static int PatchFrame (int frameNum)
else if (keylen == 10 && stricmp (Line1, "Next frame") == 0) else if (keylen == 10 && stricmp (Line1, "Next frame") == 0)
{ {
info->NextState = FindState (val); info->NextState = FindState (val);
changedStates = true;
} }
else if (keylen == 16 && stricmp (Line1, "Sprite subnumber") == 0) else if (keylen == 16 && stricmp (Line1, "Sprite subnumber") == 0)
{ {
@ -3049,6 +3052,17 @@ void FinishDehPatch ()
DPrintf (DMSG_NOTIFY, "%s replaces %s\n", subclass->TypeName.GetChars(), type->TypeName.GetChars()); DPrintf (DMSG_NOTIFY, "%s replaces %s\n", subclass->TypeName.GetChars(), type->TypeName.GetChars());
} }
// To avoid errors, flag all potentially touched states for use in weapons.
if (changedStates)
{
for (auto &s : StateMap)
{
for (auto i = 0; i < s.StateSpan; i++)
{
s.State[i].UseFlags |= SUF_WEAPON;
}
}
}
// Now that all Dehacked patches have been processed, it's okay to free StateMap. // Now that all Dehacked patches have been processed, it's okay to free StateMap.
StateMap.Clear(); StateMap.Clear();
StateMap.ShrinkToFit(); StateMap.ShrinkToFit();