public override bool FireEvent(Event E) { if (E.ID == "AIGetOffensiveMutationList") { if (IsMyActivatedAbilityAIUsable(SureStrikesActivatedAbilityID, ParentObject)) { E.AddAICommand("CommandSureStrikes"); } } else if (E.ID == "CommandSureStrikes") { // AddPlayerMessage("Firing Sure strike commandsurestrikes"); AwardSureStrikes = 0; var MMAAccess = ParentObject.GetPart <WM_MMA_CombinationStrikesI>(); var ParentAgi = ParentObject.StatMod("Agility"); if (ParentObject.HasPart("WM_MMA_PathDawnGlider") && IsPlayer()) { var MMAComboPathDawnAccess = ParentObject.GetPart <WM_MMA_PathDawnGlider>(); PlayersSurestrike(); MMAComboPathDawnAccess.BonusSureStrike = 0; UpdateCounter(); } else if (IsPlayer()) { PlayersSurestrike(); } AwardSureStrikes = ParentAgi; var eAttacker = _ParentObject; if (AwardSureStrikes <= 0) { return(base.FireEvent(E)); } else { ChainFuntion(); ParentObject.CooldownActivatedAbility(SureStrikesActivatedAbilityID, 80 - (AwardSureStrikes * 10)); } if (IsPlayer()) { UpdateCounter(); } } else if (E.ID == "FailedChainingSureStrikes") { var MMAAccess = ParentObject.GetPart <WM_MMA_CombinationStrikesI>(); var eAttacker = _ParentObject; if (IsPlayer()) { UpdateCounter(); } if (Stat.Random(1, 100) <= 20 + MMAAccess.CurrentComboICounter) { ChainFuntion(); ParentObject.CooldownActivatedAbility(SureStrikesActivatedAbilityID, 80 - (AwardSureStrikes * 10)); } if (IsPlayer()) { UpdateCounter(); } } else if (E.ID == "ChainingSureStrikes") { // AddPlayerMessage("Chaining strike fires"); var MMAAccess = ParentObject.GetPart <WM_MMA_CombinationStrikesI>(); var eDefender = E.GetGameObjectParameter("Defender"); var eAttacker = E.GetGameObjectParameter("Attacker"); ChainingSureStrike(eDefender); if (Stat.Random(1, 100) <= 20 + (MMAAccess.CurrentComboICounter * 2)) { ChainFuntion(); ParentObject.CooldownActivatedAbility(SureStrikesActivatedAbilityID, 80 - (AwardSureStrikes * 10)); } if (IsPlayer()) { UpdateCounter(); } } else if (E.ID == "EndTurn") { if (IsPlayer()) { UpdateCounter(); } } return(base.FireEvent(E)); }