예제 #1
0
    /// <summary>
    /// 序列化行为树
    /// </summary>
    /// <param name="data"></param>
    /// <param name="newBehaviorSource"></param>
    /// <returns></returns>
    public static void Serialize(SkillData data, out string str, out string str_ui)
    {
        System.Text.StringBuilder _str = new System.Text.StringBuilder();
        System.Text.StringBuilder _str_ui = new System.Text.StringBuilder();
        _str_ui.AppendFormat("<skill id=\"{0}\" name=\"{1}\">\r\n", data.Id, data.Name);
        _str.AppendFormat("<skill id=\"{0}\" name=\"{1}\" cd=\"{2}\">\r\n", data.Id, data.Name, data.CD.ToString());

        System.Text.StringBuilder _str_var = new StringBuilder();
        _str_var.Append("<variables>\r\n");
        foreach (var item in data.Variables)
        {
            _str_var.AppendFormat("<var type=\"{0}\" name=\"{1}\" />\r\n", item.Value.ValueType.ToString(), item.Key);
        }

        //for (int i = 0; i < data.Variables.Count; i++)
        //{
        //    _str_var.AppendFormat("<var type=\"{0}\" name=\"{1}\" />\r\n", data.Variables[i].ValueType.ToString(), data.Variables[i].name);
        //}
        _str_var.Append("</variables>\r\n");
        _str.Append(_str_var.ToString());

        for (int i = 0; i < data.Datas.Count; i++)
        {
            _str.Append(Data_ToString(SerializeTask_Data(data.Datas[i])));//序列化内容
            _str_ui.Append(UI_ToString(SerializeTask_UI(data.Datas[i])));//序列化UI相关
        }
        _str_ui.Append("</skill>\r\n");
        _str.Append("</skill>\r\n");
        str = _str.ToString();
        str_ui = _str_ui.ToString();
    }
예제 #2
0
파일: SkillName.cs 프로젝트: dethx/L2Parser
        public SkillName(string file)
        {
            try
            {
                using (L2BinaryReader reader = new L2BinaryReader(File.OpenRead(file)))
                {
                    Data = new SkillData[reader.ReadInt32()];
                    for (uint i = 0; i < Data.Length; i++)
                    {
                        SkillData data = new SkillData();

                        data.Id = reader.ReadUInt32();
                        data.Level = reader.ReadUInt32();
                        data.Name = reader.ReadString();
                        data.Description = reader.ReadString();
                        data.AdditionalDescription = reader.ReadString();
                        data.AdditionalDescription2 = reader.ReadString();

                        Data[i] = data;
                    }
                    reader.Validate();
                }
            }
            catch (Exception)
            {
                Data = null;
                throw new InvalidDataException(ParsingFailed);
            }
        }
예제 #3
0
 public void SetSettingsBy(SkillData data, Skill skill)
 {
     InstanceMaterial.SetTexture("_MainTexture",data.Image.texture);
     CoolDown = data.CoolDown;
     Cost = data.Cost;
     Skill = skill;
 }
예제 #4
0
 protected Skill_Framework_old()
 {
     _dataWorking = new SkillData();
     FillSkillData(); // abstract
     _dataDefault = (SkillData)_dataWorking.Clone();
     initTimers();
     _playerLevelCurrent = 1;
 }
예제 #5
0
 protected Skill_Framework_old(SkillData dataWorking)
 {
     _dataWorking = dataWorking;
     _dataDefault = (SkillData) _dataWorking.Clone();
     _timerCooldown = new FwTimer(TimeCooldown); // for timer init
     _timerBlock = new FwTimer(_dataDefault.TimeBlocked); // remade to this class property
     _playerLevelCurrent = 1;
 }
예제 #6
0
		public MenkoBattleData(uint id, bool isPlayer, bool isRepresent)
		{
			this.isRepresent = isRepresent;
			this.isPlayer = isPlayer;
			baseData = AssetManager.Load(AssetPath.GetMonsterDataPath(id)).Asset as MenkoData;
			skillData = AssetManager.Load(AssetPath.GetSkillDataPath(baseData.Character.SkillID)).Asset as SkillData;
			status = new BattleStatus(baseData.Status, skillData);
		}
예제 #7
0
		public BattleStatus(MenkoStatus status, SkillData skillData)
		{
			this.status = status;
			this.skillData = skillData;
			this.percent = 0;
			this.skillEnergy = 0;
			this.isDead = false;
			variables = new BattleParams();
		}
예제 #8
0
 public static Type GetType(SkillData.Element offender, SkillData.Element defender)
 {
     if (IsStrong(offender, defender))
     {
         return Type.Strong;
     }
     else if (IsWeak(offender, defender))
     {
         return Type.Weak;
     }
     return Type.Normal;
 }
예제 #9
0
    public override void Deserialize(XmlNode node, SkillData _data)
    {
        base.Deserialize(node, _data);

        string[] data = Base_Obj.Split('-');
        if (data!=null&&data.Length>0)
        {
            Base_Obj = data[1];
            BaseObj = _data.GetVariable(data[1]) as SharedGameObject;
            BaseObj.IsShared = true;

        }
    }
예제 #10
0
 private Color GetColor(SkillData.Element type)
 {
     switch(type)
     {
         case SkillData.Element.Fire:
             return Color.red;
         case SkillData.Element.Water:
             return Color.blue;
         case SkillData.Element.Wind:
             return Color.green;
     }
             return Color.red;
 }
예제 #11
0
 private static bool IsWeak(SkillData.Element offender, SkillData.Element defender)
 {
     switch(offender)
     {
         case SkillData.Element.Fire:
             return defender == SkillData.Element.Water;
         case SkillData.Element.Water:
             return defender == SkillData.Element.Wind;
         case SkillData.Element.Wind:
             return defender == SkillData.Element.Fire;
     }
     return false;
 }
예제 #12
0
	void DragBanKuai(SkillData data,RaycastHit hit)
	{
		Collider col = hit.collider;
		if (null != col && null != col.gameObject) {
			if (col.gameObject == gameObject || col.transform.IsChildOf (transform)) {
				if(data.type.ToString().Contains("Seal"))
				{
					Messenger.Broadcast (GameEventType.SealDragBanKuai, gameObject , (int)data.type % 10);
					data.SetCD ();
				}
				else if(data.type == SkillType.Skill2)
				{
					Messenger.Broadcast (GameEventType.SkillDragBanKuai, gameObject);
				}
			}
		}
	}
예제 #13
0
 public void Show(SkillData data)
 {
     GameObject effect = (GameObject)Resources.Load("effect/prefab/" + data.effectName);
        if (effect == null)
        {
         Debug.LogError("effect name is bad: " + data.effectName);
         return;
        }
        GameObject obj = Instantiate(effect, transform.position + new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
        obj.transform.transform.Rotate(data.rotationX, 0, 0);
        obj.transform.position = new Vector3(data.positionRight, data.positionUp, obj.transform.position.z - data.positionFront);
        obj.transform.SetParent(transform);
        obj.AddComponent<Effect>().SetAliveTime(data.aliveTime);
        if (data.skillIconId != 0)
        {
        icon.Show(data.skillIconId, data.skillIconWidth, data.skillIconHeight);
        }
 }
예제 #14
0
파일: Skill.cs 프로젝트: zhaoyabo/GameBase
    public Skill(GeneralSoldier soldier, int id)
    {
        if (id == 0)
        {
            return;
        }

        skillId = id;
        // 数据
        _skillData = new SkillData(id);

        mountPoint = getBindType(0);//(_skillData.Skill.getBindType());

        _eman = soldier;

        //加载技能所需要的特效
        loadSkllResource();

        setInstance();
    }
예제 #15
0
    public static Task DeserializeTask(XmlNode dataui, XmlNode data,SkillData _data)
    {
        string type_str = dataui.Attributes["ObjectType"].Value;

        Type type = Type.GetType(type_str);
        if (type == null) { type = Type.GetType(string.Format("{0}, Assembly-CSharp", type_str as string)); }
        if (type == null) { type = Type.GetType(string.Format("{0}, Assembly-CSharp-firstpass", type_str as string)); }
        if (type == null) { type = Type.GetType(string.Format("{0}, Assembly-UnityScript", type_str as string)); }
        if (type == null) { type = Type.GetType(string.Format("{0}, Assembly-UnityScript-firstpass", type_str as string)); }
        Task task = (ScriptableObject.CreateInstance(type) as Task);
        task.hideFlags = HideFlags.HideAndDontSave;

        task.NodeData = new DesignerNodeData();
        task.NodeData.deserialize_ui(dataui);
        task.Deserialize(data, _data);

        List<TaskOutLink> datas = new List<TaskOutLink>();
        task.GetOutLinks(datas);

        task.OutLinks = new Dictionary<string, TaskOutLink>();
        for (int i = 0; i < datas.Count; i++)
        {
            task.OutLinks.Add(datas[i].name, datas[i]);
        }

        for (int i = 0; i < dataui.ChildNodes.Count; i++)
        {
            TaskOutLink item = task.OutLinks[dataui.ChildNodes[i].Name];
            for (int j = 0; j < dataui.ChildNodes[i].ChildNodes.Count; j++)
            {
                XmlNode k = data.ParentNode.SelectSingleNode(@"*[@id=" + dataui.ChildNodes[i].ChildNodes[j].Attributes["ID"].Value + "]");
                item.Childs.Add(DeserializeTask(dataui.ChildNodes[i].ChildNodes[j], k, _data));
            }
        }

        return task;
    }
예제 #16
0
 /// <summary>
 /// 加载一个数据源
 /// </summary>
 /// <param name="data"></param>
 public void Load(SkillData _data)
 {
     data = _data;
     for(int i=0;i<data.Datas.Count;i++)
     {
         data.Datas[i].Init();
     }
 }
예제 #17
0
파일: SkillData.cs 프로젝트: seonwifi/Unity
 public override void ParseCSV(CsvStream csvStream)
 {
     SkillData tableSample = new SkillData();
     tableSample.Load(csvStream);
     m_DataDic[tableSample.index] = tableSample;
 }
예제 #18
0
 public Skill213(CardFighter card, SkillData skillData, int[] skillParam) : base(card, skillData, skillParam)
 {
 }
예제 #19
0
 private EnemyData(int hp, SkillData.Element element)
 {
     this.hp = hp;
     this.element = element;
 }
예제 #20
0
 public void Release()
 {
     _skillsData.Release();
     _skillsData = new SkillData();
 }
예제 #21
0
파일: Skill103.cs 프로젝트: leeckey/Card
    protected override void InitConfig(SkillData skillData)
    {
        base.InitConfig(skillData);

        damage = skillLevel * skillData.param1;
    }
예제 #22
0
        protected override int ExecInternal()
        {
            if (ArgNum != 4 && ArgNum != 5)
            {
                throw new EventErrorException(this, "SetSkillコマンドの引数の数が違います");
            }

            var pname = GetArgAsString(2);

            if (SRC.PList.IsDefined(pname))
            {
                pname = SRC.PList.Item(pname).ID;
            }
            else if (SRC.PDList.IsDefined(pname))
            {
                pname = SRC.PDList.Item(pname).Name;
            }
            else
            {
                throw new EventErrorException(this, "「" + pname + "」というパイロットが見つかりません");
            }

            var sname  = GetArgAsString(3);
            var slevel = GetArgAsDouble(4);
            var sdata  = "";

            if (ArgNum == 5)
            {
                sdata = GetArgAsString(5);
            }

            // エリアスが定義されている?
            var sList = new List <SkillData>();

            if (SRC.ALDList.IsDefined(sname))
            {
                {
                    var alias = SRC.ALDList.Item(sname);
                    foreach (var elm in alias.Elements)
                    {
                        var sd = new SkillData();
                        sList.Add(sd);

                        if (GeneralLib.LIndex(elm.strAliasData, 1) == "解説")
                        {
                            if (string.IsNullOrEmpty(sdata))
                            {
                                sd.Name = elm.strAliasType;
                            }
                            else
                            {
                                sd.Name = GeneralLib.LIndex(sdata, 1);
                            }

                            if (slevel == 0d)
                            {
                                sd.Level = 0d;
                            }
                            else
                            {
                                sd.Level = Constants.DEFAULT_LEVEL;
                            }

                            sd.StrData = elm.strAliasData;
                        }
                        else
                        {
                            sd.Name = elm.strAliasType;
                            if (slevel == -1)
                            {
                                sd.Level = elm.dblAliasLevel;
                            }
                            else if (elm.blnAliasLevelIsPlusMod)
                            {
                                sd.Level = slevel + elm.dblAliasLevel;
                            }
                            else if (elm.blnAliasLevelIsMultMod)
                            {
                                sd.Level = slevel * elm.dblAliasLevel;
                            }
                            else
                            {
                                sd.Level = slevel;
                            }

                            if (string.IsNullOrEmpty(sdata))
                            {
                                sd.StrData = elm.strAliasData;
                            }
                            else
                            {
                                sd.StrData = Strings.Trim(sdata + " " + GeneralLib.ListTail(elm.strAliasData, 2));
                            }

                            if (elm.blnAliasLevelIsPlusMod || elm.blnAliasLevelIsPlusMod)
                            {
                                sd.StrData = Strings.Trim(GeneralLib.LIndex(sd.StrData, 1) + "Lv" + SrcFormatter.Format(slevel) + " " + GeneralLib.ListTail(sd.StrData, 2));
                            }
                        }
                    }
                }
            }
            else
            {
                sList.Add(new SkillData
                {
                    Name    = sname,
                    Level   = slevel,
                    StrData = sdata,
                });
            }

            foreach (var sd in sList)
            {
                sname  = sd.Name;
                slevel = sd.Level;
                sdata  = sd.StrData;
                if (string.IsNullOrEmpty(sname))
                {
                    continue;
                }

                string slist;
                // アビリティ一覧表示用にSetSkillが適用された能力の一覧用変数を作成
                if (!Expression.IsGlobalVariableDefined("Ability(" + pname + ")"))
                {
                    Expression.DefineGlobalVariable("Ability(" + pname + ")");
                    slist = sname;
                }
                else
                {
                    slist = Conversions.ToString(Event.GlobalVariableList["Ability(" + pname + ")"].StringValue);
                    if (!GeneralLib.ToL(slist).Contains(sname))
                    {
                        slist = slist + " " + sname;
                    }
                }

                Expression.SetVariableAsString("Ability(" + pname + ")", slist);

                // 今回SetSkillが適用された能力sname用変数を作成
                var vname = "Ability(" + pname + "," + sname + ")";
                if (!Expression.IsGlobalVariableDefined(vname))
                {
                    Expression.DefineGlobalVariable(vname);
                }

                if (!string.IsNullOrEmpty(sdata))
                {
                    // 別名指定があった場合
                    Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel) + " " + sdata);

                    // 必要技能用
                    if (sdata != "非表示" && GeneralLib.LIndex(sdata, 1) != "解説")
                    {
                        vname = "Ability(" + pname + "," + GeneralLib.LIndex(sdata, 1) + ")";
                        if (!Expression.IsGlobalVariableDefined(vname))
                        {
                            Expression.DefineGlobalVariable(vname);
                        }

                        Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel));
                    }
                }
                else
                {
                    Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel));
                }
            }

            // パイロットやユニットのステータスをアップデート
            if (SRC.PList.IsDefined(pname))
            {
                {
                    var withBlock1 = SRC.PList.Item(pname);
                    withBlock1.Update();
                    if (withBlock1.Unit is object)
                    {
                        withBlock1.Unit.Update();
                        if (withBlock1.Unit.Status == "出撃")
                        {
                            SRC.PList.UpdateSupportMod(withBlock1.Unit);
                        }
                    }
                }
            }
            return(EventData.NextID);
        }
예제 #23
0
 /// <summary>
 /// Stops the skill.
 /// </summary>
 public void StopSkill()
 {
     canUseSkill = true;
     currentSkill = null;
     singTimeout = 0;
     if (!flying) {
         states = "normal";
     }
 }
예제 #24
0
    private static System.Collections.IEnumerator OnNewInit(object objd)
    {
        Object obj = ResManager.Instance.LoadObject("ServerSetting", "GlobalRes/ServerSetting/", ResType.GlobalRes, typeof(TextAsset));

        if (obj == null)
        {
            InitLogic.SetInitFailed();
            yield break;
        }
        TextAsset   ta  = obj as TextAsset;
        XmlDocument doc = new XmlDocument();

        doc.LoadXml(ta.text);
        XmlNode pConfig = doc.SelectSingleNode("Config");

        XmlNode verNode    = pConfig.SelectSingleNode("ServerVersion");
        XmlNode comboNode  = pConfig.SelectSingleNode("Combo");
        XmlNode energyNode = pConfig.SelectSingleNode("Energy");
        XmlNode cannonNode = pConfig.SelectSingleNode("Cannon");
        XmlNode skillNode  = pConfig.SelectSingleNode("Skill");
        XmlNode rateNode   = pConfig.SelectSingleNode("Rate");
        XmlNode fishNode   = pConfig.SelectSingleNode("Fish");
        XmlNode rankNode   = pConfig.SelectSingleNode("Rank");
        XmlNode dstNode    = pConfig.SelectSingleNode("FishDeadTime");

        if (verNode == null ||
            comboNode == null ||
            energyNode == null ||
            skillNode == null ||
            rateNode == null ||
            cannonNode == null ||
            fishNode == null ||
            rankNode == null ||
            dstNode == null)
        {
            LogMgr.Log("ServerSetting load failed.");
            InitLogic.SetInitFailed();
            yield break;
        }
        if (energyNode.ChildNodes.Count != cannonNode.ChildNodes.Count)
        {
            LogMgr.Log("energyNode<>cannonNode");
            InitLogic.SetInitFailed();
            yield break;
        }
        int nFishs      = 0;
        int nFishValues = 0;

        LauncherInfo [] plauncherinfo;


        yield return(new WaitForEndOfFrame());

        Attribute(verNode, "wonderful_base", ref ExtraSetting.WonderFulBase);
        /////Ver
        //Attribute(verNode, "maxfish", ref FishSetting.FISH_MAX_NUM);
        //Attribute(verNode, "maxbullet", ref BulletSetting.BULLET_MAX_NUM);

        /////Combo
        Attribute(comboNode, "sustain_time", ref DoubleHit.IntervalTime);
        Attribute(comboNode, "buff_cycle", ref DoubleHit.MaxTimes);

        ////Cannon
        int launcherCount = energyNode.ChildNodes.Count;

        plauncherinfo = new LauncherInfo[launcherCount];
        LauncherSetting.LauncherDataList = new LauncherData[launcherCount];
        for (int i = 0; i < launcherCount; ++i)//from energy
        {
            LauncherData ld = new LauncherData();

            XmlNode node = energyNode.ChildNodes[i];
            Attribute(node, "id", ref ld.ID);
            Attribute(node, "cditme", ref ld.LaserCDTime);
            Attribute(node, "speed", ref ld.LaserReduction.Speed);
            Attribute(node, "time1", ref ld.LaserReduction.Duration1);
            Attribute(node, "time2", ref ld.LaserReduction.Duration2);
            Attribute(node, "time3", ref ld.LaserReduction.Duration3);

            LauncherInfo Item = new LauncherInfo();
            Attribute(node, "mincatch", ref Item.nmincatch);
            Attribute(node, "maxcatch", ref Item.nmaxcatch);
            Attribute(node, "revise", ref Item.nrevise);
            Attribute(node, "energyratio", ref Item.denergyratio);



            if (LauncherSetting.LauncherDataList[ld.ID] != null)
            {
                LogMgr.Log("Exist the same launcher id.");
                InitLogic.SetInitFailed();
                yield break;
            }
            LauncherSetting.LauncherDataList[ld.ID] = ld;
            plauncherinfo[ld.ID] = Item;
        }
        yield return(new WaitForEndOfFrame());

        for (int i = 0; i < launcherCount; ++i)//from cannon
        {
            XmlNode node = cannonNode.ChildNodes[i];
            byte    byid = 0;
            Attribute(node, "id", ref byid);
            LauncherData ld = LauncherSetting.LauncherDataList[byid];

            ld.name = node.Attributes["name"].Value;
            Attribute(node, "launcherinterval", ref ld.Interval);
            Attribute(node, "consume", ref ld.Consume);
            Attribute(node, "bulletspeed", ref ld.Speed);
            Attribute(node, "itemid", ref ld.nItemid);
            Attribute(node, "itemcount", ref ld.nItemcount);
            Attribute(node, "skill", ref ld.nSkillBind);

            if (byid == (byte)LauncherType.LAUNCHER_4)//4号炮特有
            {
                Attribute(node, "speed", ref BulletSetting.FreezeBulletReduction.Speed);
                Attribute(node, "time1", ref BulletSetting.FreezeBulletReduction.Duration1);
                Attribute(node, "time2", ref BulletSetting.FreezeBulletReduction.Duration2);
                Attribute(node, "time3", ref BulletSetting.FreezeBulletReduction.Duration3);
            }
        }
        yield return(new WaitForEndOfFrame());

        /////SkillInfo
        int skillCount = skillNode.ChildNodes.Count;

        SkillSetting.SkillDataList = new SkillData[skillCount];
        for (int i = 0; i < skillCount; ++i)
        {
            SkillData sd   = new SkillData();
            XmlNode   node = skillNode.ChildNodes[i];
            Attribute(node, "id", ref sd.ID);
            sd.name = node.Attributes["name"].Value;
            Attribute(node, "cditme", ref sd.CDTime);
            Attribute(node, "goodsid", ref sd.ItemId);
            Attribute(node, "multiple", ref sd.multiple);
            Attribute(node, "speed", ref sd.Reduction.Speed);
            Attribute(node, "time1", ref sd.Reduction.Duration1);
            Attribute(node, "time2", ref sd.Reduction.Duration2);
            Attribute(node, "time3", ref sd.Reduction.Duration3);

            string szInfo = "";
            Attribute(node, "goodsconsume", ref szInfo);
            if (szInfo.Length > 0)
            {
                string[] pConsume = szInfo.Split(' ');
                for (int index = 0; index < pConsume.Length; index += 2)
                {
                    SkillConsume pskill = new SkillConsume();
                    pskill.byorder = System.Convert.ToByte(pConsume[index]);
                    pskill.byCount = System.Convert.ToByte(pConsume[index + 1]);
                    sd.NumRequire.Add(pskill);
                }
            }
            if (SkillSetting.SkillDataList[sd.ID] != null)
            {
                LogMgr.Log("Exist the same skill id.");
                InitLogic.SetInitFailed();
                yield break;
            }
            SkillSetting.SkillDataList[sd.ID] = sd;
        }
        yield return(new WaitForEndOfFrame());

        //Rate
        int rateCount = rateNode.ChildNodes.Count;

        BulletSetting.BulletRate = new ushort[rateCount];
        BulletSetting.RateUnlock = new ushort[rateCount];
        BulletSetting.RateReward = new ushort[rateCount];
        for (int i = 0; i < rateCount; ++i)
        {
            XmlNode node = rateNode.ChildNodes[i];
            byte    byid = 0;
            Attribute(node, "id", ref byid);
            Attribute(node, "value", ref BulletSetting.BulletRate[byid]);
            Attribute(node, "unlock", ref BulletSetting.RateUnlock[byid]);
            Attribute(node, "unlockreward", ref BulletSetting.RateReward[byid]);
        }

        //Fish
        int fishCount = fishNode.ChildNodes.Count;

        FishSetting.FishDataList = new FishData[fishCount];
        for (int i = 0; i < fishCount; ++i)
        {
            XmlNode  node = fishNode.ChildNodes[i];
            FishData fd   = new FishData();
            Attribute(node, "id", ref fd.ID);
            Attribute(node, "value", ref fd.Gold);
            fd.Name = node.Attributes["name"].Value;
            fd.Decl = node.Attributes["declare"].Value;
            if (FishSetting.FishDataList[fd.ID] != null)
            {
                LogMgr.Log("Exist the same fish id:" + fd.ID);
                InitLogic.SetInitFailed();
                yield break;
            }
            FishSetting.FishDataList[fd.ID] = fd;

            byte maxcount = 0;
            Attribute(node, "maxcount", ref maxcount);
            nFishs      += maxcount;
            nFishValues += maxcount * fd.Gold;
        }
        FishSetting.SortByGold();
        yield return(new WaitForEndOfFrame());

        //Rank
        int nRank = rankNode.ChildNodes.Count;

        Experience.Exp = new uint[nRank];
        for (int i = 0; i < nRank; i++)
        {
            XmlNode node = rankNode.ChildNodes[i];
            byte    byid = 0;
            Attribute(node, "id", ref byid);
            Attribute(node, "experience", ref Experience.Exp[byid]);
        }


        ///
        //FishDeadTime
        FishDeadTimeData ftd = new FishDeadTimeData();

        Attribute(dstNode, "TianZai_DouDong", ref ftd.TianZai_DouDong_Time);//float.Parse(fishDeadNode.ChildNodes[0].FirstChild.Value);
        Attribute(dstNode, "TianZai_Stay_Min", ref ftd.TianZai_Stay_Time1);
        Attribute(dstNode, "TianZai_Stay_Max", ref ftd.TianZai_Stay_Time2);
        Attribute(dstNode, "TianZai_Dead_Min", ref ftd.TianZai_Dead_Time1);
        Attribute(dstNode, "TianZai_Dead_Max", ref ftd.TianZai_Dead_Time2);
        Attribute(dstNode, "Bullet_BingDong_Dead_Min", ref ftd.Bullet_BingDong_Dead_Time1);
        Attribute(dstNode, "Bullet_BingDong_Dead_Max", ref ftd.Bullet_BingDong_Dead_Time2);
        Attribute(dstNode, "BingDong_Dead_Min", ref ftd.BingDong_Dead_Time1);
        Attribute(dstNode, "BingDong_Dead_Max", ref ftd.BingDong_Dead_Time2);
        Attribute(dstNode, "ShanDian_Dead_Min", ref ftd.ShanDian_Dead_Time1);
        Attribute(dstNode, "ShanDian_Dead_Max", ref ftd.ShanDian_Dead_Time2);
        Attribute(dstNode, "LongJuanFeng_Dead_Min", ref ftd.LongJuanFeng_Dead_Time1);
        Attribute(dstNode, "LongJuanFeng_Dead_Max", ref ftd.LongJuanFeng_Dead_Time2);
        Attribute(dstNode, "JiGuang_Stay_Time", ref ftd.JiGuang_Stay_Time);
        Attribute(dstNode, "JiGuang_Dead_Min", ref ftd.JiGuang_Dead_Time1);
        Attribute(dstNode, "JiGuang_Dead_Max", ref ftd.JiGuang_Dead_Time2);
        Attribute(dstNode, "ShandDian_Speed", ref ftd.ShandDian_Speed);
        Attribute(dstNode, "JiGuang_Speed", ref ftd.JiGuang_Speed);
        Attribute(dstNode, "JiGuang_BingDong_Speed", ref ftd.JiGuang_BingDong_Speed);
        Attribute(dstNode, "TianZai_Speed", ref ftd.TianZai_Speed);
        Attribute(dstNode, "BingDong_Speed", ref ftd.BingDong_Speed);
        FishSetting.FishDeadTime = ftd;
        //cal
        for (int i = 0; i < launcherCount; i++)
        {
            LauncherInfo item = plauncherinfo[i];
            item.nincome = (ushort)((item.nmincatch + item.nmaxcatch) / 2.0f / nFishs * nFishValues + item.nrevise);
            LauncherSetting.LauncherDataList[i].Energy = (ushort)(item.nincome * item.denergyratio);//大招
        }
        yield return(new WaitForEndOfFrame());

        int roomCount = 4;

        ExtraSetting.RoomDataList = new RoomData[roomCount];
        for (int i = 0; i < roomCount; ++i)
        {
            RoomData rd = new RoomData();
            rd.RoomID      = (byte)i;
            rd.RoomRateIdx = (byte)i;
            ExtraSetting.RoomDataList[i] = rd;
        }


        //XmlNode childNode = pConfig.SelectSingleNode("RoomInfo");
        //if (childNode == null)
        //{
        //    LogMgr.Log("RoomInfo not found.");
        //    InitLogic.SetInitFailed();
        //    yield break;
        //}
        //int roomCount = childNode.ChildNodes.Count;
        //ExtraSetting.RoomDataList = new RoomData[roomCount];
        //for (int i = 0; i < roomCount; ++i)
        //{
        //    RoomData rd = new RoomData();
        //    rd.RoomID = byte.Parse(childNode.ChildNodes[i].Attributes["id"].Value);
        //    rd.RoomRateIdx = byte.Parse(childNode.ChildNodes[i].FirstChild.Value);
        //    if (ExtraSetting.RoomDataList[rd.RoomID] != null)
        //    {
        //        LogMgr.Log("Exist the same room id.");
        //        InitLogic.SetInitFailed();
        //        yield break;
        //    }
        //    ExtraSetting.RoomDataList[rd.RoomID] = rd;
        //}
        ResManager.Instance.UnloadObject(obj);
        InitLogic.EndInit();
    }
예제 #25
0
파일: LogAnalyser.cs 프로젝트: greaka/evtc
        private IEnumerable <PlayerData> GetPlayerData(Log log, GW2ApiData apiData)
        {
            var players = log.Agents.OfType <Player>().ToArray();

            var deathCounts = players.ToDictionary(x => x, x => 0);
            var downCounts  = players.ToDictionary(x => x, x => 0);
            var usedSkills  = players.ToDictionary(x => x, x => new HashSet <Skill>());

            foreach (var deadEvent in log.Events.OfType <AgentDeadEvent>().Where(x => x.Agent is Player))
            {
                var player = (Player)deadEvent.Agent;
                deathCounts[player]++;
            }

            foreach (var downEvent in log.Events.OfType <AgentDownedEvent>().Where(x => x.Agent is Player))
            {
                var player = (Player)downEvent.Agent;
                downCounts[player]++;
            }

            // Buff damage events only tell us which conditions/buffs, not what skill actually applied them
            foreach (var damageEvent in log.Events.OfType <PhysicalDamageEvent>().Where(x => x.Attacker is Player))
            {
                var player = (Player)damageEvent.Attacker;
                usedSkills[player].Add(damageEvent.Skill);
            }

            foreach (var activationEvent in log.Events.OfType <SkillCastEvent>().Where(x => x.Agent is Player))
            {
                var player = (Player)activationEvent.Agent;
                usedSkills[player].Add(activationEvent.Skill);
            }

            var playerData = new List <PlayerData>();

            foreach (var player in players)
            {
                HashSet <SkillData> utilitySkills = null;
                HashSet <SkillData> healingSkills = null;
                HashSet <SkillData> eliteSkills   = null;
                if (apiData != null)
                {
                    utilitySkills = new HashSet <SkillData>();
                    healingSkills = new HashSet <SkillData>();
                    eliteSkills   = new HashSet <SkillData>();
                    foreach (var usedSkill in usedSkills[player])
                    {
                        var skillData = apiData.GetSkillData(usedSkill);

                        // Skills may be also registered as used if they affect other players and do damage through them
                        if (skillData != null && skillData.Professions.Contains(player.Profession))
                        {
                            if (skillData.Slot == SkillSlot.Elite)
                            {
                                eliteSkills.Add(skillData);
                            }
                            else if (skillData.Slot == SkillSlot.Utility)
                            {
                                utilitySkills.Add(skillData);
                            }
                            else if (skillData.Slot == SkillSlot.Heal)
                            {
                                healingSkills.Add(skillData);
                            }
                        }
                    }
                }

                WeaponType land1Weapon1 = WeaponType.Other;
                WeaponType land1Weapon2 = WeaponType.Other;
                WeaponType land2Weapon1 = WeaponType.Other;
                WeaponType land2Weapon2 = WeaponType.Other;
                IEnumerable <SkillData> land1WeaponSkills = null;
                IEnumerable <SkillData> land2WeaponSkills = null;

                // TODO: Dual wield skill handling for Thieves
                if (apiData != null)
                {
                    WeaponSet currentWeaponSet = WeaponSet.Unknown;
                    // We are only interested in land weapons. This may be imperfect if started on an underwater set.
                    var firstWeaponSwap = log.Events.OfType <AgentWeaponSwapEvent>().FirstOrDefault(x =>
                                                                                                    x.NewWeaponSet == WeaponSet.Land1 || x.NewWeaponSet == WeaponSet.Land2);

                    if (firstWeaponSwap == null)
                    {
                        currentWeaponSet = WeaponSet.Land1;
                    }
                    else
                    {
                        // First weapon set is the other one than the first swap swaps to (unless it was an underwater one)
                        currentWeaponSet = firstWeaponSwap.NewWeaponSet == WeaponSet.Land1
                                                        ? WeaponSet.Land2
                                                        : WeaponSet.Land1;
                    }

                    foreach (var logEvent in log.Events)
                    {
                        if (logEvent is AgentWeaponSwapEvent weaponSwapEvent && weaponSwapEvent.Agent == player)
                        {
                            currentWeaponSet = weaponSwapEvent.NewWeaponSet;
                            continue;
                        }

                        SkillData skillData = null;
                        if (logEvent is StartSkillCastEvent castEvent && castEvent.Agent == player)
                        {
                            skillData = apiData.GetSkillData(castEvent.Skill);
                        }

                        if (skillData != null)
                        {
                            if (skillData.Professions.Contains(player.Profession) && skillData.Type == SkillType.Weapon)
                            {
                                if (skillData.WeaponType.IsTwoHanded() || skillData.Slot == SkillSlot.Weapon1 ||
                                    skillData.Slot == SkillSlot.Weapon2 || skillData.Slot == SkillSlot.Weapon3)
                                {
                                    if (currentWeaponSet == WeaponSet.Land1)
                                    {
                                        land1Weapon1 = skillData.WeaponType;
                                    }
                                    else if (currentWeaponSet == WeaponSet.Land2)
                                    {
                                        land2Weapon1 = skillData.WeaponType;
                                    }
                                }

                                if (skillData.WeaponType.IsTwoHanded() || skillData.Slot == SkillSlot.Weapon4 ||
                                    skillData.Slot == SkillSlot.Weapon5)
                                {
                                    if (currentWeaponSet == WeaponSet.Land1)
                                    {
                                        land1Weapon2 = skillData.WeaponType;
                                    }
                                    else if (currentWeaponSet == WeaponSet.Land2)
                                    {
                                        land2Weapon2 = skillData.WeaponType;
                                    }
                                }
                            }
                        }
                    }

                    land1WeaponSkills = GameSkillDataRepository
                                        .GetWeaponSkillIds(player.Profession, land1Weapon1, land1Weapon2)
                                        .Select(x => x == -1 ? null : apiData.GetSkillData(x));
                    land2WeaponSkills = GameSkillDataRepository
                                        .GetWeaponSkillIds(player.Profession, land2Weapon1, land2Weapon2)
                                        .Select(x => x == -1 ? null : apiData.GetSkillData(x));
                }

                if (apiData != null)
                {
                    var skillDetections = SkillDetections.GetSkillDetections(player.Profession).ToArray();
                    foreach (var e in log.Events)
                    {
                        foreach (var detection in skillDetections)
                        {
                            if (detection.Detection.IsDetected(player, e))
                            {
                                var skill = apiData.GetSkillData(detection.SkillId);
                                if (detection.Slot == SkillSlot.Utility)
                                {
                                    utilitySkills.Add(skill);
                                }
                                else if (detection.Slot == SkillSlot.Heal)
                                {
                                    healingSkills.Add(skill);
                                }
                                else if (detection.Slot == SkillSlot.Elite)
                                {
                                    eliteSkills.Add(skill);
                                }
                            }
                        }
                    }
                }

                var ignoredSkills = SkillDetections.GetIgnoredSkillIds(player.Profession);
                healingSkills?.RemoveWhere(x => ignoredSkills.Contains(x.Id));
                utilitySkills?.RemoveWhere(x => ignoredSkills.Contains(x.Id));
                eliteSkills?.RemoveWhere(x => ignoredSkills.Contains(x.Id));

                var specializationDetections =
                    SpecializationDetections.GetSpecializationDetections(player.Profession).ToArray();
                var badges = new List <PlayerBadge>();

                var specializations = new HashSet <CoreSpecialization>();
                foreach (var e in log.Events)
                {
                    foreach (var detection in specializationDetections)
                    {
                        if (detection.Detection.IsDetected(player, e))
                        {
                            specializations.Add(detection.Specialization);
                        }
                    }
                }

                foreach (var spec in specializations.OrderBy(x => x.ToString()))
                {
                    badges.Add(new PlayerBadge(spec.ToString(), BadgeType.Specialization));
                }

                var rotation = RotationCalculator.GetRotation(log, player);

                var data = new PlayerData(player, downCounts[player], deathCounts[player], rotation, usedSkills[player],
                                          healingSkills, utilitySkills, eliteSkills, land1Weapon1, land1Weapon2, land2Weapon1, land2Weapon2,
                                          land1WeaponSkills, land2WeaponSkills, badges);

                playerData.Add(data);
            }

            return(playerData);
        }
예제 #26
0
        public void RandomizeTrees(Random random, Permutation permutation, SkillSplitter.Assignment split)
        {
            // >= 700: prosthetics
            // < 400: skills before mushin
            GameEditor editor = game.Editor;
            PARAM      param  = game.Params["SkillParam"];

            // Orderings for skills which completely supersede each other. (For prosthetics, just use their natural id ordering)
            Dictionary <int, int> skillOrderings = new Dictionary <int, int>
            {
                [110] = 111,  // Nightjar slash
                [210] = 211,  // Ichimonji
                [310] = 311,  // Praying Strikes
            };
            Dictionary <int, ItemKey> texts = new Dictionary <int, ItemKey>
            {
                [0] = game.ItemForName("Shinobi Esoteric Text"),
                [1] = game.ItemForName("Prosthetic Esoteric Text"),
                [2] = game.ItemForName("Ashina Esoteric Text"),
                [3] = game.ItemForName("Senpou Esoteric Text"),
                // [4] = game.ItemForName("Mushin Esoteric Text"),
            };
            SortedDictionary <ItemKey, string> names = game.Names();

            string descName(int desc)
            {
                return(names[new ItemKey(ItemType.WEAPON, desc)]);
            }

            Dictionary <int, SkillData>     allData    = new Dictionary <int, SkillData>();
            Dictionary <int, SkillSlot>     allSlots   = new Dictionary <int, SkillSlot>();
            Dictionary <ItemKey, SkillData> skillItems = new Dictionary <ItemKey, SkillData>();
            List <SkillData> skills          = new List <SkillData>();
            List <SkillSlot> skillSlots      = new List <SkillSlot>();
            List <SkillData> prosthetics     = new List <SkillData>();
            List <SkillSlot> prostheticSlots = new List <SkillSlot>();

            bool explain = false;

            foreach (PARAM.Row r in param.Rows)
            {
                SkillData data = new SkillData
                {
                    ID           = (int)r.ID,
                    Item         = (int)r["SkilLDescriptionId"].Value,
                    Equip        = (int)r["Unk1"].Value,
                    Flag         = (int)r["EventFlagId"].Value,
                    Placeholder  = (int)r["Unk5"].Value,
                    SpEffects    = new[] { (int)r["Unk2"].Value, (int)r["Unk3"].Value },
                    EmblemChange = (byte)r["Unk10"].Value != 0,
                };
                data.Key             = new ItemKey(ItemType.WEAPON, data.Item);
                skillItems[data.Key] = data;
                SkillSlot slot = new SkillSlot
                {
                    ID   = (int)r.ID,
                    Col  = (short)r["MenuDisplayPositionIndexXZ"].Value,
                    Row  = (short)r["MenuDisplayPositionIndexY"].Value,
                    Text = data.ID < 400 && texts.TryGetValue((byte)r["Unk7"].Value, out ItemKey text) ? text : null,
                };
                if (explain)
                {
                    Console.WriteLine($"{r.ID}: {data.Item}, {data.Equip}, {descName(data.Item)}");
                }
                if (data.ID < 400)
                {
                    skills.Add(data);
                    skillSlots.Add(slot);
                }
                else if (data.ID >= 700)
                {
                    prosthetics.Add(data);
                    prostheticSlots.Add(slot);
                }
                allData[data.ID]  = data;
                allSlots[slot.ID] = slot;
            }
            void applyData(PARAM.Row r, SkillData data)
            {
                r["SkilLDescriptionId"].Value = data.Item;
                r["EventFlagId"].Value        = data.Flag;
                r["Unk1"].Value  = data.Equip;
                r["Unk2"].Value  = data.SpEffects[0];
                r["Unk3"].Value  = data.SpEffects[0];
                r["Unk5"].Value  = data.Placeholder;
                r["Unk10"].Value = (byte)(data.EmblemChange ? 1 : 0);
            }

            Shuffle(random, skills);
            Shuffle(random, skillSlots);
            Shuffle(random, prosthetics);
            Shuffle(random, prostheticSlots);

            // Skills rando
            if (split == null)
            {
                Dictionary <ItemKey, string> textWeight    = new Dictionary <ItemKey, string>();
                Dictionary <ItemKey, string> textLocations = texts.Values.ToDictionary(t => t, t => {
                    SlotKey target    = permutation.GetFiniteTargetKey(t);
                    textWeight[t]     = permutation.GetLogOrder(target);
                    SlotAnnotation sn = ann.Slot(data.Location(target).LocScope);
                    if (explain)
                    {
                        Console.WriteLine($"{game.Name(t)} in {sn.Area} - {sn.Text}. Lateness {(permutation.ItemLateness.TryGetValue(t, out double val) ? val : -1)}");
                    }
                    return(sn.Area);
                });
예제 #27
0
 protected override void InitConfig(SkillData skillData)
 {
     base.InitConfig(skillData);
 }
예제 #28
0
        public static Boolean loadSkills()
        {
            if (!Constants.VFSSkip)
            {
                vfsDataProvider.Instance.unpackFromVFS("data\\script\\skills.scr", "data\\skills.scr");
            }

            if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "data/skills.scr"))
            {
                return(false);
            }

            int skills_count = 0;

            byte[] data = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "data/skills.scr");

            byte meh = 0;
            int  i = 0, position = 0, hop = 0, real_length = 0;

            while (position < data.Length)
            {
                hop = 0;
                for (i = 0; i < 4; i++)
                {
                    meh = data[position + 1496 + i];
                    if (meh != 0x00)
                    {
                        hop = ((i + 1) * (8 * meh));
                    }
                }
                real_length = 1500 + hop;

                SkillData sData = new SkillData();

                //ID
                sData.setID(BitConverter.ToInt32(data, position + 0));
                //SKILLGROUP
                sData.setGroup(BitConverter.ToInt32(data, position + 4));
                //CLASS
                sData.setChClass(BitConverter.ToInt16(data, position + 518));
                //STAGE
                sData.setStage(data[position + 520]);
                //REQSKILL1
                sData.setReqSkill1(BitConverter.ToInt32(data, position + 1280));
                //REQSKILL2
                sData.setReqSkill2(BitConverter.ToInt32(data, position + 1284));
                //REQSKILL3
                sData.setReqSkill3(BitConverter.ToInt32(data, position + 1288));
                //SKILLPOINTS
                sData.setSkillPoints(BitConverter.ToInt32(data, position + 1292));
                //LVL
                sData.setLvl(BitConverter.ToInt16(data, position + 1304));
                //SPECIFICTYPE
                sData.setTypeSpecific(BitConverter.ToInt16(data, position + 1306));
                //TARGETS
                sData.setTargets(BitConverter.ToInt16(data, position + 1330));
                //GENERALTYPE
                sData.setTypeGeneral(BitConverter.ToInt16(data, position + 1332));
                //FACTION
                sData.setFaction(BitConverter.ToInt32(data, position + 1340));
                //NEEDSWEPTOCAST
                sData.setNeedsWepToCast(BitConverter.ToInt32(data, position + 1344));
                //ULTISETID
                sData.setUltiSetID(BitConverter.ToInt32(data, position + 1348));
                //ISCASTABLE
                sData.setIsCastable(Convert.ToBoolean(data[position + 1352]));
                //HEALCOST -signed
                sData.setHealCost(BitConverter.ToInt16(data, position + 1368));
                //MANACOST -signed
                sData.setManaCost(BitConverter.ToInt16(data, position + 1370));
                //STAMINACOST -signed
                sData.setStaminaCost(BitConverter.ToInt16(data, position + 1372));
                //DMG
                sData.setDmg(BitConverter.ToInt32(data, position + 1390));
                //SPEED
                sData.setSpeed(BitConverter.ToSingle(data, position + 1408));
                if (real_length >= 1508)
                {
                    //EFFID
                    sData.setEffectID(0, data[position + 1500]);
                    //EFFDURATION
                    sData.setEffectDuration(0, data[position + 1502]);
                    //EFFVALUE -signed
                    sData.setEffectValue(0, data[position + 1504]);
                    if (real_length >= 1516)
                    {
                        //EFFID
                        sData.setEffectID(1, data[position + 1508]);
                        //EFFDURATION
                        sData.setEffectDuration(1, data[position + 1510]);
                        //EFFVALUE -signed
                        sData.setEffectValue(1, data[position + 1512]);
                        if (real_length >= 1524)
                        {
                            //EFFID
                            sData.setEffectID(2, data[position + 1516]);
                            //EFFDURATION
                            sData.setEffectDuration(2, data[position + 1518]);
                            //EFFVALUE -signed
                            sData.setEffectValue(2, data[position + 1520]);
                        }
                    }
                }

                SkillDataCache.Instance.addToSkills(sData.getID(), sData);

                skills_count++;
                position += real_length;
            }

            Logger.WriteLog(Logger.LogTypes.Info, "Loaded data for {0} skills", skills_count);
            return(true);
        }
예제 #29
0
파일: Task.cs 프로젝트: webconfig/Design
 public virtual void Deserialize(XmlNode node,SkillData data)
 {
 }
예제 #30
0
 public static void fwrite_skill(TextReaderProxy proxy, SkillData skill)
 {
     // TODO
 }
예제 #31
0
 public static void WriterSkillData(CharacterSkillManager chSkillManager
                                    , SkillData skillData)
 {
     chSkillManager.skills.Add(skillData);
 }
        internal override List <AbstractBuffEvent> SpecialBuffEventProcess(Dictionary <AgentItem, List <AbstractBuffEvent> > buffsByDst, Dictionary <long, List <AbstractBuffEvent> > buffsById, SkillData skillData)
        {
            var res = new List <AbstractBuffEvent>();

            if (buffsById.TryGetValue(56118, out List <AbstractBuffEvent> list))
            {
                var sappingSurgeByDst = list.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList());
                foreach (KeyValuePair <AgentItem, List <AbstractBuffEvent> > pair in sappingSurgeByDst.Where(x => x.Value.Exists(y => y is BuffRemoveSingleEvent)))
                {
                    var sglRemovals = pair.Value.Where(x => x is BuffRemoveSingleEvent).ToList();
                    foreach (AbstractBuffEvent sglRemoval in sglRemovals)
                    {
                        AbstractBuffEvent ba = pair.Value.LastOrDefault(x => x is BuffApplyEvent && Math.Abs(x.Time - sglRemoval.Time) < 5);
                        if (ba != null)
                        {
                            res.Add(new BuffRemoveAllEvent(sglRemoval.By, pair.Key, ba.Time - 1, int.MaxValue, ba.BuffSkill, 0, int.MaxValue));
                            res.Add(new BuffRemoveManualEvent(sglRemoval.By, pair.Key, ba.Time - 1, int.MaxValue, ba.BuffSkill));
                        }
                    }
                }
            }
            return(res);
        }
예제 #33
0
    // Update is called once per frame
    void FixedUpdate()
    {
        switch (states) {
        case "normal":
            if(!CanNotMove && path != null && path.Count != 0)
            {
                if(MoveTowards(path[0]))
                {
                    path.RemoveAt(0);
                    if (path.Count == 0) {
                        MakeStop();
                    }
                }
            }
            break;
        case "doAction":
            if (Time.fixedTime - singDate >= singTimeout) {
                singDate = Time.fixedTime;
                states = "doActing";
                ani.Play(doActionClipName);
                weaponAin.Play("StickAttack0_" + curClipName);
            }
            break;
        case "doActing":
            if (ani.CurrentFrame == 1) {
                if (doActionNameFix == "Attack" && currentSkill != null) {
        //					if (RoleData.WeaponData.Type == WeaponType.EmptyHanded) {
                        states = "doActionEnd";
                        for (int i = 0; i < currentSkill.BulletDatas.Count; i++) {
                            Messenger.Broadcast<BulletData>(NotifyTypes.ShootBullet, currentSkill.BulletDatas[i]);
                        }
                        currentSkill = null;
                        doActionNameFix = "";
        //					}
        //					else {
        //						states = "checkingWeapon";
        ////						weapon.DOLocalRotate(new Vector3(0, 0, -90), 0.5f)
        //						weapon.DOPunchRotation(new Vector3(0, 0, -90), 0.2f)
        //							.OnComplete(() => {
        //								states = "doActionEnd";
        //								Messenger.Broadcast<BulletData>(NotifyTypes.ShootBullet, currentSkill.Bullet);
        //								currentSkill = null;
        //								doActionNameFix = "";
        //							});
        //					}
                }
            }
            break;
        case "checkingWeapon":

            break;
        case "doActionEnd":
            if (ani.CurrentFrame >= ani.CurrentClip.frames.Length - 1) {
                endAction();
                Debug.LogWarning("doActionEnd");
            }
            break;
        case "jump":

            break;
        default:
            break;
        }
    }
예제 #34
0
 public override List <AbstractDamageEvent> SpecialDamageEventProcess(Dictionary <AgentItem, List <AbstractDamageEvent> > damageBySrc, Dictionary <AgentItem, List <AbstractDamageEvent> > damageByDst, Dictionary <long, List <AbstractDamageEvent> > damageById, SkillData skillData)
 {
     NegateDamageAgainstBarrier(Targets.Select(x => x.AgentItem).ToList(), damageByDst);
     return(new List <AbstractDamageEvent>());
 }
예제 #35
0
        public static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("Need the input file.");
                Console.Read();
                return;
            }

            var inFile   = args[0];
            var outFile  = inFile + ".json";
            var outFile2 = inFile + ".txt";

            if (!File.Exists(inFile))
            {
                Console.WriteLine("File not found.");
                Console.Read();
                return;
            }

            var isDone = false;

            try
            {
                // OBS:
                // It's better to convert using same class model
                // as the one used in AikaEmu.GameServer.

                var fileName = Path.GetFileNameWithoutExtension(inFile);
                if (fileName == null)
                {
                    return;
                }

                BaseConvert convert = null;
                switch (fileName)
                {
                case "ItemList":
                    convert = new ItemList();
                    break;

                case "npcpos":
                    convert = new NpcPos();
                    break;

                case "MobPos":
                    convert = new MobPos();
                    break;

                case "ExpList":
                    convert = new ExpList();
                    break;

                case "PranExpList":
                    convert = new PranExpList();
                    break;

                case "MN":
                    convert = new Mn();
                    break;

                case "GearCore":
                    convert = new GearCore();
                    break;

                case "ConvertCore":
                    convert = new ConvertCore();
                    break;

                case "Title":
                    convert = new Title();
                    break;

                case "Recipe":
                    convert = new Recipe();
                    break;

                case "RecipeRate":
                    convert = new RecipeRate();
                    break;

                case "ItemEffect":
                    convert = new ItemEffect();
                    break;

                case "ReinforceA":
                case "ReinforceW":
                    convert = new ReinforceA();
                    ((ReinforceA)convert).IsReinforceW = fileName == "ReinforceW";
                    break;

                case "Reinforce2":
                case "Reinforce3":
                    convert = new Reinforce2();
                    break;

                case "MakeItems":
                    convert = new MakeItems();
                    break;

                case "SetItem":
                    convert = new SetItem();
                    break;

                case "SkillData":
                    convert = new SkillData();
                    break;

                case "Quest":
                    convert = new Quest();
                    break;

                case "Map":
                    convert = new Map();
                    break;

                case "ObjPos":
                    convert = new ObjPos();
                    break;

                case "SPosition":
                    convert = new SPosition();
                    break;

                case "Dialog":
                    convert = new Dialog();
                    break;

                case "StatusPoint":
                    convert = new StatusPoint();
                    break;
                }

                if (convert != null)
                {
                    convert.SetupFile(inFile, outFile, outFile2);
                    convert.Convert();
                    convert.Save();
                    isDone = true;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.Read();
                throw;
            }
            finally
            {
                if (isDone)
                {
                    Console.WriteLine("Input: " + Path.GetFileName(inFile));
                    Console.WriteLine("Output: " + Path.GetFileName(outFile));
                    Console.WriteLine("OutputSql: " + Path.GetFileName(outFile2));
                    Console.WriteLine("Converted with success.");
                }
                else
                {
                    Console.WriteLine("Error in conversion.");
                }
            }

            Console.Read();
        }
예제 #36
0
 public virtual void OnSkillHit(BaseEntity2D sender, SkillData skill, Vector2 point)
 {
 }
예제 #37
0
        //---------------------------------------AI Condition相关begin------------------------------------------------

        public override bool ProcInSkillRange(int skillBagIndex)
        {
            if (m_monsterData.skillIds.Count < skillBagIndex || skillBagIndex <= 0)
            {
                return(false);
            }
            skillBagIndex--;
            if (blackBoard.enemyId == 0)
            {
                return(false);
            }

            int skillId = m_monsterData.skillIds[skillBagIndex];

            if (!SkillData.dataMap.ContainsKey(skillId))
            {
                return(false);
            }


            EntityParent enemy = GetTargetEntity();

            if (enemy == null)
            {
                return(false);
            }

            bool rnt = false;


            if (!SkillData.dataMap.ContainsKey(skillId))
            {
                return(false);
            }

            TargetRangeType targetRangeType = 0;

            SkillData tmpSkillData = SkillData.dataMap[skillId];

            //逐个skillaction来判断是否等于TargetRangeType.WorldRange
            foreach (var tmpSkillActionId in tmpSkillData.skillAction)
            {
                if (SkillAction.dataMap[tmpSkillActionId].targetRangeType == (int)TargetRangeType.WorldRange)
                {
                    targetRangeType = TargetRangeType.WorldRange;
                }
            }

            if (targetRangeType == TargetRangeType.WorldRange)
            {
                rnt = skillManager.IsInSkillRange(skillId, blackBoard.enemyId);
            }
            else
            {
                int skillRange = GetSkillRange(skillId);


                int   distance     = skillRange;
                float entityRadius = enemy.MonsterData.scaleRadius;
                if (entityRadius <= 0.1f)
                {
                    entityRadius = (float)enemy.GetIntAttr("scaleRadius");
                }

                int curdistance = (int)(Vector3.Distance(Transform.position, enemy.Transform.position) * 100 - entityRadius);


                if (distance >= curdistance)
                {
                    rnt = true;
                    //Mogo.Util.LoggerHelper.Debug("IsInSkillRange:true");
                }
                else
                {
                    rnt = false;
                    //Mogo.Util.LoggerHelper.Debug("IsInSkillRange:false");
                }
            }
            return(rnt);
        }
예제 #38
0
 internal AbstractCastEvent(CombatItem baseItem, AgentData agentData, SkillData skillData) : base(baseItem.Time)
 {
     Skill  = skillData.Get(baseItem.SkillID);
     Caster = agentData.GetAgent(baseItem.SrcAgent, baseItem.Time);
 }
예제 #39
0
    protected override void InitConfig(SkillData skillData)
    {
        base.InitConfig(skillData);

        deAtt = skillData.param1 * skillLevel;
    }
예제 #40
0
        internal override List <AbstractBuffEvent> SpecialBuffEventProcess(Dictionary <AgentItem, List <AbstractBuffEvent> > buffsByDst, Dictionary <long, List <AbstractBuffEvent> > buffsById, SkillData skillData)
        {
            NPC mainTarget = GetMainTarget();

            if (mainTarget == null)
            {
                throw new MissingKeyActorsException("Xera not found");
            }
            var res = new List <AbstractBuffEvent>();

            if (_xeraSecondPhaseStartTime != 0)
            {
                res.Add(new BuffRemoveAllEvent(mainTarget.AgentItem, mainTarget.AgentItem, _xeraSecondPhaseStartTime, int.MaxValue, skillData.Get(762), 1, int.MaxValue));
                res.Add(new BuffRemoveManualEvent(mainTarget.AgentItem, mainTarget.AgentItem, _xeraSecondPhaseStartTime, int.MaxValue, skillData.Get(762)));
            }
            return(res);
        }
예제 #41
0
 public void ClearGraph()
 {
     this.CurrentData= null;
     base.Repaint();
 }
예제 #42
0
        /// <summary>
        /// 添加技能冷却
        /// </summary>
        /// <param name="magicCode"></param>
        public void AddSkillCoolDownForClient(GameClient client, int skillID)
        {
            SystemXmlItem systemMagic = null;

            if (!GameManager.SystemMagicQuickMgr.MagicItemsDict.TryGetValue(skillID, out systemMagic))
            {
                return;
            }

            long nowTicks = TimeUtil.NOW();
            int  cdTime   = systemMagic.GetIntValue("CDTime");

            if (cdTime <= 0) //不需要CD时间
            {
                int skillType = systemMagic.GetIntValue("SkillType");
                if (skillType == 1)
                {
                    if (null != client.ClientData.SkillDataList)
                    {
                        for (int i = 0; i < client.ClientData.SkillDataList.Count; i++)
                        {
                            SkillData skillData = client.ClientData.SkillDataList[i];
                            if (null == skillData || skillData.DbID > 0)
                            {
                                continue;
                            }

                            Global.AddCoolDownItem(SkillCoolDownDict, skillData.SkillID, nowTicks, 375);//普通攻击统一加个375毫秒的CD
                        }
                    }

                    return;
                }

                //连续技能使用首段技能的CD
                int nParentMagicID = systemMagic.GetIntValue("ParentMagicID");
                if (nParentMagicID <= 0) //不需要CD时间
                {
                    return;
                }
                if (!GameManager.SystemMagicQuickMgr.MagicItemsDict.TryGetValue(nParentMagicID, out systemMagic))
                {
                    return;
                }
                cdTime = systemMagic.GetIntValue("CDTime");
                // 判断父技能的CD是否到时
                if (cdTime <= 0)
                {
                    return;
                }
            }

            int pubCDTime = systemMagic.GetIntValue("PubCDTime");

            Global.AddCoolDownItem(SkillCoolDownDict, skillID, nowTicks, cdTime * 1000 - 500);
            if (pubCDTime > 0)
            {
                if (null != client.ClientData.SkillDataList)
                {
                    for (int i = 0; i < client.ClientData.SkillDataList.Count; i++)
                    {
                        SkillData skillData = client.ClientData.SkillDataList[i];
                        if (null == skillData)
                        {
                            continue;
                        }

                        Global.AddCoolDownItem(SkillCoolDownDict, skillData.SkillID, nowTicks, pubCDTime * 1000);
                    }
                }
            }
        }
예제 #43
0
파일: SkillData.cs 프로젝트: seonwifi/Unity
 public virtual void Add(SkillData tableSample)
 {
     m_DataDic[tableSample.index] = tableSample;
 }
예제 #44
0
    /// <summary>
    /// 加载选择的数据源
    /// </summary>
    /// <param name="behaviorSource"></param>
    private void LoadDataSource(SkillData _data)
    {
        CurrentData = _data;//给当前行为树赋值

        //设计器加载数据
        this.mGraphDesigner.Load(CurrentData);

        //Vector2 vector2 = this.mGraphDesigner.rootNodePosition();
        //this.mGraphOffset = new Vector2(-vector2.x +this.MidRect.width / (2f * this.mGraphZoom) - 50f, -vector2.y + 50f);
    }
예제 #45
0
파일: NfSkill.cs 프로젝트: wenhu2010/mygame
    public void Init(Character attacter, SkillData data, int id, int lv)
    {
        _id = id;
        _lv = lv;
        _skillData = data;
        this.attacker = attacter;

        damType = (DamageType)(_skillData.DamageType);
        rangeType = (RangeType)(_skillData.Range);
        attriType = _skillData.AttriType;

        string strSingSound = _skillData.SingSound;
        singSound = JsonMapper.ToObject(strSingSound);
        string strFireSound = _skillData.FireSound;
        fireSound = JsonMapper.ToObject(strFireSound);

        InitDamage();
        InitTdamage();

        damageTranJson = JsonMapper.ToObject(_skillData.DamageTran);
    }
예제 #46
0
        //
        public static List <InstantCastEvent> ComputeInstantCastEvents(List <Player> players, CombatData combatData, SkillData skillData, AgentData agentData)
        {
            var instantCastFinders = new HashSet <InstantCastFinder>(_genericInstantCastFinders);
            var res = new List <InstantCastEvent>();

            foreach (Player p in players)
            {
                switch (p.Prof)
                {
                //
                case "Elementalist":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Tempest":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    TempestHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Weaver":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    WeaverHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Necromancer":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Reaper":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ReaperHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Scourge":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ScourgeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Mesmer":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Chronomancer":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ChronomancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Mirage":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    MirageHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Thief":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Daredevil":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DaredevilHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Deadeye":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DeadeyeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Engineer":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Scrapper":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ScrapperHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Holosmith":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    HolosmithHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Ranger":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Druid":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DruidHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Soulbeast":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    SoulbeastHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Revenant":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Herald":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    HeraldHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Renegade":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    RenegadeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Guardian":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Dragonhunter":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DragonhunterHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Firebrand":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    FirebrandHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Warrior":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Berserker":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    BerserkerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Spellbreaker":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    SpellbreakerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;
                }
            }
            res.AddRange(ComputeInstantCastEvents(combatData, skillData, agentData, instantCastFinders.ToList()));
            return(res);
        }
예제 #47
0
 /// <summary>
 /// 普通攻击技能
 /// 攻击距离
 /// </summary>
 /// <param name="type">Type.</param>
 /// <param name="data">Data.</param>
 public void AddSkillDemo(CooldownType type, SkillData data)
 {
     skillDict.Add (type, data);
 }
예제 #48
0
        private static List <InstantCastEvent> ComputeInstantCastEvents(CombatData combatData, SkillData skillData, AgentData agentData, List <InstantCastFinder> instantCastFinders)
        {
            var   res   = new List <InstantCastEvent>();
            ulong build = combatData.GetBuildEvent().Build;

            foreach (InstantCastFinder icf in instantCastFinders)
            {
                if (icf.Available(build))
                {
                    if (icf.NotAccurate)
                    {
                        skillData.NotAccurate.Add(icf.SkillID);
                    }
                    res.AddRange(icf.ComputeInstantCast(combatData, skillData, agentData));
                }
            }
            return(res);
        }
예제 #49
0
    public bool drawVariables(SkillData _data)
    {
        if (_data == null)
        {
            return false;
        }
        GUILayout.BeginHorizontal(new GUILayoutOption[0]);
        GUILayout.Label("Name", new GUILayoutOption[0]);
        GUI.SetNextControlName("Name");
        this.variableName = GUILayout.TextField(this.variableName, new GUILayoutOption[]
            {
                GUILayout.Width(220f)
            });
        if (this.mFocusNameField)
        {
            GUI.FocusControl("Name");
            this.mFocusNameField = false;
        }
        GUILayout.EndHorizontal();
        GUILayout.Space(2f);
        GUILayout.BeginHorizontal(new GUILayoutOption[0]);
        GUILayout.Label("Type", new GUILayoutOption[0]);
        this.variableTypeIndex = EditorGUILayout.Popup(this.variableTypeIndex, this.sharedValueTypes, EditorStyles.toolbarPopup, new GUILayoutOption[]
            {
                GUILayout.Width(169f)
            });
        GUILayout.Space(8f);
        bool flag = false;
        //List<SharedVariable> list = _data.Variables;
        bool flag2 = !this.variableName.Equals("") && _data.GetVariable(this.variableName) == null;
        GUI.enabled = flag2;
        if (GUILayout.Button("Add", EditorStyles.toolbarButton, new GUILayoutOption[]{GUILayout.Width(40f)}) && flag2)
        {
            if (!_data.Variables.ContainsKey(this.variableName))
            {
                SharedVariable sharedVariable = ScriptableObject.CreateInstance(string.Format("Shared{0}", this.sharedValueTypes[this.variableTypeIndex])) as SharedVariable;
                sharedVariable.name = this.variableName;
                sharedVariable.IsShared = true;
                _data.Variables.Add(sharedVariable.name, sharedVariable);
                this.variableName = "";
                flag = true;
            }
        }
        GUI.enabled = true;
        GUILayout.Space(6f);
        GUILayout.EndHorizontal();
        //BehaviorDesignerUtility.DrawContentSeperator(2);
        GUILayout.Space(4f);
        this.mScrollPosition = GUILayout.BeginScrollView(this.mScrollPosition, new GUILayoutOption[0]);
        if (_data.Variables != null)
        {
            List<string> removekeys = new List<string>();
            foreach (var item in _data.Variables.Values)
            {
                EditorGUI.BeginChangeCheck();
                //SharedVariable sharedVariable2 = item;
                //if (sharedVariable2 == null)
                //{
                //    list = null;
                //    flag = true;
                //    break;
                //}
                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                if (GUILayout.Button("—", new GUILayoutOption[]{GUILayout.Width(16f)}))
                {
                    removekeys.Add(item.name);
                    flag = true;
                    break;
                }
                GUILayout.Label(item.name, new GUILayoutOption[]
                    {
                        GUILayout.Width(128f)
                    });
                bool flag3 = false;
                switch (item.ValueType)
                {
                    case SharedVariableTypes.Vector2:
                    case SharedVariableTypes.Vector3:
                    case SharedVariableTypes.Vector4:
                    case SharedVariableTypes.Quaternion:
                    case SharedVariableTypes.Rect:
                        GUILayout.EndHorizontal();
                        flag3 = true;
                        break;
                }
                VariableInspector.DrawSharedVariableValue(item, 160);
                if (!flag3)
                {
                    GUILayout.EndHorizontal();
                }
                GUILayout.Space(4f);
                if (EditorGUI.EndChangeCheck())
                {
                    flag = true;
                }
            }
            if(removekeys.Count>0)
            {
                for(int i=0;i<removekeys.Count;i++)
                {
                    _data.Variables.Remove(removekeys[i]);
                }
                removekeys.Clear();
            }

        }
        GUILayout.EndScrollView();
        return flag;
    }
예제 #50
0
 public void Reset()
 {
     _skillsData = new SkillData();
 }
예제 #51
0
파일: Unit.cs 프로젝트: seonwifi/Unity
    public bool Attack(int v_id)
    {
        SkillData selectSkill = null;
        if(v_id < m_SkillDataList.Count)
        {
            selectSkill = m_SkillDataList[v_id];
        }

        if(selectSkill != null)
        {
            m_isAttack = true;
            MotionChange(ref selectSkill.motion_name, 0.25f, 0, 0);
            m_currentSkill = selectSkill;
            m_attackStartTime = Time.time;
            m_attackTime   = selectSkill.attack_time;
        }
        else
        {
            m_attackStartTime = Time.time;
            m_attackTime = 0;
            return false;
        }
        return true;
    }
예제 #52
0
    /// <summary>
    /// 按类型添加技能到相应的技能字典
    /// </summary>
    public void AddSkill(string id)
    {
        if (id == string.Empty)
        {
            return;
        }
        SkillData tempSkill = ResMgr.Instance.Load <SkillData>(id);

        if (tempSkill == null)
        {
            return;
        }
        if (tempSkill.skillTag == SkillTag.FixSkill)
        {
            if (tempSkill.key != ReflectKey.none)
            {
                switch (tempSkill.key)
                {
                case ReflectKey.attack:
                    tempCB = KeyCodeMgr.Instance.Attack;
                    break;

                case ReflectKey.jump:
                    tempCB = KeyCodeMgr.Instance.Jump;
                    break;

                case ReflectKey.sprint:
                    tempCB = KeyCodeMgr.Instance.Sprint;
                    break;

                case ReflectKey.superSprint:
                    tempCB = KeyCodeMgr.Instance.SuperSprint;
                    break;

                case ReflectKey.recover:
                    tempCB = KeyCodeMgr.Instance.Recover;
                    break;
                }
                if (tempCB.SkillID == null)
                {
                    tempCB.AttachSkill(id);
                }
            }
            if (!FixSkill.ContainsKey(id))
            {
                FixSkill.Add(id, tempSkill);
            }
            tempSkill.owner = GameManager.Instance.playerGO;
            //处理此技能所附带的连击技能
            while (tempSkill.isBatter)
            {
                SkillData batter = ResMgr.Instance.Load <SkillData>(tempSkill.nextBatterID);
                if (!FixSkill.ContainsKey(batter.skillID))
                {
                    FixSkill.Add(batter.skillID, batter);
                }
                batter.owner        = GameManager.Instance.playerGO;
                batter.coolDownTime = -batter.coolTime;
                if (batter.nextBatterID == tempSkill.skillID)
                {
                    break;
                }
                tempSkill = batter;
            }
            //只有平砍是需要单独处理组合按键,其他有组合按键的技能都由物品带来,无需额外处理
            if (tempSkill.hasComboKey && tempSkill.key == ReflectKey.attack)
            {
                SkillData up = ResMgr.Instance.Load <SkillData>(tempSkill.upKeySkillID);
                if (up != null && !FixSkill.ContainsKey(up.skillID))
                {
                    FixSkill.Add(up.skillID, up);
                }
                up.owner        = GameManager.Instance.playerGO;
                up.coolDownTime = -up.coolTime;
                SkillData down = ResMgr.Instance.Load <SkillData>(tempSkill.downKeySkillID);
                if (down != null && !FixSkill.ContainsKey(down.skillID))
                {
                    FixSkill.Add(down.skillID, down);
                }
                down.owner        = GameManager.Instance.playerGO;
                down.coolDownTime = -down.coolTime;
            }
            if (tempSkill.canBeChangeByBadge)
            {
                SkillData that = ResMgr.Instance.Load <SkillData>(tempSkill.skillIDIfChanged);
                that.owner = GameManager.Instance.playerGO;
            }
        }
        else
        {
            if (!badgeSkill.ContainsKey(id))
            {
                badgeSkill.Add(id, tempSkill);
            }
            tempSkill.owner = GameManager.Instance.playerGO;
        }
        if (tempSkill.hasCoolTime)
        {
            tempSkill.coolDownTime = -tempSkill.coolTime;
        }
    }
예제 #53
0
 public override void Deserialize(XmlNode node,SkillData _data)
 {
     Init(null, node);
 }
예제 #54
0
 public AbstractCastEvent(CombatItem startItem, AgentData agentData, SkillData skillData) : base(startItem.Time)
 {
     Skill  = skillData.Get(startItem.SkillID);
     Caster = agentData.GetAgent(startItem.SrcAgent);
 }
예제 #55
0
 /// <summary>
 /// Uses the skill.
 /// </summary>
 /// <param name="skill">Skill.</param>
 public void UseSkill(SkillData skill)
 {
     if (!canUseSkill) {
         return;
     }
     canUseSkill = false;
     currentSkill = skill;
     weapon.DOKill();
     DoAction(currentSkill.BulletDatas[0].ToPosition, null, currentSkill.SingTime, "Attack");
 }
예제 #56
0
 public LevelComponent(SkillData skillData) : base(skillData)
 {
 }
예제 #57
0
    void OnForgetEnvet(uint skId)
    {
        List <COM_Skill> skills = GetMianSkillList();

        skillNumLab.text = skills.Count + "/10";

        for (int i = 0; i < _mainSkillList.Count; ++i)
        {
            // if (_mainSkillList[i].GetComponent<SkillCellUI>().data.id_ == (int)skId)
            //{
            //UpdateSKillInfoLevel(x.GetComponent<SkillCellUI>().SkillTabData.name_);
            //_mainSkillList.Remove(_mainSkillList[i]);
            _mainSkillList[i].transform.parent = null;
            skillGrid.RemoveChild(_mainSkillList[i].transform);
            Destroy(_mainSkillList[i]);
            // break;
            // }
        }
        _mainSkillList.Clear();

        for (int k = 0; k < skillCellList.Count; k++)
        {
            skillCellList[k].transform.parent = null;
            skillCellList[k].gameObject.SetActive(false);
            skillCellPoolList.Add(skillCellList[k]);
        }
        skillCellList.Clear();

        skillGrid.Reposition();


        for (int i = 0; i < skills.Count; i++)
        {
            GameObject obj = Object.Instantiate(skillCell.gameObject) as GameObject;
            obj.SetActive(true);
            SkillData   sData = SkillData.GetData((int)skills[i].skillID_, (int)skills[i].skillLevel_);
            SkillCellUI sCell = obj.GetComponent <SkillCellUI>();
            obj.name              = sData._Name;
            sCell.SkillName.text  = sData._Name;
            sCell.SkillLevel.text = sData._Level.ToString();
            HeadIconLoader.Instance.LoadIcon(sData._ResIconName, obj.GetComponent <SkillCellUI>().SkillIcon);
            if (!iconName_.Contains(sData._ResIconName))
            {
                iconName_.Add(sData._ResIconName);
            }
            sCell.data      = sData;
            sCell.skillInst = skills[i];

            if (_profData.isProudSkill(_profType, (int)skills[i].skillID_, _profLevel))
            {
                obj.transform.FindChild("deyi").GetComponent <UISprite>().gameObject.SetActive(true);
            }

            UIManager.SetButtonEventHandler(obj, EnumButtonEvent.OnClick, OnClickMainSkill, 0, 0);
            skillGrid.AddChild(obj.transform);
            _mainSkillList.Add(obj);
            obj.transform.localScale = Vector3.one;
        }



        skillDesc.text     = "";
        nextDescLabel.text = "";
        expLab.text        = "";
        forgetBtn.gameObject.SetActive(false);
        learnBtn.gameObject.SetActive(false);
        topinfo.gameObject.SetActive(false);
        kjBtn.gameObject.SetActive(false);
        messageObj.SetActive(false);
        PopText.Instance.Show(LanguageManager.instance.GetValue("yiwangskill"));

        curCell = null;
        if (_mainSkillList.Count > 0)
        {
            curCell = _mainSkillList[0].GetComponent <SkillCellUI> ();
            curCell.back.gameObject.SetActive(true);
            //curCell.buleBack0.gameObject.SetActive (true);
            //curCell.buleBack1.gameObject.SetActive (true);
            UpdatetopInfo(_mainSkillList[0].GetComponent <SkillCellUI> ());
        }
    }
예제 #58
0
    void Start()
    {
        iconName_ = new List <string>();
        GlobalValue.Get(Constant.C_SkillExpItem, out itemid);
        kjBtn.gameObject.SetActive(false);
        messageObj.SetActive(false);
        UIManager.SetButtonEventHandler(kjBtn.gameObject, EnumButtonEvent.OnClick, OnkjBtn, 0, 0);
        UIManager.SetButtonEventHandler(closeBtn.gameObject, EnumButtonEvent.OnClick, OnClose, 0, 0);
        UIManager.SetButtonEventHandler(forgetBtn.gameObject, EnumButtonEvent.OnClick, OnForgetBtn, 0, 0);
        UIManager.SetButtonEventHandler(learnBtn.gameObject, EnumButtonEvent.OnClick, OnLearnBtn, 0, 0);
        UIManager.SetButtonEventHandler(wenhaoBtn.gameObject, EnumButtonEvent.OnClick, OnWenhaoBtn, 0, 0);

        UIManager.SetButtonEventHandler(battleBtn.gameObject, EnumButtonEvent.OnClick, OnBattleBtn, 0, 0);
        UIManager.SetButtonEventHandler(liftBtn.gameObject, EnumButtonEvent.OnClick, OnLiftBtn, 0, 0);


        GamePlayer.Instance.SkillExpEnvet += new RequestEventHandler <int> (OnSkillExpEnevt);


        List <COM_Skill> skills = GetMianSkillList();

        skillNumLab.text = skills.Count + "/10";
        expLab.text      = "";
        _profType        = GamePlayer.Instance.GetIprop(PropertyType.PT_Profession);
        _profLevel       = GamePlayer.Instance.GetIprop(PropertyType.PT_ProfessionLevel);
        _profData        = Profession.get((JobType)_profType, _profLevel);
        zhiyeLab.text    = _profData.jobName_;
        OpenPanelAnimator.PlayOpenAnimation(this.panel, () => {
            for (int i = 0; i < skills.Count; i++)
            {
                GameObject obj = Object.Instantiate(skillCell.gameObject) as GameObject;
                obj.SetActive(true);
                SkillData sData       = SkillData.GetData((int)skills[i].skillID_, (int)skills[i].skillLevel_);
                SkillCellUI sCell     = obj.GetComponent <SkillCellUI>();
                obj.name              = sData._Name;
                sCell.SkillName.text  = sData._Name;
                sCell.SkillLevel.text = sData._Level.ToString();
                HeadIconLoader.Instance.LoadIcon(sData._ResIconName, obj.GetComponent <SkillCellUI>().SkillIcon);
                if (!iconName_.Contains(sData._ResIconName))
                {
                    iconName_.Add(sData._ResIconName);
                }
                sCell.data      = sData;
                sCell.skillInst = skills[i];

                if (_profData.isProudSkill(_profType, (int)skills[i].skillID_, _profLevel))
                {
                    obj.transform.FindChild("deyi").GetComponent <UISprite>().gameObject.SetActive(true);
                }

                UIManager.SetButtonEventHandler(obj, EnumButtonEvent.OnClick, OnClickMainSkill, 0, 0);
                skillGrid.AddChild(obj.transform);
                _mainSkillList.Add(obj);
                obj.transform.localScale = Vector3.one;
            }

            expbar.gameObject.SetActive(true);

            forgetBtn.gameObject.SetActive(false);
            learnBtn.gameObject.SetActive(false);
            curCell = null;
            if (_mainSkillList.Count > 0)
            {
                //	UpdateSKillInfoLevel (_mainSkillList[0].name);
                curCell = _mainSkillList[0].GetComponent <SkillCellUI> ();
                curCell.back.gameObject.SetActive(true);
                //curCell.buleBack0.gameObject.SetActive (true);
                //curCell.buleBack1.gameObject.SetActive (true);
                UpdatetopInfo(_mainSkillList[0].GetComponent <SkillCellUI> ());
            }

            if (skillType_ != 0)
            {
                liftBtn.isEnabled = false;
                skillObj.gameObject.SetActive(false);
                gatherObj.gameObject.SetActive(true);
                gatherObj.GetComponent <GatherUI> ().ShowMe(minType_, minId_);
            }
            else
            {
                battleBtn.isEnabled = false;
            }
            GamePlayer.Instance.forgetSkillEnvet += new RequestEventHandler <uint> (OnForgetEnvet);
        });
    }
예제 #59
0
    static void ProcessAniRead(List <AnimationClip> aniclips)
    {
        string a_strBuf = "";

        a_strBuf = "idx_ui,casttime_f,hittime_f,mergetime_f,watingtime_f\n";

        List <SkillData> skillDatas = new List <SkillData>();

        //일단 유저꺼만 - 코스튬
        Resource.AniInfo aniInfo = null;

        //var enumerator = itemLowData.CostumeInfoDic.GetEnumerator();
        var enumerator = skillLowData.SkillSetInfoDic.GetEnumerator();

        while (enumerator.MoveNext())
        {
            //해당 리소스 데이터를 가져옴
            Resource.UnitInfo data = null;
            if (resourceLowData.UnitInfoDic.TryGetValue(enumerator.Current.Value.AniId, out data))
            {
                //평타1

                SkillData newData = new SkillData();
                newData.skillID = System.Convert.ToUInt32(enumerator.Current.Value.skill0[0]);
                newData.aniID   = data.AniAttack01;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = System.Convert.ToUInt32(enumerator.Current.Value.skill0[1]);
                newData.aniID   = data.AniAttack02;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = System.Convert.ToUInt32(enumerator.Current.Value.skill0[2]);
                newData.aniID   = data.AniAttack03;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = enumerator.Current.Value.skill1;
                newData.aniID   = data.AniSkill01;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = enumerator.Current.Value.skill2;
                newData.aniID   = data.AniSkill02;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = enumerator.Current.Value.skill3;
                newData.aniID   = data.AniSkill03;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);

                newData         = new SkillData();
                newData.skillID = enumerator.Current.Value.skill4;
                newData.aniID   = data.AniSkill04;

                if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                {
                    newData.aniName = aniInfo.aniName;
                }

                skillDatas.Add(newData);
            }
        }

        //몬스터스킬
        var enumerator2 = monsterLowData.MobInfoDic.GetEnumerator();

        while (enumerator2.MoveNext())
        {
            //해당 리소스 데이터를 가져옴
            Resource.UnitInfo data = null;
            if (resourceLowData.UnitInfoDic.TryGetValue(enumerator2.Current.Value.AniId, out data))
            {
                //평타1

                if (System.Convert.ToUInt32(enumerator2.Current.Value.skill[0]) != 0)
                {
                    SkillData newData = new SkillData();
                    newData.skillID = System.Convert.ToUInt32(enumerator2.Current.Value.skill[0]);
                    newData.aniID   = data.AniAttack01;

                    if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                    {
                        newData.aniName = aniInfo.aniName;
                    }

                    skillDatas.Add(newData);
                }

                if (System.Convert.ToUInt32(enumerator2.Current.Value.skill[1]) != 0)
                {
                    SkillData newData = new SkillData();
                    newData.skillID = System.Convert.ToUInt32(enumerator2.Current.Value.skill[1]);
                    newData.aniID   = data.AniAttack02;

                    if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                    {
                        newData.aniName = aniInfo.aniName;
                    }

                    skillDatas.Add(newData);
                }

                if (System.Convert.ToUInt32(enumerator2.Current.Value.skill[2]) != 0)
                {
                    SkillData newData = new SkillData();
                    newData.skillID = System.Convert.ToUInt32(enumerator2.Current.Value.skill[2]);
                    newData.aniID   = data.AniAttack03;

                    if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                    {
                        newData.aniName = aniInfo.aniName;
                    }

                    skillDatas.Add(newData);
                }

                if (System.Convert.ToUInt32(enumerator2.Current.Value.skill[3]) != 0)
                {
                    SkillData newData = new SkillData();
                    newData.skillID = System.Convert.ToUInt32(enumerator2.Current.Value.skill[3]);
                    newData.aniID   = data.AniAttack03;

                    if (resourceLowData.AniInfoDic.TryGetValue(newData.aniID, out aniInfo))
                    {
                        newData.aniName = aniInfo.aniName;
                    }

                    skillDatas.Add(newData);
                }
            }
        }

        for (int i = 0; i < skillDatas.Count; i++)
        {
            for (int j = 0; j < aniclips.Count; j++)
            {
                if (skillDatas[i].aniName.Equals(aniclips[j].name) && !skillDatas[i].aniName.Equals(""))
                {
                    //동일할경우
                    AnimationEvent[] aniEvents = AnimationUtility.GetAnimationEvents(aniclips[j]);

                    //int count = 0;
                    //uint iValue = (uint)skillDatas[i].skillID;

                    //노티만 체크하던 버전
                    //foreach (AnimationEvent aniEvent in aniEvents)
                    //{
                    //    if(aniEvent.functionName.Equals("SkillUse") )
                    //    {
                    //        ++count;
                    //        a_strBuf = a_strBuf + iValue.ToString() + "," + count.ToString() + "," + aniEvent.time.ToString() + "\n";
                    //    }
                    //}

                    float castTime       = 0;
                    float mergeTime      = 0;
                    float lastAttackTime = 0;
                    uint  iValue         = (uint)skillDatas[i].skillID;

                    a_strBuf = a_strBuf + iValue.ToString() + ",";

                    foreach (AnimationEvent aniEvent in aniEvents)
                    {
                        if (aniEvent.functionName.Equals("PrepareEnd"))
                        {
                            castTime = aniEvent.time;
                        }
                        else if (aniEvent.functionName.Equals("MergeTime"))
                        {
                            mergeTime = aniEvent.time;
                        }
                        else if (aniEvent.functionName.Equals("SkillUse"))
                        {
                            lastAttackTime = aniEvent.time;
                        }
                    }

                    a_strBuf = a_strBuf + castTime.ToString() + "," + lastAttackTime.ToString() + "," + mergeTime.ToString() + "," + aniclips[i].length.ToString() + "\n";
                }
            }
        }

        string a_temfname = Application.dataPath;

        a_temfname = a_temfname.Replace('\\', '/');
        string a_RootPath = a_temfname.Remove(a_temfname.LastIndexOf("/") + 1); //프로젝트가 있는 경로...

        if (!System.IO.Directory.Exists(a_RootPath + "/ExportAniEvent"))
        {
            System.IO.Directory.CreateDirectory(a_RootPath + "/ExportAniEvent");
        }

        string a_PathName = a_RootPath + "/ExportAniEvent/aniEvent.csv";

        System.IO.File.WriteAllText(a_PathName, a_strBuf);

        skillDatas.Clear();
    }
예제 #60
0
 protected void CopyDataFrom(SkillData data)
 {
     base.CopyDataFrom(data);
 }