/// <summary> /// Retrieves data from the details to fill in appropriate ui elements. /// </summary> /// <param name="details"></param> public void FillUI(WaifuDetails details) { WaifuCreator baseDetails = details.waifu;; nameText.text = baseDetails.CharacterName; string text = "" + details.Health.ToString() + "/" + baseDetails.HealthMax.ToString(); healthText.SetText(text, true); //Debug.Log(slider.value); slider.maxValue = baseDetails.HealthMax; slider.value = details.Health; }
/// <summary> /// create the player character and set up the values /// </summary> void CreatePlayer() { //instantiate player and get their detials GameObject player = Instantiate(playerCharacter); playerDetails = player.GetComponent <WaifuDetails>(); //playerDetails.waifu = Waifus.waifuList[PlayerPrefs.GetInt("Player1")]; //transfer the specifications from the scriptable objects to our player playerDetails.waifu = Waifus.waifuList[0]; playerDetails.waifuSprite.sprite = playerDetails.waifu.characterImage; playerDetails.Health = playerDetails.waifu.HealthMax; //update our default abilities with our saved abilities OverideAbilities(); }
/// <summary> /// Create the enemy player and their details /// </summary> void CreateEnemy() { //nstantiate enemy and get their detials GameObject enemy = Instantiate(enemyCharacter); enemyDetails = enemy.GetComponent <WaifuDetails>(); enemyDetails.waifu = Waifus.waifuList[UnityEngine.Random.Range(1, 4)]; //transfer the specifications from the scriptable objects to our enemy enemyDetails.waifuSprite.sprite = enemyDetails.waifu.characterImage; enemyDetails.Health = enemyDetails.waifu.HealthMax; dialogueText.text = "You face off against " + enemyDetails.waifu.CharacterName; }
void CreateEnemy() { //nstantiate enemy and get their detials GameObject enemy = Instantiate(enemyCharacter); enemyDetails = enemy.GetComponent <WaifuDetails>(); //enemyDetails.waifu = Waifus.waifuList[1]; //if (networkClient.MyLobby.Player1 == networkClient.PlayerUserID)//if player 1 //{ enemyDetails.waifu = Waifus.waifuList[networkClient.EnemyPlayerCharacter]; //} //else //{ // enemyDetails.waifu = Waifus.waifuList[networkClient.EnemyPlayerCharacter]; //} enemyDetails.waifuSprite.sprite = enemyDetails.waifu.characterImage; enemyDetails.Health = enemyDetails.waifu.HealthMax; dialogueText.text = "You face off against " + enemyDetails.waifu.CharacterName; }
void CreatePlayer() { //instantiate player and get their detials GameObject player = Instantiate(playerCharacter); playerDetails = player.GetComponent <WaifuDetails>(); //playerDetails.waifu = Waifus.waifuList[PlayerPrefs.GetInt("Player1")]; //TODO: get the waifu from the network client if (networkClient.MyLobby.Player1 == networkClient.PlayerUserID)//if player 1 { playerDetails.waifu = Waifus.waifuList[networkClient.MyPlayerCharacter]; MyPlayerNum = BattleState.PLAYER1; } else { playerDetails.waifu = Waifus.waifuList[networkClient.MyPlayerCharacter]; MyPlayerNum = BattleState.PLAYER2; } playerDetails.waifuSprite.sprite = playerDetails.waifu.characterImage; playerDetails.Health = playerDetails.waifu.HealthMax; }
IEnumerator Attack(int ability, WaifuDetails attacker, WaifuDetails defender) { bool defenderDefeated = false; bool attackerDefeated = false; Ability move = attacker.waifu.MyAbilties.abilityList[ability]; dialogueText.text = attacker.waifu.CharacterName + " uses " + move.AbilityName + "!"; yield return(new WaitForSeconds(1)); float levelAdjustmentBonus = 0.0f; if (MyPlayerNum == state) // my turn use my level { levelAdjustmentBonus = networkClient.MyLevel / 10; } else // other players turn // use their level { levelAdjustmentBonus = networkClient.OpponentLevel / 10; } defenderDefeated = defender.TakeDamage((int)((levelAdjustmentBonus + attacker.waifu.Attack) * move.AttackMultipier * (1.0f + 0.05f * attacker.buffs[(int)BUFF_ARRAY.ATTACK]))); attackerDefeated = attacker.Recoil((int)(move.CostHp)); // buffs and debuffs attacker.buffs[(int)BUFF_ARRAY.ATTACK] = move.SelfBuff[(int)BUFF_ARRAY.ATTACK]; attacker.buffs[(int)BUFF_ARRAY.DEFENCE] = move.SelfBuff[(int)BUFF_ARRAY.DEFENCE]; attacker.buffs[(int)BUFF_ARRAY.LOVE] = move.SelfBuff[(int)BUFF_ARRAY.LOVE]; attacker.buffs[(int)BUFF_ARRAY.ATTACK] -= move.SelfDebuff[(int)BUFF_ARRAY.ATTACK]; attacker.buffs[(int)BUFF_ARRAY.DEFENCE] -= move.SelfDebuff[(int)BUFF_ARRAY.DEFENCE]; attacker.buffs[(int)BUFF_ARRAY.LOVE] -= move.SelfDebuff[(int)BUFF_ARRAY.LOVE]; defender.buffs[(int)BUFF_ARRAY.ATTACK] = move.SelfBuff[(int)BUFF_ARRAY.ATTACK]; defender.buffs[(int)BUFF_ARRAY.DEFENCE] = move.SelfBuff[(int)BUFF_ARRAY.DEFENCE]; defender.buffs[(int)BUFF_ARRAY.LOVE] = move.SelfBuff[(int)BUFF_ARRAY.LOVE]; defender.buffs[(int)BUFF_ARRAY.ATTACK] -= move.SelfDebuff[(int)BUFF_ARRAY.ATTACK]; defender.buffs[(int)BUFF_ARRAY.DEFENCE] -= move.SelfDebuff[(int)BUFF_ARRAY.DEFENCE]; defender.buffs[(int)BUFF_ARRAY.LOVE] -= move.SelfDebuff[(int)BUFF_ARRAY.LOVE]; dialogueText.text = move.Description; yield return(new WaitForSeconds(1)); attacker.Rest((int)((levelAdjustmentBonus + attacker.waifu.Love) * move.LoveMultiplier * (1.0f + 0.05f * attacker.buffs[(int)BUFF_ARRAY.LOVE]))); UpdateCharactersUI(); yield return(new WaitForSeconds(2)); if (CheckPlayerWin()) { state = BattleState.WIN; EndBattle(); } if (CheckEnemyWin()) { state = BattleState.LOOSE; EndBattle(); } Debug.Log("Move Made"); if (state == BattleState.PLAYER2) { state = BattleState.PLAYER1; MoveAvailble = true; Player1Turn(); } else if (state == BattleState.PLAYER1) { state = BattleState.PLAYER2; MoveAvailble = true; Player2Turn(); } }
/// <summary> /// Called when an attack occurs to process the attack effect /// </summary> /// <param name="ability"></param> /// <param name="attacker"></param> /// <param name="defender"></param> /// <returns></returns> IEnumerator Attack(int ability, WaifuDetails attacker, WaifuDetails defender) { bool defenderDefeated = false; bool attackerDefeated = false; //if player 1 use player abilities if not use the preset abilities for enemy Ability move = (attacker == playerDetails ? playerAbilities[ability]: attacker.waifu.MyAbilties.abilityList[ability]); dialogueText.text = attacker.waifu.CharacterName + " uses " + move.AbilityName + "!"; yield return(new WaitForSeconds(1)); //generate a hit chance for our roll float hitChance = UnityEngine.Random.Range(0.0f, 1.0f); //check to see if the hit will succeed if (hitChance > move.PercentChance) { //missed so update the text dialogueText.text = attacker.waifu.CharacterName + " failed to use " + move.AbilityName + "!"; yield return(new WaitForSeconds(1)); } else // ability hit succeeds { //check if escaping if (move.AbilityName == "Escape") { dialogueText.text = attacker.waifu.CharacterName + " managed to " + move.AbilityName + "!"; Debug.Log("Escaped!"); Escape(); //return to the city scene } defenderDefeated = defender.TakeDamage((int)(attacker.waifu.Attack * move.AttackMultipier * (1.0f + 0.05f * attacker.buffs[(int)BUFF_ARRAY.ATTACK]))); attackerDefeated = attacker.Recoil((int)(move.CostHp)); // buffs and debuffs attacker.buffs[(int)BUFF_ARRAY.ATTACK] = move.SelfBuff[(int)BUFF_ARRAY.ATTACK]; attacker.buffs[(int)BUFF_ARRAY.DEFENCE] = move.SelfBuff[(int)BUFF_ARRAY.DEFENCE]; attacker.buffs[(int)BUFF_ARRAY.LOVE] = move.SelfBuff[(int)BUFF_ARRAY.LOVE]; attacker.buffs[(int)BUFF_ARRAY.ATTACK] -= move.SelfDebuff[(int)BUFF_ARRAY.ATTACK]; attacker.buffs[(int)BUFF_ARRAY.DEFENCE] -= move.SelfDebuff[(int)BUFF_ARRAY.DEFENCE]; attacker.buffs[(int)BUFF_ARRAY.LOVE] -= move.SelfDebuff[(int)BUFF_ARRAY.LOVE]; defender.buffs[(int)BUFF_ARRAY.ATTACK] = move.SelfBuff[(int)BUFF_ARRAY.ATTACK]; defender.buffs[(int)BUFF_ARRAY.DEFENCE] = move.SelfBuff[(int)BUFF_ARRAY.DEFENCE]; defender.buffs[(int)BUFF_ARRAY.LOVE] = move.SelfBuff[(int)BUFF_ARRAY.LOVE]; defender.buffs[(int)BUFF_ARRAY.ATTACK] -= move.SelfDebuff[(int)BUFF_ARRAY.ATTACK]; defender.buffs[(int)BUFF_ARRAY.DEFENCE] -= move.SelfDebuff[(int)BUFF_ARRAY.DEFENCE]; defender.buffs[(int)BUFF_ARRAY.LOVE] -= move.SelfDebuff[(int)BUFF_ARRAY.LOVE]; dialogueText.text = move.Description; yield return(new WaitForSeconds(1)); //process healing attacker.Rest((int)(attacker.waifu.Love * move.LoveMultiplier * (1.0f + 0.05f * attacker.buffs[(int)BUFF_ARRAY.LOVE]))); //play ability effects move.PlayEffects(attacker.transform, defender.transform); if (move.Clip != null) { audioSource.clip = move.Clip; audioSource.Play(); } } //update ui elements UpdateCharactersUI(); yield return(new WaitForSeconds(2)); //check states if (CheckEnemyWin()) { state = BattleState.LOOSE; EndBattle(); } if (CheckPlayerWin()) { state = BattleState.WIN; EndBattle(); } //transition turns if (state == BattleState.PLAYER2) { state = BattleState.PLAYER1; Player1Turn(); } else if (state == BattleState.PROCESSING) { state = BattleState.PLAYER2; StartCoroutine(EnemyTurn()); } }