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

Method stopAttackPsi

game/state/battle/battleunit.cpp:1201–1226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1199}
1200
1201void BattleUnit::stopAttackPsi(GameState &state)
1202{
1203 switch (psiStatus)
1204 {
1205 case PsiStatus::Control:
1206 if (psiTarget->owner == psiTarget->agent->owner)
1207 {
1208 break;
1209 }
1210 psiTarget->changeOwner(state, psiTarget->agent->owner);
1211 psiTarget->sendAgentEvent(state, GameEventType::AgentPsiOver, true);
1212 break;
1213 case PsiStatus::Probe:
1214 case PsiStatus::Panic:
1215 case PsiStatus::Stun:
1216 // Nothing immediate to be done
1217 break;
1218 case PsiStatus::NotEngaged:
1219 return;
1220 }
1221 psiTarget->psiAttackers.erase(id);
1222 psiStatus = PsiStatus::NotEngaged;
1223 psiTarget.clear();
1224 psiItem.clear();
1225 ticksAccumulatedToNextPsiCheck = 0;
1226}
1227
1228void BattleUnit::changeOwner(GameState &state, StateRef<Organisation> newOwner)
1229{

Callers 4

beginTurnMethod · 0.80
applyPsiAttackMethod · 0.80
dropDownMethod · 0.80
orderCancelPsiMethod · 0.80

Calls 3

changeOwnerMethod · 0.80
sendAgentEventMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected