public virtual void Activate(SkillActor actor, Character[] allies, Character enemy, Character[] enemies) { this.actor = actor; this.allies = allies; this.enemy = enemy; this.enemies = enemies; OnActivate.Invoke(actor, enemies); SkillEffect(); }
void AddSkillToEachCharacter(SkillActor skillActor, List <Skill> skills) { foreach (var skill in skills) { if (skillActor.skills.Contains(skill) == false) { skillActor.AddSkill(skill); } } }
void AddSkillToAllies() { SkillActor warriorSActor = combatManager.AllyTeam.Find(c => c.CharacterName == "Warrior").GetComponent <SkillActor>(); SkillActor mageSActor = combatManager.AllyTeam.Find(c => c.CharacterName == "Mage").GetComponent <SkillActor>(); SkillActor rogueSActor = combatManager.AllyTeam.Find(c => c.CharacterName == "Rogue").GetComponent <SkillActor>(); AddSkillToEachCharacter(warriorSActor, WarriorSkills); AddSkillToEachCharacter(mageSActor, MageSkills); AddSkillToEachCharacter(rogueSActor, RogueSkills); }
void RemoveUniqueSkills(SkillActor skillActor) { Skill defSkill = skillActor.skills.First(); skillActor.skills.Clear(); if (defSkill.SkillRequirements.Count != 0) { return; } skillActor.skills.Add(defSkill); }
void UpdateSpecificTeam(Character selectedChar, Text displayNameText, Transform skillPanel) { //Skip default Skill int skillIndex = 1; if (selectedChar != null) { if (displayNameText != null) { displayNameText.text = selectedChar.CharacterName; } SkillActor skillActor = selectedChar.GetComponent <SkillActor>(); if (skillPanel != null) { foreach (Transform item in skillPanel) { Text txt = item.GetComponent <Text>(); Button txtBtn = item.GetComponent <Button>(); if (txtBtn == null) { return; } //Reset SetButtonInteractable(txtBtn, false); txtBtn.onClick.RemoveAllListeners(); if (skillIndex < skillActor.skills.Count) { txt.text = skillActor.skills[skillIndex].skillName; if (selectedChar.Mana >= skillActor.skills[skillIndex].cost) { SetButtonInteractable(txtBtn, true); //txtBtn.onClick.AddListener(() => cSkillUIHandler.UseUniqueSkill(txt.text)); } skillIndex++; } else { txt.text = EmptySkillName; SetButtonInteractable(txtBtn, false); //txtBtn.onClick.RemoveListener(() => cSkillUIHandler.UseUniqueSkill(txt.text)); } } } } }
public virtual void Exit() { EventDispatch.Broadcast <int>(Events.DlgMainStartCd, this.skillConfig.skillId); if (PlayerManager.singleton.MySelf != null) { PlayerManager.singleton.MySelf.Idle(); } if (actor != null) { actor.Exit(); actor = null; } SkillManager.singleton.runningSkills.Remove(this); }
public void ContinueTutorial() { //AddSkillToMage SkillActor sActor = combatManager.AllyTeam.Find(c => c.CharacterName == "Mage").GetComponent <SkillActor>(); sActor.AddSkill(MageSkills.First()); combatManager.OnTutorialRoundEnd.Invoke(); OnPopUpInstruction.AddListener(First_Dialogue_Finish); ShowTutorialPanel(); //Dialogues Setup if (DialogueList.Count > 1) { DialogueList.First().OnDialogueEnd.AddListener(First_Dialogue_Finish); NextDialogue(); } }
public override void Interact(GameObject obj) { if (isInteracted == true && activateOnce || Time.timeScale == 0 || !canInput) { return; } canInput = false; StartCoroutine(Delay()); PlayerController player = obj.GetComponent <PlayerController>(); SkillActor actor = player.GetComponent <SkillActor>(); Debug.Log(actor); if (!actor.skills.Any(item => item.ID == skill.ID) && !giveToSpecificPlayer) { actor.AddSkill(skill); } if (!actor.skills.Any(item => item.ID == skill.ID) && giveToSpecificPlayer) { if (player.ID == playerID && !isInteracted) { actor.AddSkill(skill); if (item != null) { gameManager.sharedInventory.AddItem(item); } GetComponent <SpriteRenderer>().sprite = on; isInteracted = true; EventActivated.Invoke(obj); EventInteracted.Invoke(obj); } else { if (Time.timeScale == 1) { EventOnWrongPlayer.Invoke(); } } } }
void Third_Dialogue_Start() { combatManager.OnCurrentRoundEnd.RemoveListener(Third_Dialogue_Start); //AddSkillToRogue SkillActor sActor = combatManager.AllyTeam.Find(c => c.CharacterName == "Rogue").GetComponent <SkillActor>(); sActor.AddSkill(RogueSkills.First()); combatManager.OnTutorialRoundEnd.Invoke(); OnPopUpInstruction.AddListener(Third_Dialogue_Finish); ShowTutorialPanel(); if (DialogueList.Count > 1) { //Update Dialogue NextDialogue(); //AddListener DialogueList.First().OnDialogueEnd.AddListener(Third_Dialogue_Finish); } }
public virtual void Start() { actor = GetComponent <SkillActor>(); }
public IEnumerator StartCombatFight(int allyAttackTurns, int enemyAttackTurns, int matchCount) { int firstTeamAttackCount = 0; if (AttackList.Count == 0) { yield break; } if (AllyTeam.Contains(AttackList.First())) { firstTeamAttackCount = allyAttackTurns; } else { firstTeamAttackCount = enemyAttackTurns; } while (true) { if (AttackList.Count > 0 && IsStartAttack == false) { Character attacker = AttackList.First(); if (attacker == null || CheckCharacterValidToAttack(attacker) == false) { AttackList.Remove(attacker); if (AllyTeam.Contains(attacker)) { AllySkillToUse.RemoveAt(0); } continue; } //Set StartAttack to true IsStartAttack = true; SkillActor sActor = attacker.GetComponent <SkillActor>(); int actualTurnDeduct = DEFAULT_TURN_DEDUCT; actorCharacter = attacker; //Ally Attack if (AllyTeam.Contains(attacker) == true) { //Debug Debug.Log("-------------- Player Turn --------------"); //Change Combat State to Ally Turn ChangeCombatState(CombatState.AllyTurn); //Pass what Skill to use if (AllySkillToUse.Count != 0) { SkillToUse = sActor.skillInstances.Find(s => s.skillName == AllySkillToUse.First().skillName); AllySkillToUse.Remove(AllySkillToUse.First()); } //If Skill is still null, set default attack as the skill if (SkillToUse == null) { SkillToUse = sActor.skillInstances.First(); } actorList = AllyTeam; targetCharacter = SelectedEnemy; targetList = EnemyTeam; AllyCombatAction(SkillToUse); } //Enemy Attack else { //Debug Debug.Log("-------------- Enemy Turn --------------"); //Change Combat State To Enemy Turn ChangeCombatState(CombatState.EnemyTurn); actorList = EnemyTeam; targetCharacter = GetCharacterFromTeam(AllyTeam); targetList = AllyTeam; CombatAction(sActor.skillInstances.First(), actualTurnDeduct, ENEMY_MANA_ADD); } //After Attack assigned AttackList.Remove(attacker); firstTeamAttackCount--; } //ROUND END if (AttackList.Count == 0 && IsStartAttack == false) { Debug.Log("END ATTACKS"); yield return(new WaitForSeconds(MatchDelayTimer)); LateBuffEffectStart.Invoke(); //Check If there is a character died or not CheckIsDead(AllyTeam); CheckIsDead(EnemyTeam); if (CurCombatState != CombatState.DialogueMode) { MatchingBegin(); } OnCurrentRoundEnd.Invoke(); //Check Battle Result CheckBattleResult(); yield break; } yield return(new WaitForEndOfFrame()); } }
private void OnSkillStart(Character character, SkillSlot skillSlot, SkillActor skillActor) { _view.PlaySkillStart(skillActor.Data); }