MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / triggerProximity

Method triggerProximity

game/state/battle/battleunit.cpp:3741–3768  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3739}
3740
3741void BattleUnit::triggerProximity(GameState &state)
3742{
3743 auto it = state.current_battle->items.begin();
3744 while (it != state.current_battle->items.end())
3745 {
3746 auto i = *it++;
3747 if (!i->item->primed || i->item->triggerDelay > 0)
3748 {
3749 continue;
3750 }
3751 // Proximity explosion trigger
3752 if ((i->item->triggerType == TriggerType::Proximity ||
3753 i->item->triggerType == TriggerType::Boomeroid) &&
3754 BattleUnitTileHelper::getDistanceStatic(position, i->position) <=
3755 i->item->triggerRange &&
3756 i->item->getPayloadType()->damage_type->effectType !=
3757 DamageType::EffectType::Brainsucker)
3758 {
3759 i->die(state);
3760 }
3761 // Boomeroid hopping trigger
3762 else if (i->item->triggerType == TriggerType::Boomeroid &&
3763 BattleUnitTileHelper::getDistanceStatic(position, i->position) <= BOOMEROID_RANGE)
3764 {
3765 i->hopTo(state, position);
3766 }
3767 }
3768}
3769
3770void BattleUnit::triggerBrainsuckers(GameState &state)
3771{

Callers

nothing calls this directly

Calls 5

endMethod · 0.80
getPayloadTypeMethod · 0.80
hopToMethod · 0.80
beginMethod · 0.45
dieMethod · 0.45

Tested by

no test coverage detected