| 3739 | } |
| 3740 | |
| 3741 | void 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 | |
| 3770 | void BattleUnit::triggerBrainsuckers(GameState &state) |
| 3771 | { |
nothing calls this directly
no test coverage detected