feat(whip): cabla flag combat.friendly_fire a hitPlayerIfApplicable
Quan el flag està desactivat, el látigo no fa dany a altres jugadors (l'owner ja quedava exclòs per la guarda existent). Default true: manté el comportament actual. Sense canvis als tests del whip — friendly fire ja no es cobreix allà perquè els stubs de Player no porten estat real (vegeu el comentari del top de test_whip_attack.cpp).
This commit is contained in:
1 parent
7871d3930e
commit
cfbcdc236b
1 file changed
+4
@@ -321,6 +321,10 @@ namespace {
|
|||||||
WhipAttack::Direction dir,
|
WhipAttack::Direction dir,
|
||||||
std::unordered_set<void*>& already_hit) {
|
std::unordered_set<void*>& already_hit) {
|
||||||
if (p == owner || !playerIsTargetable(p)) { return; }
|
if (p == owner || !playerIsTargetable(p)) { return; }
|
||||||
|
// Tweak `combat.friendly_fire`: si està desactivat, els altres
|
||||||
|
// jugadors són immunes al látigo aliat. L'owner ja queda exclòs
|
||||||
|
// per la primera guarda; aquest filtre cobreix només cross-player.
|
||||||
|
if (!GameplayConfig::get().friendlyFire()) { return; }
|
||||||
if (already_hit.contains(static_cast<void*>(p))) { return; }
|
if (already_hit.contains(static_cast<void*>(p))) { return; }
|
||||||
const auto BOX = p->getBaseBox();
|
const auto BOX = p->getBaseBox();
|
||||||
if (!SDL_HasRectIntersectionFloat(&damage_rect, &BOX)) { return; }
|
if (!SDL_HasRectIntersectionFloat(&damage_rect, &BOX)) { return; }
|
||||||
|
|||||||
Reference in new issue
Block a user