Graf/Randi: I've got the property made now, and a function to control it.
Still a WIP, but I wanted to check: I should replace the flag checks where appropriate, and have A_ChangeFlag simply add/subtract the flag from their masks, right? Somewhat like I did here:
Code: Select all
//==========================================================================
//
//==========================================================================
DEFINE_PROPERTY(NoClipMask, O, Actor) //O has been set up to parse mask flags
{
// What doesn't the actor block?
PROP_INT_PARM(val, 0);
// [MC] Handle actor flags here.
// MASK_ALl doesn't combine all of them, because this could break things like bullet
// puffs with species. Instead, it'll just take priority like the THRUACTORS flag does.
if ((defaults->flags2 & MF2_THRUACTORS) && !(val & MASK_All))
val += MASK_All;
if ((defaults->flags2 & MF2_THRUGHOST) && !(val & MASK_Ghost))
val += MASK_Ghost;
if ((defaults->flags2 & MF6_THRUSPECIES) && !(val & MASK_Species))
val += MASK_Species;
if ((defaults->flags2 & MF6_MTHRUSPECIES) && !(val & MASK_MSpecies))
val += MASK_MSpecies;
if (val)
defaults->NoClipMask = val;
else
defaults->NoClipMask = MASK_Default;
}
//==========================================================================
//
//==========================================================================
DEFINE_PROPERTY(NoBlockMask, O, Actor)
{
// What isn't the actor blocked by?
PROP_INT_PARM(val, 0);
if ((defaults->flags2 & MF2_THRUACTORS) && !(val & MASK_All))
val += MASK_All;
if ((defaults->flags2 & MF2_THRUGHOST) && !(val & MASK_Ghost))
val += MASK_Ghost;
if ((defaults->flags2 & MF6_THRUSPECIES) && !(val & MASK_Species))
val += MASK_Species;
if ((defaults->flags2 & MF6_MTHRUSPECIES) && !(val & MASK_MSpecies))
val += MASK_MSpecies;
if (val)
defaults->NoBlockMask = val;
else
defaults->NoBlockMask = MASK_Default;
}