Esempio n. 1
0
    public BulletImpactData GetBulletImpactData(int skillId, BulletData bData)
    {
        SkillConfigData skillData = SkillDataManager.Instance.GetSkillConfigData(skillId);

        if (skillData == null)
        {
            skillData = new SkillConfigData();            //如果没有技能数据,填充默认值,例如死亡子弹
        }
        int        calID            = bData.m_calculateId;
        int        strenthenSkillId = skillData.FatherSkill == 0? skillId : skillData.FatherSkill;
        SSkillInfo?skillInfo        = SkillModel.Instance.GetCurSkill(strenthenSkillId);

        if (bData.m_bulletStrengthen == 1 && skillInfo != null && skillInfo.Value.byStrengthenLv > 1)
        {
            calID = bData.m_calculateId + skillInfo.Value.byStrengthenLv;
        }
        if (bData.m_calculateId == 0)
        {
            calID = 0;
        }

        BulletImpactData bulletImpactData = SkillDataManager.Instance.GetBulletImpactData(calID);

        if (null == bulletImpactData)
        {
            TraceUtil.Log("No impact Data");
        }
        return(bulletImpactData);
    }
Esempio n. 2
0
    public SkillConfigData GetSkillConfigData(int skillId)
    {
        SkillConfigData data = null;

        m_skillConfigDataDictionary.TryGetValue(skillId, out data);
        return(data);
    }
Esempio n. 3
0
    private void AddEffect(SkillConfigData frameData)
    {
        var EffectNameAndParams = frameData.Effectname.Split('|');
        var effectName          = EffectNameAndParams[0];

        Vector2 pos = new Vector2(float.Parse(frameData.Others[0]), float.Parse(frameData.Others[1]));

        if (frameData.Effecttarget == EFFECT_TARGET_ROLE_TOP || frameData.Effecttarget == EFFECT_TARGET_ROLE_BOTTOM)
        {
            _role.AddEffect(SystemConsts.SKILL_EFF_PREFIX + effectName, pos, true, true, true);
        }
        else if (frameData.Effecttarget == EFFECT_TARGET_MAP_Z)
        {
            Vector3 dest = _role.transform.position;
            //dest.x += pos.x;
            dest.y += pos.y;
            dest.z  = dest.y;
            if (frameData.Others.Length > 2)
            {
                dest.z += float.Parse(frameData.Others[2]);
            }
            var efGo = _role.Map.addEffect(SystemConsts.SKILL_EFF_PREFIX + effectName, dest, _role, true, pos.x, true);
            if (EffectNameAndParams.Length > 1)
            {
                if (int.Parse(EffectNameAndParams[1]) == 1)
                {
                    _canCancelEffect = efGo;
                }
            }
        }
    }
Esempio n. 4
0
    private bool BreakSkillCheck(SkillConfigData skillConfigData)
    {
        //bool invokeNextSkill = true;
        if (SelectedSkillBase != null)
        {
            if (SelectedSkillBase.SkillId != skillConfigData.m_skillId)
            {
                if (SelectedSkillBase.OnFire) //µ±Ç°ŒŒÄÜÊ©·ÅÖÐ
                {
                    if (IsExplodeState)
                    {
                        if (skillConfigData.m_breakLevel < SelectedSkillBase.CurrentActionThresHold)//SelectedSkillBase.SkillData.m_breakLevel)
                        {
                            //NetServiceManager.Instance.BattleService.SendBreakSkillCommand(new SMsgFightBreakSkill_CS() { SkillID = this.SelectedSkillBase.SkillId });
                            return(false);
                        }
                    }
                    else
                    {
                        if (skillConfigData.m_breakLevel <= SelectedSkillBase.CurrentActionThresHold)   //Á¬ÕÐÐޞķœ°žÒªÇóµÈŒ¶ÏàͬµÄŒŒÄÜÒ²¿ÉŽò¶Ï,¡Ÿ2013-11-22 Ó֞ijÉÏàͬµÈŒ¶²»¿ÉŽò¶Ï¡¿
                        {
                            //NetServiceManager.Instance.BattleService.SendBreakSkillCommand(new SMsgFightBreakSkill_CS() { SkillID = this.SelectedSkillBase.SkillId });
                            return(false);
                        }
                    }
                }
            }
        }

        return(true);
    }
Esempio n. 5
0
        /// <summary>
        /// 获取特定的Effect实例
        /// </summary>
        /// <returns>The implement.</returns>
        /// <param name="op">Op.</param>
        public ICastEffect getImplement(EffectConfigData cfg, SkillConfigData sk)
        {
            Queue <ICastEffect> impQueue = null;
            ICastEffect         imp      = null;
            EffectOp            op       = cfg.EffectType;

            Type type = null;

            if (ISkEff.TryGetValue(op, out type))
            {
                if (ImpleEff.TryGetValue(op, out impQueue))
                {
                    if (impQueue.Count == 0)
                    {
                        imp = (ICastEffect)Activator.CreateInstance(type);
                    }
                    else
                    {
                        imp = impQueue.Dequeue();
                    }
                }
                else
                {
                    imp = (ICastEffect)Activator.CreateInstance(type);
                }

                if (imp != null)
                {
                    imp.Init(cfg, sk);
                }
            }

            return(imp);
        }
Esempio n. 6
0
    public ShootToPoint(Role from, Vector2 pt, SkillConfigData frameData, Skill skill)
    {
        _shooter   = from;
        _toPt      = pt;
        _frameData = frameData;
        _skill     = skill;

        float offsetX = float.Parse(_frameData.Others[0]);
        float offsetY = float.Parse(_frameData.Others[1]);

        _arrow = (GameObject)UnityEngine.Object.Instantiate(Resources.Load(SystemConsts.SKILL_EFF_PREFIX + _frameData.Effectname));
        _arrow.GetComponent <SpriteRenderer>().sortingLayerName = SystemConsts.ActiveLayer;
        _arrow.GetComponent <SpriteRenderer>().sortingOrder     = 100;

        var face = _shooter.getOrientation() == Role.Orientation.RIGHT ? 1 : -1;

        _fromPt    = _shooter.transform.position;
        _fromPt.x += offsetX * face;
        _fromPt.y += offsetY;

        _speed         = 24.0f;
        _speedPerFrame = _speed / 60f; //(float)Application.targetFrameRate;

        _arrow.transform.position = _fromPt;

        Vector2 direction = _toPt - _fromPt;
        float   angle     = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;

        _arrow.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
    }
Esempio n. 7
0
    void RankSkillData()
    {
        Dictionary <int, List <int> > skillMapTemp = new Dictionary <int, List <int> > ();

        foreach (var map in skillMap)
        {
            //排序
            List <int> temp = new List <int>();
            int        i    = 0;
            for (i = 0; i < map.Value.Count; i++)
            {
                SkillConfigData configData0 = SkillDataManager.Instance.GetSkillConfigData(map.Value[i]);
                if (configData0.PreSkill == 0)
                {
                    temp.Add(configData0.m_skillId);
                }
            }
            for (int j = 0; j < map.Value.Count; j++)
            {
                for (i = 0; i < map.Value.Count; i++)
                {
                    SkillConfigData configData1 = SkillDataManager.Instance.GetSkillConfigData(map.Value[i]);
                    if (configData1.PreSkill == temp[j])
                    {
                        temp.Add(configData1.m_skillId);
                        break;
                    }
                }
            }
            skillMapTemp.Add(map.Key, temp);
        }
        skillMap.Clear();
        skillMap = skillMapTemp;
//		Debug.Log ("skillMap=="+skillMap.Count);
    }
Esempio n. 8
0
    /// <summary>
    /// 判断是否播放技能摄像机
    /// </summary>
    /// <param name="cameraData"></param>
    private void IsPlaySkillCamera(SkillConfigData skillData)
    {
        if (!m_PlayerBehaviour.IsHero)
        {
            return;
        }

        Vector3 cameraPos   = this.m_roleBehaviour.transform.position + skillData.cameraRangeOffset;
        var     monsterList = MonsterManager.Instance.GetMonstersList();

        foreach (var item in monsterList)
        {
            var distance = Vector3.Distance(item.GO.transform.position, cameraPos);
            if (skillData.skillCameraRange >= distance)
            {
                if (m_skillCamera == null)
                {
                    m_skillCamera = CreateSkillCamera();
                    m_skillCamera.gameObject.AddComponent <SkillCamera>();
                }

                m_skillCamera.GetComponent <SkillCamera>().InitCameraData(skillData.cameraIdList);;
            }
        }
    }
Esempio n. 9
0
        public SkillData(int skillId, int level)
        {
            skillConfig = GMDataBaseSystem.SearchIdStatic <SkillConfigData>(GameData.SkillConfig, skillId);

            foreach (SkillEffectConfigData sd in GameData.SkillEffectConfig)
            {
                if (sd.skillId == skillId && sd.skillLevel == level)
                {
                    effectConfig = sd;
                    break;
                }
            }
            foreach (SkillLearnConfigData sd in GameData.SkillLearnConfig)
            {
                if (sd.skillId == skillId)
                {
                    learnConfig = sd;
                    break;
                }
            }
            if (learnConfig == null)
            {
                Log.Sys("Skill Learn Config Not exist " + skillId + " " + level);
            }
            if (effectConfig == null)
            {
                Log.Sys("SkillData Init Error " + skillId + " " + level);
            }

            Log.Important("skill Id and skill Effect " + skillConfig + " " + effectConfig);
        }
Esempio n. 10
0
 void Init()
 {
     if (isRead)
     {
         return;
     }
     isRead = true;
     if ((skillPosIndex == 2 && skillCount == 2) || (skillPosIndex == 3 && skillCount == 3))
     {
         line.SetActive(false);
     }
     else if (skillPosIndex == 2 && skillCount == 3)
     {
         line.transform.localScale = new Vector3(width, line.transform.localScale.y, 1);
     }
     else if (skillPosIndex == 1 && skillCount == 2)
     {
         line.transform.localScale = new Vector3(240, line.transform.localScale.y, 1);
     }
     configData = SkillDataManager.Instance.GetSkillConfigData(skillID);
     if (iconObj == null)
     {
         iconObj = CreatObjectToNGUI.InstantiateObj(configData.Icon_CirclePrefab, parentIconPoint.transform);
     }
 }
Esempio n. 11
0
    //技能解锁
    public void UnlockSkill(SMsgSkillUnLock_SC sSkillInfo)
    {
        //一般不可能存在
        if (sInfos.Exists(P => P.wSkillID == sSkillInfo.wSkillId))
        {
            var targetskill = sInfos.SingleOrDefault(P => P.wSkillID == sSkillInfo.wSkillId);
            sInfos.Remove(targetskill);
            SSkillInfo newInfo = new SSkillInfo()
            {
                wSkillID = (ushort)sSkillInfo.wSkillId, wSkillLV = sSkillInfo.byUpgradeLv, byStrengthenLv = sSkillInfo.byStrengthenLv
            };
            sInfos.Add(newInfo);
        }
        else
        {
            SSkillInfo newInfo = new SSkillInfo()
            {
                wSkillID = (ushort)sSkillInfo.wSkillId, wSkillLV = sSkillInfo.byUpgradeLv, byStrengthenLv = sSkillInfo.byStrengthenLv
            };
            sInfos.Add(newInfo);
        }
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData((int)(sSkillInfo.wSkillId));

        if (configData.PreSkill != 0)
        {
            UIEventManager.Instance.TriggerUIEvent(UIEventType.SkillAdvanceEvent, sSkillInfo);
        }
        SkillModel.Instance.DealSkillAdUpStrengthen();
    }
Esempio n. 12
0
    public void RunFrame(SkillConfigData frameData)
    {
        if (frameData.Type == FRAME_TYPE_PLAY_MOTION)
        {
            PlayMotion(frameData);
        }
        else if (frameData.Type == FRAME_TYPE_ADD_EFFECT)
        {
            AddEffect(frameData);
        }
        else if (frameData.Type == FRAME_TYPE_EFFECTIVE)
        {
            ProcessEffective(frameData);
        }
        else if (frameData.Type == FRAME_TYPE_MOVE)
        {
        }
        else if (frameData.Type == FRAME_TYPE_COMPLETE)
        {
            if (_skillTpl.Hidebuffeff == 1)
            {
                _role.SetBuffVisible(true);
            }
        }
        else if (frameData.Type == FRAME_TYPE_LOCK_POSITON)
        {
            _lockPosition = _targetRole.GetAttackablePosition(_role);
        }
        else if (frameData.Type == FRAME_TYPE_CANNOT_CANCEL)
        {
            _canCancelPhase = false;
        }
        else if (frameData.Type == FRAME_TYPE_ADD_BUFFS_TO_SELF)
        {
            for (int i = 0; i < frameData.Others.Length; i++)
            {
                _role.AddBuff(int.Parse(frameData.Others[i]), _role);
            }
        }
        else if (frameData.Type == FRAME_TYPE_REMOVE_SELF_BUFFS)
        {
            for (int i = 0; i < frameData.Others.Length; i++)
            {
                _role.RemoveBuff(int.Parse(frameData.Others[i]));
            }
        }

        //else if (frameData.Type == FRMAE_TYPE_HIDE_BUFF)
        //{
        //    _role.SetBuffVisible(false);
        //}
        //else if (frameData.Type == FRAME_TYPE_SHOW_BUFF)
        //{
        //    _role.SetBuffVisible(true);
        //}
    }
Esempio n. 13
0
        void SkillFight(int skillID)
        {
            SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);

            if (configData.skillText.Equals("0"))
            {
                return;
            }
            StartCoroutine(SkillTipFun(configData));
        }
Esempio n. 14
0
        /// <summary>
        /// 检测回复技能
        ///
        /// 检测逻辑和上面的并不太一致
        /// 判定顺序是:
        /// 0. 判定技能的类型
        /// 1. 判定施法者的状态
        /// 2. 选在施法的距离(特定范围)内血最少的 英雄 NPC
        /// </summary>
        /// <returns><c>true</c>, if cast was caned, <c>false</c> otherwise.</returns>
        /// <param name="caster">Caster.</param>
        public bool canCast(ServerNPC caster, RtSkData rtOne)
        {
            bool can = true;

                        #if DEBUG
            Utils.Assert(caster == null, "Can't know whether can cast skill unless caster isn't null.");
            Utils.Assert(rtOne == null, "Can't know whether can cast skill unless runtime skill isn't null");
                        #endif

            SkillConfigData skillCfg = rtOne.skillCfg;
            /// 0. 判定技能的类型
            can = skillCfg.DamageType == 1;
            if (can == false)
            {
                return(can);
            }

            /// 1.判定施法者的状态

            //只有LifeNPC才检查施法者的状态
            ServerLifeNpc castlife = caster as ServerLifeNpc;
            if (castlife != null)
            {
                if (skillCfg.CasterStatusReject.AnySame(castlife.curStatus))
                {
                    //不可施法
                    can = false;
                }
            }
            if (can == false)
            {
                return(can);
            }

            /// 2. 选在施法的距离(特定范围)内血最少的 英雄 NPC
            List <ServerNPC> friendlyArmy = SelectorTools.GetNpcWithInRange(caster, skillCfg.Distance, NpcMgr, caster.Camp, KindOfNPC.Life, LifeNPCType.Hero);
            if (friendlyArmy != null && friendlyArmy.Count > 0)
            {
                //选择血最少的
                ServerNPC friend = friendlyArmy.OrderBy(npc => (npc.data.rtData.curHp * 1.0f / npc.data.rtData.totalHp)).FirstOrDefault();
                if (friend != null)
                {
                    NPCRuntimeData npcRtdt = friend.data.rtData;
                    float          factor  = npcRtdt.curHp * 1.0f / npcRtdt.totalHp;
                    //低于20%的
                    if (factor > 0.2f)
                    {
                        can = false;
                    }
                }
            }

            return(can);
        }
Esempio n. 15
0
 public void Show(int ID, int treeId, int posIndex, SkillUpgradePanel myparent)
 {
     skillID       = ID;
     treeID        = treeId;
     skillPosIndex = posIndex;
     myParent      = myparent;
     configData    = SkillDataManager.Instance.GetSkillConfigData(skillID);
     curSkill      = SkillModel.Instance.GetCurSkill(skillID);
     Init();
     ShowInfo();
 }
Esempio n. 16
0
 public UpgradeSkillInfo(SSkillInfo sSkill)
 {
     this.localSkillConfigData = SkillDataManager.Instance.GetSkillConfigData(sSkill.wSkillID);
     this.SkillLevel           = sSkill.wSkillLV;
     if (SkillLevel < 10)
     {
         this.CanUpgrade = true;
     }
     else
     {
         this.CanUpgrade = false;
     }
 }
Esempio n. 17
0
    public int GetSkillPosIndex(int skillID)
    {
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);

        for (int i = 0; i < skillMap[configData.SkillTreeID].Count; i++)
        {
            if (skillMap[configData.SkillTreeID][i] == skillID)
            {
                return(i + 1);
            }
        }
        return(0);
    }
Esempio n. 18
0
        bool SkillMiddle(bool isUpgrade, UILabel lvLabel, UILabel monLabel)
        {
            bool   isCanClick = false;
            string monStr     = "";
            //升级
            string upgradeStr = "[FF0000]{0}/{1}[-]";

            if (isUpgrade)
            {
                if (PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL >=
                    configData.m_unlockLevel + curSkill.Value.wSkillLV * configData.m_UpdateInterval)
                {
                    upgradeStr = "[54E44F]{0}/{1}[-]";
                    isCanClick = true;
                }
                lvLabel.text = string.Format(upgradeStr, PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL,
                                             configData.m_unlockLevel + curSkill.Value.wSkillLV * configData.m_UpdateInterval);
                if (PlayerManager.Instance.IsMoneyEnough(configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1]))
                {
                    monStr = "[54E44F]" + configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1];
                    if (!isCanClick)
                    {
                        isCanClick = false;
                    }
                }
                else
                {
                    monStr = "[FF0000]" + configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1];
                    if (isCanClick)
                    {
                        isCanClick = false;
                    }
                }
                monLabel.text = "[FFFFFF]" + string.Format(LanguageTextManager.GetString("IDS_I7_121"), monStr);             // ;
            }
            else
            {
                SkillConfigData configPre = SkillDataManager.Instance.GetSkillConfigData(configData.PreSkill);
                SSkillInfo?     preSkill  = SkillModel.Instance.GetCurSkill(configData.PreSkill);
                lvLabel.text = LanguageTextManager.GetString(configPre.m_name);
                int preLv = preSkill == null?0:(int)preSkill.Value.wSkillLV;
                if (preSkill != null && preSkill.Value.wSkillLV >= configPre.m_maxLv)
                {
                    upgradeStr = "[54E44F]{0}/{1}[-]";
                    isCanClick = true;
                }
                monLabel.text = string.Format(upgradeStr, preLv, configPre.m_maxLv);
            }

            return(isCanClick);
        }
Esempio n. 19
0
    //总技能伤害
    //技能总伤害=向下取整((向下取整((参数1+参数2+参数3)/参数4)×参数4) /10)
    public float SkillHurt(int skillID)
    {
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);
        SSkillInfo?     curSkill   = GetCurSkill(skillID);
        int             skillLv    = curSkill == null ? 1 : (int)(curSkill.Value.wSkillLV);

        if (skillLv >= configData.m_skillDamageList.Count)
        {
            TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "找不到该等级配置信息");
        }
        return(configData.m_skillDamageList[skillLv - 1] * 0.1f);
//		return Mathf.FloorToInt ((Mathf.FloorToInt((configData.m_skillDamage[0]*skillLv*skillLv+
//		                                            configData.m_skillDamage[1]*skillLv+configData.m_skillDamage[2])/configData.m_skillDamage[3])*configData.m_skillDamage[3])/100)*10;
    }
Esempio n. 20
0
        /// <summary>
        /// 返回一个技能所有的Effect实例
        /// </summary>
        /// <returns>The effect list.</returns>
        /// <param name="efCfgList">Ef cfg list.</param>
        public ICastEffect[] getImplements(EffectConfigData[] efCfgList, SkillConfigData sk)
        {
            int count = efCfgList.Length;

            ICastEffect[] effList = new ICastEffect[count];

            int i = 0;

            for (; i < count; ++i)
            {
                effList[i] = getImplement(efCfgList[i], sk);
            }

            return(effList);
        }
Esempio n. 21
0
        IEnumerator SkillTipFun(SkillConfigData configData)
        {
            yield return(new WaitForSeconds(configData.HintTextList [2] / 1000f));

            GameObject tip        = NGUITools.AddChild(gameObject, skillTipPrefab);     //(GameObject)Instantiate(skillEffTipPrefab);//
            Transform  skillTipBg = tip.transform.Find("Bg");
            UILabel    tipLabel   = tip.transform.Find("Tip").GetComponent <UILabel>();

            //tip.transform.parent = skillTip.transform;
            tip.transform.localPosition = new Vector3(configData.HintTextList[0], -1 * configData.HintTextList[1], 1);
            tipLabel.text = LanguageTextManager.GetString(configData.skillText);
            yield return(new WaitForSeconds(configData.HintTextList [3] / 1000f));

            Destroy(tip);
        }
Esempio n. 22
0
    //技能是否解锁,只有每行的第一个才可能锁,其它的都解锁了
    public bool IsUnLockSkill(int skillID)
    {
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);

        if (configData.PreSkill != 0)
        {
            return(true);
        }
        if (PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL < configData.m_unlockLevel)
        {
            //说明没有解锁
            return(false);
        }
        return(true);
    }
Esempio n. 23
0
    public override void DoBeforeEntering()
    {
        m_state             = SkillFireSelectState.STATE_WAIT_FOR_SELECT_TARGET;
        m_canFireRangeSkill = false;
        m_fireSelected      = false;
        IsSkillBeBreaked    = false;
        m_playerBehaviour   = (PlayerBehaviour)(m_roleBehaviour);
        m_skillBase         = m_playerBehaviour.NextSkillBase;
        if (m_skillBase != null)
        {
            m_skillData    = SkillDataManager.Instance.GetSkillConfigData(m_skillBase.SkillId);
            m_skillDirType = m_skillData.m_directionParam;

            HideAllEffect();

            if (GameManager.Instance.m_gameSettings.DoubleClickSkill)
            {
                switch (m_skillDirType)
                {
                case 1:
                {
                    ShowDirectionEffect();
                }
                break;

                case 2:
                {
                    ShowRangeEffect();
                }
                break;

                case 3:
                {
                    ShowFanEffect();
                }
                break;

                default:
                    break;
                }
            }


            base.DoBeforeEntering();
            this.m_playerBehaviour.ExecuteInitiativeSkillSelectedState = true;
        }
    }
Esempio n. 24
0
        /// <summary>
        /// 返回可以释放的技能, 这个要一直检测
        /// 这个只检查4个技能,不检查普通攻击
        /// </summary>
        /// <returns>The cast.</returns>
        /// <param name="caster">Caster.</param>
        /// <param name="target">Target.</param>
        public List <short> canCast(ServerNPC caster, ServerNPC target)
        {
            List <short> skNumList = new List <short>();

                        #if DEBUG
            Utils.Assert(caster == null, "Caster is null when check whether can cast skill.");
            Utils.Assert(target == null, "Target is null when check whether can cast skill.");
                        #endif

            ServerLifeNpc castLife = caster as ServerLifeNpc;
            if (castLife.IsAlive == false)
            {
                return(skNumList);
            }

            short pos = 0;
            for ( ; pos < Consts.MAX_SKILL_COUNT; ++pos)
            {
                RtSkData rtsk = castLife.runSkMd.getRuntimeSkill(pos);
                if (rtsk != null)
                {
                    bool can = false;
                    ///
                    /// 冷却时间好了吗
                    ///
                    can = rtsk.canCast;

                    SkillConfigData skCfg = rtsk.skillCfg;
                    if (skCfg.DamageType == (short)1)
                    {
                        can = can & CanCast.canCast(caster, rtsk);
                    }
                    else if (skCfg.DamageType == (short)0)
                    {
                        can = can & CanCast.canCast(caster, target, rtsk);
                    }

                    //如果可以则加入可释放列表
                    if (can)
                    {
                        skNumList.Add(pos);
                    }
                }
            }

            return(skNumList);
        }
    public MultiGroundAttackAction(Role attacker, Role target, Skill skill, SkillConfigData frameData, Vector2 lockPosition) : base(attacker)
    {
        _target = target;

        _skill        = skill;
        _frameData    = frameData;
        _lockPosition = lockPosition;

        _startHurtFrame = int.Parse(_frameData.Others[0]);
        _hurtFrequency  = int.Parse(_frameData.Others[1]);
        _hurtTotalNum   = int.Parse(_frameData.Others[2]);


        _frameCount = 0;
        _hurtCount  = 0;
        _speedScale = _skill.SkillTpl.ID == 4?_role.ActionSpeed : 1f;//只有技能4需要根据释放速度来调节速度
    }
Esempio n. 26
0
 public SingleSkillInfo(SkillConfigData LocalData)
 {
     this.localSkillData = LocalData;
     //this.Lock = IsLock(LocalData.m_skillId);
     this.OnSelect           = false;
     this.BattleIconPosition = 0;
     foreach (SSkillInfo child in PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos)
     {
         //TraceUtil.Log("已经解锁技能ID:"+child.wSkillID);
         //if (child.wSkillID == SkillID && child.wSkillLV >= localSkillData.m_unlockLevel)
         if (child.wSkillID == LocalData.m_skillId)
         {
             this.Lock       = false;
             this.SkillLevel = child.wSkillLV;
         }
     }
 }
Esempio n. 27
0
 public void SetButtonAttribute(SkillConfigData skillConfigData, BattleSkillButtonDelegate battleSkillButtonCallBack)
 {
     this.battleSkillButtonCallBack = battleSkillButtonCallBack;
     skillButtonStatus       = SkillButtonStatus.Enable;
     RecoveSprite.fillAmount = 0;
     this.skillConfigData    = skillConfigData;
     if (skillConfigData == null)
     {
         SetButtonIcon(null);
         SetCallBackFuntion(null, null);
     }
     else
     {
         SetButtonIcon(skillConfigData.m_icon);
         SetCallBackFuntion(ButtonClick, null);
     }
 }
Esempio n. 28
0
    //进阶判定//
    bool IsCanAdvanceSkillModel(int skillID)
    {
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);
        SSkillInfo?     curSkill   = GetCurSkill(skillID);

        //if (!SkillModel.Instance.IsOpenSkill (skillID)) {
        if (configData.PreSkill != 0)
        {
            //进阶
            if (curSkill == null && SkillMiddleModel(skillID, false, false))
            {
                return(true);
            }
        }
        //}
        return(false);
    }
Esempio n. 29
0
    bool IsCanUpgradeSkillModel(int skillID, bool isDouble)
    {
        SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID);
        SSkillInfo?     curSkill   = GetCurSkill(skillID);

        if (SkillModel.Instance.IsOpenSkill(skillID))
        {
            if (curSkill.Value.wSkillLV < configData.m_maxLv)
            {
                //可升级
                if (SkillMiddleModel(skillID, true, isDouble))
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Esempio n. 30
0
        /// <summary>
        /// 返回999999为角色消息为空
        /// </summary>
        /// <param name="SkillData"></param>
        /// <returns></returns>
        int GetSkillMpTake(SkillConfigData SkillData)
        {
            if (PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos == null)
            {
                return(EmptyColdWork);
            }
            float[] ParamList = SkillData.m_manaConsumeParams;
            var     getSkill  = PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos.FirstOrDefault(P => P.wSkillID == SkillData.m_skillId);

            if (getSkill.wSkillLV == 0)
            {
                //TraceUtil.Log(SystemModel.Common,TraceLevel.Error,"人物已经装备技能上无法找到对应SkillID:"+SkillData.m_skillId);
            }
            int roleLevel = PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL;
            int MpTake    = (int)(Mathf.FloorToInt((ParamList[0] * Mathf.Pow(roleLevel, 2) + ParamList[1] * roleLevel + ParamList[2]) / ParamList[3]) * ParamList[3]);

            //Debug.LogWarning("技能耗蓝:"+LanguageTextManager.GetString(SkillData.m_name)+","+MpTake);
            return(MpTake);
        }