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); void Obj_TryCrateInit(mobj_t *mo);
boolean Obj_TryCrateThink(mobj_t *mo); boolean Obj_TryCrateThink(mobj_t *mo);
void Obj_TryCrateTouch(mobj_t *special, mobj_t *toucher); 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); boolean Obj_SA2CrateIsMetal(mobj_t *mo);
/* Lavender Shrine Spears */ /* Lavender Shrine Spears */

View file

@ -197,11 +197,11 @@ struct Box : AnyBox
bool damage_valid(const Mobj* inflictor) const { return !fuse && Mobj::valid(inflictor); } bool damage_valid(const Mobj* inflictor) const { return !fuse && Mobj::valid(inflictor); }
void damage(Mobj* inflictor) bool damage(Mobj* inflictor)
{ {
if (!damage_valid(inflictor)) if (!damage_valid(inflictor))
{ {
return; return false;
} }
inflictor->hitlag(3); inflictor->hitlag(3);
@ -230,6 +230,8 @@ struct Box : AnyBox
debris(inflictor); debris(inflictor);
update_nearby(); update_nearby();
return true;
} }
private: private:
@ -321,19 +323,19 @@ struct Crate : Box<SA2CrateConfig>
} }
} }
void damage(Toucher* inflictor) bool damage(Toucher* inflictor)
{ {
if (!Box::damage_valid(inflictor)) if (!Box::damage_valid(inflictor))
{ {
return; return false;
} }
if (metal() && !inflictor->boosting()) 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)); }); 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) 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_SA2_CRATE:
case MT_ICECAPBLOCK: case MT_ICECAPBLOCK:
Obj_TryCrateDamage(target, inflictor); return Obj_TryCrateDamage(target, inflictor);
return true;
default: default:
break; break;