Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ------------------------------------------------------------------------------
- // -------------------- ABILITY EFFECT HELPER FUNCTIONS --------------------
- // ------------------------------------------------------------------------------
- // Breaks squad concealment for abilities/effects that retain individual concealment
- static function BreakSquadConcealment(XComGameState_Player PlayerState, XComGameState NewGameState)
- {
- local XComGameState_Unit NewUnitState, UnitState;
- local XComGameState_Effect EffectState;
- local StateObjectReference EffectRef;
- local bool bRetainConcealment;
- // break squad concealment
- if (PlayerState.bSquadIsConcealed)
- {
- if (NewGameState.GetContext().PostBuildVisualizationFn.Find(BuildVisualizationForConcealment_Broken_Individual) == INDEX_NONE) // we only need to visualize this once
- {
- NewGameState.GetContext().PostBuildVisualizationFn.AddItem(BuildVisualizationForConcealment_Broken_Individual);
- }
- PlayerState = XComGameState_Player(NewGameState.ModifyStateObject(class'XComGameState_Player', PlayerState.ObjectID));
- PlayerState.bSquadIsConcealed = false;
- `XEVENTMGR.TriggerEvent('SquadConcealmentBroken', PlayerState, PlayerState, NewGameState);
- // break concealment on each other squad member
- foreach `XCOMHISTORY.IterateByClassType(class'XComGameState_Unit', UnitState)
- {
- if (UnitState.ControllingPlayer.ObjectID == PlayerState.ObjectID)
- {
- bRetainConcealment = false;
- if (UnitState.IsIndividuallyConcealed())
- {
- foreach UnitState.AffectedByEffects(EffectRef)
- {
- EffectState = XComGameState_Effect(`XCOMHISTORY.GetGameStateForObjectID(EffectRef.ObjectID));
- if (EffectState != none)
- {
- if (EffectState.GetX2Effect().RetainIndividualConcealment(EffectState, UnitState))
- {
- bRetainConcealment = true;
- break;
- }
- }
- }
- }
- if (!bRetainConcealment)
- {
- NewUnitState = XComGameState_Unit(NewGameState.ModifyStateObject(class'XComGameState_Unit', UnitState.ObjectID));
- NewUnitState.SetIndividualConcealment(false, NewGameState);
- } } } }
- }
- private function BuildVisualizationForConcealment_Broken_Individual(XComGameState VisualizeGameState)
- { class'XComGameState_Unit'.static.BuildVisualizationForConcealmentChanged(VisualizeGameState, false); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement