- converted the rest of a_strifestuff.cpp.

- changed some very old A_Explode calls which passed all values as integer literals.
This commit is contained in:
Christoph Oelckers 2016-11-29 00:16:30 +01:00
commit 55b549c0c6
20 changed files with 143 additions and 139 deletions

View file

@ -7018,6 +7018,32 @@ int AActor::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FN
return (death == NULL) ? -1 : damage;
}
DEFINE_ACTION_FUNCTION(AActor, TakeSpecialDamage)
{
PARAM_SELF_PROLOGUE(AActor);
PARAM_OBJECT(inflictor, AActor);
PARAM_OBJECT(source, AActor);
PARAM_INT(damage);
PARAM_NAME(damagetype);
ACTION_RETURN_INT(self->TakeSpecialDamage(inflictor, source, damage, damagetype));
}
int AActor::CallTakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype)
{
IFVIRTUAL(AActor, TakeSpecialDamage)
{
VMValue params[5] = { (DObject*)this, inflictor, source, damage, damagetype.GetIndex() };
VMReturn ret;
VMFrameStack stack;
int retval;
ret.IntAt(&retval);
stack.Call(func, params, 5, &ret, 1, nullptr);
return retval;
}
else return TakeSpecialDamage(inflictor, source, damage, damagetype);
}
void AActor::Crash()
{
// [RC] Weird that this forces the Crash state regardless of flag.