by Edward-san » Wed Aug 31, 2016 2:35 pm
It seems that this line in decorate.txt:
Code: Select all
A_SpawnItemEx("ChaseCam",-10,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER|SXF_ISTRACER,0,32700);
makes sure that the morphed actor's tracer, which points to the actor before morphing, is overridden with the camera:
Code: Select all
if (flags & SIXF_ISTRACER)
{
self->tracer = mo;
}
from InitSpawnedItem, called by A_SpawnItemEx.
The old actor's information is lost, making the program crash when attempting to unmorph, because it's trying to get the player's info from invalid actor.
In order to fix this, I suspect the old actor pointer should be stored in a different place than the 'tracer'. Graf?
It seems that this line in decorate.txt:
[code]
A_SpawnItemEx("ChaseCam",-10,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER|SXF_ISTRACER,0,32700);
[/code]
makes sure that the morphed actor's tracer, which points to the actor before morphing, is overridden with the camera:
[code]
if (flags & SIXF_ISTRACER)
{
self->tracer = mo;
}
[/code]
from InitSpawnedItem, called by A_SpawnItemEx.
The old actor's information is lost, making the program crash when attempting to unmorph, because it's trying to get the player's info from invalid actor.
In order to fix this, I suspect the old actor pointer should be stored in a different place than the 'tracer'. Graf?