public static IDictionary <TemporaryStatType, short> GetTemporaryStats(this StatChangeItemTemplate template) { var stats = new Dictionary <TemporaryStatType, short>(); if (template.PAD != 0) { stats.Add(TemporaryStatType.PAD, template.PAD); } if (template.PDD != 0) { stats.Add(TemporaryStatType.PDD, template.PDD); } if (template.MAD != 0) { stats.Add(TemporaryStatType.MAD, template.MAD); } if (template.MDD != 0) { stats.Add(TemporaryStatType.MDD, template.MDD); } if (template.ACC != 0) { stats.Add(TemporaryStatType.ACC, template.ACC); } if (template.EVA != 0) { stats.Add(TemporaryStatType.EVA, template.EVA); } if (template.Craft != 0) { stats.Add(TemporaryStatType.Craft, template.Craft); } if (template.Speed != 0) { stats.Add(TemporaryStatType.Speed, template.Speed); } if (template.Jump != 0) { stats.Add(TemporaryStatType.Jump, template.Jump); } if (template.Morph > 0) { stats.Add(TemporaryStatType.Morph, template.Morph); } return(stats); }
public static ItemTemplate Parse(int templateId, PackageCollection collection) { WZProperty prop = null; ItemTemplate item = null; var type = templateId / 1000000; var subType = templateId % 1000000 / 10000; var header = templateId / 10000; switch (type) { case 1: item = new ItemEquipTemplate(); prop = collection.Resolve("Character").Children .SelectMany(c => c.Children) .FirstOrDefault(c => c.Name == $"{templateId:D8}.img"); break; case 2: prop = collection.Resolve($"Item/Consume/{header:D4}.img/{templateId:D8}"); switch (subType) { case 0: case 1: case 2: case 5: case 21: case 36: case 38: case 45: item = new StatChangeItemTemplate(); break; case 3: item = new PortalScrollItemTemplate(); break; case 4: item = new UpgradeItemTemplate(); break; case 10: item = new MobSummonItemTemplate(); break; case 12: item = new PetFoodItemTemplate(); break; case 26: item = new TamingMobFoodItemTemplate(); break; case 27: item = new BridleItemTemplate(); break; case 28: case 29: item = new SkillLearnItemTemplate(); break; } break; case 3: prop = collection.Resolve($"Item/Install/{header:D4}.img/{templateId:D8}"); if (subType == 1) { item = new PortableChairItemTemplate(); } break; case 4: prop = collection.Resolve($"Item/Etc/{header:D4}.img/{templateId:D8}"); break; case 5: // TODO switch (subType) { case 0: item = new PetItemTemplate(); prop = collection.Resolve($"Item/Pet/{templateId:D7}.img"); break; } prop = prop ?? collection.Resolve($"Item/Cash/{header:D4}.img/{templateId:D8}"); break; } if (item == null) { item = new ItemBundleTemplate(); } item.Parse(templateId, prop); return(item); }