public override IEnumerator PerformAction(BaseCharStateMachine Actor, BaseCharStateMachine Target) { if (ActionStarted == true) { yield break; } ActionStarted = true; Actor.BSM.DisplayNote(Actor.Stats.Name + " looked under the ring..."); int RNGesus = Random.Range(0, Weapons.Count); //Add Weapon to Actor's Special Action Actor.AddOrReplaceSpecialAction(Weapons[RNGesus]); yield return(new WaitForSeconds(1.5f)); Actor.BSM.DisplayNote(Actor.Stats.Name + " found a " + Weapons[RNGesus].ActName); Actor.AddMomentum(5f, MoveType); yield return(new WaitForSeconds(1.5f)); //Set BSM Actor.BSM.TheTurn = BattleStateMachine.TurnStates.DONE; //End Coroutine ActionStarted = false; }
public override IEnumerator PerformAction(BaseCharStateMachine Actor, BaseCharStateMachine Target) { if (ActionStarted == true) { yield break; } ActionStarted = true; //Move Character to Target while (MoveToTarget(Actor.Wrestler, Target.Wrestler)) { yield return(null); } //Wait (Later, do Attack Animation here yield return(new WaitForSeconds(0.5f)); //Calculate Damage float Damage = Target.CalculateDamage(ActPow, Actor.Stats.ATK.Current, Target.Stats.DEF.Current); //Do Damage Target.DamageHP(Damage); //Damage WP Target.DamageWP(Damage); //Add momentum to Target float Momentum = (Damage / (Target.Stats.HP.Base * 2)) * 100; Target.AddMomentum(Momentum * 0.5f, MoveType); //Reset Actor's momentum Actor.ResetMomentum(); //If target is down, reset turns down if (Target.Status_Down == true) { Target.Turns_Down = 0; } while (MoveToPosition(Actor.Wrestler, Actor.startPosition)) { yield return(null); } //Set BSM Actor.BSM.TheTurn = BattleStateMachine.TurnStates.DONE; //End Coroutine ActionStarted = false; }
public override IEnumerator PerformAction(BaseCharStateMachine Actor, BaseCharStateMachine Target) { if (ActionStarted == true) yield break; ActionStarted = true; //Move Character to Target while (MoveToTarget(Actor.Wrestler, Target.Wrestler)) { yield return null; } //Wait (Later, do Attack Animation here yield return new WaitForSeconds(0.5f); //Calculate Damage float Damage = Target.CalculateDamage(ActPow, Actor.Stats.ATK.Current, Target.Stats.DEF.Current); //Do Damage Target.DamageHP(Damage); //Damage WP Target.DamageWP(Damage); //Add momentum to both characters float Momentum = (Damage / (Target.Stats.HP.Base * 2)) * 100; Actor.AddMomentum(Momentum, MoveType); Target.AddMomentum(Momentum * 0.5f, Type.NEUTRAL); while (MoveToPosition(Actor.Wrestler, Actor.startPosition)) { yield return null; } //Set BSM Actor.BSM.TheTurn = BattleStateMachine.TurnStates.REFFCHECK; //End Coroutine ActionStarted = false; }
float ActorCount0, ActorCount1, ActorCount2; //Modifiers for chances on each count. 0 = ActorWP%, 1 = ActorWP% * 0.75, 2 = ActorWP% * 0.50. public override IEnumerator PerformAction(BaseCharStateMachine Actor, BaseCharStateMachine Target) { if (ActionStarted == true) { yield break; } ActionStarted = true; //Move Character to Target while (MoveToTarget(Actor.Wrestler, Target.Wrestler)) { yield return(null); } PinCount = 0; //Set up ActorCount ActorCount0 = 0.0f; ActorCount1 = 0.1f; ActorCount2 = 0.2f; //The Pin Action! //Count 1 yield return(new WaitForSecondsRealtime(1)); if (Target.TryPinEscape(ActorCount0) == false) { PinCount++; Actor.BSM.DisplayNote(PinCount.ToString()); //Count 2 yield return(new WaitForSecondsRealtime(1)); if (Target.TryPinEscape(ActorCount1) == false) { PinCount++; Actor.BSM.DisplayNote(PinCount.ToString()); yield return(new WaitForSecondsRealtime(1f)); //Try for breakup// //Reset Breakup // Breakup = false; EnemiesUp.Clear(); if (Actor.type == "PLAYER") { foreach (GameObject Enemy in Actor.BSM.EnemyChars) { if (Enemy.GetComponent <EnemyStateMachine>().Status_Down == false) { EnemiesUp.Add(Enemy.GetComponent <EnemyStateMachine>()); } } } if (Actor.type == "ENEMY") { foreach (GameObject Enemy in Actor.PossibleTargets) { if (Enemy.GetComponent <BaseCharStateMachine>().Status_Down == false) { EnemiesUp.Add(Enemy.GetComponent <BaseCharStateMachine>()); } } } if (EnemiesUp.Count > 0) { foreach (BaseCharStateMachine Enemy in EnemiesUp) { if (Enemy.TryPinBreak()) { PinBreaker = Enemy; Breakup = true; break; } } } if (Breakup == false) { //Count 3 if (Target.TryPinEscape(ActorCount2) == false) { PinCount++; Actor.BSM.DisplayNote(PinCount.ToString()); } } } } //If PinCount is 3, Actor wins the match. if (PinCount == 3) { yield return(new WaitForSeconds(1f)); Actor.BSM.FinishMatch(Actor, Target, "Pinfall"); } else { //Was there a breakup? if (Breakup == true) { Actor.BSM.DisplayNote(PinBreaker.Stats.Name + " broke up the pin!"); while (MoveToTarget(PinBreaker.Wrestler, Target.Wrestler)) { yield return(null); } //Wait (Later, do Attack Animation here yield return(new WaitForSeconds(0.5f)); //Give PinBreaker some momentum PinBreaker.AddMomentum(5f, MoveType); //Move both back while (MoveToPosition(Actor.Wrestler, Actor.startPosition) || MoveToPosition(PinBreaker.Wrestler, PinBreaker.startPosition)) { yield return(null); } } // There was a Kickout (PinCount != 3 and Breakup is False) else { Actor.BSM.DisplayNote(Target.Stats.Name + " kicked out at " + PinCount.ToString()); while (MoveToPosition(Actor.Wrestler, Actor.startPosition)) { yield return(null); } } //Set BSM Actor.BSM.TheTurn = BattleStateMachine.TurnStates.DONE; } //Give Actor and target Momentum Actor.AddMomentum(3f, MoveType); Target.AddMomentum(5f, MoveType); //End Coroutine ActionStarted = false; }