Obj_TryCrateDamage: return bool

This commit is contained in:
James R 2023-12-21 21:39:30 -08:00
parent 5d91834c60
commit 8a54edf204
3 changed files with 14 additions and 11 deletions

View file

@ -326,7 +326,7 @@ void Obj_BoxSideThink(mobj_t *mo);
void Obj_TryCrateInit(mobj_t *mo);
boolean Obj_TryCrateThink(mobj_t *mo);
void Obj_TryCrateTouch(mobj_t *special, mobj_t *toucher);
void Obj_TryCrateDamage(mobj_t *target, mobj_t *inflictor);
boolean Obj_TryCrateDamage(mobj_t *target, mobj_t *inflictor);
boolean Obj_SA2CrateIsMetal(mobj_t *mo);
/* Lavender Shrine Spears */

View file

@ -197,11 +197,11 @@ struct Box : AnyBox
bool damage_valid(const Mobj* inflictor) const { return !fuse && Mobj::valid(inflictor); }
void damage(Mobj* inflictor)
bool damage(Mobj* inflictor)
{
if (!damage_valid(inflictor))
{
return;
return false;
}
inflictor->hitlag(3);
@ -230,6 +230,8 @@ struct Box : AnyBox
debris(inflictor);
update_nearby();
return true;
}
private:
@ -321,19 +323,19 @@ struct Crate : Box<SA2CrateConfig>
}
}
void damage(Toucher* inflictor)
bool damage(Toucher* inflictor)
{
if (!Box::damage_valid(inflictor))
{
return;
return false;
}
if (metal() && !inflictor->boosting())
{
return;
return false;
}
Box::damage(inflictor);
return Box::damage(inflictor);
}
};
@ -385,9 +387,11 @@ void Obj_TryCrateTouch(mobj_t* special, mobj_t* toucher)
static_cast<AnyBox*>(special)->visit([&](auto box) { box->touch(static_cast<Toucher*>(toucher)); });
}
void Obj_TryCrateDamage(mobj_t* target, mobj_t* inflictor)
boolean Obj_TryCrateDamage(mobj_t* target, mobj_t* inflictor)
{
static_cast<AnyBox*>(target)->visit([&](auto box) { box->damage(static_cast<Toucher*>(inflictor)); });
bool c = false;
static_cast<AnyBox*>(target)->visit([&](auto box) { c = box->damage(static_cast<Toucher*>(inflictor)); });
return c;
}
boolean Obj_SA2CrateIsMetal(mobj_t* mobj)

View file

@ -2883,8 +2883,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
case MT_SA2_CRATE:
case MT_ICECAPBLOCK:
Obj_TryCrateDamage(target, inflictor);
return true;
return Obj_TryCrateDamage(target, inflictor);
default:
break;