Example #1
0
        public bool CanLevelUp(SkillItem skillItem)
        {
            ItemDTO reduceDTO = GetSkillUpdateItem();

            if (reduceDTO == null)
            {
                return(false);
            }
            int       level       = GetSkillLevel(skillItem.id);
            SkillItem skillConfig = Global.gApp.gGameData.SkillData.Get(skillItem.id);

            Skill_dataItem levelData = Global.gApp.gGameData.SkillDataConfig.Get(level + 1);

            float[] param = null;
            try
            {
                param = ReflectionUtil.GetValueByProperty <Skill_dataItem, float[]>(skillItem.id, levelData);
            }
            catch (Exception e)
            {
                Debug.LogError(skillItem.id + "在等级表中不存在");
            }

            return(skillConfig.weight > 0 && param != null && param.Length > 0 && GameItemFactory.GetInstance().GetItem(reduceDTO.itemId) >= reduceDTO.num);
        }
	public void refresh(HeroData data, SkillItem skill, int idx)
	{
		Icon.spriteName = skill.icon;
		Name.text   = skill.name;
		Level.text  = skill.level + "级";
		CostMp.text = ""+skill.consume;
		CDTime.text = ""+(int)skill.cd;
		Des1.text   = skill.describe;

		skill.effectDescribe.refresh (data, skill);
		Des2.text = skill.effectDescribe.des;

		int cost = 0;
		skillIdx = idx;
		switch(skillIdx)
		{
		case 0:
			cost = StaticSkilllevel.Instance().getInt (skill.level, "price0");
			break;
		case 1:
			cost = StaticSkilllevel.Instance().getInt (skill.level, "price1");	
			break;
		case 2:
			cost = StaticSkilllevel.Instance().getInt (skill.level, "price2");
			break;
		case 3:
			cost = StaticSkilllevel.Instance().getInt (skill.level, "price3");
			break;
		}
		LvupCost.text = "" + cost;
	}
Example #3
0
    void Start()
    {
        GameObject grid = transform.Find("Scroll View/Grid").gameObject;

        playerStatus = GameObject.FindGameObjectWithTag(Tags.player).GetComponent <PlayerStatus>();
        switch (playerStatus.heroType)
        {
        case HeroType.Magician:
            ids = SkillsInfo._instance.GetSkillInfoBy(ApplicableRole.Magician);
            break;

        case HeroType.Swordman:
            ids = SkillsInfo._instance.GetSkillInfoBy(ApplicableRole.Swordman);
            break;
        }
        UIGrid uigrid = grid.GetComponent <UIGrid>();

        foreach (int id in ids)
        {
            GameObject go = NGUITools.AddChild(grid, skillItemPrefab);
            uigrid.AddChild(go.transform);
            SkillItem item = go.GetComponent <SkillItem>();
            item.SetId(id);
        }
    }
Example #4
0
        /// <summary>
        /// Parses skill related data
        /// </summary>
        private void ParseSkillData(Stream stream)
        {
            var apiController = new GW2APIController();

            using (var reader = CreateReader(stream))
            {
                // 4 bytes: player count
                int skillCount = reader.ReadInt32();
                //TempData["Debug"] += "Skill Count:" + skill_count.ToString();
                // 68 bytes: each skill
                for (int i = 0; i < skillCount; i++)
                {
                    // 4 bytes: skill ID
                    int skillId = reader.ReadInt32();

                    // 64 bytes: name
                    var name = ParseHelper.GetString(stream, 64);
                    if (skillId != 0 && int.TryParse(name, out int n) && n == skillId)
                    {
                        //was it a known buff?
                        if (Boon.BoonsByIds.TryGetValue(skillId, out Boon boon))
                        {
                            name = boon.Name;
                        }
                    }
                    //Save

                    var skill = new SkillItem(skillId, name);

                    skill.SetGW2APISkill(apiController);
                    _skillData.Add(skill);
                }
            }
        }
Example #5
0
    private void BuySkscrollItem(int itemIndex, GameObject itemUseSet)
    {
        //스킬
        SkillItem item = (SkillItem)StateManager.Instance.skillScrollItems[itemIndex];

        if (StateManager.Instance.playGold >= item.Price)
        {
            if (SkscrollNum[itemIndex] == 0)
            {
                itemUseNameText.text    = "이 름: " + item.Name;
                itemUseExplainText.text = "설 명: " + item.Explain;
                itemUseImage.GetComponent <Image>().sprite = (Sprite)Resources.Load(item.Image, typeof(Sprite));

                itemUseSet = Instantiate(itemUseSetObj) as GameObject;
                itemUseSet.transform.SetParent(skillUseGrid.transform);
                itemUseSet.transform.localScale = new Vector3(1, 1, 1);
                itemUseSet.name        = "Skill" + itemIndex;
                SkScrollBag[itemIndex] = itemUseSet;
            }
            StateManager.Instance.playGold -= item.Price;
            SkscrollNum[itemIndex]++;
            SkScrollPoolSet[itemIndex].transform.FindChild("Scrollcnt").GetComponent <Text>().text = "보 유 갯 수:" + SkscrollNum[itemIndex] + " 개";
            SkScrollBag[itemIndex].transform.FindChild("ScrollUseCut").GetComponent <Text>().text  = "보 유" + "\n" + SkscrollNum[itemIndex] + " 개";
        }
        else
        {
            popClose.SetActive(true);
        }
    }
Example #6
0
    public void OnDrop(PointerEventData eventData)
    {
        SkillItem skill = eventData.pointerDrag.GetComponent <SkillItem>();

        //Debug.Log("name:" +eventData.pointerCurrentRaycast.gameObject.name+":"+this.skillSlotID);
        for (int i = 0; i < skillItemPanel.Length; i++)
        {
            //如果当前快捷栏有这个技能了,那就将原来的设置为空
            if (skillItemPanel[i].gameObject.GetComponent <SkillSlot>().skillSlotID == skill.SkillItemID)
            {
                Sprite sprite = new Sprite();
                sprite = Resources.Load("LabelTag", sprite.GetType()) as Sprite;
                //将原来的设置为默认的,并且将他的skillSlotID=-1,为放入技能的状态
                skillItemPanel[i].transform.GetChild(0).gameObject.GetComponent <Image>().sprite = sprite;
                skillItemPanel[i].gameObject.GetComponent <SkillSlot>().skillSlotID = -1;
            }
            if (this.skillSlotID == -1)
            {
                //将其图案设置为拖拽的技能的图标
                Sprite sprite = new Sprite();
                sprite = Resources.Load(SkillInfo._instance.GetSkillInfoByID(skill.SkillItemID).iconName, sprite.GetType()) as Sprite;
                eventData.pointerCurrentRaycast.gameObject.transform.parent.GetComponent <Image>().sprite = sprite;
                //将其id设置为技能id,使用时查找
                this.skillSlotID = skill.SkillItemID;
            }
            else//交换
            {
            }
        }
    }
Example #7
0
 public void Init(List <Skill> SkillList)
 {
     SkillProbability.Adjust();
     SkillProbability.Init(6, false);
     foreach (var Skill in SkillList)
     {
         var SkillItem = new SkillItem()
         {
             Height = 100, Width = 80
         };
         SkillItem.Init(Skill);
         SkillItem.SelectSyncAction = O =>
         {
             SelectedSkill = O;
             foreach (var P in SkillPanel.Children.OfType <SkillItem>())
             {
                 if (!object.ReferenceEquals(P.Skill, O))
                 {
                     P.Unselect();
                 }
             }
             SelectSkill();
         };
         SkillPanel.Children.Add(SkillItem);
     }
 }
        /// <summary>
        /// 单目标 减伤列队 取出 循环执行
        /// </summary>
        /// <param name="self"></param>
        public static void WhileTakeDamage(this AttackComponent self)
        {
            while (self.TakeDamages.Count > 0)
            {
                SkillItem skillItem = self.TakeDamages.Dequeue();
                Unit      myself    = self.GetParent <Unit>();
                if (!self.attackers.Contains(skillItem.GetComponent <ChangeType>().CastId))
                {
                    self.attackers.Add(skillItem.GetComponent <ChangeType>().CastId);
                }

                NumericComponent numSk = skillItem.GetComponent <NumericComponent>();
                skillItem.Dispose();
                NumericComponent numSelf = myself.GetComponent <NumericComponent>();
                Random           random  = new Random();
                int dom   = random.Next(0, 99);
                int domhp = numSk[NumericType.Case];
                if (dom < 26)
                {
                    numSelf[NumericType.ValuationAdd] -= (domhp * 2);
                }
                else
                {
                    numSelf[NumericType.ValuationAdd] -= domhp;
                }
                Console.WriteLine(" TakeDamage-143-Myself(" + myself.UnitType + ") : " + "-" + domhp + " / " + numSelf[NumericType.Valuation] + " /Count: " + self.TakeDamages.Count);
            }
        }
 protected JsonDamageDist(long id, List <AbstractHealthDamageEvent> list, ParsedEvtcLog log, Dictionary <string, JsonLog.SkillDesc> skillDesc, Dictionary <string, JsonLog.BuffDesc> buffDesc)
 {
     IndirectDamage = list.Exists(x => x is NonDirectHealthDamageEvent);
     if (IndirectDamage)
     {
         if (!buffDesc.ContainsKey("b" + id))
         {
             if (log.Buffs.BuffsByIds.TryGetValue(id, out Buff buff))
             {
                 buffDesc["b" + id] = new JsonLog.BuffDesc(buff, log);
             }
             else
             {
                 SkillItem skill   = list.First().Skill;
                 var       auxBoon = new Buff(skill.Name, id, skill.Icon);
                 buffDesc["b" + id] = new JsonLog.BuffDesc(auxBoon, log);
             }
         }
     }
     else
     {
         if (!skillDesc.ContainsKey("s" + id))
         {
             SkillItem skill = list.First().Skill;
             skillDesc["s" + id] = new JsonLog.SkillDesc(skill, log.LogData.GW2Build, log.SkillData);
         }
     }
     Id  = id;
     Min = int.MaxValue;
     Max = int.MinValue;
     foreach (AbstractHealthDamageEvent dmgEvt in list)
     {
         Hits        += dmgEvt.DoubleProcHit ? 0 : 1;
         TotalDamage += dmgEvt.HealthDamage;
         if (dmgEvt.HasHit)
         {
             Min = Math.Min(Min, dmgEvt.HealthDamage);
             Max = Math.Max(Max, dmgEvt.HealthDamage);
         }
         if (!IndirectDamage)
         {
             if (dmgEvt.HasHit)
             {
                 Flank      += dmgEvt.IsFlanking ? 1 : 0;
                 Glance     += dmgEvt.HasGlanced ? 1 : 0;
                 Crit       += dmgEvt.HasCrit ? 1 : 0;
                 CritDamage += dmgEvt.HasCrit ? dmgEvt.HealthDamage : 0;
             }
             Missed      += dmgEvt.IsBlind ? 1 : 0;
             Evaded      += dmgEvt.IsEvaded ? 1 : 0;
             Blocked     += dmgEvt.IsBlocked ? 1 : 0;
             Interrupted += dmgEvt.HasInterrupted ? 1 : 0;
         }
         ConnectedHits += dmgEvt.HasHit ? 1 : 0;
         Invulned      += dmgEvt.IsAbsorbed ? 1 : 0;
         ShieldDamage  += dmgEvt.ShieldDamage;
     }
     Min = Min == int.MaxValue ? 0 : Min;
     Max = Max == int.MinValue ? 0 : Max;
 }
        /// <summary>
        /// 攻击 CD 计时
        /// </summary>
        /// <param name="self"></param>
        public static void AttackTarget(this AttackComponent self)
        {
            if (self.delTime == 0)
            {
                //普通攻击,相当于施放技能41101,技能等级为0
                SkillItem skillItem = ComponentFactory.CreateWithId <SkillItem>(41101);

                skillItem.UpdateLevel(0);

                skillItem.GetComponent <ChangeType>().CastId = self.GetParent <Unit>().Id;

                skillItem.GetComponent <NumericComponent>().Set(NumericType.CaseBase, 14);

                self.target.GetComponent <AttackComponent>().TakeDamage(skillItem);

                self.startTime = TimeHelper.ClientNowSeconds();
            }

            long timeNow = TimeHelper.ClientNowSeconds();

            self.delTime = timeNow - self.startTime + 1;

            if (self.delTime > (self.attcdTime + 1))
            {
                self.delTime = 0;
            }
        }
Example #11
0
        public override SkillItem[] GetToolModes(ItemSlot slot, IClientPlayer forPlayer, BlockSelection blockSel)
        {
            var groups = forPlayer.GetGroups();

            SkillItem[] modes    = new SkillItem[1 + groups.Length];
            var         capi     = api as ICoreClientAPI;
            int         seed     = 1;
            int         addLines = 1;
            var         texture  = capi.Gui.Icons.GenTexture(48, 48, (ctx, surface) => { capi.Gui.Icons.DrawRandomSymbol(ctx, 0, 0, 48, GuiStyle.MacroIconColor, 2, seed, addLines); });

            modes[0] = new SkillItem()
            {
                Code = new AssetLocation("self"), Name = Lang.Get("Reinforce for yourself")
            }.WithIcon(capi, texture);
            for (int i = 0; i < groups.Length; i++)
            {
                addLines++;
                seed++;
                texture      = capi.Gui.Icons.GenTexture(48, 48, (ctx, surface) => { capi.Gui.Icons.DrawRandomSymbol(ctx, 0, 0, 48, GuiStyle.MacroIconColor, 2, seed, addLines); });
                modes[i + 1] = new SkillItem()
                {
                    Code = new AssetLocation("group"), Name = Lang.Get("Reinforce for group " + groups[i].GroupName)
                }.WithIcon(capi, texture);
            }

            return(modes);
        }
Example #12
0
        private void ImportTechnicalSkills(IEnumerable <XElement> skills, Resume Resume)
        {
            foreach (var xS in skills)
            {
                var skill = new Skill
                {
                    ResumeId = Resume.Id,
                    Resume   = Resume,
                    Name     = GetValue(xS.Element("Name")),
                };
                _skillService.Insert(skill);
                UpdateLocales(skill, xS);

                var sEntries = xS.Descendants("Entry");
                foreach (var xSe in sEntries)
                {
                    var sItem = new SkillItem
                    {
                        SkillId          = skill.Id,
                        Skill            = skill,
                        Name             = GetValue(xSe.Element("Name")),
                        Level            = Convert.ToInt32(xSe.Element("Level").Value),
                        LevelDescription = GetValue(xSe.Element("LevelDescription"))
                    };
                    _skillService.InsertSkillItem(sItem);
                    UpdateLocales(sItem, xSe);
                }
            }
        }
Example #13
0
        public static void WriteCastingItemIcon(StreamWriter sw, CastLog cl, SkillData skillList, PhaseData phase, bool last)
        {
            SkillItem   skill    = skillList.Get(cl.SkillId);
            GW2APISkill skillApi = skill?.ApiSkill;
            float       offset   = (cl.Time - phase.Start) / 1000f;

            if ((skillApi != null && skillApi.slot != "Weapon_1") || skillApi == null)
            {
                sw.Write("{" +
                         "source: '" + skill.Icon + "'," +
                         "xref: 'x'," +
                         "yref: 'y'," +
                         "x: " + Math.Max(offset, 0.0f) + "," +
                         "y: 0," +
                         "sizex: 1.1," +
                         "sizey: 1.1," +
                         "xanchor: 'left'," +
                         "yanchor: 'bottom'" +
                         "}");
            }

            if (!last)
            {
                sw.Write(",");
            }
        }
	public string parseData(int id, HeroData data, SkillItem skill)
	{
		templateID = id;

		info   = StaticSkill_info.Instance().getStr(templateID,"info");
		param1 = StaticSkill_info.Instance().getFloat(templateID, "param1");
		param2 = StaticSkill_info.Instance().getFloat(templateID, "param2");
		param3 = StaticSkill_info.Instance().getFloat(templateID, "param3");
		param4 = StaticSkill_info.Instance().getFloat(templateID, "param4");
		param5 = StaticSkill_info.Instance().getFloat(templateID, "param5");
		param6 = StaticSkill_info.Instance().getFloat(templateID, "param6");
		varaible1 = StaticSkill_info.Instance().getFloat(templateID, "varaible1");
		varaible2 = StaticSkill_info.Instance().getFloat(templateID, "varaible2");
		varaible3 = StaticSkill_info.Instance().getFloat(templateID, "varaible3");
		formula0  = StaticSkill_info.Instance().getInt(templateID,  "formula0");
		formula1  = StaticSkill_info.Instance().getInt(templateID,  "formula1");
		formula2  = StaticSkill_info.Instance().getInt(templateID,  "formula2");

		des = info;
		resParam1 = processDes (formula0,data, skill);
		resParam2 = processDes (formula1,data, skill);
		resParam3 = processDes (formula2,data, skill);
		des = string.Format(info, resParam1, resParam2, resParam3);

		return "";
	}
        protected AbstractSkillDto(SkillItem skill, ParsedEvtcLog log)
        {
            Id          = skill.ID;
            Name        = skill.Name;
            Icon        = skill.Icon;
            HealingMode = 3;
            if (log.CombatData.HasEXTHealing)
            {
                switch (log.CombatData.EXTHealingCombatData.GetHealingType(skill, log))
                {
                case HealingStatsExtensionHandler.EXTHealingType.HealingPower:
                    HealingMode = 0;
                    break;

                case HealingStatsExtensionHandler.EXTHealingType.ConversionBased:
                    HealingMode = 1;
                    break;

                case HealingStatsExtensionHandler.EXTHealingType.Hybrid:
                    HealingMode = 2;
                    break;

                default:
                    HealingMode = 3;
                    break;
                }
            }
        }
Example #16
0
    public bool CanPerformSkill(int skill_id, Entity entity)
    {
        if (!this.skill_map.ContainsKey(skill_id))
        {
            return(false);
        }

        SkillItem skill_item = this.skill_map[skill_id];

        if (this.cur_skill != null && this.cur_skill.IsPlaying() && !skill_item.CheckPriority(this.cur_skill))
        {
            return(false);
        }

        if (!skill_item.CheckCoolDown())
        {
            return(false);
        }

        if (!skill_item.CheckMpEnough())
        {
            return(false);
        }

        return(true);
    }
Example #17
0
        protected void UpdateLocales(SkillItem entity, XElement xElement)
        {
            var xName = xElement.Element("Name");

            foreach (var locale in xName.Descendants("Locale"))
            {
                var value      = locale.Element("Value").Value;
                int languageId = _languageWebApi.GetAll().GetAwaiter().GetResult().FirstOrDefault(x => x.UniqueSeoCode == locale.Attribute("Language").Value).Id;
                _localizedEntityHelperService.SaveLocalizedValue(entity,
                                                                 x => x.Name,
                                                                 value,
                                                                 languageId);
            }

            var xLevel = xElement.Element("Level");

            foreach (var locale in xLevel.Descendants("Locale"))
            {
                var value      = locale.Element("Value").Value;
                int languageId = _languageWebApi.GetAll().GetAwaiter().GetResult().FirstOrDefault(x => x.UniqueSeoCode == locale.Attribute("Language").Value).Id;
                _localizedEntityHelperService.SaveLocalizedValue(entity,
                                                                 x => x.LevelDescription,
                                                                 value,
                                                                 languageId);
            }
        }
	public bool GetSkillInfo( int skillId)
	{
		m_skillId = skillId;
		if (m_unit == null) {
			Debug.LogError("unit is error");		
			return false;
		}
		m_skill = m_unit.getUseSkillByTemplateID (skillId);
		if (m_skill == null)
			return false;

		SkillConfigs configs = GameObject.FindObjectOfType(typeof(SkillConfigs)) as SkillConfigs;
		m_curSkillConfig = configs.GetConfigByID (skillId);
		if (m_curSkillConfig == null)
		{
			Debug.LogError("GetConfig Failed! skillid:" + skillId);
			return false;
		}
		m_aniName = m_curSkillConfig.m_aniName;

		int fxCount = m_curSkillConfig.m_fx.Count;	
		m_fxOnlyOne.Clear ();
		for (int i = 0; i < fxCount; i++) {
			m_fxOnlyOne.Add(false);
		}
		m_soundOnlyOne = false;

		string soundPath = m_curSkillConfig.m_soundName;
		if (!string.IsNullOrEmpty (soundPath)) {
			string name = soundPath.Split('/')[3];
			name = name.Split('.')[0];
			m_curSkillConfig.m_sound = PrefabManager.Instance ().GetAudio ("Sound",name) as Object;
		}
		return true;
	}
Example #19
0
        public override void Init <T>(string name, UIInfo info, T arg)
        {
            base.Init(name, info, arg);
            m_ShowSkillItem = arg as SkillItem;
            InitNode();

            base.ChangeLanguage();
        }
	public void refresh(SkillItem skill)
	{
		if(null == skill)
			return;
		string icon = skill.icon;
		Icon.spriteName = icon;
		setLock (skill.active);
	}
Example #21
0
    public void ReleaseSkill(SkillBase skill, GameObject owner, GameObject target)
    {
        GameObject skillGo   = ObjectManager.Instance.InstantiateObject(skill.Path);
        SkillItem  skillItem = skillGo.GetComponent <SkillItem>();

        skillItem.Init(skill, owner, target);
        skillItem.ReleaseSkill();
    }
Example #22
0
    private void ShowSkillProgress(int id, float progress, float progressTemp)
    {
        Transform itemTrs = transform.FindChild("skill_" + id);
        SkillItem itemCtr = itemTrs.GetComponent <SkillItem>();

        itemCtr.progress     = progress;
        itemCtr.progressTemp = progressTemp;
    }
Example #23
0
    public static void CreateSkillItem(uint itemId, uint prefabId, Vector3 position)
    {
        SkillItem  ht  = new SkillItem(itemId, prefabId, position);
        GameObject obj = GameObject.Instantiate(Resources.Load <GameObject>(PrefabMapping.Instance.ItemModel[prefabId]));

        ControllerCenter.Instance.gameobjectSystem.Add(itemId, obj);
        ControllerCenter.Instance.skillitemSystem.Add(itemId, ht);
    }
	public void refresh(HeroData data, SkillItem skill)
	{
		des = info;
		resParam1 = processDes (formula0,data, skill);
		resParam2 = processDes (formula1,data, skill);
		resParam3 = processDes (formula2,data, skill);
		des = string.Format(info, resParam1, resParam2, resParam3);
	}
//作者:
//		1:参数1/100*英雄当前伤害+参数2+变量1*lv
//		2:参数3/100*英雄当前伤害+参数4+变量2*lv
//		3:参数5/100*英雄当前伤害+参数6+变量3*lv
//		4:(参数1+变量1*lv)/100*英雄当前伤害+参数2
//		5:(参数3+变量2*lv)/100*英雄当前伤害+参数4
//		6:(参数5+变量3*lv)/100*英雄当前伤害+参数6
//		7:参数1/100+参数2+变量1*lv
//		8:参数3/100+参数4+变量2*lv
//		9:参数5/100+参数6+变量3*lv
//		10:(参数1+变量1*lv)/100+参数2
//		11:(参数3+变量2*lv)/100+参数4
//		12:(参数5+变量3*lv)/100+参数6
//		13:参数1+(变量1*lv)
//		14:参数3+(变量2*lv)
//		15:参数5+(变量3*lv)

	public int processDes(int desID, HeroData data, SkillItem skill)
	{
		float res = 0;
		int min = (int)data.getMinAttack();
		int max = (int)data.getMaxAttack();
		int atk = (max + min)/2;
		switch(desID)
		{
		case 1:
			res = param1/100*atk + param2 + varaible1*skill.level;
			break;
		case 2:
			res = param3/100*atk + param4 + varaible2*skill.level;
			break;
		case 3:
			res = param5/100*atk + param6 + varaible3*skill.level;
			break;
		case 4:
			res = (param1 + varaible1*skill.level) / 100 * atk + param2;
			break;
		case 5:
			res = (param3 + varaible2*skill.level) / 100 * atk + param4;
			break;
		case 6:
			res = (param5 + varaible3*skill.level) / 100 * atk + param6;
			break;
		case 7:
			res = param1 / 100 + param2 + varaible1*skill.level;
			break;
		case 8:
			res = param3 / 100 + param4 + varaible2*skill.level;
			break;
		case 9:
			res = param5 / 100 + param6 + varaible3*skill.level;
			break;
		case 10:
			res = (param1 + varaible1*skill.level) + param2;
			break;
		case 11:
			res = (param3 + varaible2*skill.level) + param4;
			break;
		case 12:
			res = (param5 + varaible3*skill.level) + param6;
			break;
		case 13:
			res = param1 + varaible1*skill.level;
			break;
		case 14:
			res = param3 + varaible2*skill.level;
			break;
		case 15:
			res = param5 + varaible3*skill.level;
			break;
		default :
			return 0;
		}
		return (int)res;
	}
        public void SkillClicked(SkillItem sitem)
        {
            UserCommand_View view = View as UserCommand_View;

            if (_SelectedPlayers.Count <= 0)
            {
                MessageBox.Show("플레이어를 먼저 선택하세요.", "실패");
                sitem.IsSelected = false;
                return;
            }
            int cost = view.CostCounter;

            int sitemCost;

            if (sitem.Skill.Type.HasFlag(SkillType.Basic))
            {
                sitemCost = 1;
            }
            else if (sitem.Skill.Type.HasFlag(SkillType.Ultimate))
            {
                sitemCost = 3;
            }
            else
            {
                sitemCost = 2;
            }
            if (_SelectedSkills.Contains(sitem.Skill))
            {
                _SelectedSkills.Remove(sitem.Skill);
                sitem.IsSelected = false;
                view.CostCounter = cost - sitemCost;
            }
            else
            {
                if (sitem.Skill.Type.HasFlag(SkillType.Ultimate))
                {
                    ISkillBase ultimate = _SelectedSkills.FirstOrDefault(x => x.Type.HasFlag(SkillType.Ultimate));
                    if (ultimate != null)
                    {
                        MessageBox.Show($"해당 플레이어는 이미 궁극기를 선택했습니다.({ultimate.Name})", "실패");
                        sitem.IsSelected = false;
                        return;
                    }
                }
                if (cost + sitemCost > 10)
                {
                    MessageBox.Show($"코스트 초과함. ({cost + sitemCost}/10)");
                    sitem.IsSelected = false;
                }
                else
                {
                    sitem.IsSelected = true;
                    _SelectedSkills.Add(sitem.Skill);
                    view.CostCounter = cost + sitemCost;
                }
            }
        }
Example #27
0
 internal SkillDesc(SkillItem item, ulong gw2Build, SkillData skillData)
 {
     Name          = item.Name;
     AutoAttack    = item.AA;
     Icon          = item.Icon;
     CanCrit       = SkillItem.CanCrit(item.ID, gw2Build);
     IsSwap        = item.IsSwap;
     IsNotAccurate = skillData.IsNotAccurate(item.ID);
 }
	public void refresh(SkillItem item,int idx)
	{
		curidx = idx - 1;
		templateID = item.templateID;
		Icon.spriteName = item.icon;
		SkillName.text = item.name;
		SkillLevel.text = ""+item.level;
		LevelUPcost.text = ""+StaticSkilllevel.Instance ().getInt (item.level,"price"+curidx);
	}
Example #29
0
        public void SpawnMount(SkillItem skillData)
        {
            if (MateManager.Instance.GetActiveMate(Owner.ObjId) != null)
            {
                DespawnMate(0);
                return;
            }

            var item = Owner.Inventory.GetItem(skillData.ItemId);

            if (item == null)
            {
                return;
            }

            var itemTemplate = (SummonMateTemplate)ItemManager.Instance.GetTemplate(item.TemplateId);
            var npcId        = itemTemplate.NpcId;
            var template     = NpcManager.Instance.GetTemplate(npcId);
            var tlId         = (ushort)TlIdManager.Instance.GetNextId();
            var objId        = ObjectIdManager.Instance.GetNextId();
            var mateDbInfo   = GetMateInfo(skillData.ItemId) ?? CreateNewMate(skillData.ItemId, template.Name); // TODO - new name

            var mount = new Mount
            {
                ObjId      = objId,
                TlId       = tlId,
                OwnerId    = Owner.Id,
                Name       = mateDbInfo.Name,
                TemplateId = template.Id,
                Template   = template,
                ModelId    = template.ModelId,
                Faction    = Owner.Faction,
                Level      = (byte)mateDbInfo.Level,
                Hp         = mateDbInfo.Hp,
                Mp         = mateDbInfo.Mp,
                Position   = Owner.Position.Clone(),
                OwnerObjId = Owner.ObjId,

                Id             = mateDbInfo.Id,
                ItemId         = mateDbInfo.ItemId,
                UserState      = 1, // TODO
                Exp            = mateDbInfo.Xp,
                Mileage        = mateDbInfo.Mileage,
                SpawnDelayTime = 0, // TODO
            };

            foreach (var skill in MateManager.Instance.GetMateSkills(npcId))
            {
                mount.Skills.Add(skill);
            }

            var(newX, newY)  = MathUtil.AddDistanceToFront(3, mount.Position.X, mount.Position.Y, mount.Position.RotationZ);
            mount.Position.X = newX;
            mount.Position.Y = newY;

            MateManager.Instance.AddActiveMateAndSpawn(Owner, mount, item);
        }
Example #30
0
    /// <summary>
    /// 设置技能具体信息UI显示
    /// </summary>
    public void SetSkillInfo(SkillItem item, bool canLearn)
    {
        skillName.text   = item.SkillName;
        skillDescr.text  = item.SkillDescr;
        skillAttack.text = "威力:" + item.Attack.ToString();
        mpConsume.text   = "消耗蓝量:" + item.MpConsume.ToString();
        learnLevel.text  = "学习等级:" + item.LearnLevel.ToString();

        if (canLearn && !item.IsLearn)//只有在角色达到了技能学习等级且未学习该技能时才显示
        {
            if (learnBtn.gameObject.activeSelf == false)
            {
                learnBtn.gameObject.SetActive(true);
            }
        }
        else
        {
            if (learnBtn.gameObject.activeSelf == true)
            {
                learnBtn.gameObject.SetActive(false);
            }
        }

        if (item.IsEquip)//如果该技能已装备,那么隐藏装备按钮,显示卸下按钮
        {
            if (equipBtn.gameObject.activeSelf == true)
            {
                equipBtn.gameObject.SetActive(false);
            }
            if (removeBtn.gameObject.activeSelf == false)
            {
                removeBtn.gameObject.SetActive(true);
            }
        }
        else if (item.IsEquip == false && item.IsLearn == true)  //如果该技能未装备且已学习,那么显示装备按钮,隐藏卸下按钮
        {
            if (equipBtn.gameObject.activeSelf == false)
            {
                equipBtn.gameObject.SetActive(true);
            }
            if (removeBtn.gameObject.activeSelf == true)
            {
                removeBtn.gameObject.SetActive(false);
            }
        }
        else if (item.IsEquip == false && item.IsLearn == false)//如果该技能未装备且为学习,那么隐藏装备按钮,隐藏卸下按钮
        {
            if (equipBtn.gameObject.activeSelf == true)
            {
                equipBtn.gameObject.SetActive(false);
            }
            if (removeBtn.gameObject.activeSelf == true)
            {
                removeBtn.gameObject.SetActive(false);
            }
        }
    }
        private Dictionary <long, List <JsonSkill> > BuildRotation(List <CastLog> cls)
        {
            Dictionary <long, List <JsonSkill> > res = new Dictionary <long, List <JsonSkill> >();
            SkillData skillList = _log.SkillData;

            foreach (CastLog cl in cls)
            {
                SkillItem   skill     = skillList.Get(cl.SkillId);
                GW2APISkill skillApi  = skill?.ApiSkill;
                string      skillName = skill.Name;
                _skillNames[cl.SkillId] = skillName;
                JsonSkill jSkill = new JsonSkill
                {
                    Time     = (int)cl.Time,
                    Duration = cl.ActualDuration
                };
                if (_devMode)
                {
                    if (!_skillIcons.ContainsKey(cl.SkillId))
                    {
                        string skillIcon = skill.Icon;
                        if (skillIcon.Length > 0)
                        {
                            _skillIcons[cl.SkillId] = skillIcon;
                        }
                    }
                    int timeGained = 0;
                    if (cl.EndActivation == ParseEnum.Activation.CancelFire && cl.ActualDuration < cl.ExpectedDuration)
                    {
                        timeGained = cl.ExpectedDuration - cl.ActualDuration;
                    }
                    else if (cl.EndActivation == ParseEnum.Activation.CancelCancel)
                    {
                        timeGained = -cl.ActualDuration;
                    }
                    jSkill.ED = new JsonSkill.JsonExtraSkill()
                    {
                        UQ = cl.StartActivation == ParseEnum.Activation.Quickness ? 1 : 0,
                        TS = timeGained,
                        A  = skillApi != null && skillApi.slot == "Weapon_1" ? 1 : 0
                    };
                }
                if (res.TryGetValue(cl.SkillId, out var list))
                {
                    list.Add(jSkill);
                }
                else
                {
                    res[cl.SkillId] = new List <JsonSkill>()
                    {
                        jSkill
                    };
                }
            }

            return(res);
        }
        public override void OnLoaded(ICoreAPI api)
        {
            base.OnLoaded(api);

            ICoreClientAPI capi = api as ICoreClientAPI;

            toolModes = ObjectCacheUtil.GetOrCreate(api, "proPickToolModes", () =>
            {
                SkillItem[] modes;
                if (api.World.Config.GetString("propickNodeSearchRadius").ToInt() > 0)
                {
                    modes    = new SkillItem[2];
                    modes[0] = new SkillItem()
                    {
                        Code = new AssetLocation("density"), Name = Lang.Get("Density Search Mode (Long range, chance based search)")
                    };
                    modes[1] = new SkillItem()
                    {
                        Code = new AssetLocation("node"), Name = Lang.Get("Node Search Mode (Short range, exact search)")
                    };
                }
                else
                {
                    modes    = new SkillItem[1];
                    modes[0] = new SkillItem()
                    {
                        Code = new AssetLocation("density"), Name = Lang.Get("Density Search Mode (Long range, chance based search)")
                    };
                }

                if (capi != null)
                {
                    modes[0].WithIcon(capi, capi.Gui.LoadSvgWithPadding(new AssetLocation("textures/icons/heatmap.svg"), 48, 48, 5, ColorUtil.WhiteArgb));
                    modes[0].TexturePremultipliedAlpha = false;
                    if (modes.Length > 1)
                    {
                        modes[1].WithIcon(capi, capi.Gui.LoadSvgWithPadding(new AssetLocation("textures/icons/rocks.svg"), 48, 48, 5, ColorUtil.WhiteArgb));
                        modes[1].TexturePremultipliedAlpha = false;
                    }
                }


                return(modes);
            });


            if (api.Side == EnumAppSide.Server)
            {
                ppws = ObjectCacheUtil.GetOrCreate <ProPickWorkSpace>(api, "propickworkspace", () =>
                {
                    ProPickWorkSpace ppws = new ProPickWorkSpace();
                    ppws.OnLoaded(api);
                    return(ppws);
                });
            }
        }
Example #33
0
    static int ComposeSkill(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 2);
        SkillMgr  obj  = (SkillMgr)LuaScriptMgr.GetUnityObjectSelf(L, 1, "SkillMgr");
        SkillItem arg0 = (SkillItem)LuaScriptMgr.GetNetObject(L, 2, typeof(SkillItem));
        SkillItem o    = obj.ComposeSkill(arg0);

        LuaScriptMgr.PushObject(L, o);
        return(1);
    }
Example #34
0
    static int GetTaskByID(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 2);
        SkillMgr  obj  = (SkillMgr)LuaScriptMgr.GetUnityObjectSelf(L, 1, "SkillMgr");
        int       arg0 = (int)LuaScriptMgr.GetNumber(L, 2);
        SkillItem o    = obj.GetTaskByID(arg0);

        LuaScriptMgr.PushObject(L, o);
        return(1);
    }
Example #35
0
    public void AddSkill(SkillItem skillItem)
    {
        if (m_ItemSkillSlots.Count >= m_SkillLimit)
        {
            return;
        }

        m_ItemSkillSlots.Enqueue(skillItem);
        UIManager.Instance.SaveSkill(skillItem);
    }
Example #36
0
 protected void UpdateLocales(SkillItem entity, SkillItemModel model)
 {
     foreach (var localized in model.Locales)
     {
         _localizedEnitityHelperService.SaveLocalizedValue(entity,
                                                           x => x.Name,
                                                           localized.Name,
                                                           localized.LanguageId);
     }
 }
Example #37
0
 protected JsonRotation(ParsedEvtcLog log, long skillID, List <AbstractCastEvent> skillCasts, Dictionary <string, JsonLog.SkillDesc> skillDesc)
 {
     if (!skillDesc.ContainsKey("s" + skillID))
     {
         SkillItem skill = skillCasts.First().Skill;
         skillDesc["s" + skillID] = new JsonLog.SkillDesc(skill, log.LogData.GW2Build, log.SkillData);
     }
     Id     = skillID;
     Skills = skillCasts.Select(x => new JsonSkill(x)).ToList();
 }
Example #38
0
    public void OnDrop(PointerEventData eventData)
    {
        if (Draggable.CurrentDrag.GetComponent<SkillItem>() != null)
        {
            Destroy(skill);

            Draggable.CurrentDrag.transform.SetParent(gameObject.transform);

            skill = Draggable.CurrentDrag;
            skill.GetComponent<SkillItem>().Execute();
            this.SkillItem = skill.GetComponent<SkillItem>();
        }
    }
 private static bool canFletch(Player p, SkillItem item)
 {
     if (item == null || item.getAmount() <= 0) {
         return false;
     }
     if (p.getSkills().getGreaterLevel(Skills.SKILL.FLETCHING) < item.getLevel()) {
         p.getPackets().sendMessage("You need a Fletching level of " + item.getLevel() + " to make that.");
         return false;
     }
     if (!p.getInventory().hasItem(item.getItemOne())) {
         p.getPackets().sendMessage("You don't have a " + ItemData.forId(item.getItemOne()).getName());
         return false;
     }
     if (!p.getInventory().hasItem(item.getItemTwo())) {
         p.getPackets().sendMessage("You don't have any " + ItemData.forId(item.getItemTwo()).getName());
         return false;
     }
     return true;
 }
    public void setSelectedSkillItem(SkillItem skill)
    {
        selectedSkillItem = skill;

        selectedSkillPriceLabel.text = selectedSkillItem.skillProduct.price.ToString();
        selectedSkillDescritptionLabel.text = selectedSkillItem.skillProduct.description;

        if (selectedSkillItem.skillProduct.purchased)
        {
            buySkillObject.SetActive(false);
        } else
        {
            buySkillObject.SetActive(true);
        }

        if (SelectedSkillChanged != null)
        {
            SelectedSkillChanged();
        }
    }
    public void ProcessEffectHit(SkillItem skill, int efctIdx, Transform atkCollider)
    {
        GlobalDef.SkillType type = (GlobalDef.SkillType)skill.m_effects[efctIdx].type;
        if (type == 0)
            return;
        int hitMotion = skill.m_effects[efctIdx].RT_effect;// 1.击倒 2.击退 3.击飞
        string hitFx = skill.m_effects[efctIdx].acceptor_effectid;
        float param1 = skill.m_effects[efctIdx].parameter1;
        float param2 = skill.m_effects[efctIdx].parameter2;
        switch (type)
        {
            case GlobalDef.SkillType.SKILL_TYPE_ATK:
                {
                    if (hitFx != "0")
                    {
                        Transform obj = PrefabManager.Instance().GetFx(hitFx, PrefabManager.enEfPathType.EF_SKILL);
                        Transform fx = (Transform)Instantiate(obj, m_transform.position, m_transform.rotation);
                    }
                    //< 伤害计算
                    Transform atker = atkCollider.GetComponent<Ef_base>().m_user;
                    m_curDamage = Unit.CalcAttackDamage(true, atker.GetComponent<Unit>(), this, param1, param2, out m_curDamageType);
                }
                break;
            case GlobalDef.SkillType.SKILL_TYPE_BUFF:
                {
                    if (m_unitType == GlobalDef.UnitType.UNIT_TYPE_PLAYER || m_unitType == GlobalDef.UnitType.UNIT_TYPE_ENEMY_HERO)
                    {
                        int buffID = (int)skill.m_effects[efctIdx].parameter1;
                        string effect = StaticBuff.Instance().getStr(buffID, "effectid");
                        effect = "buff" + "/" + effect;
                        Transform obj = PrefabManager.Instance().GetFx(effect, PrefabManager.enEfPathType.EF_SKILL);
                        if (obj != null)
                        {
                            Transform fx = (Transform)Instantiate(obj, m_transform.position, m_transform.rotation);
                            Ef_base ef = fx.GetComponent<Ef_base>();
                            ef.m_user = m_transform;
                            m_curHeroData.bufferController.AddOneBufferById(buffID, fx, atkCollider);
                        }
                    }
                }
                break;
        }

        switch (hitMotion)
        {
            case 0:
                m_attackforce = 0;
                m_down = false;
                m_downhigh = false;
                break;
            case 1:
                m_attackforce = 10;
                m_down = true;
                break;
            case 2:
                m_down = true;
                m_attackforce = 40;
                break;
            case 3:
                m_downhigh = true;
                break;
        }
    }
 //< 曹操第3个技能处理
 public void ProcessSkill400203(SkillItem skill, Transform atkCollider, Unit atker)
 {
     bool b = atker.hasState((int)GlobalDef.UnitState.State_ReflectDamageAddHp);
     int idx = 0;
     if (b) idx = 1;
     ProcessEffectHit(skill, idx, atkCollider);
 }
 //< 曹操第4个技能处理
 public void ProcessSkill400204(SkillItem skill, Transform atkCollider, Unit atker)
 {
     int idx = 1;
     ProcessEffectHit(skill, idx, atkCollider);
 }
Example #44
0
 void Initialize()
 {
     objName = gameObject.name;
     if(objName == "SkillItem")
         skillItem = GetComponent<SkillItem>();
 }
    public void init()
    {
        for (int i = 1; i <= 4; i++)
        {
            int skillId = StaticHero.Instance().getInt(templateID, "init_skillid" + i);
            if (skillId == 0)
                continue;
            SkillItem skill = new SkillItem(this, skillId);
			skillList.Add(skill);
        }
		for(int i = 0; i < 3; i++)
		{
			skillList.useSkills[i] = i;
		}

		//updateProperty
		refreshProperty ();
		refreshCurPorperty ();
    }
	public void Add(SkillItem skill)
	{
		skills.Add (skill);
	}
Example #47
0
 public static void cookItem(Player p, int amount, bool newCook, bool fire)
 {
     SkillItem item = null;
     if (newCook)
     {
         if (p.getTemporaryAttribute("meatItem") == null)
         {
             return;
         }
         int i = (int)p.getTemporaryAttribute("meatItem");
         p.setTemporaryAttribute("cookCycles", 0);
         item = new SkillItem(MEAT_COOKED[i], MEAT_RAW[i], MEAT_BURNT[i], MEAT_LEVEL[i], (int)Skills.SKILL.COOKING, MEAT_XP[i], amount);
         setCookingItem(p, item);
     }
     item = (SkillItem)getCookingItem(p);
     if (item == null || p == null || !p.getInventory().hasItem(item.getItemOne()))
     {
         return;
     }
     if (fire)
     {
         if (p.getTemporaryAttribute("cookingFireLocation") == null)
         {
             setCookingItem(p, null);
             p.getPackets().closeInterfaces();
             return;
         }
         else
         {
             Location fireLocation = (Location)p.getTemporaryAttribute("cookingFireLocation");
             if (!Server.getGlobalObjects().fireExists(new Location(fireLocation.getX(), fireLocation.getY(), fireLocation.getZ())))
             {
                 p.getPackets().sendMessage("The fire has burnt out..");
                 setCookingItem(p, null);
                 p.getPackets().closeInterfaces();
                 return;
             }
         }
     }
     if (p.getSkills().getGreaterLevel(Skills.SKILL.COOKING) < item.getLevel())
     {
         p.getPackets().closeInterfaces();
         p.getPackets().sendMessage("You need a Cooking level of " + item.getLevel() + " to cook that.");
         return;
     }
     bool burn = getFormula(p, item);
     int newFood = burn ? item.getItemTwo() : item.getFinishedItem();
     string message = burn ? "accidentally burn" : "successfully cook";
     double xp = burn ? 0 : item.getXp();
     int cookCycles = p.getTemporaryAttribute("cookCycles") == null ? 1 : (int)p.getTemporaryAttribute("cookCycles");
     if (p.getInventory().replaceSingleItem(item.getItemOne(), newFood))
     {
         if (cookCycles >= 1)
         {
             p.setLastAnimation(new Animation(fire ? 897 : 896));
             p.setTemporaryAttribute("cookCycles", 0);
         }
         else
         {
             p.setTemporaryAttribute("cookCycles", cookCycles + 1);
         }
         p.getSkills().addXp(Skills.SKILL.COOKING, xp);
         p.getPackets().sendMessage("You " + message + " the " + ItemData.forId(item.getFinishedItem()).getName() + ".");
         item.decreaseAmount();
         p.getPackets().closeInterfaces();
     }
     if (item.getAmount() >= 1)
     {
         Event cookMoreEvent = new Event(1500);
         cookMoreEvent.setAction(() =>
         {
             cookItem(p, -1, false, fire);
             cookMoreEvent.stop();
         });
         Server.registerEvent(cookMoreEvent);
     }
 }
	public void refreshSkillbyItem(SkillItem Item, int pos)
	{
		if(pos < 0 || pos >= skillItems.Length)
		{
			return;
		}
		skillItems [pos].refresh (Item,pos);
	}
	public void refresh (SkillItem item)
	{
		showIcon();
		Icon.spriteName = item.icon;
	}
	public bool checkConditional(SkillItem item, GlobalDef.SkillActionType type)
	{
		if(item == null)
			return true;

		if(item.actiontype != (int)type)
			return true;

		float curMp = m_unit.getCurProperty((int)GlobalDef.NewHeroProperty.PRO_MANAPOINT);

		if(curMp < item.consume)
			return true;

		float range = item.range_R / 100f;
		float dis = getDistance ();
		if(dis > range)
		{
			return true;
		}
		return false;
	}
	public static SkillItem GetStaticData(int id)
    {
        if (_instance == null)
        {
            _instance = new SkillItem();
        }
		_instance.parseData(id);
        return _instance;
    }
Example #52
0
 private static bool getFormula(Player p, SkillItem item)
 {
     int foodLevel = item.getLevel();
     int cookLevel = p.getSkills().getCurLevel(Skills.SKILL.COOKING);
     if (!wearingCookingGauntlets(p))
     {
         return Misc.random(cookLevel) <= Misc.random((int)(foodLevel / 1.5));
     }
     return Misc.random(cookLevel) <= Misc.random(foodLevel / 3);
 }
    public void Init(UIBattlePanel manager, SkillItem item)
    {
        if (null == item)
        {
            enabled = false;
            mIcon.enabled = false;
            Destroy(this);
            return;
        }
        this.manager = manager;
        this.skillData = item;
        //this.skillIdx = skillData.templateID;
        isUnlock = item.IsUnlock();
        SetLock(!isUnlock);

        if (isUnlock)
        {
            this.enabled = true;
        }

        //初始化CD间隔
        isWaitCD = false;
    }
	public void showSkillInfoWindow(HeroData data, SkillItem skill, int idx)
	{
		hideLeftMiddleWindow ();
		hideRightMiddleWindow ();
		SkillInfo_Window.gameObject.SetActive (true);

		SkillInfoWindow infoWindow = SkillInfo_Window.GetComponentInChildren<SkillInfoWindow> ();
		if (infoWindow != null)
			infoWindow.refresh (data,skill, idx);
	}
	/// <summary>
	/// 解析从服务器接收到的数据
	/// </summary>
	public void parseServerHero(Property.Hero data)
	{
		//template Data
		parseData(data.heroid);

		guid = (long)data.guid;
		templateID = data.heroid;
		activate = data.activate;
		level = data.level;
		if(data.starLevel > starLevel ){starLevel = data.starLevel;}
		exp = data.exp;
		debris = data.debris;
		realmList.curRealmLevel = data.realm;
		battle = data.battle;
		fighting = data.fighting;

		equipmentList.clear ();
		for(int j = 0; j < data.items.Count; j++)
		{
			EquipmentItem item = new EquipmentItem();
			Property.Equip item_data = data.items[j];
			item.parseData(data.items[j]);	
			equipmentList.addItem(item.guid, item);
			
			item.gemList.Clear();
			for(int k = 0; k < item_data.gemAry.Count; k++)
			{
				DiamondItem gemItem = new DiamondItem();
				Property.Item gemData = item_data.gemAry[k];
				gemItem.guid = (long)gemData.guid;
				gemItem.templateID = (int)gemData.templateid;
				gemItem.haveNum = (int)gemData.number;
				//					gemItem.type = (int)gemData.type;
				item.gemList.Add(gemItem.guid, gemItem);
			}			
		}
		Property.Horse horse = data.horse;
		//skill
		skillList.Clear();
		skillList.clearUseSkill();
		for(int s = 0; s < data.skills.Count; s++)
		{
			Property.Skill skillData = data.skills[s];
			int skillId = skillData.skillid;
			
			SkillItem skill = new SkillItem(this, skillId);
			skill.level = skillData.level;
			skill.active = skillData.activate;
			skill.slot = skillData.slot;
			skillList.Add(skill);
			if(skill.slot != -1 && skill.slot < skillList.useSkills.Length)
			{
				skillList.useSkills[skill.slot] = s;
			}
		}
	}