mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 15:22:15 +00:00
This commit is contained in:
commit
00823217c7
4 changed files with 501 additions and 370 deletions
|
@ -3535,9 +3535,9 @@ bool P_BounceActor(AActor *mo, AActor *BlockingMobj, bool ontop)
|
||||||
if (mo->bouncecount>0 && --mo->bouncecount == 0)
|
if (mo->bouncecount>0 && --mo->bouncecount == 0)
|
||||||
{
|
{
|
||||||
if (mo->flags & MF_MISSILE)
|
if (mo->flags & MF_MISSILE)
|
||||||
P_ExplodeMissile(mo, nullptr, nullptr);
|
P_ExplodeMissile(mo, nullptr, BlockingMobj);
|
||||||
else
|
else
|
||||||
mo->CallDie(nullptr, nullptr);
|
mo->CallDie(BlockingMobj, nullptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1814,15 +1814,18 @@ void P_ExplodeMissile (AActor *mo, line_t *line, AActor *target)
|
||||||
mo->effects = 0; // [RH]
|
mo->effects = 0; // [RH]
|
||||||
mo->flags &= ~MF_SHOOTABLE;
|
mo->flags &= ~MF_SHOOTABLE;
|
||||||
|
|
||||||
FState *nextstate=NULL;
|
FState *nextstate = nullptr;
|
||||||
|
|
||||||
if (target != NULL && ((target->flags & (MF_SHOOTABLE|MF_CORPSE)) || (target->flags6 & MF6_KILLED)) )
|
if (target != nullptr)
|
||||||
{
|
{
|
||||||
if (mo->flags7 & MF7_HITTARGET) mo->target = target;
|
if (mo->flags7 & MF7_HITTARGET) mo->target = target;
|
||||||
if (mo->flags7 & MF7_HITMASTER) mo->master = target;
|
if (mo->flags7 & MF7_HITMASTER) mo->master = target;
|
||||||
if (mo->flags7 & MF7_HITTRACER) mo->tracer = target;
|
if (mo->flags7 & MF7_HITTRACER) mo->tracer = target;
|
||||||
if (target->flags & MF_NOBLOOD) nextstate = mo->FindState(NAME_Crash);
|
if ((target->flags & (MF_SHOOTABLE | MF_CORPSE)) || (target->flags6 & MF6_KILLED))
|
||||||
if (nextstate == NULL) nextstate = mo->FindState(NAME_Death, NAME_Extreme);
|
{
|
||||||
|
if (target->flags & MF_NOBLOOD) nextstate = mo->FindState(NAME_Crash);
|
||||||
|
if (nextstate == NULL) nextstate = mo->FindState(NAME_Death, NAME_Extreme);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (nextstate == NULL) nextstate = mo->FindState(NAME_Death);
|
if (nextstate == NULL) nextstate = mo->FindState(NAME_Death);
|
||||||
|
|
||||||
|
|
|
@ -8202,14 +8202,16 @@ FxExpression *FxVMFunctionCall::Resolve(FCompileContext& ctx)
|
||||||
{
|
{
|
||||||
// only cast implicit-string types for vararg, leave everything else as-is
|
// only cast implicit-string types for vararg, leave everything else as-is
|
||||||
// this was outright copypasted from FxFormat
|
// this was outright copypasted from FxFormat
|
||||||
ArgList[i] = ArgList[i]->Resolve(ctx);
|
x = ArgList[i]->Resolve(ctx);
|
||||||
if (ArgList[i]->ValueType == TypeName ||
|
if (x)
|
||||||
ArgList[i]->ValueType == TypeSound)
|
|
||||||
{
|
{
|
||||||
x = new FxStringCast(ArgList[i]);
|
if (x->ValueType == TypeName ||
|
||||||
x = x->Resolve(ctx);
|
x->ValueType == TypeSound)
|
||||||
|
{
|
||||||
|
x = new FxStringCast(ArgList[i]);
|
||||||
|
x = x->Resolve(ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else x = ArgList[i];
|
|
||||||
}
|
}
|
||||||
else if (!(flag & (VARF_Ref|VARF_Out)))
|
else if (!(flag & (VARF_Ref|VARF_Out)))
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue