protected override void Awake() { base.Awake(); aiCompoment = GetComponent <CAICompoment>(); skill = Instantiate(skill); skill.owner = this; }
public void OnDespawned() { masterArmor = null; masterAISkill = null; status = null; pool = null; this.rigidbody.velocity = Vector3.zero; }
protected override void OnDestroy() { Destroy(skill); skill = null; base.OnDestroy(); }
//Returns the path we want to travel to public List <Node> MakeDecision(AISkill skill) { ProcessInformation(); List <Node> path = null; int index = 0; float chance = Random.Range(0, 1); int pathsCount = sortedPaths.Count - 1; if (sortedPaths.Count > 0) { switch (skill) { case AISkill.low: if (chance <= .1f) { index = System.Math.Min(2, pathsCount); } else if (chance > .1f && chance < .4f) { index = System.Math.Min(1, pathsCount); } else { index = 0; } break; case AISkill.medium: if (chance < .3f) { index = System.Math.Min(1, pathsCount); } else { index = 0; } break; case AISkill.high: if (chance < .05f) { index = System.Math.Min(1, pathsCount); } else { index = 0; } break; } Debug.Log("Chose " + index + " best option."); path = sortedPaths[index].Key; } for (int i = 1; i < path.Count; i++) { map.tiles[path[i].pos.x, path[i].pos.y].DrawHighlight(true, .001f); } Debug.Log(Time.deltaTime); return(path); }
public void Initialize() { deckSingleton = GameObject.FindGameObjectWithTag("Deck").GetComponent <CharacterDeck>(); switch (type) { case unitType.EVOKER: hp = 5; maxhp = hp; InitialValue = 4; avatar = FindObjectOfType <TOManager>().avatars[0]; break; case unitType.BATTLEMAGE: hp = 10; maxhp = hp; InitialValue = 5; avatar = FindObjectOfType <TOManager>().avatars[1]; break; case unitType.WHITEMAGE: hp = 7; maxhp = hp; InitialValue = 6; avatar = FindObjectOfType <TOManager>().avatars[2]; break; case unitType.SLIME: hp = 7; maxhp = hp; InitialValue = Random.Range(2, 6); checkCustomInit(); avatar = FindObjectOfType <TOManager>().avatars[3]; enemyAI = new AISlime(gameObject, predictDisplay, skillTextObject); enemyAI.unit = GetComponent <Unit>(); enemySkill = new ASEmptySkill(); break; case unitType.SKELETON: hp = 6; maxhp = hp; InitialValue = Random.Range(5, 10); checkCustomInit(); avatar = FindObjectOfType <TOManager>().avatars[4]; enemyAI = new AISkeleton(gameObject, predictDisplay, Projectile, skillTextObject); enemyAI.unit = GetComponent <Unit>(); enemySkill = new ASEmptySkill(); break; case unitType.DARK_RIFT: hp = 20; maxhp = hp; InitialValue = 1; checkCustomInit(); avatar = FindObjectOfType <TOManager>().avatars[5]; enemyAI = new AIDarkRift(gameObject, predictDisplay, AbyssalEye, HandofChaos, skillTextObject); enemyAI.unit = GetComponent <Unit>(); enemySkill = new ASEmptySkill(); break; case unitType.ABYSSAL_EYE: hp = 3; maxhp = 10; InitialValue = Random.Range(9, 12); checkCustomInit(); avatar = FindObjectOfType <TOManager>().avatars[6]; if (DarkRift == null) { Unit[] allUnits = FindObjectsOfType <Unit>(); foreach (Unit unit in allUnits) { if (unit.type == unitType.DARK_RIFT) { hp = 10; maxhp = 10; DarkRift = unit.gameObject; } } } enemyAI = new AIAbyssalEye(gameObject, predictDisplay, DarkRift, Projectile, skillTextObject); enemyAI.unit = GetComponent <Unit>(); enemySkill = new ASEmptySkill(); break; case unitType.HAND_OF_CHAOS: hp = 5; maxhp = 12; InitialValue = Random.Range(5, 7); checkCustomInit(); avatar = FindObjectOfType <TOManager>().avatars[7]; if (DarkRift == null) { Unit[] allUnits = FindObjectsOfType <Unit>(); foreach (Unit unit in allUnits) { if (unit.type == unitType.DARK_RIFT) { hp = 12; maxhp = 12; DarkRift = unit.gameObject; } } } enemyAI = new AIHandofChaos(gameObject, predictDisplay, DarkRift, skillTextObject); enemyAI.unit = GetComponent <Unit>(); enemySkill = new ASEmptySkill(); break; } if (CompareTag("Player")) { hp += deckSingleton.bonusHPCharacter01; InitialValue += deckSingleton.bonusInitiativeCharacter01; StartInitValue = InitialValue; maxhp = hp; } GameObject tempObj = Instantiate(HealthBar, Vector3.zero, Quaternion.Euler(0, 0, 0)); tempObj.transform.GetChild(1).GetComponent <HealthBar>().Initialize(gameObject); }
public void NetworkSelectSkill(int id) { for (int i = 0; i < skills.Length; i++) { if(skills[i].skillID == id) { activeSkill = skills[i]; return; } } }
public void SelectSkill() { activeSkill = ChooseSkill(); if(activeSkill != null) { Debug.Log("we have found a skill to use!" + activeSkill.skillID); myPhotonView.RPC("NetworkSelectSkill", PhotonTargets.Others, activeSkill.skillID); if(activeSkill.targetLimit >0) { SelectTarget(activeSkill.skillRangeMin, activeSkill.skillRangeMax); } EnterAIState(AIState.executingSkill); } else EnterAIState(AIState.rest); }