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; }
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); } }
/// <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); } } }
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); } }
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//交换 { } } }
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; } }
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); }
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); } } }
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; } } }
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); }
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; }
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); }
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(); }
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; }
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; } } }
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); }
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); }
/// <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); }); } }
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); }
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); }
public void AddSkill(SkillItem skillItem) { if (m_ItemSkillSlots.Count >= m_SkillLimit) { return; } m_ItemSkillSlots.Enqueue(skillItem); UIManager.Instance.SaveSkill(skillItem); }
protected void UpdateLocales(SkillItem entity, SkillItemModel model) { foreach (var localized in model.Locales) { _localizedEnitityHelperService.SaveLocalizedValue(entity, x => x.Name, localized.Name, localized.LanguageId); } }
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(); }
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); }
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); }
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; }
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; } } }