using System.Collections; using System.Collections.Generic; using UnityEngine; public class BattleScript_SipletTrio : BattleEventListener { public BattleAction[] SiplettBattleActions; [SerializeField] private CHATBOXTEXT ActDialogue_Cheers; [SerializeField] private CHATBOXTEXT ActDialogue_Cheers_X; [SerializeField] private BattleAction Act_SusieAction_Cheers; [SerializeField] private CHATBOXTEXT ActDialogue_SusieCheers; [SerializeField] private BattleAction Act_RalseiAction_Cheers; [SerializeField] private CHATBOXTEXT ActDialogue_RalseiCheers; [SerializeField] private GameObject Effect_ActionGlow; [Space(5f)] public CHATBOXTEXT[] Dialogue_RandomSipletText; [Space(5f)] public CHATBOXTEXT Dialogue_IntroFlavorText; [Space(5f)] public CHATBOXTEXT[] Dialogue_RandomFlavorText; public List CurrentAliveEnemies = new List(); public GameObject DialogueBubble_Default; public GameObject DialogueBubble_Bubble; [Space(5f)] public BattleEnemyAttack Attack_SplashJuice; public BattleEnemyAttack Attack_SplashJuiceSingle; public BattleEnemyAttack Attack_Kaplunk; public BattleEnemyAttack Attack_TeamworkExclusive_LiquidFill; public BattleEnemyAttack Attack_DoubleBubbleColumn; public BattleEnemyAttack Attack_BubbleColumn; private int SplashJuiceAttackCount; private int KaplunkAttackCount; private int DoubleBubbleColumnAttackCount; private int BubbleColumnAttackCount; private int SingularSplashJuiceAttackCount; private int EnemiesKilled; private bool HasPlayedIntroFlavorText; private bool hasTakenAnyDamage; protected override void OnBattleStart(Battle battle) { Debug.Log($"Battle Begun: {battle}"); BattleSystem.Instance.QueueBattleActions(SiplettBattleActions); BattleSystem.GetPartyMember(PartyMemberSystem.Instance.Default_SusieDarkworld).PartyMemberAction = Act_SusieAction_Cheers; BattleSystem.GetPartyMember(PartyMemberSystem.Instance.Default_NoelleDarkworld).PartyMemberAction = Act_RalseiAction_Cheers; } protected override void OnBattleEnd(Battle battle, BattleSystem.EndBattleTypes EndType) { if (EndType != 0) { return; } if (Object.FindFirstObjectByType() != null) { if (EnemiesKilled <= 0) { Object.FindFirstObjectByType().StartEndingCutscene(); } else { Object.FindFirstObjectByType().StartEndingCutscene(violenceUsed: true); } } if (!hasTakenAnyDamage) { HypotheticalGoalManager.Instance.CompleteGoal(Object.FindFirstObjectByType().Goal_NoHit); } } protected override void OnEnemyKilled(BattleActiveEnemy targetEnemy, float Damage, BattlePartyMember inflictor) { EnemiesKilled++; Debug.Log($"{targetEnemy} killed {inflictor} with {Damage} damage"); } protected override void OnPlayerTurnHandler(int turnCount) { base.OnPlayerTurnHandler(turnCount); } protected override void OnEnemyTurnHandler(int turnCount) { base.OnEnemyTurnHandler(turnCount); } protected override void OnMemberDamaged(BattlePartyMember targetMember, float Damage) { hasTakenAnyDamage = true; Debug.Log($"{targetMember} damaged for {Damage} damage"); } protected override void OnBattleStateChange(BattleSystem.BattleState newState, BattleSystem.BattleState oldState) { Debug.Log($"New Battle State: {newState} | Previous Battle State {oldState}"); CurrentAliveEnemies = battleSystem.BattleActiveEnemies; if (Object.FindFirstObjectByType() != null) { Object.FindFirstObjectByType().Noelle_LookRight(); Object.FindFirstObjectByType().Susie_LookRight(); Object.FindFirstObjectByType().Kris_LookRight(); } if (Object.FindFirstObjectByType() != null) { Object.Destroy(Object.FindFirstObjectByType().gameObject); } if (newState == BattleSystem.BattleState.PlayerTurn) { int num = Random.Range(0, Dialogue_RandomFlavorText.Length); BattleChatbox.Instance.RunText(Dialogue_RandomFlavorText[num], 0, null, ResetCurrentTextIndex: true); } if (newState == BattleSystem.BattleState.Dialogue) { foreach (BattleActiveEnemy currentAliveEnemy in CurrentAliveEnemies) { int num2 = Random.Range(0, Dialogue_RandomSipletText.Length); currentAliveEnemy.QueuedDialogue.Add(Dialogue_RandomSipletText[num2]); currentAliveEnemy.SpecificTextIndexes.Add(0); currentAliveEnemy.QueuedDialogueBubble.Add(DialogueBubble_Bubble); } } if (newState != BattleSystem.BattleState.EnemyTurn) { return; } if (CurrentAliveEnemies.Count > 1) { if (SplashJuiceAttackCount >= 2) { battleSystem.QueuedBattleAttacks.Add(Attack_Kaplunk); KaplunkAttackCount = 1; SplashJuiceAttackCount = 0; DoubleBubbleColumnAttackCount = 0; BubbleColumnAttackCount = 0; SingularSplashJuiceAttackCount = 0; return; } if (KaplunkAttackCount >= 2) { battleSystem.QueuedBattleAttacks.Add(Attack_TeamworkExclusive_LiquidFill); battleSystem.QueuedBattleAttacks.Add(Attack_SplashJuice); SplashJuiceAttackCount = 1; KaplunkAttackCount = 0; DoubleBubbleColumnAttackCount = 0; BubbleColumnAttackCount = 0; SingularSplashJuiceAttackCount = 0; return; } if (DoubleBubbleColumnAttackCount >= 2) { battleSystem.QueuedBattleAttacks.Add(Attack_DoubleBubbleColumn); battleSystem.QueuedBattleAttacks.Add(Attack_DoubleBubbleColumn); SplashJuiceAttackCount = 0; KaplunkAttackCount = 0; DoubleBubbleColumnAttackCount = 1; BubbleColumnAttackCount = 0; SingularSplashJuiceAttackCount = 0; return; } switch (Random.Range(0, 3)) { case 0: battleSystem.QueuedBattleAttacks.Add(Attack_TeamworkExclusive_LiquidFill); battleSystem.QueuedBattleAttacks.Add(Attack_SplashJuice); SplashJuiceAttackCount++; KaplunkAttackCount = 0; DoubleBubbleColumnAttackCount = 0; BubbleColumnAttackCount = 0; SingularSplashJuiceAttackCount = 0; break; case 1: battleSystem.QueuedBattleAttacks.Add(Attack_DoubleBubbleColumn); battleSystem.QueuedBattleAttacks.Add(Attack_DoubleBubbleColumn); DoubleBubbleColumnAttackCount++; BubbleColumnAttackCount = 0; SplashJuiceAttackCount = 0; KaplunkAttackCount = 0; SingularSplashJuiceAttackCount = 0; break; default: battleSystem.QueuedBattleAttacks.Add(Attack_Kaplunk); KaplunkAttackCount++; SplashJuiceAttackCount = 0; DoubleBubbleColumnAttackCount = 0; BubbleColumnAttackCount = 0; SingularSplashJuiceAttackCount = 0; break; } } else if (SingularSplashJuiceAttackCount >= 2) { battleSystem.QueuedBattleAttacks.Add(Attack_SplashJuiceSingle); SingularSplashJuiceAttackCount = 1; BubbleColumnAttackCount = 0; } else if (BubbleColumnAttackCount >= 2) { battleSystem.QueuedBattleAttacks.Add(Attack_BubbleColumn); SingularSplashJuiceAttackCount = 0; BubbleColumnAttackCount = 1; } else if (Random.Range(0, 2) == 0) { battleSystem.QueuedBattleAttacks.Add(Attack_SplashJuiceSingle); SingularSplashJuiceAttackCount++; BubbleColumnAttackCount = 0; } else { battleSystem.QueuedBattleAttacks.Add(Attack_BubbleColumn); BubbleColumnAttackCount++; BubbleColumnAttackCount = 0; } } public void Act_Cheers(BattlePartyMemberUse action) { BattleSystem.Instance.SpareEnemy(action.targetEnemy, 20f, action.targetPartyMember, wasSpareable: false); BattleSystem.Instance.PartyMembers_MemberPlayAnimation(action.targetPartyMember, "SiplettCheers"); StartCoroutine(PlayActionGlow_Delayed(action.targetPartyMember)); battleSystem.FlashMemberLight(action.targetPartyMember); if (action.targetEnemy.Enemy_MercyAmount + 20f >= 100f) { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Spare"); } else { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Cheers"); } BattleSystem.BattleChatbox.AllowInput = true; BattleSystem.BattleChatbox.RunText(ActDialogue_Cheers, Random.Range(0, ActDialogue_Cheers.Textboxes.Length), null, ResetCurrentTextIndex: false); } public void Act_CheersSusie(BattlePartyMemberUse action) { BattleSystem.Instance.SpareEnemy(action.targetEnemy, 20f, action.targetPartyMember, wasSpareable: false); BattleSystem.Instance.PartyMembers_MemberPlayAnimation(action.targetPartyMember, "SiplettCheers"); StartCoroutine(PlayActionGlow_Delayed(action.targetPartyMember)); battleSystem.FlashMemberLight(action.targetPartyMember); if (action.targetEnemy.Enemy_MercyAmount + 20f >= 100f) { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Spare"); } else { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Cheers"); } BattleSystem.BattleChatbox.AllowInput = true; BattleSystem.BattleChatbox.RunText(ActDialogue_SusieCheers, Random.Range(0, ActDialogue_SusieCheers.Textboxes.Length), null, ResetCurrentTextIndex: false); } public void Act_CheersRalsei(BattlePartyMemberUse action) { BattleSystem.Instance.SpareEnemy(action.targetEnemy, 20f, action.targetPartyMember, wasSpareable: false); BattleSystem.Instance.PartyMembers_MemberPlayAnimation(action.targetPartyMember, "SiplettCheers"); StartCoroutine(PlayActionGlow_Delayed(action.targetPartyMember)); if (action.targetEnemy.Enemy_MercyAmount + 20f >= 100f) { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Spare"); } else { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Cheers"); } battleSystem.FlashMemberLight(action.targetPartyMember); BattleSystem.BattleChatbox.AllowInput = true; BattleSystem.BattleChatbox.RunText(ActDialogue_RalseiCheers, Random.Range(0, ActDialogue_RalseiCheers.Textboxes.Length), null, ResetCurrentTextIndex: false); } public void Act_Cheers_X(BattlePartyMemberUse action) { BattleSystem.Instance.SpareEnemy(action.targetEnemy, 70f, action.targetPartyMember, wasSpareable: false); foreach (BattlePartyMember battlePartyMember in battleSystem.BattlePartyMembers) { BattleSystem.Instance.PartyMembers_MemberPlayAnimation(battlePartyMember, "SiplettCheers"); StartCoroutine(PlayActionGlow_Delayed(battlePartyMember)); battleSystem.FlashMemberLight(battlePartyMember); } if (action.targetEnemy.Enemy_MercyAmount + 70f >= 100f) { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Spare"); } else { BattleSystem.Instance.ActiveEnemies_PlayAnimation(action.targetEnemy, "Cheers"); } BattleSystem.BattleChatbox.AllowInput = true; BattleSystem.BattleChatbox.RunText(ActDialogue_Cheers_X, Random.Range(0, ActDialogue_Cheers_X.Textboxes.Length), null, ResetCurrentTextIndex: false); } private IEnumerator PlayActionGlow_Delayed(BattlePartyMember member) { yield return null; yield return null; Object.Instantiate(Effect_ActionGlow, member.PartyMemberInBattle_Gameobjects.transform.position, Quaternion.identity).GetComponent().SetNewGlowSprite(member.PartyMemberInBattle_Animator.GetComponent().sprite); } }