示例#1
0
 // Start is called before the first frame update
 void Start()
 {
     enemySkill      = this.GetComponent <EnemySkill>();
     agent           = this.GetComponent <NavMeshAgent>();
     agent.speed     = initialSpeed;
     agent.isStopped = false;
 }
示例#2
0
        /// <summary>
        /// 20180530 SangBin :
        /// </summary>
        private IEnumerator SkillCoolDown(EnemySkill ek)
        {
            float elapsedTime = 0.0f, coolTime = 0.0f;

            switch (ek)
            {
            case EnemySkill.skill_01:
                coolTime = 14.0f;
                break;

            case EnemySkill.skill_02:
                coolTime = 16.0f;
                break;

            case EnemySkill.skill_03:
                coolTime = 18.0f;
                break;

            case EnemySkill.skill_04:
                coolTime = 20.0f;
                break;
            }



            while (elapsedTime < coolTime)
            {
                elapsedTime += Time.deltaTime;
            }

            EnableSkill(ek);

            yield break;
        }
示例#3
0
    void Start()
    {
        mas = GetComponent <MovementAudioSource>();
        has = GetComponent <HitAudioSource>();
        sas = GetComponent <SwingAudioSource>();

        died = false;

        eh = this.GetComponent <BrigandHealth>();
        ea = this.GetComponent <BrigandArmour>();
        es = this.GetComponent <EnemySkill>();

        StartCoroutine(SetSpeedBoost());

        StartCoroutine(SetAttackDistance());

        StartCoroutine(SetPersonSize());

        defensed   = false;
        isAttacked = false;
        rb         = GetComponent <Rigidbody2D>();
        anim       = GetComponent <Animator>();

        // InvokeRepeating("FindPlayer", 0, 1);
    }
示例#4
0
    void GetNextSkill()
    {
        if (available_skills.Length == 0 || sum_of_weights == 0)
        {
            return;
        }

        int rng = Random.Range(0, sum_of_weights);

        for (int i = 0; i < available_skills.Length; i++)
        {
            rng -= available_skills[i].weight;
            if (rng < 0)
            {
                next_skill = EnemySkill.GetSkill(available_skills[i].skill);
                break;
            }
        }
        if (next_skill == null)
        {
            next_skill = EnemySkill.GetSkill(available_skills[available_skills.Length - 1].skill);
        }

        if (!next_skill.CanUse(this))
        {
            next_skill = new Tantrum();
        }

        skill_image.sprite = _skill_img.Get(next_skill.type);
        _m.SetHelpText(placement, _skill_img.Desc(next_skill.type));
    }
示例#5
0
    void Start()
    {
        _mainView = GameObject.Find("UIPanel").GetComponent <UIPanel>().ui;

        _list = _mainView.GetChild("mailList").asList;

        playerSkill = GameObject.Find("enemy(Clone)").GetComponent <EnemySkill>();
        //questData = GameObject.Find("QuestData").GetComponent<Quest_Data>();

        //攻击间隔 = 基础攻击间隔 + 最大攻击间隔 * (1 - (敏捷)/(敏捷+加成系数))
        calAttackSpeed();//Declare delay 100 sec
        for (int i = 0; i < 7; i++)
        {
            CountDownTimer cdTimer_enemy = new CountDownTimer(EnemyStatus.instance.used_activeskill[i].cd);

            if (cdTimers_enemy.ContainsKey(EnemyStatus.instance.used_activeskill[i].skillID))
            {
            }
            else
            {
                cdTimers_enemy.Add(key: EnemyStatus.instance.used_activeskill[i].skillID, value: cdTimer_enemy);
                EnemyStatus.instance.used_activeskill[i].cdCount = cdTimer_enemy;
            }
        }
    }
 public int compareSliders(EnemySkill other)
 {
     if (getNumTurnsLeft() == other.getNumTurnsLeft())
     {
         int compareEndAnims = (hasEndAnim() ? -1 : 0) - (other.hasEndAnim() ? -1 : 0);
         return(compareEndAnims == 0 ? other.getTurnProgress().CompareTo(getTurnProgress()) : compareEndAnims);
     }
     return(getNumTurnsLeft().CompareTo(other.getNumTurnsLeft()));
 }
示例#7
0
 void Start()
 {
     has            = enemy.GetComponent <HitAudioSource>();
     es             = enemy.GetComponent <EnemySkill>();
     aa             = enemy.GetComponent <ArcherArmour>();
     damaged_shield = false;
     damaged        = false;
     arCtrl         = enemy.GetComponent <ArcherController>();
 }
示例#8
0
 // Start is called before the first frame update
 void Start()
 {
     hp            = baseHP;
     players       = new GameObject[] { GameManager.gameManager.player1, GameManager.gameManager.player2 };
     enemyMovement = GetComponent <EnemyMovement>();
     enemySkill    = GetComponent <EnemySkill>();
     sdrawPath     = drawPath;
     animator      = GetComponent <Animator>();
 }
示例#9
0
 void Start()
 {
     has            = enemy.GetComponent <HitAudioSource>();
     damaged_shield = false;
     damaged        = false;
     es             = enemy.GetComponent <EnemySkill>();
     ea             = enemy.GetComponent <EnemyArmour>();
     infCtrl        = enemy.GetComponent <InfantryController>();
 }
示例#10
0
 public void Awake()
 {
     target      = GameObject.FindGameObjectWithTag("Player").transform;
     enemySkill  = GetComponent <EnemySkill>();
     audioSource = GetComponent <AudioSource>();
     isBeAttack  = false;
     InitReference();
     Init();
 }
示例#11
0
    private IEnumerator useEndSkill(EnemySkill es)
    {
        yield return(StartCoroutine(activateSkill(es, false)));

        yield return(StartCoroutine(es.fadeInAnim(false)));

        yield return(StartCoroutine(es.onEnd(this)));

        yield return(es.getAnimIsOver());
    }
示例#12
0
    protected override bool isPassiveSkill(string skillId)
    {
        EnemySkill ts = staticSkillInfo[skillId];

        if (ts.isPassive)
        {
            return(true);
        }
        return(false);
    }
示例#13
0
 public bool CanUseSkill(EnemySkill skill)
 {
     if (spellPointsCurrent >= skill.GetCost())
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#14
0
        /// <summary>
        /// 20180530 SangBin :
        /// </summary>
        private IEnumerator UseSkill_04(EnemySkill ek)
        {
            StopCoroutine(base.EnemyAction());
            animator.SetTrigger("IsSkill04");

            yield return(new WaitForSeconds(1.1f));

            isWitchSkillUsed = false;

            StartCoroutine(base.EnemyAction());

            yield break;
        }
示例#15
0
    public void Act()
    {
        if (entranced > 0 || stunned > 0 || next_skill == null || _am.CurrentType() == type)
        {
            EndTurn();
            return;
        }

        _anim.SetTrigger("Act");
        _as.Play();
        next_skill.Use(_m, this);
        next_skill = null;
        acting     = true;
    }
示例#16
0
    void Start()
    {
        ic = this.GetComponent <BrigandController>();
        es = this.GetComponent <EnemySkill>();
        ea = this.GetComponent <BrigandArmour>();


        total_health = totalStartHealth = startHealth + ea.GetBreastPlate() * breastPlatePower +
                                          ea.GetTozluk() * tozlukPower +
                                          ea.GetHelmet() * helmetPower +
                                          es.GetEnemyVigor() * healthAmountPerSkill;

        startScaleX = healthLoad.transform.localScale.x;
    }
示例#17
0
        /// <summary>s
        /// 20180530 SangBin :
        /// </summary>
        private void UseSkill(EnemySkill ek)
        {
            switch (ek)
            {
            case EnemySkill.skill_01:
                //skill_01_State = EnemySkillState.cooling;
                skill_01_State = EnemySkillState.disavailable;
                //Thread thr1 = new Thread(new ThreadStart(ThreadBody01));
                // thr1.Start();
                StartCoroutine(UseSkill_01());
                break;
            }

            //StartCoroutine(SkillCoolDown(ek));
        }
示例#18
0
    void Start()
    {
        ic = this.GetComponent <SpearmanController>();
        es = this.GetComponent <EnemySkill>();
        ea = this.GetComponent <SpearmanArmour>();



        total_health = totalStartHealth = startHealth + ea.BreastPlate * breastPlatePower +
                                          ea.Tozluk * tozlukPower +
                                          ea.Helmet * helmetPower +
                                          es.GetEnemyVigor() * healthAmountPerSkill;

        startScaleX = healthLoad.transform.localScale.x;
    }
示例#19
0
 // Use this for initialization
 void Start()
 {
     UICanvas = GameObject.Find("Canvas").transform;
     s1       = new List <string> {
         "DEF", "ULTI", "-CD", "AUTO", "CTR"
     };
     s2 = new List <string> {
         "ATK", "HEL", "DMP", "ATKmini", "ALLMPATK", "HL", "ATKPRO", "AMWK", "STAB"
     };
     s3 = new List <string> {
         "DHEL", "TBD", "ANI", "ANIT", "SFX", "VFX", "LVFX", "DATK", "CBB", "DATKPRO", "STUN"
     };
     enemySkill  = new EnemySkill();
     playerSkill = new Skill();
 }
示例#20
0
    public int SkillDamage(EnemySkill skill)
    {
        int damage = 0;

        if (CanUseSkill(skill))
        {
            damage = skill.stats.fixedDamageStats[skill.GetElement()] + statsCurrent.fixedDamageStats[skill.GetElement()];
            TakeSP(skill.GetCost());
        }
        else
        {
            //returns basic if cant use skill
            return(BasicAttack());
        }

        return(damage);
    }
示例#21
0
    void Start()
    {
        ic = this.GetComponent <InfantryController>();
        es = this.GetComponent <EnemySkill>();
        ea = this.GetComponent <EnemyArmour>();

        shieldBusted = false;

        total_health = totalStartHealth = startHealth + ea.GetBreastPlate() * breastPlatePower +
                                          ea.GetTozluk() * tozlukPower +
                                          ea.GetHelmet() * helmetPower +
                                          es.GetEnemyVigor() * healthAmountPerSkill;

        shield_health = totalStartShieldHealth = Utility.GetShieldHealth(ea.GetShield(), es.GetEnemyDefence(), startShield) / 2;

        startScaleX       = healthLoad.transform.localScale.x;
        startScaleShieldX = shieldLoad.transform.localScale.x;
    }
示例#22
0
        /// <summary>s
        /// 20180530 SangBin :
        /// </summary>
        private void UseSkill(EnemySkill ek)
        //private void UseSkill(ref EnemySkillState skill_State, EnemySkill ek)
        {
            isWitchSkillUsed = true;
            //skill_State = EnemySkillState.cooling;

            switch (ek)
            {
            case EnemySkill.skill_01:
                //skill_01_State = EnemySkillState.cooling;
                skill_01_State = EnemySkillState.disavailable;
                //Thread thr1 = new Thread(new ThreadStart(ThreadBody01));
                // thr1.Start();
                StartCoroutine(UseSkill_01(ek));
                break;

            case EnemySkill.skill_02:
                //skill_02_State = EnemySkillState.cooling;
                skill_02_State = EnemySkillState.disavailable;
                //Thread thr2 = new Thread(new ThreadStart(ThreadBody02));
                //thr2.Start();
                StartCoroutine(UseSkill_02(ek));
                break;

            case EnemySkill.skill_03:
                //skill_03_State = EnemySkillState.cooling;
                skill_03_State = EnemySkillState.disavailable;
                //Thread thr3 = new Thread(new ThreadStart(ThreadBody03));
                //thr3.Start();
                StartCoroutine(UseSkill_03(ek));
                break;

            case EnemySkill.skill_04:
                //skill_04_State = EnemySkillState.cooling;
                skill_04_State = EnemySkillState.disavailable;
                //Thread thr4 = new Thread(new ThreadStart(ThreadBody04));
                //thr4.Start();
                StartCoroutine(UseSkill_04(ek));
                break;
            }

            //skill_State = EnemySkillState.cooling;
            //StartCoroutine(SkillCoolDown(ek));
        }
示例#23
0
 public IEnumerator activateSkill(EnemySkill es, bool firstSkill)
 {
     es.gameObject.SetActive(true);
     activeSkills.Sort((es1, es2) => es1.compareSliders(es2));
     if (!firstSkill)
     {
         activeSkills.Remove(es);
     }
     activeSkills.Insert(0, es);
     for (int i = 0; i < activeSkills.Count; i++)
     {
         StartCoroutine(activeSkills[i].movePosTo(i));
         //yield return SKILL_WAIT;
     }
     foreach (EnemySkill aes in activeSkills)
     {
         yield return(aes.getAnimIsOver());
     }
 }
    /*
     * public void StartRoot(EnemyMovement eM, float castingTime, GameObject targetPlayer, int damage, Vector3 pos, float rootTime, GameObject rootBranchPrefab)
     * {
     *  StartCoroutine(RootCoroutine(eM, castingTime, targetPlayer, damage, pos, rootTime, rootBranchPrefab));
     * }
     */

    public IEnumerator RootCoroutine(EnemySkill eK, EnemyMovement eM, float castingTime, GameObject targetPlayer, int damage, Vector3 pos, float rootTime, GameObject rootBranchPrefab)
    {
        eM.agent.isStopped = true;
        eK.isCasting       = true;
        yield return(new WaitForSecondsRealtime(castingTime));

        eM.agent.isStopped = false;
        eK.isCasting       = false;

        GameManager.gameManager.TakeDamage(targetPlayer, damage, pos, false);
        GameManager.gameManager.UIManager.QuoteOnDamage("enemy", targetPlayer);
        isRoot = true;
        RootBranch branch = Instantiate(rootBranchPrefab).GetComponent <RootBranch>();

        branch.targetPlayer = targetPlayer;
        branch.rootTime     = rootTime;
        yield return(new WaitForSecondsRealtime(rootTime));

        isRoot = false;
    }
示例#25
0
    void Start()
    {
        sas  = GetComponent <SwingAudioSource>();
        has  = GetComponent <HitAudioSource>();
        died = false;

        eh = this.GetComponent <EnemyHealth>();
        ea = this.GetComponent <EnemyArmour>();
        es = this.GetComponent <EnemySkill>();

        StartCoroutine(SetSpeedBoost());
        StartCoroutine(SetAttackDistance());

        StartCoroutine(SetPersonSize());

        defensed   = false;
        isAttacked = false;
        rb         = GetComponent <Rigidbody2D>();
        anim       = GetComponent <Animator>();
    }
示例#26
0
        /// <summary>
        /// 20180530 SangBin :
        /// </summary>
        private IEnumerator UseSkill_02(EnemySkill ek)
        {
            StopCoroutine(base.EnemyAction());
            animator.SetTrigger("IsSkill02");

            yield return(new WaitForSeconds(0.5f));

            GameObject teleportEff = Instantiate(teleportEffect, transform.position, Quaternion.identity);

            Destroy(teleportEff, 2.3f);
            yield return(new WaitForSeconds(0.6f));

            WitchSkill02();
            isWitchSkillUsed = false;

            StartCoroutine(base.EnemyAction());


            yield break;
        }
示例#27
0
        /// <summary>
        /// 20180530 SangBin :
        /// </summary>
        private void EnableSkill(EnemySkill ek)
        {
            switch (ek)
            {
            case EnemySkill.skill_01:
                skill_01_State = EnemySkillState.available;
                break;

            case EnemySkill.skill_02:
                skill_02_State = EnemySkillState.available;
                break;

            case EnemySkill.skill_03:
                skill_03_State = EnemySkillState.available;
                break;

            case EnemySkill.skill_04:
                skill_04_State = EnemySkillState.available;
                break;
            }
        }
示例#28
0
    void Start()
    {
        sas = GetComponent <SwingAudioSource>();
        has = GetComponent <HitAudioSource>();

        aa = GetComponent <ArcherArmour>();
        es = GetComponent <EnemySkill>();

        SetEmberLogic();

        StartCoroutine(SetSpeedBoost());

        rb   = GetComponent <Rigidbody2D>();
        anim = GetComponent <Animator>();

        StartCoroutine(SetAttackDistance());
        StartCoroutine(SetPersonSize());

        speedX = speed;
        speedY = 0.57f * speed;
    }
示例#29
0
 public void loadAllSkills()
 {
     for (int i = 0; i < skillList.Count; i++)
     {
         EnemySkill es = skillList[i];
         es.setLastStartTurn(currState.lastActivatedTurn[i]);
         int startTurn = currState.activatedTurn[i];
         if (startTurn != -1)
         {
             es.gameObject.SetActive(true);
             es.setStartTurn(startTurn);
             activeSkills.Add(es);
         }
     }
     activeSkills.Sort((es1, es2) => es1.compareSliders(es2));
     for (int i = 0; i < activeSkills.Count; i++)
     {
         activeSkills[i].setPos(i);
     }
     skillToggle.isOn = currState.alwaysShowSkills;
     toggleSkillDisplay(currState.alwaysShowSkills);
 }
示例#30
0
    public virtual void Init()
    {
        isPlayer        = false;
        _skillGroupDict = new Dictionary <string, EnemySkillGroup>();
        //读取技能组表,并存入字典
        //skillGroups = data.enemySkillGroups;
        foreach (EnemySkillGroup item in data.enemySkillGroups)
        {
            _skillGroupDict.Add(item.name, item);
        }

        //初始化动作序号,下一拍到0
        actionID = 0;
        //初始化敌人目标,默认是玩家
        mTarget    = GameObject.Find("Player");
        enemySkill = new EnemySkill();

        animator = GetComponent <Animator>();

        skillGroupSeq = new List <EnemySkillGroup>();
        //初始化敌人模型位置
        originPosition = transform.position;
    }