// Use this for initialization void Awake() { frank = new MoveClass[] { new MoveClass("Light Attack", 2, new int[] { 1 }, 1, 1, 0, .5f, 5, .4f), new MoveClass("Medium Attack", 4, new int[] { 1, 2 }, 1, 0, 0, .8f, 7, .8f), new MoveClass("Heavy Attack", 7, new int[] { 3 }, 1, 0, 0, .4f, 9, .7f), new MoveClass("Fireball", 9, new int[] { 3 }, 0, -1, 0, .75f, 8, .75f), new MoveClass("Dino-Punch", 8, new int[] { 1, 2, 3 }, -1, -3, 1, .4f, 15, 0), new MoveClass("Throw", 5, new int[] { 1 }, 0, -10, 1, .6f, 12, 0), new MoveClass("Air Attack", 2, new int[] { 1, 2 }, 2, 3, -1, .4f, 8, 0), new MoveClass("Forward Dash", 3, new int[0], 0, 0, 0, 0, 0, 0), new MoveClass("Back Dash", 5, new int[1] { 1 }, 0, 0, 0, 0, 0, 0) }; speedy = new MoveClass[] { new MoveClass("Light Attack", 2, new int[] { 1 }, 0, 1, 1, .6f, 4, .5f), new MoveClass("Medium Attack", 3, new int[] { 1 }, 1, 0, -1, .9f, 6, .7f), new MoveClass("Heavy Attack", 6, new int[] { 2 }, 0, -1, 0, 1.1f, 10, .3f), new MoveClass("Dash Peck", 9, new int[] { 3 }, 0, -1, 0, .4f, 8, .75f), new MoveClass("Divekick", 4, new int[] { 1, 2, 3, 4 }, 1, 1, 0, .3f, 7, 0), new MoveClass("Throw", 5, new int[] { 1 }, 0, -10, 1, .6f, 182, 0), new MoveClass("Air Attack", 3, new int[] { 2, 3 }, 2, 2, 0, .3f, 8, 0), new MoveClass("Forward Dash", 3, new int[] { 0 }, 0, 0, 0, 0, 0, 0), new MoveClass("Back Dash", 5, new int[] { 0 }, 0, 0, 0, 0, 0, 0) }; king = new MoveClass[] { new MoveClass("Light Attack", 2, new int[] { 1 }, 1, 0, 0, .6f, 6, .5f), new MoveClass("Medium Attack", 3, new int[] { 2 }, 1, 1, 1, .9f, 6, .7f), new MoveClass("Heavy Attack", 5, new int[] { 2 }, -2, -1, 0, .8f, 10, -1), new MoveClass("Tyrant Smash", 6, new int[] { 2 }, 0, -2, 0, 1f, 12, 1), new MoveClass("SPD", 7, new int[] { 1 }, 0, 1, -10, .3f, 18, 0), new MoveClass("Throw", 5, new int[] { 1 }, 0, -10, 1, .6f, 12, 0), new MoveClass("Air Attack", 2, new int[] { 1, 2 }, 3, 3, 0, .6f, 12, 0), new MoveClass("Forward Dash", 3, new int[] { 0 }, 0, 0, 0, 0, 0, 0), new MoveClass("Back Dash", 5, new int[] { 0 }, 0, 0, 0, 0, 0, 0) }; }
public UseMoveAction(BattleState state, MoveClass move) { State = state; Move = move; AttackingDelt = IsPlayer ? state.PlayerState.DeltInBattle : state.OpponentState.DeltInBattle; DefendingDelt = IsPlayer ? state.OpponentState.DeltInBattle : state.PlayerState.DeltInBattle; }
private MoveTypeE(MoveType move, string str) { Move = move; var s = str.Split('\t'); //Lv7DChange SpAtk SpDef Speed 2 2 2 0 0 0 0 0 0 0 0 //AttackWithState PAR 100 1 1 0 0 1 0 0 Class = (MoveClass)Enum.Parse(typeof(MoveClass), s[0]); if (!string.IsNullOrEmpty(s[1])) { AttachedState = (AttachedState)Enum.Parse(typeof(AttachedState), s[1]); AttachedProbability = int.Parse(s[2]); } if (!string.IsNullOrEmpty(s[3])) { var t1 = (StatType)Enum.Parse(typeof(StatType), s[3]); var t2 = string.IsNullOrEmpty(s[4]) ? StatType.Invalid : (StatType)Enum.Parse(typeof(StatType), s[4]); var t3 = string.IsNullOrEmpty(s[5]) ? StatType.Invalid : (StatType)Enum.Parse(typeof(StatType), s[5]); Lv7DChanges = new MoveLv7DChanges(t1, t2, t3, int.Parse(s[6]), string.IsNullOrEmpty(s[7]) ? 0 : int.Parse(s[7]), string.IsNullOrEmpty(s[8]) ? 0 : int.Parse(s[8]), int.Parse(s[9])); } NeedTouch = s[10][0] == '1'; Protectable = s[11][0] == '1'; MagicCoat = s[12][0] == '1'; Snatchable = s[13][0] == '1'; Mirrorable = s[14][0] == '1'; IsRemote = s[15][0] == '1'; IgnoreSubstitute = s[16][0] == '1'; }
void TryLearnNewMove(DeltemonClass delt) { // If Delt can learn a new move LevelUpMove newMove = delt.deltdex.levelUpMoves.Find(lum => lum.level == delt.level); if (newMove == null) { return; } // If the player doesn't have a full moveset yet if (delt.moveset.Count < 4) { // Instantiate and learn new move MoveClass move = BattleManager.Inst.InstantiateMove(newMove.move, delt.transform); delt.moveset.Add(move); BattleManager.AddToBattleQueue(string.Format("{0} has learned the move {1}!", delt.nickname, newMove.move.moveName)); } // Player must choose to either switch a move or not learn new move else { BattleManager.Inst.BattleUI.PresentNewMoveUI(delt); BattleManager.AddToBattleQueue(string.Format("{0} can learn the move {1}!", delt.nickname, newMove.move.moveName)); // Load new move into move overview // Note: This temporarily sets move as 5th move in Delt moveset UIManager.Inst.PosseUI.SetLevelUpMove(newMove.move, delt); // REFACTOR_TODO: Goal: Use 0 wait until/wait while/etc in this game //yield return new WaitUntil(() => finishNewMove); //finishNewMove = false; } }
public void TryUseMove(MoveClass move) { BattleManager.Inst.BattleUI.HideMoveOptions(); string errorMessage; if (ValidateUseMove(move, out errorMessage)) { RegisterPlayerAction(new UseMoveAction(State, move)); State.PlayerState.LastMove = move; /* REFACTOR_TODO: Do this in BattleTurnProcess * tmpMove.PPLeft--; * MoveMenu.SetActive(false); * moveText[moveIndex].GetComponent<Text>().text = (tmpMove.moveName + System.Environment.NewLine + "PP: " + tmpMove.PPLeft + "/" + tmpMove.PP); * * // Disable button if no uses left * if (tmpMove.PPLeft <= 0) * { * MoveOptions[moveIndex].interactable = false; * } * */ } else { UIManager.Inst.StartMessage(errorMessage); BattleManager.Inst.BattleUI.PresentPlayerOptions(); } }
// Prepare MoveOneOverview with new move info public void SetLevelUpMove(MoveClass newMove, DeltemonClass curPlayerDelt) { overviewDeltIndex = GameManager.Inst.deltPosse.IndexOf(curPlayerDelt); // Temporarily add new move as 5th move curPlayerDelt.moveset.Add(newMove); MoveClick(4); }
public void SetHitBox(MoveClass move) //general setter} { thisMove = new MoveClass(move); thisMove.playerID = this.playerID; transform.localScale = new Vector3(thisMove.range, .2f, .5f); transform.localPosition = (new Vector3(1 - (thisMove.range / 2), 0)); armed = true; int rand = (int)Random.Range(0f, 2f); audioClips [rand].Play(); }
public void PresentNewMoveUI(DeltemonClass playerDelt) { for (int i = 0; i < 4; i++) { MoveClass tmp = playerDelt.moveset[i]; Transform button = NewMoveUI.transform.GetChild(i); button.GetComponent <Image>().color = tmp.majorType.background; button.GetChild(0).GetComponent <Text>().text = (tmp.moveName + System.Environment.NewLine + "PP: " + tmp.PP); } NewMoveUI.SetActive(true); }
public void Populate(MoveClass move) { Button.interactable = move.PPLeft > 0; // REFACTOR_TODO: Move this pork case somewhere? bool pork = GameManager.Inst.pork; Background.color = pork ? PorkManager.PorkColor : move.majorType.background; MoveText.text = pork ? "What is pork?!" + System.Environment.NewLine + "Porks: " + move.PPLeft + "/ PORK" : move.moveName + System.Environment.NewLine + "PP: " + move.PPLeft + "/" + move.PP; Move = move; }
// Called on button down press on move from Delt's moveset public void MoveClick(int index) { Transform MoveOverview; MoveClass move = GameManager.Inst.deltPosse[overviewDeltIndex].moveset[index]; // If move is already displayed, remove it if (firstMoveLoaded == index) { MoveOneOverview.gameObject.SetActiveIfChanged(false); firstMoveLoaded = -1; return; } else if (secondMoveLoaded == index) { MoveTwoOverview.gameObject.SetActiveIfChanged(false); secondMoveLoaded = -1; return; } // If first move overview already loaded, load into 2nd move overview if (firstMoveLoaded != -1) { MoveOverview = MoveTwoOverview; secondMoveLoaded = index; } else { MoveOverview = MoveOneOverview; firstMoveLoaded = index; } MoveOverview.GetComponent <Image>().color = move.majorType.background; MoveOverview.GetChild(0).GetComponent <Image>().sprite = move.majorType.majorImage; if (move.statusType != statusType.None) { MoveOverview.GetChild(1).gameObject.SetActiveIfChanged(true); MoveOverview.GetChild(1).GetComponent <Image>().sprite = move.status; } else { MoveOverview.GetChild(1).gameObject.SetActiveIfChanged(false); } MoveOverview.GetChild(2).GetComponent <Text>().text = move.moveName; MoveOverview.GetChild(3).GetComponent <Text>().text = "" + move.movType; MoveOverview.GetChild(4).GetComponent <Text>().text = move.moveDescription; MoveOverview.GetChild(5).GetComponent <Text>().text = move.PP + System.Environment.NewLine + move.damage + System.Environment.NewLine + move.hitChance + System.Environment.NewLine + move.statusType + System.Environment.NewLine + move.statusChance; MoveOverview.gameObject.SetActiveIfChanged(true); }
public bool triggerCheck(MoveClass hit) { if (trigger == true) { Debug.Log("Sending move"); controlPanel.registerHit(hit); // reports move to ControlPanel audioClips[2].Play(); ClearBox(); return(true); } return(false); }
public MoveClass(MoveClass copy) { this.name = copy.name; this.framesLeft = this.initialFrames = copy.initialFrames; this.activeFrames = copy.activeFrames; hitStun = copy.hitStun; bStun = copy.bStun; this.priority = copy.priority; dmg = copy.dmg; kB = copy.kB; this.range = copy.range; this.recovery = copy.recovery; }
void TryToSetStatus(MoveClass move) { // If move has a status affliction and chance is met if ((move.statusType != statusType.None) && (Random.Range(0, 100) <= move.statusChance) && (DefendingDelt.curStatus != move.statusType)) { BattleManager.AddToBattleQueue(enumerator: BattleManager.Inst.Animator.ChangeDeltStatus(!IsPlayer, move.statusType)); // Update defender status BattleManager.Inst.StatusChange(!IsPlayer, move.statusType); BattleManager.AddToBattleQueue(message: string.Format("{0} is now {1}!", DefendingDelt.nickname, DefendingDelt.curStatus)); } }
// Trainer AI chooses Action for battle. Actions include using item, using move, or switching Delts public override BattleAction GetNextAction() { ItemClass chosenItem = ChooseTrainerItem(); DeltemonClass playerDeltInBattle = State.PlayerState.DeltInBattle; // If item was chosen, use it if (chosenItem != null) { // REFACTOR_TODO: Determine if AI wants to use item on another Delt instead return(new UseItemAction(State, chosenItem, playerDeltInBattle)); } // Choose best move for Delt MoveClass chosenMove = CalculateBestMove(playerDeltInBattle); float stayInScore = 100; if (chosenMove != null) { stayInScore = CalculateStayScore(chosenMove, playerDeltInBattle); } int bestSwitchScore; DeltemonClass switchIn = FindSwitchIn(out bestSwitchScore); if (switchIn == null && chosenMove == null) { ForceOppLoss(); } if (switchIn != null && chosenMove != null) { // AI Determines if switch in is appropriate if (stayInScore >= bestSwitchScore) { return(new UseMoveAction(State, chosenMove)); } else { return(new SwitchDeltAction(State, switchIn)); } } if (switchIn == null) { return(new UseMoveAction(State, chosenMove)); } if (chosenMove == null) { return(new SwitchDeltAction(State, switchIn)); } throw new System.Exception("Battle AI reached no possible battle actions!"); }
private void playHits() { adam.ClearStates(); eve.ClearStates(); while (HitQueue.Count > 0) { MoveClass hit = (MoveClass)HitQueue.Dequeue(); print(hit.name); print((hit.recovery) + " is the length of recovery."); if ((hit.playerID + 1) % 2 == 0) { adam.takeHit(hit); } if ((hit.playerID + 1) % 2 == 1) { eve.takeHit(hit); } /* tutorialpanel.e="hit"; * tutorialpanel.showPanel(); * tutorialpanel.firstHit=false;*/ /* Debug.Log (victim.playerID + " was hit"); * if (victim.blocking && hit.bStun != -10) { // block chunk * float instantKnockback = hit.kB*(hit.recovery / (hit.recovery + hit.bStun)); * victim.takeHit (instantKnockback, hit); * victim.addMove(new MoveClass("Defend", hit.bStun, new int[0], 0, 0, 0, 0, 0, 0)); * Debug.Log("Defend queued"); * } * * if (!victim.blocking || hit.bStun == -10) { //hit chunk - if not blocking or if thrown * Debug.Log("Hit reported"); * float instantKnockback = hit.kB*(hit.recovery / (hit.recovery + hit.hitStun)); * victim.takeHit (hit, instantKnockback); //deal damage to victim * if (hit.kB == -1) { //if a character is knocked down * victim.addMove(new MoveClass("Knocked Down", 6, new int[0], 0, 0, 0, 0, 0, 0)); //queue knockdown * Debug.Log("KD queued"); * } * * if(hit.kB >= 0) { //queue hit turns * victim.addMove (new MoveClass("Hit", hit.hitStun, new int[0], 0,0,0,0,0,0)); * Debug.Log("Hit queued."); * } * } //hit chunk ends */ } executionPhase = false; print("Player one health: " + adam.getHealth() + " || Player two health: " + eve.getHealth()); }
bool ValidateUseMove(MoveClass move, out string errorMessage) { errorMessage = null; if (move.PP <= 0) { errorMessage = "You don't have any more uses for this move!"; return(false); } if (move.movType == moveType.Block && State.PlayerState.LastMove.movType == moveType.Block) { errorMessage = "You cannot block twice in a row!"; return(false); } return(true); }
public void takeHit(MoveClass move) { print("KB is " + move.kB); print("Recovery is" + move.recovery); print("Hitstun is" + (move.recovery + move.hitStun)); print("Instant Knockback is " + move.kB * move.recovery / (move.recovery + move.hitStun)); Debug.Log("hit taken: " + move.dmg); if (blocking && move.bStun != -10) // block chunk { float instantKnockback = move.kB * move.recovery / (move.recovery + move.hitStun); transform.position += transform.right * -instantKnockback; //Instant Knockback applied print(instantKnockback); addMove(new MoveClass("Defend", move.bStun, new int[0], 0, 0, 0, 0, 0, move.kB - instantKnockback)); Debug.Log("Defend queued"); } else if (!blocking || move.bStun == -10) //hit chunk - if not blocking or if thrown { if (move.kB == -1) //if a character is knocked down { addMove(new MoveClass("Knocked Down", 6, new int[0], 0, 0, 0, 0, 0, 0)); //queue knockdown Debug.Log("KD queued"); } else //queue hit turns { float instantKnockback = move.kB * move.recovery / (move.recovery + move.hitStun); transform.position += -transform.right * instantKnockback; //Instant Knockback applied print(instantKnockback); addMove(new MoveClass("Hit", move.hitStun, new int[0], 0, 0, 0, 0, 0, move.kB - instantKnockback)); Debug.Log("Hit queued."); } } //hit chunk ends health = health - move.dmg; healthBar.HealthUpdate(health); //Game Over check if (health <= 0) { iP2.endGame(); } }
public void registerHit(MoveClass hit) { if (hit.playerID == 0) { if (eve.wasHit()) { HitQueue.Enqueue(hit); } } if (hit.playerID == 1) { if (eve.wasHit()) { HitQueue.Enqueue(hit); } } }
// Could add stat and damage moves? // Could add multi-turn moves? public void duplicateValues(MoveClass recipient) { recipient.moveName = moveName; recipient.moveDescription = moveDescription; recipient.majorType = majorType; recipient.status = status; recipient.movType = movType; recipient.moveIndex = moveIndex; recipient.PP = PP; recipient.PPLeft = PPLeft; recipient.damage = damage; recipient.hitChance = hitChance; recipient.statusType = statusType; recipient.buffs = buffs; recipient.statusChance = statusChance; recipient.critChance = critChance; }
public void setBox(int index, MoveClass move) { ImageSwitch(index, move.name); if (move.name == "Air Attack") { MoveClass temp = moveArray [index]; moveArray [index] = new MoveClass(temp.name + " AA", temp.initialFrames + 1, new int[2] { (temp.initialFrames - temp.framesLeft + 1), (temp.initialFrames - temp.framesLeft + 2) }, move.hitStun, move.bStun, move.priority, move.range, move.dmg, move.kB, temp.framesLeft + 1); print("Current frame is " + (temp.initialFrames - temp.framesLeft) + " of " + (temp.initialFrames + 1) + " initial and " + (temp.framesLeft + 1) + " current."); } else { moveArray [index] = move; } // sets buttons to occupied by a move's name if applic, sets those to null in move array for (int i = index + 1; i < 3; i++) { if (moveArray [index].framesLeft > i - index) { moveArray[i] = null; ImageSwitch(i, move.name); buttonArray[i].interactable = false; } else //Clears buttons and makes interactable if applic { if (!buttonArray[i].IsInteractable()) { buttonArray[i].interactable = true; ImageClear(i); } else //Breaks if an interactable button is found { i = 3; } } } //The submit button is only accessable if all buttons are set takeTurnButton.interactable = (buttonArrayText [0].text != "_" && buttonArrayText [1].text != "_" && buttonArrayText [2].text != "_"); }
public static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Unexpected # of arguments to Main(): {0} ", args.Length); throw new System.ArgumentException("Call with from and to paths"); } else { string fromPath = args[0]; string toPath = args[1]; Console.WriteLine("Rename from: {0} to {1}", fromPath, toPath); MoveClass.RenamePath(fromPath, toPath); } }
public void takeHit(MoveClass move) { Debug.Log("hit taken: " + move.dmg); if (blocking && move.bStun != -10) // block chunk { float instantKnockback = move.kB * move.recovery / (move.recovery + move.hitStun); transform.position += transform.right * -instantKnockback; //Instant Knockback applied addMove(new MoveClass("Defend", move.bStun, new int[0], 0, 0, 0, 0, 0, move.kB - instantKnockback)); Debug.Log("Defend queued"); } else if (!blocking || move.bStun == -10) //hit chunk - if not blocking or if thrown { if (move.kB == -1) //if a character is knocked down { addMove(new MoveClass("Knocked Down", 6, new int[0], 0, 0, 0, 0, 0, 0)); //queue knockdown Debug.Log("KD queued"); } else //queue hit turns { float instantKnockback = move.kB * move.recovery / (move.recovery + move.hitStun); transform.position += -transform.right * instantKnockback; //Instant Knockback applied addMove(new MoveClass("Hit", move.hitStun, new int[0], 0, 0, 0, 0, 0, move.kB - instantKnockback)); Debug.Log("Hit queued."); } } //hit chunk ends health = health - move.dmg; healthBar.HealthUpdate(health); //Game Over check if (health <= 0) { die.Play(); iP2.endGame(); myDino.GetComponent <Animation>().PlayQueued("Lose", QueueMode.PlayNow); } }
// Wild Delt move = random move from moveset public override BattleAction GetNextAction() { List <MoveClass> movesWithUses = new List <MoveClass>(); foreach (MoveClass move in State.OpponentState.DeltInBattle.moveset) { if (move.PPLeft > 0) { movesWithUses.Add(move); } } if (movesWithUses.Count == 0) { // REFACTOR_TODO: Loss condition return(null); } else { MoveClass randomMove = movesWithUses.GetRandom(); return(new UseMoveAction(State, randomMove)); } }
// Calculates how effective it would be to keep Delt in float CalculateStayScore(MoveClass chosenMove, DeltemonClass curPlayerDelt) { bool oppGoesFirst = State.PlayerState.GetDeltBattleStat(DeltStat.ChillToPull) > State.OpponentState.GetDeltBattleStat(DeltStat.ChillToPull); float stayChance = 100; DeltemonClass deltInBattle = State.OpponentState.DeltInBattle; // If opponent has a status if (deltInBattle.curStatus != statusType.None) { // If move doesn't heal if (!chosenMove.buffs.Exists(b => b.BuffType == buffType.Heal)) { // Lower health == lower stayChance if (deltInBattle.health < 0.35 * deltInBattle.GPA) { stayChance = 80; } // Slightly higher GPA means higher stayChance else if (deltInBattle.health < 0.6 * deltInBattle.GPA) { stayChance = 90; } } } // If player goes first, and opp is hurt, lower stay chance if (!oppGoesFirst) { if (deltInBattle.health < deltInBattle.GPA * 0.1f) { stayChance *= 0.8f; } else if (deltInBattle.health < deltInBattle.GPA * 0.3f) { stayChance *= 0.9f; } } return(stayChance); }
public void setBox(int index, MoveClass move, bool isFirstBlockofNewTurn) { ImageSwitch(index, move.name); moveArray [index] = move; if (isFirstBlockofNewTurn) { buttonArray[index].interactable = false; } // sets buttons to occupied by a move's name if applic, sets those to null in move array for (int i = index + 1; i < 3; i++) { if (move.framesLeft > i - index) { moveArray[i] = null; ImageSwitch(i, move.name); buttonArray[i].interactable = false; } else //Clears buttons and makes interactable if applic { if (!buttonArray[i].IsInteractable()) { buttonArray[i].interactable = true; ImageClear(i); } else //Breaks if an interactable button is found { i = 3; } } } //The submit button is only accessable if all buttons are set takeTurnButton.interactable = (buttonArrayText [0].text != "_" && buttonArrayText [1].text != "_" && buttonArrayText [2].text != "_"); }
public void takeMove() { //print (moveQueue.Count + "for player " + GetPlayerID()); if (!hasJumped || moveQueue.Count > 0) { if (opponent.transform.position.x < transform.position.x && transform.localRotation.y != 180) //block checks if a player needs to spin around { transform.localEulerAngles = new Vector3(0, 180, 0); } if (opponent.transform.position.x > transform.position.x && transform.localRotation.y != 0) { transform.localEulerAngles = Vector3.zero; } } //block ends moveQueue [0].framesLeft -= 1; MoveClass thisMove = moveQueue [0]; int currentFrameNumber = thisMove.initialFrames - thisMove.framesLeft; if (thisMove.name != "Defend") //If the player has continued blocking since last turn, { blocking = false; //then there is no gap where they are not blocking } //Debug.Log("Player " + playerID + ": " + nextMove); switch (thisMove.name) { case "Knocked Down": if (currentFrameNumber == 0) { invuln = true; } if (currentFrameNumber == moveQueue[0].initialFrames) { moveCount = 0; invuln = false; } break; case "Light Attack": case "Medium Attack": if (thisMove.activeFrames[0] == currentFrameNumber) { myLimb.SetHitBox(thisMove); } if (thisMove.activeFrames[0] + thisMove.activeFrames.Length - 1 < currentFrameNumber) { myLimb.ClearBox(); } break; case "Hit": transform.position += transform.right * -thisMove.kB; break; case "Heavy Attack": if (currentFrameNumber < 3) { transform.Translate(Vector3.right * .3f); } if (currentFrameNumber == 2) { myLimb.SetHitBox(moveQueue [0]); } if (currentFrameNumber == 3) { myLimb.ClearBox(); } if (currentFrameNumber == moveQueue[0].initialFrames) { moveCount = 0; } break; case "Defend": blocking = true; break; case "Walk Forward": gameObject.transform.Translate(Vector3.right * walkSpeed); // myDino.animation.Play ("walk"); break; case "Walk Back": gameObject.transform.Translate(-Vector3.right * walkSpeed); // myDino.animation.Play ("walk"); break; case "Forward Dash": gameObject.transform.Translate(Vector3.right * forwardDash / 3); break; case "Back Dash": if (currentFrameNumber == 0) { invuln = true; } if (moveCount == 1) { invuln = false; } gameObject.transform.Translate(-Vector3.right * backDash / 5); moveCount++; if (moveCount == 5) { moveCount = 0; } break; case "Jump": if (currentFrameNumber <= 3) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } /*if (jumpFrames == 0) { * hasJumped = false; * iP2.setAirAttack (playerID); * }*/ break; case "Jump Right": if (currentFrameNumber <= 3) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } gameObject.transform.Translate(Vector3.right * forwardDash / 3); /*if (jumpFrames == 0) { * hasJumped = false; * iP2.setAirAttack (playerID); * }*/ break; case "Jump Left": if (currentFrameNumber <= 3) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } gameObject.transform.Translate(-Vector3.right * forwardDash / 3); /*if (jumpFrames == 0) { * hasJumped = false; * iP2.setAirAttack (playerID); * }*/ break; case "Air Attack": case "Jump AA": case "Jump Left AA": case "Jump Right AA": if (thisMove.activeFrames[0] == currentFrameNumber) { myLimb.SetHitBox(thisMove); } if (thisMove.activeFrames[0] + 1 < currentFrameNumber) { myLimb.ClearBox(); } if (currentFrameNumber <= 3) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3 && currentFrameNumber < 7) { transform.Translate(Vector3.down * jumpFactor); } if (thisMove.name == "Jump Left AA" && currentFrameNumber < 7) { gameObject.transform.Translate(-Vector3.right * jumpFactor); } if (jumpDirection == "Jump Right AA" && currentFrameNumber < 7) { gameObject.transform.Translate(Vector3.right * jumpFactor); } break; case "Fireball": if (moveCount == 2) { GameObject temp = (GameObject)Instantiate(fireball, transform.position, transform.localRotation); myBall = temp.GetComponent <FireballController> (); myBall.myTarget(opponent); } moveCount++; if (moveCount == 9) { moveCount = 0; } break; case "Dino-Punch": if (moveCount == 0) { invuln = true; myLimb.SetHitBox(moveQueue [0]); } if (moveCount == 3) { invuln = false; myLimb.ClearBox(); } moveCount++; if (moveCount == 8) { moveCount = 0; } break; case "Throw": if (moveCount == 0) { myLimb.SetHitBox(moveQueue [0]); hasThrown = true; } if (moveCount == 1) { myLimb.ClearBox(); } if (moveCount == 2) { hasThrown = false; } moveCount++; if (moveCount == 5) { moveCount = 0; } break; default: break; } if (myBall != null) { myBall.nextMove(); } transform.position = new Vector3(Mathf.Clamp(transform.localPosition.x, -5.874f, 5.874f), Mathf.Clamp(transform.localPosition.y, 1.04f, 4f), transform.localPosition.z); if (moveQueue [0].framesLeft == 0) { moveQueue.RemoveAt(0); } }
// REFACTOR_TODO: Is this necessary? // New move button press starts coroutine //public void NewMoveButton(bool isLearn) //{ // StartCoroutine(NewMoveButtonCoroutine(isLearn)); //} // User clicks Learn New Move or Don't Learn public void NewMoveButtonPress(bool isLearn, System.Action OnFinish) { // REFACTOR_TODO: Make references Text cancelText = NewMoveUI.transform.GetChild(5).GetChild(0).GetComponent <Text>(); Text learnText = NewMoveUI.transform.GetChild(4).GetChild(0).GetComponent <Text>(); DeltemonClass delt = State.PlayerState.DeltInBattle; // Presses the cancel button if (!isLearn) { // Player affirms not learning new move if (cancelText.text == "Sure?") { BattleManager.AddToBattleQueue(string.Format("{0} didn't learn the move {1}!", delt.nickname, delt.moveset[4].moveName)); // Remove tmp 5th new move delt.moveset.RemoveAt(4); NewMoveUI.SetActive(false); UIManager.Inst.PosseUI.CloseMoveOverviews(); OnFinish(); } // Cancel button must be pressed again to confirm else { cancelText.text = "Sure?"; learnText.text = "Switch" + System.Environment.NewLine + "Moves"; } } // Presses learn new move button without selecting an old move first else if (!UIManager.Inst.PosseUI.MoveTwoOverview.gameObject.activeInHierarchy) { BattleManager.AddToBattleQueue("You must select a move to switch out first!"); } // User tries to forget a move else { // Player affirms learning new move if (learnText.text == "Sure?") { // Save index of move being forgotten int forgetMoveIndex = UIManager.Inst.secondMoveLoaded; // Set move overviews and new move ui to inactive NewMoveUI.SetActive(false); UIManager.Inst.PosseUI.CloseMoveOverviews(); BattleManager.AddToBattleQueue(string.Format("{0} forgot the move {1}!", delt.nickname, delt.moveset[forgetMoveIndex].moveName)); // Instantiate and learn new move MoveClass newMove = Instantiate(delt.moveset[4], delt.transform); delt.moveset[forgetMoveIndex] = newMove; // Remove 5th move delt.moveset.RemoveAt(4); BattleManager.AddToBattleQueue(string.Format("{0} learned the move {1}!", delt.nickname, newMove.moveName)); OnFinish(); } // Cancel button must be pressed again to confirm else { learnText.text = "Sure?"; cancelText.text = "Don't" + System.Environment.NewLine + "Learn"; } } }
public void setButtonMove(MoveClass newMove) { move = newMove; }
// REFACTOR_TODO: Temporary until moveclass is no longer a Monobehavior public MoveClass InstantiateMove(MoveClass move, Transform parent) { return(Instantiate(move, parent)); }
public void takeMove() { if (moveQueue.Count > 0) { //print (moveQueue.Count + "for player " + GetPlayerID()); if (!hasJumped || moveQueue.Count > 0) { if (opponent.transform.position.x < transform.position.x && transform.localRotation.y != 180) //block checks if a player needs to spin around { transform.localEulerAngles = new Vector3(0, 180, 0); } if (opponent.transform.position.x > transform.position.x && transform.localRotation.y != 0) { transform.localEulerAngles = Vector3.zero; } } //block ends moveQueue [0].framesLeft -= 1; MoveClass thisMove = moveQueue [0]; int currentFrameNumber = thisMove.initialFrames - thisMove.framesLeft; if (thisMove.name != "Defend") //If the player has continued blocking since last turn, { blocking = false; //then there is no gap where they are not blocking } if (!myDino.GetComponent <Animation>().isPlaying) { myDino.GetComponent <Animation>().CrossFade("Idle", 0.2f, PlayMode.StopSameLayer); } //Debug.Log("Player " + playerID + ": " + nextMove); switch (thisMove.name) { case "Knocked Down": if (currentFrameNumber == 0) { myDino.GetComponent <Animation>().PlayQueued("Lose", QueueMode.PlayNow); invuln = true; } if (currentFrameNumber == moveQueue [0].initialFrames) { invuln = false; myDino.GetComponent <Animation>().PlayQueued("Idle", QueueMode.PlayNow); } break; case "Light Attack": if (thisMove.activeFrames [0] == currentFrameNumber) { myLimb.SetHitBox(thisMove); myDino.GetComponent <Animation>().PlayQueued("Light", QueueMode.PlayNow); } if (thisMove.activeFrames [0] + thisMove.activeFrames.Length - 1 < currentFrameNumber) { myLimb.ClearBox(); } break; case "Medium Attack": if (thisMove.activeFrames [0] == currentFrameNumber) { myLimb.SetHitBox(thisMove); myDino.GetComponent <Animation>().PlayQueued("Medium", QueueMode.PlayNow); } if (thisMove.activeFrames [0] + thisMove.activeFrames.Length - 1 < currentFrameNumber) { myLimb.ClearBox(); } break; case "Hit": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("Hit", QueueMode.PlayNow).speed = 20f / 12f; } transform.position += transform.right * -thisMove.kB; break; case "Heavy Attack": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("Heavy", QueueMode.PlayNow).speed = 1.4f; } if (currentFrameNumber == 2) { myLimb.SetHitBox(moveQueue [0]); myDino.transform.localPosition += (Vector3.right * .5f); } if (currentFrameNumber == 3) { myLimb.ClearBox(); myDino.transform.localPosition += (-Vector3.right * .5f); gameObject.transform.Translate(Vector3.right * .5f); } break; case "Defend": if (!blocking) { myDino.GetComponent <Animation>().PlayQueued("DefendStart", QueueMode.PlayNow); myDino.GetComponent <Animation>().PlayQueued("DefendFreeze", QueueMode.CompleteOthers); blocking = true; } break; case "Walk Forward": myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.PlayNow); gameObject.transform.Translate(Vector3.right * walkSpeed); move.Play(); // myDino.animation.Play ("walk"); break; case "Walk Back": myDino.transform.localEulerAngles = new Vector3(0, 90, 0); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.PlayNow); gameObject.transform.Translate(-Vector3.right * walkSpeed); move.Play(); break; case "Forward Dash": move.Play(); if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("DashStart", QueueMode.PlayNow); //if(currentFrameNumber == 2) myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); //if(currentFrameNumber == 3) myDino.GetComponent <Animation>().PlayQueued("DashEnd", QueueMode.CompleteOthers); //StartCoroutine(dinoLerp(Vector3.right * forwardDash)); } gameObject.transform.Translate(Vector3.right * forwardDash / 3); break; case "Back Dash": move.Play(); if (currentFrameNumber == 1) { myDino.transform.localEulerAngles = new Vector3(0, 90, 0); invuln = true; myDino.GetComponent <Animation>().PlayQueued("DashStart", QueueMode.PlayNow); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); myDino.GetComponent <Animation>().PlayQueued("Dash", QueueMode.CompleteOthers); myDino.GetComponent <Animation>().PlayQueued("DashEnd", QueueMode.CompleteOthers); } if (currentFrameNumber == 2) { invuln = false; } gameObject.transform.Translate(-Vector3.right * backDash / 5); break; case "Jump": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("JumpStart", QueueMode.PlayNow).speed = 1.5f; myDino.GetComponent <Animation>().PlayQueued("JumpMiddle", QueueMode.CompleteOthers).speed = 0.21f; myDino.GetComponent <Animation>().PlayQueued("JumpEnd", QueueMode.CompleteOthers); } if (currentFrameNumber <= 3 && currentFrameNumber > 1) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } break; case "Jump Right": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("JumpStart", QueueMode.PlayNow).speed = 1.5f; myDino.GetComponent <Animation>().PlayQueued("JumpMiddle", QueueMode.CompleteOthers).speed = 0.21f; myDino.GetComponent <Animation>().PlayQueued("JumpEnd", QueueMode.CompleteOthers); } if (currentFrameNumber <= 3 && currentFrameNumber > 1) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } gameObject.transform.Translate(Vector3.right * forwardDash / 3); /*if (jumpFrames == 0) { * hasJumped = false; * iP2.setAirAttack (playerID); * }*/ break; case "Jump Left": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("JumpStart", QueueMode.PlayNow).speed = 1.5f; myDino.GetComponent <Animation>().PlayQueued("JumpMiddle", QueueMode.CompleteOthers).speed = 0.21f; myDino.GetComponent <Animation>().PlayQueued("JumpEnd", QueueMode.CompleteOthers); } if (currentFrameNumber <= 3 && currentFrameNumber > 1) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3) { transform.Translate(Vector3.down * jumpFactor); } gameObject.transform.Translate(-Vector3.right * forwardDash / 3); /*if (jumpFrames == 0) { * hasJumped = false; * iP2.setAirAttack (playerID); * }*/ break; case "Air Attack": case "Jump AA": case "Jump Left AA": case "Jump Right AA": if (thisMove.activeFrames [0] == currentFrameNumber) { myLimb.SetHitBox(thisMove); } if (thisMove.activeFrames [0] + 1 < currentFrameNumber) { myLimb.ClearBox(); } if (currentFrameNumber <= 3) { transform.Translate(Vector3.up * jumpFactor); } if (currentFrameNumber > 3 && currentFrameNumber < 7) { transform.Translate(Vector3.down * jumpFactor); } if (thisMove.name == "Jump Left AA" && currentFrameNumber < 7) { gameObject.transform.Translate(-Vector3.right * jumpFactor); } if (jumpDirection == "Jump Right AA" && currentFrameNumber < 7) { gameObject.transform.Translate(Vector3.right * jumpFactor); } break; case "Divekick": if (currentFrameNumber == 1) { transform.localEulerAngles = new Vector3(transform.rotation.x, transform.rotation.y, -45f); myLimb.SetHitBox(thisMove); myDino.GetComponent <Animation>().PlayQueued("DivePeck", QueueMode.PlayNow); } gameObject.transform.Translate(Vector3.right * 0.3f); gameObject.transform.Translate(Vector3.down * 0.6f); if (transform.localPosition.z <= 1.04) { thisMove.framesLeft = 0; } if (thisMove.framesLeft == 0) { myLimb.ClearBox(); } break; case "Dash Peck": if (currentFrameNumber == 1) { myDino.GetComponent <Animation>().PlayQueued("DashAttackOnly", QueueMode.PlayNow); } if (currentFrameNumber < 4) { move.Play(); gameObject.transform.Translate(Vector3.right * 0.4f); } if (currentFrameNumber == 3) { myLimb.SetHitBox(thisMove); } if (currentFrameNumber == 4) { myLimb.ClearBox(); } break; case "Throw": if (moveCount == 0) { myLimb.SetHitBox(moveQueue [0]); myDino.GetComponent <Animation>().PlayQueued("GuardBreak", QueueMode.PlayNow); hasThrown = true; } if (moveCount == 1) { myLimb.ClearBox(); } if (moveCount == 2) { hasThrown = false; } break; default: break; } transform.position = new Vector3(Mathf.Clamp(transform.localPosition.x, -5.874f, 5.874f), Mathf.Clamp(transform.localPosition.y, 1.04f, 4f), transform.localPosition.z); if (moveQueue [0].framesLeft == 0) { moveQueue.RemoveAt(0); myDino.transform.localEulerAngles = new Vector3(0, -90, 0); } } }
public void addMove(MoveClass move) { moveQueue.Insert(moveQueue.Count, move); }