Skip to content

Commit

Permalink
Update Specialist Ability Set to use the new revival protocol conditi…
Browse files Browse the repository at this point in the history
…on for granting APs. Updated X2Condition_RevivalProtocol so it can target stunned & resistance units and added 'stunned' to the list of things it can remove. APs granted to stunned units via stunrecover.
  • Loading branch information
BlackDog86 committed Aug 12, 2023
1 parent 23aa830 commit 7d07a46
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,7 @@ static function X2AbilityTemplate RevivalProtocol()
local X2AbilityCost_ActionPoints ActionPointCost;
local X2AbilityCost_Charges ChargeCost;
local X2AbilityCharges Charges;
local X2Effect_RestoreActionPoints RestoreAPEffect;

`CREATE_X2ABILITY_TEMPLATE(Template, 'RevivalProtocol');

Expand All @@ -733,10 +734,15 @@ static function X2AbilityTemplate RevivalProtocol()
Template.AbilityShooterConditions.AddItem(default.LivingShooterProperty);
Template.AddShooterEffectExclusions();

Template.AbilityTargetConditions.AddItem(new class'X2Condition_RevivalProtocol');

//Call recover from stun
Template.AddTargetEffect(class'X2StatusEffects'.static.CreateStunRecoverEffect());

Template.AddTargetEffect(RemoveAdditionalEffectsForRevivalProtocolAndRestorativeMist());
Template.AddTargetEffect(new class'X2Effect_RestoreActionPoints'); // put the unit back to full actions
Template.AbilityTargetConditions.AddItem(new class'X2Condition_RevivalProtocol');

RestoreAPEffect = new class'X2Effect_RestoreActionPoints'; // put the unit back to full actions
RestoreAPEffect.TargetConditions.AddItem(new class'X2Condition_RevivalProtocolAP');
Template.AddTargetEffect(RestoreAPEffect);

Template.AbilityTriggers.AddItem(default.PlayerInputTrigger);

Expand Down Expand Up @@ -1213,11 +1219,13 @@ static function X2AbilityTemplate RestorativeMist()
Template.AddMultiTargetEffect(MedikitHeal);

RestoreEffect = new class'X2Effect_RestoreActionPoints';
RestoreEffect.TargetConditions.AddItem(new class'X2Condition_RevivalProtocol');
RestoreEffect.TargetConditions.AddItem(new class'X2Condition_RevivalProtocolAP');
Template.AddMultiTargetEffect(RestoreEffect);

Template.AddMultiTargetEffect(RemoveAdditionalEffectsForRevivalProtocolAndRestorativeMist());

// Call Stun Recover
Template.AddMultiTargetEffect(class'X2StatusEffects'.static.CreateStunRecoverEffect());

//Typical path to build gamestate, but a (very crazy) special-case visualization
Template.BuildNewGameStateFn = SendGremlinToOwnerLocation_BuildGameState;
Template.BuildVisualizationFn = GremlinRestoration_BuildVisualization;
Expand Down Expand Up @@ -2106,6 +2114,8 @@ static function X2Effect_RemoveEffects RemoveAdditionalEffectsForRevivalProtocol
RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.ObsessedName);
RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.BerserkName);
RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.ShatteredName);
//Remove stunned
RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.StunnedName);

foreach class'X2Ability_DefaultAbilitySet'.default.MedikitHealEffectTypes(HealType)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ event name CallMeetsCondition(XComGameState_BaseObject kTarget)

if (!TargetUnit.GetMyTemplate().bCanBeRevived || TargetUnit.IsBeingCarried() )
return 'AA_UnitIsImmune';

if (TargetUnit.IsPanicked() || TargetUnit.IsUnconscious() || TargetUnit.IsDisoriented() || TargetUnit.IsDazed())
//Revival protocol can target stunned units
if (TargetUnit.IsPanicked() || TargetUnit.IsUnconscious() || TargetUnit.IsDisoriented() || TargetUnit.IsDazed() || TargetUnit.IsStunned())
return 'AA_Success';

return 'AA_UnitIsNotImpaired';
Expand All @@ -27,14 +27,19 @@ event name CallMeetsCondition(XComGameState_BaseObject kTarget)
event name CallMeetsConditionWithSource(XComGameState_BaseObject kTarget, XComGameState_BaseObject kSource)
{
local XComGameState_Unit SourceUnit, TargetUnit;
local XComGameState_Player SourceTeam, TargetTeam;

SourceUnit = XComGameState_Unit(kSource);
TargetUnit = XComGameState_Unit(kTarget);

SourceTeam = XComGameState_Player(`XCOMHISTORY.GetGameStateForObjectID(SourceUnit.GetAssociatedPlayerID()));
TargetTeam = XComGameState_Player(`XCOMHISTORY.GetGameStateForObjectID(TargetUnit.GetAssociatedPlayerID()));

if (SourceUnit == none || TargetUnit == none)
return 'AA_NotAUnit';

if (SourceUnit.ControllingPlayer == TargetUnit.ControllingPlayer)
//Revival protocol can now target resistance forces
if (!SourceTeam.IsEnemyPlayer(TargetTeam))
return 'AA_Success';

return 'AA_UnitIsHostile';
Expand Down
12 changes: 9 additions & 3 deletions X2WOTCCommunityHighlander/X2WOTCCommunityHighlander.x2proj
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,9 @@
<Content Include="Src\XComGame\Classes\X2Ability_HackRewards.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2Ability_SpecialistAbilitySet.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2AchievementTracker.uc">
<SubType>Content</SubType>
</Content>
Expand Down Expand Up @@ -511,6 +514,12 @@
<Content Include="Src\XComGame\Classes\X2Camera_LookAt.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2Condition_RevivalProtocol.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2Condition_RevivalProtocolAP.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2CovertActionTemplate.uc">
<SubType>Content</SubType>
</Content>
Expand Down Expand Up @@ -544,9 +553,6 @@
<Content Include="Src\XComGame\Classes\X2Effect_LaserSight.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2Effect_RestoreActionPoints.uc">
<SubType>Content</SubType>
</Content>
<Content Include="Src\XComGame\Classes\X2EncyclopediaTemplate.uc">
<SubType>Content</SubType>
</Content>
Expand Down

0 comments on commit 7d07a46

Please sign in to comment.