public static void AddBackAttackComboToMovesList(System.Collections.Generic.List <MoveDescription> movesList) { MoveDescription backAttack = null; foreach (MoveDescription move in movesList) { if (move.MoveName.ToLower().Contains("block") && move.ComboList.Count > 0) { backAttack = move.ComboList[0].ToMove; } } if (backAttack != null) { foreach (MoveDescription move in movesList) { ComboMove backCombo = null; foreach (ComboMove combo in move.ComboList) { foreach (ComboCondition condition in combo.Conditions) { if (condition is InputCondition) { InputCondition inputCondition = condition as InputCondition; if (inputCondition.DirectionModifier == InputDirectionModifier.None && inputCondition.ComboInputs == ComboInputs.Heavy) { backCombo = new ComboMove(); backCombo.MoveName = backAttack.MoveName; backCombo.ToMove = backAttack; backCombo.Priority = combo.Priority + 1; backCombo.AI_Followup = combo.AI_Followup; backCombo.Conditions = new System.Collections.Generic.List <ComboCondition>(); foreach (ComboCondition comboCondition in combo.Conditions) { if (comboCondition is InputCondition) { InputCondition newInputCondition = ScriptableObject.CreateInstance <InputCondition>(); newInputCondition.ComboInputs = ComboInputs.Heavy; newInputCondition.DirectionModifier = InputDirectionModifier.Back; backCombo.Conditions.Add(newInputCondition); } else { backCombo.Conditions.Add(comboCondition); } } } } } } if (backCombo != null) { move.ComboList.Add(backCombo); } } } }
public static void AddQuickOverrideToMovesList(System.Collections.Generic.List <MoveDescription> movesList) { foreach (MoveDescription move in movesList) { ComboMove lightAttack = null; foreach (ComboMove combo in move.ComboList) { if (combo.Priority == 0) { foreach (ComboCondition condition in combo.Conditions) { if (condition is InputCondition) { InputCondition inputCondition = condition as InputCondition; if (inputCondition.DirectionModifier == InputDirectionModifier.None && inputCondition.ComboInputs == ComboInputs.Quick) { lightAttack = new ComboMove(); lightAttack.MoveName = combo.MoveName; lightAttack.ToMove = combo.ToMove; lightAttack.Priority = 3; lightAttack.AI_Followup = combo.AI_Followup; lightAttack.Conditions = new System.Collections.Generic.List <ComboCondition>(); foreach (ComboCondition comboCondition in combo.Conditions) { if (comboCondition is InputCondition) { InputCondition newInputCondition = ScriptableObject.CreateInstance <InputCondition>(); newInputCondition.ComboInputs = ComboInputs.Quick; newInputCondition.DirectionModifier = InputDirectionModifier.Up; lightAttack.Conditions.Add(newInputCondition); } else { lightAttack.Conditions.Add(comboCondition); } } } } } } } if (lightAttack != null) { move.ComboList.Add(lightAttack); } } }
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller) { log.Info("State exit for {0}", comboMoveName); if (moveCache != null) { moveCache.DisableCollider(); var nextTrigger = moveCache.ConsumeNextActionTrigger(); log.Info("extracted trigger: {0}", nextTrigger); if (nextTrigger != null) { animator.SetTrigger(nextTrigger); } moveCache.FinishHit(nextTrigger != null); moveCache = null; } }