Example #1
0
    public static bool CalcDamage(Character attacker, Character defender, ActSkill skill, EDamageType type, float percent, int fixValue, bool ignoreDefense)
    {
        XDamage dmg = new XDamage();

        dmg.AttackerName = attacker.Name;
        dmg.DefenderName = defender.Name;
        dmg.Skill        = skill == null ? string.Empty : skill.Name;
        dmg.Type         = (int)type;
        switch (type)
        {
        case EDamageType.TYPE_PHYSICS:
            dmg.Value = (int)(percent * attacker.CurrAttr.AP + fixValue);
            break;

        case EDamageType.TYPE_DARK:
            dmg.Value = (int)(percent * (attacker.CurrAttr.AP + attacker.CurrAttr.BAP) + fixValue);
            break;

        case EDamageType.TYPE_ICE:
            dmg.Value = (int)(percent * (attacker.CurrAttr.AP + attacker.CurrAttr.IAP) + fixValue);
            break;

        case EDamageType.TYPE_LIGHT:
            dmg.Value = (int)(percent * (attacker.CurrAttr.AP + attacker.CurrAttr.LAP) + fixValue);
            break;

        case EDamageType.TYPE_FIRE:
            dmg.Value = (int)(percent * (attacker.CurrAttr.AP + attacker.CurrAttr.FAP) + fixValue);
            break;
        }
        dmg.Value = (int)(UnityEngine.Random.Range(0.80f, 0.95f) * dmg.Value);
        CalcDamage(attacker, defender, dmg, ignoreDefense);
        return(true);
    }
Example #2
0
 private void OnRefreshSkillItems()
 {
     foreach (var current in mSkillBtns)
     {
         ESkillPos pos   = current.Key;
         ActSkill  skill = CharacterManager.Main.Skill.GetSkill(pos);
         ItemSkill tab   = current.Value;
         if (skill == null)
         {
             tab.maskSprite.gameObject.SetActive(true);
             tab.lockSprite.gameObject.SetActive(true);
         }
         else
         {
             tab.lockSprite.gameObject.SetActive(false);
             if (skill.IsCD())
             {
                 tab.maskSprite.gameObject.SetActive(true);
                 tab.maskSprite.fillAmount = skill.GetLeftTime() / skill.CD;
             }
             else
             {
                 tab.maskSprite.gameObject.SetActive(false);
             }
         }
     }
 }
Example #3
0
 public void     Execute()
 {
     if (mCurrentSkill != null)
     {
         mCurrentSkill.Loop();
     }
     if (mCurrentSkill != null && mCurrentSkill.Status == EActStatus.SUCCESS)
     {
         mCurrentSkill.Clear();
         mCurrentSkill = null;
     }
     Dictionary <int, ActBuff> .Enumerator em = mBuffs.GetEnumerator();
     while (em.MoveNext())
     {
         ActBuff buff = em.Current.Value;
         buff.Loop();
         if (buff.Status == EActStatus.SUCCESS)
         {
             mDeleteBuffs.Add(buff.ID);
         }
     }
     em.Dispose();
     for (int i = 0; i < mDeleteBuffs.Count; i++)
     {
         mBuffs.Remove(mDeleteBuffs[i]);
     }
     mDeleteBuffs.Clear();
 }
Example #4
0
    public void TryCastSkill(ESkillPos pos)
    {
        if (GTWorld.Main == null || GTWorld.Main.CacheTransform == null)
        {
            return;
        }
        ActSkill skill = GTWorld.Main.Skill.GetSkill(pos);

        if (skill == null)
        {
            return;
        }
        if (GTWorld.Main.Target != null && GTWorld.Main.Target.IsDead())
        {
            CharacterHelper.ClearTarget(GTWorld.Main);
        }
        if (GTWorld.Main.Target == null)
        {
            Character target = GTWorld.Main.FindEnemyNearest(GTWorld.Main.Skill.WarnerDist);
            CharacterHelper.SetTarget(GTWorld.Main, target);
        }
        GTWorld.Main.PausedAI(true);
        Resp resp = GTWorld.Main.Command.Get <CommandUseSkill>().Update(skill.ID).Do();

        CharacterHelper.CalcCharacterOperateError(resp);
        if (resp == Resp.TYPE_YES)
        {
            GTWorld.Main.UsePowerByCostType(skill.CostType, skill.CostNum);
            GTEventCenter.FireEvent(GTEventID.TYPE_UPDATE_AVATAR_HP);
            GTEventCenter.FireEvent(GTEventID.TYPE_UPDATE_AVATAR_MP);
        }
        GTWorld.Main.PausedAI(false);
    }
Example #5
0
    void LoadXml()
    {
        string    pPath = string.Format("Text/Skill/{0}", 1);
        TextAsset asset = ZTResource.Instance.Load <TextAsset>(pPath);

        if (asset == null)
        {
            return;
        }
        XmlDocument doc = new XmlDocument();

        doc.LoadXml(asset.text);
        if (doc.FirstChild == null)
        {
            return;
        }
        XmlNode child = doc.FirstChild.FirstChild;

        while (child != null)
        {
            if (child.Name.Equals("Skill"))
            {
                ActSkillData data = new ActSkillData();
                data.Read(child as XmlElement);
                ActSkill skill = new ActSkill(data.Id, data);
                Skills.Add(skill);
            }
            child = child.NextSibling;
        }
        for (int i = 0; i < Skills.Count; i++)
        {
            Debug.LogError(Skills[i].Id);
        }
    }
Example #6
0
 public void     StopCurrentSkill()
 {
     if (mCurrentSkill != null)
     {
         mCurrentSkill.Stop();
         mCurrentSkill = null;
     }
 }
Example #7
0
 public void     ExitCurrentSkill()
 {
     if (mCurrentSkill != null)
     {
         mCurrentSkill.Clear();
         mCurrentSkill = null;
     }
 }
Example #8
0
 public ActSkill GetSkill(ESkillPos pos)
 {
     if (pos == ESkillPos.Skill_0)
     {
         return(mNormalAttacks.Count > mComboIndex ? mNormalAttacks[mComboIndex] : null);
     }
     else
     {
         ActSkill skill = null;
         mSkillAttacks.TryGetValue(pos, out skill);
         return(skill);
     }
 }
Example #9
0
 private void OnRefreshSkillIcons()
 {
     foreach (var current in mSkillBtns)
     {
         ESkillPos pos   = current.Key;
         ActSkill  skill = CharacterManager.Main.Skill.GetSkill(pos);
         ItemSkill tab   = current.Value;
         if (skill != null)
         {
             DSkill db = ReadCfgSkill.GetDataById(skill.ID);
             if (db != null)
             {
                 GTItemHelper.ShowTexture(tab.icon, db.Icon);
             }
         }
     }
 }
Example #10
0
 public ActSkill SelectSkillByEnemy(Character enemy)
 {
     foreach (var current in mSkillAttacks)
     {
         ActSkill s = current.Value;
         if (s.CastDist > 0 && s.IsCD() == false)
         {
             if (enemy != null)
             {
                 if (GTTools.GetHorizontalDistance(mCharacter.Pos, enemy.Pos) < s.CastDist)
                 {
                     return(s);
                 }
             }
             else
             {
                 return(s);
             }
         }
     }
     return(GetSkill(ESkillPos.Skill_0));
 }
Example #11
0
    public void     UseSkillById(int id)
    {
        ActSkill skill = GetSkill(id);

        if (skill == null)
        {
            return;
        }
        if (skill.Pos == ESkillPos.Skill_0)
        {
            if (mComboIndex < mNormalAttacks.Count - 1)
            {
                mComboIndex++;
            }
            else
            {
                mComboIndex = 0;
            }
        }
        mCurrentSkill        = skill;
        mCurrentSkill.Caster = mCharacter;
    }
Example #12
0
        public override ENST OnExecute()
        {
            Character aiOwner = this.AIOwner;

            if (aiOwner == null)
            {
                return(ENST.FAILURE);
            }
            ActSkill skill = aiOwner.Skill.SelectSkillByEnemy(aiOwner.Target);

            if (skill == null)
            {
                return(ENST.FAILURE);
            }
            if (aiOwner.Command.Get <CommandUseSkill>().Update(skill.ID).Do() == Resp.TYPE_YES)
            {
                return(ENST.SUCCESS);
            }
            else
            {
                return(ENST.FAILURE);
            }
        }
Example #13
0
 public CharacterSkill(Character c)
 {
     this.mCharacter         = c;
     this.mContainer         = new ActSkillSystem();
     this.mContainer.ActorID = c.ID;
     this.mContainer.LoadDoc();
     for (int i = 0; i < mContainer.Skills.Count; i++)
     {
         ActSkill skill = mContainer.Skills[i];
         if (skill.Pos == ESkillPos.Skill_0)
         {
             mNormalAttacks.Add(skill);
             this.AttackDist = skill.CastDist;
         }
         else
         {
             mSkillAttacks[skill.Pos] = skill;
         }
     }
     if (c.IsMain)
     {
         WarnerDist = 100;
     }
 }
Example #14
0
 public void UseSkill(ESkillPos pos)
 {
     ActSkill skill = GetSkill(pos);
     //ActManager.Instance.Run(skill);
 }