AulisVaara Posted September 1, 2018 Share Posted September 1, 2018 So I've been trying to use the Tactical option of the game's debug version to try to debug my game, but most of my custom abilities just don't work and I don't know why. Now, for more complex abilities that I'm trying to work out and get to work, I understand that I may have messed up along the way, but some are so bog-standard that it just doesn't make sense to me. Am I missing something fundamental here? Example abilities: static function X2AbilityTemplate Sprinter_Aulis() { local X2Effect_PersistentStatChange Effect; local X2AbilityTemplate Template; Effect = new class'X2Effect_PersistentStatChange'; Effect.AddPersistentStatChange(eStat_Mobility, default.SPRINTER_MOBILITY_BONUS); Effect.BuildPersistentEffect(1, true, true); Template = PurePassive('Sprinter_Aulis', "img:///UILibrary_PerkIcons.UIPerk_Sprinter"); //Makes taking this perk impact the soldier's listed mobility in the UI Template.SetUIStatMarkup(class'XLocalizedData'.default.MobilityLabel, eStat_Mobility, default.SPRINTER_MOBILITY_BONUS); return Template; } static function X2AbilityTemplate LowProfile_Aulis() { local X2AbilityTemplate Template; local X2Effect_LowProfile LowProfileEffect; `CREATE_X2ABILITY_TEMPLATE(Template, 'LowProfile_Aulis'); Template.IconImage = "img:///UILibrary_PerkIcons.UIPerk_LowProfile"; Template.AbilitySourceName = 'eAbilitySource_Perk'; Template.eAbilityIconBehaviorHUD = EAbilityIconBehavior_NeverShow; Template.Hostility = eHostility_Neutral; Template.AbilityToHitCalc = default.DeadEye; Template.AbilityTargetStyle = default.SelfTarget; Template.AbilityTriggers.AddItem(default.UnitPostBeginPlayTrigger); LowProfileEffect = new class'X2Effect_LowProfile'; LowProfileEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.LocLongDescription, Template.IconImage, true,, Template.AbilitySourceName); LowProfileEffect.BuildPersistentEffect(1, true, false, false); Template.AddTargetEffect(LowProfileEffect); Template.BuildNewGameStateFn = TypicalAbility_BuildGameState; Template.bCrossClassEligible = true; return Template; } static function X2AbilityTemplate Rocketeer_Aulis() { local X2AbilityTemplate Template; local X2Effect_AddItemCharges BonusItemEffect; Template = PurePassive('Rocketeer_Aulis', "img:///UILibrary_PerkIcons.UIPerk_Rocketeer"); BonusItemEffect = new class'X2Effect_AddItemCharges'; BonusItemEffect.PerItemBonus = default.ROCKETEER_BONUS; BonusItemEffect.ApplyToSlots.AddItem(eInvSlot_HeavyWeapon); Template.AddTargetEffect(BonusItemEffect); Template.bCrossClassEligible = true; return Template; } static function X2AbilityTemplate UtilityGrenadeBonus_Aulis() { local X2AbilityTemplate Template; local X2Effect_AddItemCharges BonusItemEffect; Template = PurePassive('UtilityGrenadeBonus_Aulis', "img:///UILibrary_PerkIcons.UIPerk_ExpandedStorage"); BonusItemEffect = new class'X2Effect_AddItemCharges'; BonusItemEffect.PerItemBonus = default.UTILITYGRENADE_BONUS; BonusItemEffect.ApplyToNames = default.UtilityGrenades; BonusItemEffect.ApplyToSlots.AddItem(eInvSlot_Utility); Template.AddTargetEffect(BonusItemEffect); Template.bCrossClassEligible = true; return Template; } static function X2AbilityTemplate Gunslinger_Aulis() { local X2AbilityTemplate Template; local X2Effect_Gunslinger DamageEffect; // Icon Properties `CREATE_X2ABILITY_TEMPLATE(Template, 'Gunslinger_Aulis'); Template.IconImage = "img:///UILibrary_PerkIcons.UIPerk_gunslinger"; Template.AbilitySourceName = 'eAbilitySource_Perk'; Template.eAbilityIconBehaviorHUD = EAbilityIconBehavior_NeverShow; Template.Hostility = eHostility_Neutral; Template.AbilityToHitCalc = default.DeadEye; Template.AbilityTargetStyle = default.SelfTarget; Template.AbilityTriggers.AddItem(default.UnitPostBeginPlayTrigger); DamageEffect = new class'X2Effect_Gunslinger'; DamageEffect.BonusDmg = default.GUNSLINGER_BONUS; DamageEffect.BuildPersistentEffect(1, true, false, false); DamageEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyLongDescription(), Template.IconImage, true,,Template.AbilitySourceName); Template.AddTargetEffect(DamageEffect); Template.BuildNewGameStateFn = TypicalAbility_BuildGameState; // NOTE: No visualization on purpose! Template.bCrossClassEligible = false; return Template; } Any help would be appreciated. Link to comment Share on other sites More sharing options...
Recommended Posts