Пример #1
0
 protected override void Awake()
 {
     base.Awake();
     aiCompoment = GetComponent <CAICompoment>();
     skill       = Instantiate(skill);
     skill.owner = this;
 }
Пример #2
0
	public void OnDespawned()
	{
		masterArmor = null;
		masterAISkill = null;
		status = null;
		pool = null;
		this.rigidbody.velocity = Vector3.zero;
	}
Пример #3
0
 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);
    }
Пример #5
0
    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);
    }
Пример #6
0
	public void NetworkSelectSkill(int id)
	{
		for (int i = 0; i < skills.Length; i++) {
			if(skills[i].skillID == id)
			{
				activeSkill = skills[i];
                return;
            }
        }
    }
Пример #7
0
	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);
    }