public void BuildSkillString(string skill, string focus, string expected) { var skillString = SkillConstants.Build(skill, focus); Assert.That(skillString, Is.Not.Null); Assert.That(skillString, Is.EqualTo(expected)); }
public void SelectSkillBonuses(string skillName1, string skillFocus1, string condition1, int bonus1, string skillName2, string skillFocus2, string condition2, int bonus2) { SetUpSkillBonus(skillName1, skillFocus1, condition1, bonus1); SetUpSkillBonus(skillName2, skillFocus2, condition2, bonus2); var bonusSelections = skillSelector.SelectBonusesFor("creature"); Assert.That(bonusSelections.Count, Is.EqualTo(2)); var selection = bonusSelections.First(); Assert.That(selection.Bonus, Is.EqualTo(bonus1)); Assert.That(selection.Condition, Is.EqualTo(condition1)); var expected = SkillConstants.Build(skillName1, skillFocus1); Assert.That(selection.Target, Is.EqualTo(expected)); selection = bonusSelections.Last(); Assert.That(selection.Bonus, Is.EqualTo(bonus2)); Assert.That(selection.Condition, Is.EqualTo(condition2)); expected = SkillConstants.Build(skillName2, skillFocus2); Assert.That(selection.Target, Is.EqualTo(expected)); }
public override async Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user) { var templateID = packet.Decode <int>(); var template = user.Service.TemplateManager.Get <SkillTemplate>(templateID); var skillLevel = user.Character.GetSkillLevel(templateID); if (template == null) { return; } if (skillLevel <= 0) { return; } if (!SkillConstants.IsKeydownSkill(templateID)) { return; } using var p = new Packet(SendPacketOperations.UserSkillPrepare); p.Encode <int>(user.ID); p.Encode <int>(templateID); p.Encode <byte>(packet.Decode <byte>()); p.Encode <short>(packet.Decode <short>()); p.Encode <byte>(packet.Decode <byte>()); await user.Field.BroadcastPacket(user, p); }
public void BuildSkillTypeAndAmountData(string skill, string focus) { var skillString = SkillConstants.Build(skill, focus); var typeAndAmount = TypeAndAmountHelper.Build(skillString, "9266"); Assert.That(typeAndAmount, Is.EqualTo(skillString + "@9266")); }
public void FeatFociForSkillsContainsAllFoci(string skill) { var skillGroups = collectionMapper.Map(TableNameConstants.Collection.SkillGroups); var skillFoci = skillGroups[skill]; var featFoci = skillFoci.Select(f => SkillConstants.Build(skill, f)); Assert.That(table[GroupConstants.Skills], Is.SupersetOf(featFoci)); }
//スキル入れ替え(移動カスタム) public void ChangeSkillCustomMoveConstant(SkillConstants _constants, int _weightFrame, List <FighterSkill.Move> _move, List <FighterSkill.GravityMove> _grav, bool _con) { FighterSkill s = Instantiate(core.Status.constantsSkills[(int)_constants]); s.movements = _move; s.gravityMoves = _grav; s.isContinue = _con; core.SetSkill(s, _weightFrame); }
public void ParseSkillTypeAndAmountData(string skill, string focus) { var skillString = SkillConstants.Build(skill, focus); var typeAndAmount = TypeAndAmountHelper.Parse(skillString + "@9266"); Assert.That(typeAndAmount[0], Is.EqualTo(skillString)); Assert.That(typeAndAmount[1], Is.EqualTo("9266")); Assert.That(typeAndAmount.Length, Is.EqualTo(2)); }
private void SetUpSkillBonus( string skill, string focus = "", string condition = "", int bonus = 1) { var bonusSelection = new BonusSelection(); bonusSelection.Bonus = bonus; bonusSelection.Target = SkillConstants.Build(skill, focus); bonusSelection.Condition = condition; bonusSelections.Add(bonusSelection); }
private RequiredSkillSelection ParseRequiredSkillData(TypeAndAmountSelection selection) { var splitData = SkillConstants.Parse(selection.Type); var requiredSkill = new RequiredSkillSelection(); requiredSkill.Skill = splitData[0]; requiredSkill.Ranks = selection.Amount; if (splitData.Length > 1) { requiredSkill.Focus = splitData[1]; } return(requiredSkill); }
public static void HandleGaugeGain(MapleCharacter chr, int skillId, int gaugeInc) { LuminousSystem resource = (LuminousSystem)chr.Resource; LuminousState state = SkillConstants.GetLuminousSkillState(skillId); if (state == LuminousState.Light) { resource.IncreaseLightGauge(gaugeInc, chr); } else { resource.IncreaseDarkGauge(gaugeInc, chr); } chr.Client.SendPacket(resource.Update()); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { Globals.SpriteDrawer = new SpriteBatch(GraphicsDevice); Globals.Initialize(); TextureCacheFactory.Initialize(GraphicsDevice); InputService.Initialize(); SkillConstants.Initialize(); XmlStorage.Initialize(); TextureCacheFactory.Get("Entities/Zomb-King.png"); Level.GameOverFunc = GameOverFunc; Globals.Map = new Map(GraphicsDevice, MapTypes.Dungeon, Globals.ViewportBounds); _mainMenu = new MainMenu(SetupGameFunc); _background = new MainBackground(); base.Initialize(); }
public void SelectSkillBonus(string skillName, string skillFocus, string condition, int bonus) { SetUpSkillBonus(skillName, skillFocus, condition, bonus); var bonusSelections = skillSelector.SelectBonusesFor("creature"); Assert.That(bonusSelections.Count, Is.EqualTo(1)); var selection = bonusSelections.Single(); Assert.That(selection.Bonus, Is.EqualTo(bonus)); Assert.That(selection.Condition, Is.EqualTo(condition)); var expected = SkillConstants.Build(skillName, skillFocus); Assert.That(selection.Target, Is.EqualTo(expected)); }
private string SelectRandomAndIncludeSkills(IEnumerable <string> foci, IEnumerable <Skill> skills) { var skillFoci = collectionsSelector.SelectFrom(TableNameConstants.Collection.FeatFoci, GroupConstants.Skills); var applicableSkillFoci = skillFoci.Intersect(foci); if (applicableSkillFoci.Any()) { var potentialSkillFoci = skills.Select(s => SkillConstants.Build(s.Name, s.Focus)); foci = applicableSkillFoci.Intersect(potentialSkillFoci); } if (!foci.Any()) { return(FeatConstants.Foci.NoValidFociAvailable); } return(collectionsSelector.SelectRandomFrom(foci)); }
public void SelectASingleSkillTypeAndAmount(string skill, string focus) { var skillString = SkillConstants.Build(skill, focus); var entries = new[] { TypeAndAmountHelper.Build(skillString, "9266"), }; mockCollectionSelector.Setup(s => s.SelectFrom("table name", "name")).Returns(entries); SetUpRoll("9266", 42); var typeAndAmount = selector.SelectOne("table name", "name"); Assert.That(typeAndAmount.Type, Is.EqualTo(skillString)); Assert.That(typeAndAmount.Amount, Is.EqualTo(42)); }
public bool RequirementMet(IEnumerable <Skill> otherSkills) { var thisSkill = SkillConstants.Build(Skill, Focus); var requiredSkills = otherSkills.Where(s => s.IsEqualTo(thisSkill)); if (!requiredSkills.Any()) { return(false); } if (!string.IsNullOrEmpty(Focus) && !requiredSkills.Any(s => s.Focus == Focus)) { return(false); } var anyHaveSufficientRanks = requiredSkills.Any(s => s.EffectiveRanks >= Ranks); return(anyHaveSufficientRanks); }
public static void EncodeStats(this Character c, IPacket p) { p.Encode <int>(c.ID); p.EncodeFixedString(c.Name, 13); p.Encode <byte>(c.Gender); p.Encode <byte>(c.Skin); p.Encode <int>(c.Face); p.Encode <int>(c.Hair); c.Pets.ForEach(sn => p.Encode <long>(sn)); p.Encode <byte>(c.Level); p.Encode(c.Job); p.Encode <short>(c.STR); p.Encode <short>(c.DEX); p.Encode <short>(c.INT); p.Encode <short>(c.LUK); p.Encode <int>(c.HP); p.Encode <int>(c.MaxHP); p.Encode <int>(c.MP); p.Encode <int>(c.MaxMP); p.Encode <short>(c.AP); if (SkillConstants.IsExtendSPJob(c.Job)) { c.EncodeExtendSP(p); } else { p.Encode <short>(c.SP); } p.Encode <int>(c.EXP); p.Encode <short>(c.POP); p.Encode <int>(c.TempEXP); p.Encode <int>(c.FieldID); p.Encode <byte>(c.FieldPortal); p.Encode <int>(c.PlayTime); p.Encode <short>(c.SubJob); }
public override async Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user) { var templateID = packet.Decode <int>(); var template = user.Service.TemplateManager.Get <SkillTemplate>(templateID); if (template == null) { return; } if (SkillConstants.IsKeydownSkill(templateID)) { using var p = new Packet(SendPacketOperations.UserSkillCancel); p.Encode <int>(user.ID); p.Encode <int>(templateID); await user.Field.BroadcastPacket(user, p); } else { await user.ModifyTemporaryStats(ts => ts.Reset(templateID)); } }
public void ApplyEffect(MapleCharacter source, MapleCharacter target) { int value; if (SkillConstants.IsHealSkill(Parent.SkillId) && Info.TryGetValue(CharacterSkillStat.hp, out value)) { int healHp = (int)((value / 100.0) * source.Stats.GetDamage()); target.AddHP(healHp); } #region Mist if (SkillConstants.IsMistSkill(Parent.SkillId)) { Point sourcePos = source.Position; BoundingBox boundingBox = CalculateBoundingBox(sourcePos, source.IsFacingLeft); source.Map.SpawnMist(Parent.SkillId, Level, source, boundingBox, sourcePos, Info[CharacterSkillStat.time] * 1000, false); } else if (Parent.SkillId == Priest.MYSTIC_DOOR) { MapleMap fromMap = source.Map; if (fromMap.MysticDoorLimit) { return; } source.CancelDoor(Priest.MYSTIC_DOOR); int partyId = source.Party?.Id ?? -1; Point fromMapPosition = source.Map.GetDropPositionBelow(source.Position, source.Position); int time = Info[CharacterSkillStat.time] * 1000; MapleMap toMap = Program.GetChannelServer(source.Client.Channel).GetMap(source.Map.ReturnMap); if (toMap != null) { WzMap.Portal toPortal = toMap.TownPortal; if (toPortal != null) { Point toMapPosition = toMap.GetDropPositionBelow(toPortal.Position, toPortal.Position); MysticDoor sourceDoor = new MysticDoor(Parent.SkillId, source, fromMapPosition, fromMap, toMap, toPortal, time, true); fromMap.SpawnStaticObject(sourceDoor); source.AddDoor(sourceDoor); } } } #endregion #region Summons if (Parent.HasSummon) { source.RemoveSummon(Parent.SkillId); //Remove old one if exists WzCharacterSkill.SummonAttackInfo info = Parent.SummonInfo; MapleSummon summon = new MapleSummon(source.Map.GetNewObjectId(), Parent.SkillId, source.Position, info.Type, info.MovementType, source, Level, (uint)Info[CharacterSkillStat.time] * 1000); source.AddSummon(summon); } #endregion //Custom handling: switch (Parent.SkillId) { case Hunter.QUIVER_CARTRIDGE: QuiverCartridgeSystem qcs = source.Resource as QuiverCartridgeSystem; if (qcs != null) { qcs.SwitchCurrentArrow(source.Client); } break; case Priest.HOLY_MAGIC_SHELL: case SuperGameMaster.HEAL_DISPEL: target.AddHP(target.Stats.MaxHp); break; case Bishop.RESURRECTION: case SuperGameMaster.RESURRECTION: if (target.IsDead) { target.Revive(false, false, true); } break; } }
public override async Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user) { packet.Decode <int>(); var templateID = packet.Decode <int>(); var template = user.Service.TemplateManager.Get <SkillTemplate>(templateID); Console.WriteLine(template); if (template == null) { return; } var job = template.ID / 10000; var jobLevel = (byte)SkillConstants.GetJobLevel(job); if (jobLevel == 0) { var sp = Math.Min(user.Character.Level - 1, job == 3000 ? 9 : 6); for (var i = 0; i < 3; i++) { sp -= user.Character.GetSkillLevel(job * 1000 + 1000 + i); } if (sp > 0) { await user.ModifySkills(s => s.Add(templateID), true); } return; } if (SkillConstants.IsExtendSPJob(job) && user.Character.GetExtendSP(jobLevel) <= 0) { return; } if (!SkillConstants.IsExtendSPJob(job) && user.Character.SP <= 0) { return; } var maxLevel = template.MaxLevel; if (SkillConstants.IsSkillNeedMasterLevel(templateID)) { maxLevel = (short)user.Character.GetSkillMasterLevel(templateID); } if (user.Character.GetSkillLevel(templateID) >= maxLevel) { return; } await user.ModifyStats(s => { if (SkillConstants.IsExtendSPJob(job)) { s.SetExtendSP(jobLevel, (byte)(s.GetExtendSP(jobLevel) - 1)); } else { s.SP--; } }); await user.ModifySkills(s => s.Add(templateID), true); }
public void ParseSkillString(string skillString, params string[] expected) { var sections = SkillConstants.Parse(skillString); Assert.That(sections, Is.EqualTo(expected)); }
private void Decode(IPacket packet) { packet.Decode <byte>(); // fieldKey packet.Decode <int>(); // pDrInfo packet.Decode <int>(); // pDrInfo var v6 = packet.Decode <byte>(); DamagePerMob = v6 & 0xF; MobCount = v6 >> 4; packet.Decode <int>(); // pDrInfo packet.Decode <int>(); // pDrInfo SkillID = packet.Decode <int>(); packet.Decode <byte>(); // combatOrders if (_type == AttackType.Magic) { packet.Decode <int>(); packet.Decode <int>(); packet.Decode <int>(); packet.Decode <int>(); packet.Decode <int>(); packet.Decode <int>(); } packet.Decode <int>(); // rand packet.Decode <int>(); // crc? packet.Decode <int>(); packet.Decode <int>(); if (SkillConstants.IsKeydownSkill(SkillID)) { KeyDown = packet.Decode <int>(); } Option = packet.Decode <byte>(); if (_type == AttackType.Shoot) { packet.Decode <byte>(); // m_bNextShootExJablin } var v17 = packet.Decode <short>(); Left = Convert.ToBoolean((v17 >> 15) & 1); Action = v17 & 0x7FFF; packet.Decode <int>(); AttackActionType = packet.Decode <byte>(); AttackSpeed = packet.Decode <byte>(); AttackTime = packet.Decode <int>(); packet.Decode <int>(); // phase if (_type == AttackType.Shoot) { packet.Decode <short>(); packet.Decode <short>(); packet.Decode <byte>(); // if ( v459 && !is_shoot_skill_not_consuming_bullet(nSkillID) ) // packet.Decode<int>(); } DamageInfo = new DamageInfo[MobCount]; for (var i = 0; i < MobCount; i++) { var info = new DamageInfo(_type, _user); info.Decode(packet, DamagePerMob); DamageInfo[i] = info; } }
public static IEnumerable <string> GetFeatsWithFoci() { var featsWithFoci = new List <string>(); var simpleWeapons = WeaponConstants.GetAllSimple(false, false); foreach (var weapon in simpleWeapons) { featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Simple}/{weapon}"); } var martialWeapons = WeaponConstants.GetAllMartial(false, false); foreach (var weapon in martialWeapons) { featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{weapon}"); } //INFO: Adding in some exotic as martial, for weapon familiarity featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.DwarvenUrgrosh}"); featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.DwarvenWaraxe}"); featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.OrcDoubleAxe}"); featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Martial}/{WeaponConstants.GnomeHookedHammer}"); var exoticWeapons = WeaponConstants.GetAllExotic(false, false); foreach (var weapon in exoticWeapons) { featsWithFoci.Add($"{FeatConstants.WeaponProficiency_Exotic}/{weapon}"); } featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Appraise}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Balance}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Bluff}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Climb}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Concentration}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Craft}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Alchemy)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Armorsmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Blacksmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bookbinding)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bowmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brassmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brewing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Candlemaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Cloth)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Coppersmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Dyemaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Gemcutting)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Glass)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Goldsmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hatmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hornworking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Jewelmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Leather)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Locksmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Mapmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Milling)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Painting)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Parchmentmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Pewtermaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Potterymaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Sculpting)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shipmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shoemaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Silversmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Skinning)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Soapmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Stonemasonry)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Tanning)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Trapmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaponsmithing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaving)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Wheelmaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Winemaking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Woodworking)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.DecipherScript}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Diplomacy}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.DisableDevice}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Disguise}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.EscapeArtist}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Forgery}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.GatherInformation}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.HandleAnimal}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Heal}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Hide}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Intimidate}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Jump}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Knowledge}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Arcana)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ArchitectureAndEngineering)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Dungeoneering)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Geography)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.History)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Local)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Nature)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.NobilityAndRoyalty)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Religion)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ThePlanes)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Listen}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.MoveSilently}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.OpenLock}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Perform}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Act)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Comedy)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Dance)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.KeyboardInstruments)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Oratory)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.PercussionInstruments)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Sing)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.StringInstruments)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.WindInstruments)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Profession}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Adviser)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Alchemist)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalGroomer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalTrainer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Apothecary)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Appraiser)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Architect)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Armorer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Barrister)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Blacksmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bookbinder)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bowyer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brazier)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brewer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Butler)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Carpenter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartographer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartwright)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Chandler)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.CityGuide)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Clerk)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cobbler)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coffinmaker)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coiffeur)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cook)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coppersmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Craftsman)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dowser)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dyer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Embalmer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Engineer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Entertainer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.ExoticAnimalTrainer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Farmer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Fletcher)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Footman)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Gemcutter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Goldsmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Governess)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Haberdasher)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Healer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Horner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Hunter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Interpreter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Jeweler)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Laborer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Launderer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Limner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.LocalCourier)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Locksmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Maid)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Masseuse)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Matchmaker)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Midwife)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miller)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Navigator)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Nursemaid)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.OutOfTownCourier)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Painter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Parchmentmaker)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Pewterer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Polisher)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Porter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Potter)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sage)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorCrewmember)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorMate)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Scribe)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sculptor)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shepherd)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shipwright)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Silversmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Skinner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soapmaker)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soothsayer)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Tanner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teacher)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teamster)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trader)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trapper)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Valet)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Vintner)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaponsmith)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaver)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Wheelwright)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.WildernessGuide)}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Ride}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Search}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.SenseMotive}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.SleightOfHand}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Spellcraft}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Spot}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Survival}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Swim}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.Tumble}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.UseMagicDevice}"); featsWithFoci.Add($"{FeatConstants.SkillFocus}/{SkillConstants.UseRope}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Boar}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Rat}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Raven}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_Hunter_Small}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_Hunter_Medium}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_WebSpinner_Small}"); featsWithFoci.Add($"{FeatConstants.SpecialQualities.AlternateForm}/{CreatureConstants.Spider_Monstrous_WebSpinner_Medium}"); return(featsWithFoci); }
public void ChangeSkillJump(SkillConstants _constants, int _weightFrame) { fighter.SetIsGround(false); fighter.SetSkill(fighter.Status.constantsSkills[(int)_constants], _weightFrame); }
//スキル入れ替え public void ChangeSkillConstant(SkillConstants _constants, int _weightFrame) { fighter.SetSkill(fighter.Status.constantsSkills[(int)_constants], _weightFrame); }
public async Task Handle(RecvPacketOperations operation, IPacket packet, GameSocket socket) { var characterID = packet.Decode <int>(); try { using var store = socket.Service.DataStore.OpenSession(); var character = store .Query <Character>() .First(c => c.ID == characterID); var data = store .Query <AccountData>() .First(d => d.ID == character.AccountDataID); var account = store .Query <Account>() .First(a => a.ID == data.AccountID); await socket.TryMigrateFrom(account, character); socket.Account = account; socket.AccountData = data; socket.Character = character; var field = socket.Service.FieldManager.Get(character.FieldID); var fieldUser = new FieldUser(socket); await fieldUser.ValidateStat(); socket.FieldUser = fieldUser; await field.Enter(fieldUser); if (socket.SocialService != null) { await socket.Service.SendMessage(socket.SocialService, new SocialStateMessage { CharacterID = character.ID, State = MigrationState.LoggedIn, Service = socket.Service.Info.Name }); } using (var p = new Packet(SendPacketOperations.FuncKeyMappedInit)) { p.Encode <bool>(false); for (var i = 0; i < 90; i++) { var key = character.FunctionKeys[i]; p.Encode <byte>(key?.Type ?? 0); p.Encode <int>(key?.Action ?? 0); } await socket.SendPacket(p); } using (var p = new Packet(SendPacketOperations.QuickslotMappedInit)) { p.Encode <bool>(true); for (var i = 0; i < 8; i++) { p.Encode <int>(character.QuickSlotKeys[i]); } await socket.SendPacket(p); } if (SkillConstants.HasEvanDragon(fieldUser.Character.Job)) { var dragon = new FieldDragon(fieldUser); fieldUser.Owned.Add(dragon); await fieldUser.Field.Enter(dragon); } } catch { await socket.Close(); } }
public void SkillsFoci() { var foci = new[] { SkillConstants.Appraise, SkillConstants.Balance, SkillConstants.Bluff, SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Alchemy), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Armorsmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Blacksmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bookbinding), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Bowmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brassmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Brewing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Candlemaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Cloth), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Coppersmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Dyemaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Gemcutting), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Glass), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Goldsmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hatmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Hornworking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Jewelmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Leather), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Locksmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Mapmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Milling), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Painting), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Parchmentmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Pewtermaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Potterymaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Sculpting), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shipmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Shoemaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Silversmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Skinning), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Soapmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Stonemasonry), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Tanning), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Trapmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaponsmithing), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Weaving), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Wheelmaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Winemaking), SkillConstants.Build(SkillConstants.Craft, SkillConstants.Foci.Craft.Woodworking), SkillConstants.Climb, SkillConstants.Concentration, SkillConstants.DecipherScript, SkillConstants.Diplomacy, SkillConstants.DisableDevice, SkillConstants.Disguise, SkillConstants.EscapeArtist, SkillConstants.Forgery, SkillConstants.GatherInformation, SkillConstants.HandleAnimal, SkillConstants.Heal, SkillConstants.Hide, SkillConstants.Intimidate, SkillConstants.Jump, SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Arcana), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ArchitectureAndEngineering), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Dungeoneering), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Geography), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.History), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Local), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Nature), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.NobilityAndRoyalty), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.Religion), SkillConstants.Build(SkillConstants.Knowledge, SkillConstants.Foci.Knowledge.ThePlanes), SkillConstants.Listen, SkillConstants.MoveSilently, SkillConstants.OpenLock, SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Act), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Comedy), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Dance), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.KeyboardInstruments), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Oratory), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.PercussionInstruments), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.Sing), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.StringInstruments), SkillConstants.Build(SkillConstants.Perform, SkillConstants.Foci.Perform.WindInstruments), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Adviser), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Alchemist), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalGroomer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.AnimalTrainer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Apothecary), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Appraiser), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Architect), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Armorer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Barrister), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Blacksmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bookbinder), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Bowyer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brazier), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Brewer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Butler), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Carpenter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartographer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cartwright), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Chandler), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.CityGuide), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Clerk), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cobbler), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coffinmaker), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coiffeur), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Cook), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Coppersmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Craftsman), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dowser), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Dyer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Embalmer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Engineer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Entertainer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.ExoticAnimalTrainer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Farmer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Fletcher), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Footman), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Gemcutter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Goldsmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Governess), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Haberdasher), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Healer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Horner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Hunter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Interpreter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Jeweler), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Laborer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Launderer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Limner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.LocalCourier), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Locksmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Maid), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Masseuse), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Matchmaker), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Midwife), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miller), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Miner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Navigator), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Nursemaid), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.OutOfTownCourier), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Painter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Parchmentmaker), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Pewterer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Polisher), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Porter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Potter), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sage), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorCrewmember), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.SailorMate), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Scribe), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Sculptor), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shepherd), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Shipwright), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Silversmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Skinner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soapmaker), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Soothsayer), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Tanner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teacher), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Teamster), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trader), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Trapper), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Valet), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Vintner), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaponsmith), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Weaver), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.Wheelwright), SkillConstants.Build(SkillConstants.Profession, SkillConstants.Foci.Profession.WildernessGuide), SkillConstants.Ride, SkillConstants.Search, SkillConstants.SenseMotive, SkillConstants.SleightOfHand, SkillConstants.Spellcraft, SkillConstants.Spot, SkillConstants.Survival, SkillConstants.Swim, SkillConstants.Tumble, SkillConstants.UseMagicDevice, SkillConstants.UseRope }; base.AssertDistinctCollection(GroupConstants.Skills, foci); }
public static void EncodeData(this Character c, IPacket p, DbChar flags = DbChar.All) { p.Encode <long>((long)flags); p.Encode <byte>(0); p.Encode <byte>(0); if (flags.HasFlag(DbChar.Character)) { EncodeStats(c, p); p.Encode <byte>(250); // nFriendMax p.Encode <bool>(false); } if (flags.HasFlag(DbChar.Money)) { p.Encode <int>(c.Money); } if (flags.HasFlag(DbChar.InventorySize)) { if (flags.HasFlag(DbChar.ItemSlotEquip)) { p.Encode <byte>((byte)c.Inventories[ItemInventoryType.Equip].SlotMax); } if (flags.HasFlag(DbChar.ItemSlotConsume)) { p.Encode <byte>((byte)c.Inventories[ItemInventoryType.Consume].SlotMax); } if (flags.HasFlag(DbChar.ItemSlotInstall)) { p.Encode <byte>((byte)c.Inventories[ItemInventoryType.Install].SlotMax); } if (flags.HasFlag(DbChar.ItemSlotEtc)) { p.Encode <byte>((byte)c.Inventories[ItemInventoryType.Etc].SlotMax); } if (flags.HasFlag(DbChar.ItemSlotCash)) { p.Encode <byte>((byte)c.Inventories[ItemInventoryType.Cash].SlotMax); } } if (flags.HasFlag(DbChar.AdminShopCount)) { p.Encode <int>(0); p.Encode <int>(0); } if (flags.HasFlag(DbChar.ItemSlotEquip)) { var inventory = c.Inventories[ItemInventoryType.Equip].Items; var equip = inventory.Where(kv => kv.Key >= 0); var equipped = inventory.Where(kv => kv.Key >= -100 && kv.Key < 0); var equipped2 = inventory.Where(kv => kv.Key >= -1000 && kv.Key < -100); var dragonEquipped = inventory.Where(kv => kv.Key >= -1100 && kv.Key < -1000); var mechanicEquipped = inventory.Where(kv => kv.Key >= -1200 && kv.Key < -1100); new List <IEnumerable <KeyValuePair <short, ItemSlot> > > { equipped, equipped2, equip, dragonEquipped, mechanicEquipped } .ForEach(e => { e.ForEach(kv => { p.Encode <short>((short)(Math.Abs(kv.Key) % 100)); kv.Value.Encode(p); }); p.Encode <short>(0); }); } new List <(DbChar, ItemInventoryType)> { (DbChar.ItemSlotConsume, ItemInventoryType.Consume), (DbChar.ItemSlotInstall, ItemInventoryType.Install), (DbChar.ItemSlotEtc, ItemInventoryType.Etc), (DbChar.ItemSlotCash, ItemInventoryType.Cash) } .Where(t => flags.HasFlag(t.Item1)) .ForEach(t => { var inventory = c.Inventories[t.Item2].Items; inventory.ForEach(kv => { p.Encode <byte>((byte)kv.Key); kv.Value.Encode(p); }); p.Encode <byte>(0); }); if (flags.HasFlag(DbChar.SkillRecord)) { p.Encode <short>((short)c.SkillRecord.Count); c.SkillRecord.ForEach(kv => { p.Encode <int>(kv.Key); p.Encode <int>(kv.Value.Level); p.Encode <DateTime>(kv.Value.DateExpire ?? ItemConstants.Permanent); if (SkillConstants.IsSkillNeedMasterLevel(kv.Key)) { p.Encode <int>(kv.Value.MasterLevel); } }); } if (flags.HasFlag(DbChar.SkillCooltime)) { p.Encode <short>(0); } if (flags.HasFlag(DbChar.QuestRecord)) { p.Encode <short>((short)c.QuestRecord.Count); c.QuestRecord.ForEach(q => { p.Encode <short>(q.Key); p.Encode <string>(q.Value); }); } if (flags.HasFlag(DbChar.QuestComplete)) { p.Encode <short>((short)c.QuestComplete.Count); c.QuestComplete.ForEach(q => { p.Encode <short>(q.Key); p.Encode <DateTime>(q.Value); }); } if (flags.HasFlag(DbChar.MinigameRecord)) { p.Encode <short>(0); } if (flags.HasFlag(DbChar.CoupleRecord)) { p.Encode <short>(0); // Couple p.Encode <short>(0); // Friend p.Encode <short>(0); // Marriage } if (flags.HasFlag(DbChar.MapTransfer)) { for (var i = 0; i < 5; i++) { p.Encode <int>(0); } for (var i = 0; i < 10; i++) { p.Encode <int>(0); } } if (flags.HasFlag(DbChar.NewYearCard)) { p.Encode <short>(0); } if (flags.HasFlag(DbChar.QuestRecordEx)) { p.Encode <short>((short)c.QuestRecordEx.Count); c.QuestRecordEx.ForEach(q => { p.Encode <short>(q.Key); p.Encode <string>(q.Value); }); } if (flags.HasFlag(DbChar.WildHunterInfo)) { if (c.Job / 100 == 33) { p.Encode <byte>(0); for (var i = 0; i < 5; i++) { p.Encode <int>(0); } } } if (flags.HasFlag(DbChar.QuestCompleteOld)) { p.Encode <short>(0); } if (flags.HasFlag(DbChar.VisitorLog)) { p.Encode <short>(0); } }