fix: Fixes ML containers and addons (#804)

* Fixes some ML addons so they are containers
* Adds some missing ML artifacts
* Fixes carpentry gump crafting entries
This commit is contained in:
Kamron Batman 2021-09-26 18:54:33 -07:00 • committed by GitHub
parent b4ab052241
commit 2253a2332c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
61 changed files with 678 additions and 630 deletions

View file

@ -54,10 +54,8 @@ namespace Server.Engines.Craft
{
var type = item.GetType();
var isAnvil = type.IsDefined(typeofAnvil, false) || item.ItemID == 4015 || item.ItemID == 4016 ||
item.ItemID == 0x2DD5 || item.ItemID == 0x2DD6;
var isForge = type.IsDefined(typeofForge, false) || item.ItemID == 4017 ||
item.ItemID >= 6522 && item.ItemID <= 6569 || item.ItemID == 0x2DD8;
var isAnvil = type.IsDefined(typeofAnvil, false) || item.ItemID is 4015 or 4016 or 11733 or 11734;
var isForge = type.IsDefined(typeofForge, false) || item.ItemID is 4017 or >= 6522 and <= 6569 or 11736;
if (isAnvil || isForge)
{
@ -88,8 +86,8 @@ namespace Server.Engines.Craft
{
var id = tiles[i].ID;
var isAnvil = id == 4015 || id == 4016 || id == 0x2DD5 || id == 0x2DD6;
var isForge = id == 4017 || id >= 6522 && id <= 6569 || id == 0x2DD8;
var isAnvil = id is 4015 or 4016 or 11733 or 11734;
var isForge = id is 4017 or >= 6522 and <= 6569 or 11736;
if (isAnvil || isForge)
{

View file

@ -104,26 +104,13 @@ namespace Server.Engines.Craft
index = AddCraft(typeof(RedHangingLantern), 1044294, 1029412, 65.0, 90.0, typeof(Log), 1044041, 5, 1044351);
AddRes(index, typeof(BlankScroll), 1044377, 10, 1044378);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(WhiteHangingLantern),
1044294,
1029416,
65.0,
90.0,
typeof(Log),
1044041,
5,
1044351
);
index = AddCraft(typeof(WhiteHangingLantern), 1044294, 1029416, 65.0, 90.0, typeof(Log), 1044041, 5, 1044351);
AddRes(index, typeof(BlankScroll), 1044377, 10, 1044378);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(ShojiScreen), 1044294, 1029423, 80.0, 105.0, typeof(Log), 1044041, 75, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(BambooScreen), 1044294, 1029428, 80.0, 105.0, typeof(Log), 1044041, 75, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
@ -132,17 +119,7 @@ namespace Server.Engines.Craft
if (Core.AOS) // Duplicate Entries to preserve ordering depending on era
{
index = AddCraft(
typeof(FishingPole),
1044294,
1023519,
68.4,
93.4,
typeof(Log),
1044041,
5,
1044351
);
index = AddCraft(typeof(FishingPole), 1044294, 1023519, 68.4, 93.4, typeof(Log), 1044041, 5, 1044351 );
AddSkill(index, SkillName.Tailoring, 40.0, 45.0);
AddRes(index, typeof(Cloth), 1044286, 5, 1044287);
}
@ -154,78 +131,35 @@ namespace Server.Engines.Craft
AddRes(index, typeof(RunedPrism), 1073465, 1, 1053098);
AddRes(index, typeof(JeweledFiligree), 1072894, 1, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(WarriorStatueSouthDeed),
1044294,
1072887,
0.0,
35.0,
typeof(Log),
1044041,
250,
1044351
);
index = AddCraft(typeof(ArcanistStatueSouthDeed), 1044294, 1072885, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ArcanistStatueEastDeed), 1044294, 1072886, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WarriorStatueSouthDeed), 1044294, 1072887, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
AddRecipe(index, 300);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(WarriorStatueEastDeed),
1044294,
1072888,
0.0,
35.0,
typeof(Log),
1044041,
250,
1044351
);
index = AddCraft(typeof(WarriorStatueEastDeed), 1044294, 1072888, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
AddRecipe(index, 301);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(SquirrelStatueSouthDeed),
1044294,
1072884,
0.0,
35.0,
typeof(Log),
1044041,
250,
1044351
);
index = AddCraft(typeof(SquirrelStatueSouthDeed), 1044294, 1072884, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
AddRecipe(index, 302);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(SquirrelStatueEastDeed),
1044294,
1073398,
0.0,
35.0,
typeof(Log),
1044041,
250,
1044351
);
index = AddCraft(typeof(SquirrelStatueEastDeed), 1044294, 1073398, 0.0, 35.0, typeof(Log), 1044041, 250, 1044351);
AddRecipe(index, 303);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(AcidProofRope),
1044294,
1074886,
80,
130.0,
typeof(GreaterStrengthPotion),
1073466,
2,
1044253
);
index = AddCraft(typeof(GiantReplicaAcorn), 1044294, 1072889, 80.0, 105.0, typeof(Log), 1044041, 35, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(MountedDreadHorn), 1044294, 1032632, 90.0, 115.0, typeof(Log), 1044041, 50, 1044351);
AddRes(index, typeof(PristineDreadHorn), 1032634, 1, 1053098);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(AcidProofRope), 1044294, 1074886, 80, 130.0, typeof(GreaterStrengthPotion), 1073466, 2, 1044253);
AddRes(index, typeof(ProtectionScroll), 1044395, 1, 1053098);
AddRes(index, typeof(SwitchItem), 1032127, 1, 1053098);
AddRareRecipe(index, 304);
@ -252,16 +186,29 @@ namespace Server.Engines.Craft
{
index = AddCraft(typeof(ElegantLowTable), 1044291, 1030265, 80.0, 105.0, typeof(Log), 1044041, 35, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(PlainLowTable), 1044291, 1030266, 80.0, 105.0, typeof(Log), 1044041, 35, 1044351);
SetNeededExpansion(index, Expansion.SE);
}
if (Core.ML)
{
index = AddCraft(typeof(OrnateElvenTableSouthDeed), 1044291, 1072869, 85.0, 110.0, typeof(Log), 1044041, 60, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(OrnateElvenTableEastDeed), 1044291, 1073384, 85.0, 110.0, typeof(Log), 1044041, 60, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(FancyElvenTableSouthDeed), 1044291, 1073385, 80.0, 105.0, typeof(Log), 1044041, 50, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(FancyElvenTableEastDeed), 1044291, 1073386, 80.0, 105.0, typeof(Log), 1044041, 50, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenPodium), 1044291, 1073399, 80.0, 105.0, typeof(Log), 1044041, 20, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(OrnateElvenChair), 1044291, 1072870, 80.0, 105.0, typeof(Log), 1044041, 30, 1044351);
AddRecipe(index, 305);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(BigElvenChair), 1044291, 1072872, 85.0, 110.0, typeof(Log), 1044041, 40, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenReadingChair), 1044291, 1072873, 80.0, 105.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.ML);
}
// Containers
@ -278,64 +225,24 @@ namespace Server.Engines.Craft
{
index = AddCraft(typeof(PlainWoodenChest), 1044292, 1030251, 90.0, 115.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(OrnateWoodenChest),
1044292,
1030253,
90.0,
115.0,
typeof(Log),
1044041,
30,
1044351
);
index = AddCraft(typeof(OrnateWoodenChest), 1044292, 1030253, 90.0, 115.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(GildedWoodenChest),
1044292,
1030255,
90.0,
115.0,
typeof(Log),
1044041,
30,
1044351
);
index = AddCraft(typeof(GildedWoodenChest), 1044292, 1030255, 90.0, 115.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(WoodenFootLocker), 1044292, 1030257, 90.0, 115.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(FinishedWoodenChest),
1044292,
1030259,
90.0,
115.0,
typeof(Log),
1044041,
30,
1044351
);
index = AddCraft(typeof(FinishedWoodenChest), 1044292, 1030259, 90.0, 115.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(TallCabinet), 1044292, 1030261, 90.0, 115.0, typeof(Log), 1044041, 35, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(ShortCabinet), 1044292, 1030263, 90.0, 115.0, typeof(Log), 1044041, 35, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(RedArmoire), 1044292, 1030328, 90.0, 115.0, typeof(Log), 1044041, 40, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(ElegantArmoire), 1044292, 1030330, 90.0, 115.0, typeof(Log), 1044041, 40, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(MapleArmoire), 1044292, 1030332, 90.0, 115.0, typeof(Log), 1044041, 40, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(typeof(CherryArmoire), 1044292, 1030334, 90.0, 115.0, typeof(Log), 1044041, 40, 1044351);
SetNeededExpansion(index, Expansion.SE);
}
@ -346,193 +253,77 @@ namespace Server.Engines.Craft
if (Core.ML)
{
index = AddCraft(
typeof(ArcaneBookshelfSouthDeed),
1044292,
1072871,
94.7,
119.7,
typeof(Log),
1044041,
80,
1044351
);
index = AddCraft(typeof(ArcaneBookshelfSouthDeed), 1044292, 1072871, 94.7, 119.7, typeof(Log), 1044041, 80, 1044351);
AddRecipe(index, 306);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(ArcaneBookshelfEastDeed),
1044292,
1073371,
94.7,
119.7,
typeof(Log),
1044041,
80,
1044351
);
index = AddCraft(typeof(ArcaneBookshelfEastDeed), 1044292, 1073371, 94.7, 119.7, typeof(Log), 1044041, 80, 1044351);
AddRecipe(index, 307);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
/* TODO
index = AddCraft( typeof( OrnateElvenChestSouthDeed ), 1044292, 1072862, 94.7, 119.7, typeof( Log ), 1044041, 40, 1044351 );
AddRecipe( index, 308 );
ForceNonExceptional( index );
SetNeededExpansion( index, Expansion.ML );
index = AddCraft( typeof( OrnateElvenChestEastDeed ), 1044292, 1073383, 94.7, 119.7, typeof( Log ), 1044041, 40, 1044351 );
AddRecipe( index, 309 );
ForceNonExceptional( index );
SetNeededExpansion( index, Expansion.ML );
*/
index = AddCraft(
typeof(ElvenDresserSouthDeed),
1044292,
1072864,
75.0,
100.0,
typeof(Log),
1044041,
45,
1044351
);
index = AddCraft( typeof(OrnateElvenChestSouthDeed), 1044292, 1072862, 94.7, 119.7, typeof(Log), 1044041, 40, 1044351);
AddRecipe(index, 308);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft( typeof(OrnateElvenChestEastDeed), 1044292, 1073383, 94.7, 119.7, typeof(Log), 1044041, 40, 1044351);
AddRecipe(index, 309);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenWashBasinSouthDeed), 1044292, 1072865, 70.0, 95.0, typeof(Log), 1044041, 40, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenWashBasinEastDeed), 1044292, 1072865, 70.0, 95.0, typeof(Log), 1044041, 40, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenDresserSouthDeed), 1044292, 1072864, 75.0, 100.0, typeof(Log), 1044041, 45, 1044351);
AddRecipe(index, 310);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(ElvenDresserEastDeed),
1044292,
1073388,
75.0,
100.0,
typeof(Log),
1044041,
45,
1044351
);
index = AddCraft(typeof(ElvenDresserEastDeed), 1044292, 1073388, 75.0, 100.0, typeof(Log), 1044041, 45, 1044351);
AddRecipe(index, 311);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
/* TODO
index = AddCraft( typeof( FancyElvenArmoire ), 1044292, 1072866, 80.0, 105.0, typeof( Log ), 1044041, 60, 1044351 );
AddRecipe( index, 312 );
ForceNonExceptional( index );
SetNeededExpansion( index, Expansion.ML );
*/
index = AddCraft( typeof(FancyElvenArmoire), 1044292, 1072866, 80.0, 105.0, typeof(Log), 1044041, 60, 1044351);
AddRecipe(index, 312);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(SimpleElvenArmoire), 1044292, 1073401, 80.0, 105.0, typeof(Log), 1044041, 60, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(RarewoodChest), 1044292, 1073402, 80.0, 105.0, typeof(Log), 1044041, 30, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(DecorativeBox), 1044292, 1073403, 80.0, 105.0, typeof(Log), 1044041, 25, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(FullBookcase), 1044292, 1071213, 60.0, 85.0, typeof(Log), 1044041, 25, 1044351);
AddRes(index, typeof(AcademicBooksArtifact), 1071202, 1, 1044253);
SetNeededExpansion(index, Expansion.ML);
}
// Staves and Shields
AddCraft(
typeof(ShepherdsCrook),
Core.ML ? 1044566 : 1044295,
1023713,
78.9,
103.9,
typeof(Log),
1044041,
7,
1044351
);
AddCraft(
typeof(QuarterStaff),
Core.ML ? 1044566 : 1044295,
1023721,
73.6,
98.6,
typeof(Log),
1044041,
6,
1044351
);
AddCraft(
typeof(GnarledStaff),
Core.ML ? 1044566 : 1044295,
1025112,
78.9,
103.9,
typeof(Log),
1044041,
7,
1044351
);
AddCraft(
typeof(WoodenShield),
Core.ML ? 1062760 : 1044295,
1027034,
52.6,
77.6,
typeof(Log),
1044041,
9,
1044351
);
AddCraft(typeof(ShepherdsCrook), Core.ML ? 1044566 : 1044295, 1023713, 78.9, 103.9, typeof(Log), 1044041, 7, 1044351);
AddCraft(typeof(QuarterStaff), Core.ML ? 1044566 : 1044295, 1023721, 73.6, 98.6, typeof(Log), 1044041, 6, 1044351);
AddCraft(typeof(GnarledStaff), Core.ML ? 1044566 : 1044295, 1025112, 78.9, 103.9, typeof(Log), 1044041, 7, 1044351);
if (!Core.AOS) // Duplicate Entries to preserve ordering depending on era
{
index = AddCraft(
typeof(FishingPole),
Core.ML ? 1044294 : 1044295,
1023519,
68.4,
93.4,
typeof(Log),
1044041,
5,
1044351
);
index = AddCraft(typeof(FishingPole), Core.ML ? 1044294 : 1044295, 1023519, 68.4, 93.4, typeof(Log), 1044041, 5, 1044351);
AddSkill(index, SkillName.Tailoring, 40.0, 45.0);
AddRes(index, typeof(Cloth), 1044286, 5, 1044287);
}
if (Core.SE)
{
index = AddCraft(
typeof(Bokuto),
Core.ML ? 1044566 : 1044295,
1030227,
70.0,
95.0,
typeof(Log),
1044041,
6,
1044351
);
index = AddCraft(typeof(Bokuto), Core.ML ? 1044566 : 1044295, 1030227, 70.0, 95.0, typeof(Log), 1044041, 6, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(Fukiya),
Core.ML ? 1044566 : 1044295,
1030229,
60.0,
85.0,
typeof(Log),
1044041,
6,
1044351
);
index = AddCraft(typeof(Fukiya), Core.ML ? 1044566 : 1044295, 1030229, 60.0, 85.0, typeof(Log), 1044041, 6, 1044351);
SetNeededExpansion(index, Expansion.SE);
index = AddCraft(
typeof(Tetsubo),
Core.ML ? 1044566 : 1044295,
1030225,
80.0,
140.3,
typeof(Log),
1044041,
10,
1044351
);
index = AddCraft(typeof(Tetsubo), Core.ML ? 1044566 : 1044295, 1030225, 80.0, 140.3, typeof(Log), 1044041, 10, 1044351);
SetNeededExpansion(index, Expansion.SE);
}
if (Core.ML)
{
index = AddCraft(typeof(WildStaff), 1044566, 1031557, 63.8, 113.8, typeof(Log), 1044041, 16, 1044351);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(PhantomStaff), 1044566, 1072919, 90.0, 130.0, typeof(Log), 1044041, 16, 1044351);
AddRes(index, typeof(DiseasedBark), 1032683, 1, 1053098);
AddRes(index, typeof(Putrefication), 1032678, 10, 1053098);
@ -540,51 +331,56 @@ namespace Server.Engines.Craft
AddRareRecipe(index, 313);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(ArcanistsWildStaff),
1044566,
1073549,
63.8,
113.8,
typeof(Log),
1044041,
16,
1044351
);
index = AddCraft(typeof(ArcanistsWildStaff), 1044566, 1073549, 63.8, 113.8, typeof(Log), 1044041, 16, 1044351);
AddRes(index, typeof(WhitePearl), 1026253, 1, 1053098);
AddRecipe(index, 314);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(AncientWildStaff), 1044566, 1073550, 63.8, 113.8, typeof(Log), 1044041, 16, 1044351);
AddRes(index, typeof(PerfectEmerald), 1026251, 1, 1053098);
AddRecipe(index, 315);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ThornedWildStaff), 1044566, 1073551, 63.8, 113.8, typeof(Log), 1044041, 16, 1044351);
AddRes(index, typeof(FireRuby), 1026254, 1, 1053098);
AddRecipe(index, 316);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(HardenedWildStaff),
1044566,
1073552,
63.8,
113.8,
typeof(Log),
1044041,
16,
1044351
);
index = AddCraft(typeof(HardenedWildStaff), 1044566, 1073552, 63.8, 113.8, typeof(Log), 1044041, 16, 1044351);
AddRes(index, typeof(Turquoise), 1026250, 1, 1053098);
AddRecipe(index, 317);
SetNeededExpansion(index, Expansion.ML);
}
// Armor
AddCraft(typeof(WoodenShield), Core.ML ? 1062760 : 1044295, 1027034, 52.6, 77.6, typeof(Log), 1044041, 9, 1044351);
if (Core.ML)
{
index = AddCraft(typeof(WoodlandChest), 1062760, 1031111, 90.0, 115.0, typeof(Log), 1044041, 20, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 6, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WoodlandArms), 1062760, 1031116, 80.0, 105.0, typeof(Log), 1044041, 15, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WoodlandGloves), 1062760, 1031114, 85.0, 110.0, typeof(Log), 1044041, 15, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WoodlandLegs), 1062760, 1031115, 85.0, 110.0, typeof(Log), 1044041, 15, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WoodlandGorget), 1062760, 1031113, 85.0, 110.0, typeof(Log), 1044041, 15, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(RavenHelm), 1062760, 1031121, 65.0, 115.0, typeof(Log), 1044041, 10, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
AddRes(index, typeof(Feather), 1027123, 25, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(VultureHelm), 1062760, 1031122, 63.9, 113.9, typeof(Log), 1044041, 10, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
AddRes(index, typeof(Feather), 1027123, 25, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(WingedHelm), 1062760, 1031123, 58.4, 108.4, typeof(Log), 1044041, 10, 1044351);
AddRes(index, typeof(BarkFragment), 1032687, 4, 1053098);
AddRes(index, typeof(Feather), 1027123, 60, 1053098);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(IronwoodCrown), 1062760, 1072924, 85.0, 120.0, typeof(Log), 1044041, 10, 1044351);
AddRes(index, typeof(DiseasedBark), 1032683, 1, 1053098);
AddRes(index, typeof(Corruption), 1032676, 10, 1053098);
@ -592,7 +388,6 @@ namespace Server.Engines.Craft
AddRareRecipe(index, 318);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(BrambleCoat), 1062760, 1072925, 85.0, 120.0, typeof(Log), 1044041, 10, 1044351);
AddRes(index, typeof(DiseasedBark), 1032683, 1, 1053098);
AddRes(index, typeof(Taint), 1032679, 10, 1053098);
@ -606,23 +401,18 @@ namespace Server.Engines.Craft
index = AddCraft(typeof(LapHarp), 1044293, 1023762, 63.1, 88.1, typeof(Log), 1044041, 20, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 10, 1044287);
index = AddCraft(typeof(Harp), 1044293, 1023761, 78.9, 103.9, typeof(Log), 1044041, 35, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 15, 1044287);
index = AddCraft(typeof(Drums), 1044293, 1023740, 57.8, 82.8, typeof(Log), 1044041, 20, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 10, 1044287);
index = AddCraft(typeof(Lute), 1044293, 1023763, 68.4, 93.4, typeof(Log), 1044041, 25, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 10, 1044287);
index = AddCraft(typeof(Tambourine), 1044293, 1023741, 57.8, 82.8, typeof(Log), 1044041, 15, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 10, 1044287);
index = AddCraft(typeof(TambourineTassel), 1044293, 1044320, 57.8, 82.8, typeof(Log), 1044041, 15, 1044351);
AddSkill(index, SkillName.Musicianship, 45.0, 50.0);
AddRes(index, typeof(Cloth), 1044286, 15, 1044287);
@ -634,44 +424,58 @@ namespace Server.Engines.Craft
SetNeededExpansion(index, Expansion.SE);
}
// Misc
if (Core.AOS)
{
AddCraft(typeof(PlayerBBEast), 1044290, 1062420, 85.0, 110.0, typeof(Log), 1044041, 50, 1044351);
AddCraft(typeof(PlayerBBSouth), 1044290, 1062421, 85.0, 110.0, typeof(Log), 1044041, 50, 1044351);
}
if (Core.ML)
{
index = AddCraft(
typeof(TallElvenBedSouthDeed),
1044290,
1072858,
94.7,
119.7,
typeof(Log),
1044041,
200,
1044351
);
index = AddCraft(typeof(ParrotPerchDeed), 1044290, 1072617, 50.0, 85.0, typeof(Log), 1044041, 100, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ArcaneCircleDeed), 1044290, 1072703, 94.7, 119.7, typeof(Log), 1044041, 100, 1044351);
AddRes(index, typeof(BlueDiamond), 1026255, 2, 1053098);
AddRes(index, typeof(PerfectEmerald), 1026251, 2, 1053098);
AddRes(index, typeof(FireRuby), 1026254, 2, 1053098);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(TallElvenBedSouthDeed), 1044290, 1072858, 94.7, 119.7, typeof(Log), 1044041, 200, 1044351);
AddSkill(index, SkillName.Tailoring, 75.0, 80.0);
AddRes(index, typeof(Cloth), 1044286, 100, 1044287);
AddRecipe(index, 320);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(
typeof(TallElvenBedEastDeed),
1044290,
1072859,
94.7,
119.7,
typeof(Log),
1044041,
200,
1044351
);
index = AddCraft(typeof(TallElvenBedEastDeed), 1044290, 1072859, 94.7, 119.7, typeof(Log), 1044041, 200, 1044351);
AddSkill(index, SkillName.Tailoring, 75.0, 80.0);
AddRes(index, typeof(Cloth), 1044286, 100, 1044287);
AddRecipe(index, 321);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenBedSouthDeed), 1044290, 1072860, 94.7, 119.7, typeof(Log), 1044041, 100, 1044351);
AddRes(index, typeof(Cloth), 1044286, 100, 1044287);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenBedEastDeed), 1044290, 1072861, 94.7, 119.7, typeof(Log), 1044041, 100, 1044351);
AddRes(index, typeof(Cloth), 1044286, 100, 1044287);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenLoveseatSouthDeed), 1044290, 1072867, 80.0, 105.0, typeof(Log), 1044041, 50, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenLoveseatEastDeed), 1044290, 1073372, 80.0, 105.0, typeof(Log), 1044041, 50, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(AlchemistTableSouthDeed), 1044290, 1073396, 85.0, 110.0, typeof(Log), 1044041, 70, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(AlchemistTableEastDeed), 1044290, 1073397, 85.0, 110.0, typeof(Log), 1044041, 70, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
}
// Misc
index = AddCraft(typeof(SmallBedSouthDeed), 1044290, 1044321, 94.7, 119.8, typeof(Log), 1044041, 100, 1044351);
AddSkill(index, SkillName.Tailoring, 75.0, 80.0);
AddRes(index, typeof(Cloth), 1044286, 100, 1044287);
@ -694,13 +498,14 @@ namespace Server.Engines.Craft
AddSkill(index, SkillName.Magery, 50.0, 55.0);
AddRes(index, typeof(IronIngot), 1044036, 40, 1044037);
if (Core.AOS)
// Blacksmithy - This changed to Anvils and Forges (1111809) for SA
if (Core.ML)
{
AddCraft(typeof(PlayerBBEast), 1044290, 1062420, 85.0, 110.0, typeof(Log), 1044041, 50, 1044351);
AddCraft(typeof(PlayerBBSouth), 1044290, 1062421, 85.0, 110.0, typeof(Log), 1044041, 50, 1044351);
index = AddCraft(typeof(ElvenForgeDeed), 1044296, 1072875, 94.7, 119.7, typeof(Log), 1044041, 200, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
}
// Blacksmithy - This changed to Anvils and Forges (1111809) for SA
index = AddCraft(typeof(SmallForgeDeed), 1044296, 1044330, 73.6, 98.6, typeof(Log), 1044041, 5, 1044351);
AddSkill(index, SkillName.Blacksmith, 75.0, 80.0);
AddRes(index, typeof(IronIngot), 1044036, 75, 1044037);
@ -721,33 +526,13 @@ namespace Server.Engines.Craft
index = AddCraft(typeof(TrainingDummyEastDeed), 1044297, 1044335, 68.4, 93.4, typeof(Log), 1044041, 55, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
index = AddCraft(
typeof(TrainingDummySouthDeed),
1044297,
1044336,
68.4,
93.4,
typeof(Log),
1044041,
55,
1044351
);
index = AddCraft(typeof(TrainingDummySouthDeed), 1044297, 1044336, 68.4, 93.4, typeof(Log), 1044041, 55, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
index = AddCraft(typeof(PickpocketDipEastDeed), 1044297, 1044337, 73.6, 98.6, typeof(Log), 1044041, 65, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
index = AddCraft(
typeof(PickpocketDipSouthDeed),
1044297,
1044338,
73.6,
98.6,
typeof(Log),
1044041,
65,
1044351
);
index = AddCraft(typeof(PickpocketDipSouthDeed), 1044297, 1044338, 73.6, 98.6, typeof(Log), 1044041, 65, 1044351);
AddSkill(index, SkillName.Tailoring, 50.0, 55.0);
AddRes(index, typeof(Cloth), 1044286, 60, 1044287);
@ -755,20 +540,31 @@ namespace Server.Engines.Craft
index = AddCraft(typeof(Dressform), 1044298, 1044339, 63.1, 88.1, typeof(Log), 1044041, 25, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 70.0);
AddRes(index, typeof(Cloth), 1044286, 10, 1044287);
index = AddCraft(typeof(SpinningwheelEastDeed), 1044298, 1044341, 73.6, 98.6, typeof(Log), 1044041, 75, 1044351);
if (Core.ML)
{
index = AddCraft(typeof(ElvenSpinningWheelEastDeed), 1044298, 1073393, 75.0, 100.0, typeof(Log), 1044041, 60, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 85.0);
AddRes(index, typeof(Cloth), 1044286, 40, 1044287);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenSpinningWheelSouthDeed), 1044298, 1072878, 75.0, 100.0, typeof(Log), 1044041, 60, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 85.0);
AddRes(index, typeof(Cloth), 1044286, 40, 1044287);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenStoveSouthDeed), 1044298, 1073394, 85.0, 110.0, typeof(Log), 1044041, 80, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
index = AddCraft(typeof(ElvenStoveEastDeed), 1044298, 1073395, 85.0, 110.0, typeof(Log), 1044041, 80, 1044351);
ForceNonExceptional(index);
SetNeededExpansion(index, Expansion.ML);
}
index = AddCraft(typeof(SpinningWheelEastDeed), 1044298, 1044341, 73.6, 98.6, typeof(Log), 1044041, 75, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 70.0);
AddRes(index, typeof(Cloth), 1044286, 25, 1044287);
index = AddCraft(
typeof(SpinningwheelSouthDeed),
1044298,
1044342,
73.6,
98.6,
typeof(Log),
1044041,
75,
1044351
);
index = AddCraft(typeof(SpinningWheelSouthDeed), 1044298, 1044342, 73.6, 98.6, typeof(Log), 1044041, 75, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 70.0);
AddRes(index, typeof(Cloth), 1044286, 25, 1044287);
index = AddCraft(typeof(LoomEastDeed), 1044298, 1044343, 84.2, 109.2, typeof(Log), 1044041, 85, 1044351);
@ -777,82 +573,20 @@ namespace Server.Engines.Craft
index = AddCraft(typeof(LoomSouthDeed), 1044298, 1044344, 84.2, 109.2, typeof(Log), 1044041, 85, 1044351);
AddSkill(index, SkillName.Tailoring, 65.0, 70.0);
AddRes(index, typeof(Cloth), 1044286, 25, 1044287);
// Cooking
index = AddCraft(
typeof(StoneOvenEastDeed),
Core.ML ? 1044298 : 1044299,
1044345,
68.4,
93.4,
typeof(Log),
1044041,
85,
1044351
);
index = AddCraft(typeof(StoneOvenEastDeed), Core.ML ? 1044298 : 1044299, 1044345, 68.4, 93.4, typeof(Log), 1044041, 85, 1044351);
AddSkill(index, SkillName.Tinkering, 50.0, 55.0);
AddRes(index, typeof(IronIngot), 1044036, 125, 1044037);
index = AddCraft(
typeof(StoneOvenSouthDeed),
Core.ML ? 1044298 : 1044299,
1044346,
68.4,
93.4,
typeof(Log),
1044041,
85,
1044351
);
index = AddCraft(typeof(StoneOvenSouthDeed), Core.ML ? 1044298 : 1044299, 1044346, 68.4, 93.4, typeof(Log), 1044041, 85, 1044351);
AddSkill(index, SkillName.Tinkering, 50.0, 55.0);
AddRes(index, typeof(IronIngot), 1044036, 125, 1044037);
index = AddCraft(
typeof(FlourMillEastDeed),
Core.ML ? 1044298 : 1044299,
1044347,
94.7,
119.7,
typeof(Log),
1044041,
100,
1044351
);
index = AddCraft(typeof(FlourMillEastDeed), Core.ML ? 1044298 : 1044299, 1044347, 94.7, 119.7, typeof(Log), 1044041, 100, 1044351);
AddSkill(index, SkillName.Tinkering, 50.0, 55.0);
AddRes(index, typeof(IronIngot), 1044036, 50, 1044037);
index = AddCraft(
typeof(FlourMillSouthDeed),
Core.ML ? 1044298 : 1044299,
1044348,
94.7,
119.7,
typeof(Log),
1044041,
100,
1044351
);
index = AddCraft(typeof(FlourMillSouthDeed), Core.ML ? 1044298 : 1044299, 1044348, 94.7, 119.7, typeof(Log), 1044041, 100, 1044351);
AddSkill(index, SkillName.Tinkering, 50.0, 55.0);
AddRes(index, typeof(IronIngot), 1044036, 50, 1044037);
AddCraft(
typeof(WaterTroughEastDeed),
Core.ML ? 1044298 : 1044299,
1044349,
94.7,
119.7,
typeof(Log),
1044041,
150,
1044351
);
AddCraft(
typeof(WaterTroughSouthDeed),
Core.ML ? 1044298 : 1044299,
1044350,
94.7,
119.7,
typeof(Log),
1044041,
150,
1044351
);
AddCraft(typeof(WaterTroughEastDeed), Core.ML ? 1044298 : 1044299, 1044349, 94.7, 119.7, typeof(Log), 1044041, 150, 1044351);
AddCraft(typeof(WaterTroughSouthDeed), Core.ML ? 1044298 : 1044299, 1044350, 94.7, 119.7, typeof(Log), 1044041, 150, 1044351);
MarkOption = true;
Repair = Core.AOS;

View file

@ -783,7 +783,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2811, 0x2812)]
[Furniture]
[Flippable(0x2811, 0x2812)]
public class ChestOfHeirlooms : LockableContainer
{
[Constructible]

View file

@ -1,27 +1,30 @@
namespace Server.Items
{
[Serializable(0)]
public partial class ArcaneBookshelfSouthAddon : BaseAddon
public partial class ArcaneBookshelfSouthAddon : BaseAddonContainer
{
[Constructible]
public ArcaneBookshelfSouthAddon()
public ArcaneBookshelfSouthAddon() : base(0x2DEF)
{
AddComponent(new AddonComponent(0x3087), 0, 0, 0);
AddComponent(new AddonComponent(0x3086), 0, 1, 0);
AddComponent(new LocalizedContainerComponent(0x21A4, 1031760), -1, 0, 0);
}
public override BaseAddonDeed Deed => new ArcaneBookshelfSouthDeed();
public override BaseAddonContainerDeed Deed => new ArcaneBookshelfSouthDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x107;
public override int DefaultDropSound => 0x42;
public override int LabelNumber => 1032420; // arcane bookshelf
}
[Serializable(0)]
public partial class ArcaneBookshelfSouthDeed : BaseAddonDeed
public partial class ArcaneBookshelfSouthDeed : BaseAddonContainerDeed
{
[Constructible]
public ArcaneBookshelfSouthDeed()
{
}
public override BaseAddon Addon => new ArcaneBookshelfSouthAddon();
public override BaseAddonContainer Addon => new ArcaneBookshelfSouthAddon();
public override int LabelNumber => 1072871; // arcane bookshelf (south)
}
}

View file

@ -1,27 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class ElvenDresserEastAddon : BaseAddon
public partial class ElvenDresserEastAddon : BaseAddonContainer
{
[Constructible]
public ElvenDresserEastAddon()
public ElvenDresserEastAddon() : base(0x30E4)
{
AddComponent(new AddonComponent(0x30E4), 0, 0, 0);
AddComponent(new AddonComponent(0x30E3), 0, -1, 0);
AddComponent(new AddonContainerComponent(0x30E3), 0, -1, 0);
}
public override BaseAddonDeed Deed => new ElvenDresserEastDeed();
public override BaseAddonContainerDeed Deed => new ElvenDresserEastDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x51;
public override int DefaultDropSound => 0x42;
}
[Serializable(0)]
public partial class ElvenDresserEastDeed : BaseAddonDeed
public partial class ElvenDresserEastDeed : BaseAddonContainerDeed
{
[Constructible]
public ElvenDresserEastDeed()
{
}
public override BaseAddon Addon => new ElvenDresserEastAddon();
public override BaseAddonContainer Addon => new ElvenDresserEastAddon();
public override int LabelNumber => 1073388; // elven dresser (east)
}
}

View file

@ -1,27 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class ElvenDresserSouthAddon : BaseAddon
public partial class ElvenDresserSouthAddon : BaseAddonContainer
{
[Constructible]
public ElvenDresserSouthAddon()
public ElvenDresserSouthAddon() : base(0x30E6)
{
AddComponent(new AddonComponent(0x30E5), 0, 0, 0);
AddComponent(new AddonComponent(0x30E6), 1, 0, 0);
AddComponent(new AddonContainerComponent(0x30E5), -1, 0, 0);
}
public override BaseAddonDeed Deed => new ElvenDresserSouthDeed();
public override BaseAddonContainerDeed Deed => new ElvenDresserSouthDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x51;
public override int DefaultDropSound => 0x42;
}
[Serializable(0)]
public partial class ElvenDresserSouthDeed : BaseAddonDeed
public partial class ElvenDresserSouthDeed : BaseAddonContainerDeed
{
[Constructible]
public ElvenDresserSouthDeed()
{
}
public override BaseAddon Addon => new ElvenDresserSouthAddon();
public override BaseAddonContainer Addon => new ElvenDresserSouthAddon();
public override int LabelNumber => 1072864; // elven dresser (south)
}
}

View file

@ -9,6 +9,7 @@ namespace Server.Items
AddComponent(new AddonComponent(0x2DD8), 0, 0, 0);
}
public override int LabelNumber => 1072875; // elven forge
public override BaseAddonDeed Deed => new ElvenForgeDeed();
}
@ -21,6 +22,6 @@ namespace Server.Items
}
public override BaseAddon Addon => new ElvenForgeAddon();
public override int LabelNumber => 1072875; // squirrel statue (east)
public override int LabelNumber => 1072875; // elven forge
}
}

View file

@ -6,8 +6,8 @@ namespace Server.Items
[Constructible]
public ElvenLoveseatEastAddon()
{
AddComponent(new AddonComponent(0x3089), 0, 0, 0);
AddComponent(new AddonComponent(0x3088), 1, 0, 0);
AddComponent(new AddonComponent(0x308A), 0, 0, 0);
AddComponent(new AddonComponent(0x308B), 0, -1, 0);
}
public override BaseAddonDeed Deed => new ElvenLoveseatEastDeed();

View file

@ -6,8 +6,8 @@ namespace Server.Items
[Constructible]
public ElvenLoveseatSouthAddon()
{
AddComponent(new AddonComponent(0x308A), 0, 0, 0);
AddComponent(new AddonComponent(0x308B), 0, -1, 0);
AddComponent(new AddonComponent(0x3088), 0, 0, 0);
AddComponent(new AddonComponent(0x3089), -1, 0, 0);
}
public override BaseAddonDeed Deed => new ElvenLoveseatSouthDeed();

View file

@ -2,18 +2,28 @@ using System;
namespace Server.Items
{
public delegate void SpinCallback(ISpinningWheel sender, Mobile from, int hue);
public interface ISpinningWheel
{
bool Spinning { get; }
void BeginSpin(SpinCallback callback, Mobile from, int hue);
}
[Serializable(0)]
public partial class ElvenSpinningwheelEastAddon : BaseAddon, ISpinningWheel
[TypeAlias("Server.Items.ElvenSpinningwheelEastAddon")]
public partial class ElvenSpinningWheelEastAddon : BaseAddon, ISpinningWheel
{
private Timer m_Timer;
[Constructible]
public ElvenSpinningwheelEastAddon()
public ElvenSpinningWheelEastAddon()
{
AddComponent(new AddonComponent(0x2DD9), 0, 0, 0);
AddComponent(new AddonComponent(0x2E3D), 0, 0, 0);
}
public override BaseAddonDeed Deed => new ElvenSpinningwheelEastDeed();
public override int LabelNumber => 1031737; // elven spinning wheel
public override BaseAddonDeed Deed => new ElvenSpinningWheelEastDeed();
public bool Spinning => m_Timer != null;
@ -26,10 +36,9 @@ namespace Server.Items
{
switch (c.ItemID)
{
case 0x2DD9:
case 0x101C:
case 0x10A4:
++c.ItemID;
case 0x2E3D:
case 0x2E3F:
--c.ItemID;
break;
}
}
@ -39,10 +48,9 @@ namespace Server.Items
{
switch (c.ItemID)
{
case 0x2E3D:
case 0x101D:
case 0x10A5:
--c.ItemID;
case 0x2E3C:
case 0x2E3E:
++c.ItemID;
break;
}
}
@ -57,11 +65,9 @@ namespace Server.Items
{
switch (c.ItemID)
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5:
--c.ItemID;
case 0x2E3C:
case 0x2E3E:
++c.ItemID;
break;
}
}
@ -74,9 +80,9 @@ namespace Server.Items
private readonly SpinCallback m_Callback;
private readonly Mobile m_From;
private readonly int m_Hue;
private readonly ElvenSpinningwheelEastAddon m_Wheel;
private readonly ElvenSpinningWheelEastAddon m_Wheel;
public SpinTimer(ElvenSpinningwheelEastAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
public SpinTimer(ElvenSpinningWheelEastAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
TimeSpan.FromSeconds(3.0)
)
{
@ -94,14 +100,16 @@ namespace Server.Items
}
[Serializable(0)]
public partial class ElvenSpinningwheelEastDeed : BaseAddonDeed
[TypeAlias("Server.Items.ElvenSpinningwheelEastDeed")]
public partial class ElvenSpinningWheelEastDeed : BaseAddonDeed
{
[Constructible]
public ElvenSpinningwheelEastDeed()
public ElvenSpinningWheelEastDeed()
{
}
public override BaseAddon Addon => new ElvenSpinningwheelEastAddon();
public override BaseAddon Addon => new ElvenSpinningWheelEastAddon();
public override int LabelNumber => 1073393; // elven spinning wheel (east)
}
}

View file

@ -3,17 +3,19 @@ using System;
namespace Server.Items
{
[Serializable(0)]
public partial class ElvenSpinningwheelSouthAddon : BaseAddon, ISpinningWheel
[TypeAlias("Server.Items.ElvenSpinningwheelSouthAddon")]
public partial class ElvenSpinningWheelSouthAddon : BaseAddon, ISpinningWheel
{
private Timer m_Timer;
[Constructible]
public ElvenSpinningwheelSouthAddon()
public ElvenSpinningWheelSouthAddon()
{
AddComponent(new AddonComponent(0x2DDA), 0, 0, 0);
AddComponent(new AddonComponent(0x2E3F), 0, 0, 0);
}
public override BaseAddonDeed Deed => new ElvenSpinningwheelSouthDeed();
public override int LabelNumber => 1031737; // elven spinning wheel
public override BaseAddonDeed Deed => new ElvenSpinningWheelSouthDeed();
public bool Spinning => m_Timer != null;
@ -26,11 +28,9 @@ namespace Server.Items
{
switch (c.ItemID)
{
case 0x1015:
case 0x1019:
case 0x101C:
case 0x10A4:
++c.ItemID;
case 0x2E3D:
case 0x2E3F:
--c.ItemID;
break;
}
}
@ -40,11 +40,9 @@ namespace Server.Items
{
switch (c.ItemID)
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5:
--c.ItemID;
case 0x2E3C:
case 0x2E3E:
++c.ItemID;
break;
}
}
@ -52,18 +50,15 @@ namespace Server.Items
public void EndSpin(SpinCallback callback, Mobile from, int hue)
{
m_Timer?.Stop();
m_Timer = null;
foreach (var c in Components)
{
switch (c.ItemID)
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5:
--c.ItemID;
case 0x2E3C:
case 0x2E3E:
++c.ItemID;
break;
}
}
@ -76,9 +71,9 @@ namespace Server.Items
private readonly SpinCallback m_Callback;
private readonly Mobile m_From;
private readonly int m_Hue;
private readonly ElvenSpinningwheelSouthAddon m_Wheel;
private readonly ElvenSpinningWheelSouthAddon m_Wheel;
public SpinTimer(ElvenSpinningwheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
public SpinTimer(ElvenSpinningWheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
TimeSpan.FromSeconds(3.0)
)
{
@ -96,14 +91,15 @@ namespace Server.Items
}
[Serializable(0)]
public partial class ElvenSpinningwheelSouthDeed : BaseAddonDeed
[TypeAlias("Server.Items.ElvenSpinningwheelSouthDeed")]
public partial class ElvenSpinningWheelSouthDeed : BaseAddonDeed
{
[Constructible]
public ElvenSpinningwheelSouthDeed()
public ElvenSpinningWheelSouthDeed()
{
}
public override BaseAddon Addon => new ElvenSpinningwheelSouthAddon();
public override int LabelNumber => 1072878; // spinning wheel (south)
public override BaseAddon Addon => new ElvenSpinningWheelSouthAddon();
public override int LabelNumber => 1072878; // elven spinning wheel (south)
}
}

View file

@ -1,27 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class ElvenWashBasinEastAddon : BaseAddon
public partial class ElvenWashBasinEastAddon : BaseAddonContainer
{
[Constructible]
public ElvenWashBasinEastAddon()
public ElvenWashBasinEastAddon() : base(0x30E0)
{
AddComponent(new AddonComponent(0x30DF), 0, 0, 0);
AddComponent(new AddonComponent(0x30E0), 0, 1, 0);
AddComponent(new AddonContainerComponent(0x30DF), 0, -1, 0);
}
public override BaseAddonDeed Deed => new ElvenWashBasinEastDeed();
public override BaseAddonContainerDeed Deed => new ElvenWashBasinEastDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x0104;
public override int DefaultDropSound => 0x0042;
}
[Serializable(0)]
public partial class ElvenWashBasinEastDeed : BaseAddonDeed
public partial class ElvenWashBasinEastDeed : BaseAddonContainerDeed
{
[Constructible]
public ElvenWashBasinEastDeed()
{
}
public override BaseAddon Addon => new ElvenWashBasinEastAddon();
public override BaseAddonContainer Addon => new ElvenWashBasinEastAddon();
public override int LabelNumber => 1073387; // elven wash basin (east)
}
}

View file

@ -1,27 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class ElvenWashBasinSouthAddon : BaseAddon
public partial class ElvenWashBasinSouthAddon : BaseAddonContainer
{
[Constructible]
public ElvenWashBasinSouthAddon()
public ElvenWashBasinSouthAddon() : base(0x30E2)
{
AddComponent(new AddonComponent(0x30E1), 0, 0, 0);
AddComponent(new AddonComponent(0x30E2), 1, 0, 0);
AddComponent(new AddonContainerComponent(0x30E1), -1, 0, 0);
}
public override BaseAddonDeed Deed => new ElvenWashBasinSouthDeed();
public override BaseAddonContainerDeed Deed => new ElvenWashBasinSouthDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x0104;
public override int DefaultDropSound => 0x0042;
}
[Serializable(0)]
public partial class ElvenWashBasinSouthDeed : BaseAddonDeed
public partial class ElvenWashBasinSouthDeed : BaseAddonContainerDeed
{
[Constructible]
public ElvenWashBasinSouthDeed()
{
}
public override BaseAddon Addon => new ElvenWashBasinSouthAddon();
public override BaseAddonContainer Addon => new ElvenWashBasinSouthAddon();
public override int LabelNumber => 1072865; // elven wash basin (south)
}
}

View file

@ -0,0 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class OrnateElvenChestEastAddon : BaseAddonContainer
{
[Constructible]
public OrnateElvenChestEastAddon() : base(0x309A)
{
AddComponent(new AddonContainerComponent(0x309B), 0, -1, 0);
}
public override BaseAddonContainerDeed Deed => new OrnateElvenChestEastDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x10C;
public override int DefaultDropSound => 0x42;
}
[Serializable(0)]
public partial class OrnateElvenChestEastDeed : BaseAddonContainerDeed
{
[Constructible]
public OrnateElvenChestEastDeed()
{
}
public override BaseAddonContainer Addon => new OrnateElvenChestEastAddon();
public override int LabelNumber => 1073383; // ornate elven chest (east)
}
}

View file

@ -0,0 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class OrnateElvenChestSouthAddon : BaseAddonContainer
{
[Constructible]
public OrnateElvenChestSouthAddon() : base(0x3098)
{
AddComponent(new AddonContainerComponent(0x3099), -1, 0, 0);
}
public override BaseAddonContainerDeed Deed => new OrnateElvenChestSouthDeed();
public override bool RetainDeedHue => true;
public override int DefaultGumpID => 0x10C;
public override int DefaultDropSound => 0x42;
}
[Serializable(0)]
public partial class OrnateElvenChestSouthDeed : BaseAddonContainerDeed
{
[Constructible]
public OrnateElvenChestSouthDeed()
{
}
public override BaseAddonContainer Addon => new OrnateElvenChestSouthAddon();
public override int LabelNumber => 1072862; // ornate elven chest (south)
}
}

View file

@ -2,26 +2,20 @@ using System;
namespace Server.Items
{
public delegate void SpinCallback(ISpinningWheel sender, Mobile from, int hue);
public interface ISpinningWheel
{
bool Spinning { get; }
void BeginSpin(SpinCallback callback, Mobile from, int hue);
}
[Serializable(0, false)]
public partial class SpinningwheelEastAddon : BaseAddon, ISpinningWheel
[TypeAlias("Server.Items.SpinningwheelEastAddon")]
public partial class SpinningWheelEastAddon : BaseAddon, ISpinningWheel
{
private Timer m_Timer;
[Constructible]
public SpinningwheelEastAddon()
public SpinningWheelEastAddon()
{
AddComponent(new AddonComponent(0x1019), 0, 0, 0);
}
public override BaseAddonDeed Deed => new SpinningwheelEastDeed();
public override int LabelNumber => 1024117; // spinning wheel
public override BaseAddonDeed Deed => new SpinningWheelEastDeed();
public bool Spinning => m_Timer != null;
@ -84,9 +78,9 @@ namespace Server.Items
private readonly SpinCallback m_Callback;
private readonly Mobile m_From;
private readonly int m_Hue;
private readonly SpinningwheelEastAddon m_Wheel;
private readonly SpinningWheelEastAddon m_Wheel;
public SpinTimer(SpinningwheelEastAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
public SpinTimer(SpinningWheelEastAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
TimeSpan.FromSeconds(3.0)
)
{
@ -104,14 +98,15 @@ namespace Server.Items
}
[Serializable(0, false)]
public partial class SpinningwheelEastDeed : BaseAddonDeed
[TypeAlias("Server.Items.SpinningwheelEastDeed")]
public partial class SpinningWheelEastDeed : BaseAddonDeed
{
[Constructible]
public SpinningwheelEastDeed()
public SpinningWheelEastDeed()
{
}
public override BaseAddon Addon => new SpinningwheelEastAddon();
public override int LabelNumber => 1044341; // spining wheel (east)
public override BaseAddon Addon => new SpinningWheelEastAddon();
public override int LabelNumber => 1044341; // spinning wheel (east)
}
}

View file

@ -3,17 +3,19 @@ using System;
namespace Server.Items
{
[Serializable(0, false)]
public partial class SpinningwheelSouthAddon : BaseAddon, ISpinningWheel
[TypeAlias("Server.Items.SpinningwheelSouthAddon")]
public partial class SpinningWheelSouthAddon : BaseAddon, ISpinningWheel
{
private Timer m_Timer;
[Constructible]
public SpinningwheelSouthAddon()
public SpinningWheelSouthAddon()
{
AddComponent(new AddonComponent(0x1015), 0, 0, 0);
}
public override BaseAddonDeed Deed => new SpinningwheelSouthDeed();
public override int LabelNumber => 1024117; // spinning wheel
public override BaseAddonDeed Deed => new SpinningWheelSouthDeed();
public bool Spinning => m_Timer != null;
@ -76,9 +78,9 @@ namespace Server.Items
private readonly SpinCallback m_Callback;
private readonly Mobile m_From;
private readonly int m_Hue;
private readonly SpinningwheelSouthAddon m_Wheel;
private readonly SpinningWheelSouthAddon m_Wheel;
public SpinTimer(SpinningwheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
public SpinTimer(SpinningWheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue) : base(
TimeSpan.FromSeconds(3.0)
)
{
@ -96,14 +98,15 @@ namespace Server.Items
}
[Serializable(0, false)]
public partial class SpinningwheelSouthDeed : BaseAddonDeed
[TypeAlias("Server.Items.SpinningwheelSouthDeed")]
public partial class SpinningWheelSouthDeed : BaseAddonDeed
{
[Constructible]
public SpinningwheelSouthDeed()
public SpinningWheelSouthDeed()
{
}
public override BaseAddon Addon => new SpinningwheelSouthAddon();
public override int LabelNumber => 1044342; // spining wheel (south)
public override BaseAddon Addon => new SpinningWheelSouthAddon();
public override int LabelNumber => 1044342; // spinning wheel (south)
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0xB2D, 0xB2C)]
[Furniture]
[Flippable(0xB2D, 0xB2C)]
public class WoodenBench : Item
{
[Constructible]

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0xB4F, 0xB4E, 0xB50, 0xB51)]
[Furniture]
[Flippable(0xB4F, 0xB4E, 0xB50, 0xB51)]
public class FancyWoodenChairCushion : Item
{
[Constructible]
@ -30,7 +31,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB53, 0xB52, 0xB54, 0xB55)]
[Furniture]
[Flippable(0xB53, 0xB52, 0xB54, 0xB55)]
public class WoodenChairCushion : Item
{
[Constructible]
@ -60,7 +62,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB57, 0xB56, 0xB59, 0xB58)]
[Furniture]
[Flippable(0xB57, 0xB56, 0xB59, 0xB58)]
public class WoodenChair : Item
{
[Constructible]
@ -90,7 +93,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB5B, 0xB5A, 0xB5C, 0xB5D)]
[Furniture]
[Flippable(0xB5B, 0xB5A, 0xB5C, 0xB5D)]
public class BambooChair : Item
{
[Constructible]

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0xB32, 0xB33)]
[Furniture]
[Flippable(0xB32, 0xB33)]
public class Throne : Item
{
[Constructible]
@ -30,7 +31,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB2E, 0xB2F, 0xB31, 0xB30)]
[Furniture]
[Flippable(0xB2E, 0xB2F, 0xB31, 0xB30)]
public class WoodenThrone : Item
{
[Constructible]

View file

@ -0,0 +1,12 @@
namespace Server.Items
{
[Furniture]
[Serializable(0)]
public partial class GiantReplicaAcorn : Item
{
[Constructible]
public GiantReplicaAcorn() : base(0x2D4A) => Weight = 1.0;
public override int LabelNumber => 1072889; // giant replica acorn
}
}

View file

@ -0,0 +1,12 @@
namespace Server.Items
{
[Flippable(0x3158, 0x3159)]
[Serializable(0)]
public partial class MountedDreadHorn : Item
{
[Constructible]
public MountedDreadHorn() : base(0x3158) => Weight = 1.0;
public override int LabelNumber => 1074464; // mounted Dread Horn
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0xEBB, 0xEBC)]
[Furniture]
[Flippable(0xEBB, 0xEBC)]
public class TallMusicStand : Item
{
[Constructible]
@ -30,7 +31,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xEB6, 0xEB8)]
[Furniture]
[Flippable(0xEB6, 0xEB8)]
public class ShortMusicStand : Item
{
[Constructible]

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0x24D0, 0x24D1, 0x24D2, 0x24D3, 0x24D4)]
[Furniture]
[Flippable(0x24D0, 0x24D1, 0x24D2, 0x24D3, 0x24D4)]
public class BambooScreen : Item
{
[Constructible]
@ -25,7 +26,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF)]
[Furniture]
[Flippable(0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF)]
public class ShojiScreen : Item
{
[Constructible]

View file

@ -0,0 +1,11 @@
namespace Server.Items
{
[Furniture]
[Serializable(0)]
[Flippable(0x2DDD, 0x2DDE)]
public partial class ElvenPodium : Item
{
[Constructible]
public ElvenPodium() : base(0x2DDD) => Weight = 2.0;
}
}

View file

@ -50,7 +50,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB90, 0xB7D)]
[Furniture]
[Flippable(0xB90, 0xB7D)]
public class LargeTable : Item
{
[Constructible]
@ -80,7 +81,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB35, 0xB34)]
[Furniture]
[Flippable(0xB35, 0xB34)]
public class Nightstand : Item
{
[Constructible]
@ -110,7 +112,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xB8F, 0xB7C)]
[Furniture]
[Flippable(0xB8F, 0xB7C)]
public class YewWoodTable : Item
{
[Constructible]

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0xB4A, 0xB49, 0xB4B, 0xB4C)]
[Furniture]
[Flippable(0xB4A, 0xB49, 0xB4B, 0xB4C)]
public class WritingTable : Item
{
[Constructible]

View file

@ -578,7 +578,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x9AA, 0xE7D)]
[Furniture]
[Flippable(0x9AA, 0xE7D)]
public class WoodenBox : LockableContainer
{
[Constructible]
@ -603,7 +604,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x9A9, 0xE7E)]
[Furniture]
[Flippable(0x9A9, 0xE7E)]
public class SmallCrate : LockableContainer
{
[Constructible]
@ -633,7 +635,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xE3F, 0xE3E)]
[Furniture]
[Flippable(0xE3F, 0xE3E)]
public class MediumCrate : LockableContainer
{
[Constructible]
@ -663,7 +666,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xE3D, 0xE3C)]
[Furniture]
[Flippable(0xE3D, 0xE3C)]
public class LargeCrate : LockableContainer
{
[Constructible]
@ -789,7 +793,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xe43, 0xe42)]
[Furniture]
[Flippable(0xe43, 0xe42)]
public class WoodenChest : LockableContainer
{
[Constructible]
@ -819,7 +824,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x280B, 0x280C)]
[Furniture]
[Flippable(0x280B, 0x280C)]
public class PlainWoodenChest : LockableContainer
{
[Constructible]
@ -851,7 +857,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x280D, 0x280E)]
[Furniture]
[Flippable(0x280D, 0x280E)]
public class OrnateWoodenChest : LockableContainer
{
[Constructible]
@ -883,7 +890,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x280F, 0x2810)]
[Furniture]
[Flippable(0x280F, 0x2810)]
public class GildedWoodenChest : LockableContainer
{
[Constructible]
@ -915,7 +923,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2811, 0x2812)]
[Furniture]
[Flippable(0x2811, 0x2812)]
public class WoodenFootLocker : LockableContainer
{
[Constructible]
@ -950,7 +959,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2813, 0x2814)]
[Furniture]
[Flippable(0x2813, 0x2814)]
public class FinishedWoodenChest : LockableContainer
{
[Constructible]
@ -981,4 +991,26 @@ namespace Server.Items
}
}
}
[Furniture]
[Serializable(0)]
[Flippable(0x2DF1, 0x2DF2)]
public partial class RarewoodChest : LockableContainer
{
[Constructible]
public RarewoodChest() : base(0x2DF1)
{
}
}
[Furniture]
[Serializable(0)]
[Flippable(0x2DF3, 0x2DF4)]
public partial class DecorativeBox : LockableContainer
{
[Constructible]
public DecorativeBox() : base(0x2DF4)
{
}
}
}

View file

@ -3,7 +3,8 @@ using System.Collections.Generic;
namespace Server.Items
{
[Furniture, Flippable(0x2815, 0x2816)]
[Furniture]
[Flippable(0x2815, 0x2816)]
public class TallCabinet : BaseContainer
{
[Constructible]
@ -26,7 +27,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2817, 0x2818)]
[Furniture]
[Flippable(0x2817, 0x2818)]
public class ShortCabinet : BaseContainer
{
[Constructible]
@ -49,7 +51,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2857, 0x2858)]
[Furniture]
[Flippable(0x2857, 0x2858)]
public class RedArmoire : BaseContainer
{
[Constructible]
@ -72,7 +75,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x285D, 0x285E)]
[Furniture]
[Flippable(0x285D, 0x285E)]
public class CherryArmoire : BaseContainer
{
[Constructible]
@ -95,7 +99,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x285B, 0x285C)]
[Furniture]
[Flippable(0x285B, 0x285C)]
public class MapleArmoire : BaseContainer
{
[Constructible]
@ -118,7 +123,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2859, 0x285A)]
[Furniture]
[Flippable(0x2859, 0x285A)]
public class ElegantArmoire : BaseContainer
{
[Constructible]
@ -141,7 +147,30 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)]
[Furniture]
[Serializable(0)]
[Flippable(0x2D07, 0x2D08)]
public partial class FancyElvenArmoire : BaseContainer
{
[Constructible]
public FancyElvenArmoire() : base(0x2D07) => Weight = 1.0;
public override int DefaultGumpID => 0x4E;
public override int DefaultDropSound => 0x42;
}
[Furniture]
[Serializable(0)]
[Flippable(0x2D05, 0x2D06)]
public partial class SimpleElvenArmoire : BaseContainer
{
[Constructible]
public SimpleElvenArmoire() : base(0x2D05) => Weight = 1.0;
public override int DefaultGumpID => 0x4F;
public override int DefaultDropSound => 0x42;
}
[Furniture]
[Flippable(0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)]
public class FullBookcase : BaseContainer
{
[Constructible]
@ -164,7 +193,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa9d, 0xa9e)]
[Furniture]
[Flippable(0xa9d, 0xa9e)]
public class EmptyBookcase : BaseContainer
{
[Constructible]
@ -195,7 +225,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa2c, 0xa34)]
[Furniture]
[Flippable(0xa2c, 0xa34)]
public class Drawer : BaseContainer
{
[Constructible]
@ -218,7 +249,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa30, 0xa38)]
[Furniture]
[Flippable(0xa30, 0xa38)]
public class FancyDrawer : BaseContainer
{
[Constructible]
@ -241,7 +273,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa4f, 0xa53)]
[Furniture]
[Flippable(0xa4f, 0xa53)]
public class Armoire : BaseContainer
{
[Constructible]
@ -274,7 +307,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0xa4d, 0xa51)]
[Furniture]
[Flippable(0xa4d, 0xa51)]
public class FancyArmoire : BaseContainer
{
[Constructible]

View file

@ -0,0 +1,12 @@
namespace Server.Items
{
[Serializable(0)]
public partial class AcademicBooksArtifact : BaseDecorationArtifact
{
public override int ArtifactRarity => 8;
public override int LabelNumber => 1071202; // academic books
[Constructible]
public AcademicBooksArtifact() : base(0x1E25) => Hue = 2413;
}
}

View file

@ -25,7 +25,7 @@ namespace Server.Items
{
get
{
if (_resource >= CraftResource.DullCopper && _resource <= CraftResource.Valorite)
if (_resource is >= CraftResource.DullCopper and <= CraftResource.Valorite)
{
return 1042845 + (_resource - CraftResource.DullCopper);
}
@ -161,7 +161,7 @@ namespace Server.Items
_ => 0
};
return itemID == 4017 || itemID >= 6522 && itemID <= 6569;
return itemID is 4017 or >= 6522 and <= 6569 or 11736;
}
protected override void OnTarget(Mobile from, object targeted)

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0x232A, 0x232B)]
[Furniture]
[Flippable(0x232A, 0x232B)]
public class GiftBox : BaseContainer
{
[Constructible]

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
[Furniture, Flippable(0x2bd9, 0x2bda)]
[Furniture]
[Flippable(0x2bd9, 0x2bda)]
public class GreenStocking : BaseContainer
{
[Constructible]
@ -28,7 +29,8 @@ namespace Server.Items
}
}
[Furniture, Flippable(0x2bdb, 0x2bdc)]
[Furniture]
[Flippable(0x2bdb, 0x2bdc)]
public class RedStocking : BaseContainer
{
[Constructible]

View file

@ -0,0 +1,29 @@
namespace Server.Items
{
[Serializable(0)]
public partial class FaerieFire : ElvenCompositeLongbow
{
[Constructible]
public FaerieFire()
{
Hue = 0x489;
WeaponAttributes.HitFireball = 25;
Balanced = true;
Attributes.BonusDex = 3;
Attributes.WeaponSpeed = 20;
Attributes.WeaponDamage = 60;
}
public override int LabelNumber => 1072908; // Faerie Fire
public override void GetDamageTypes(
Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct
)
{
fire = 100;
phys = cold = pois = nrgy = chaos = direct = 0;
}
}
}

View file

@ -0,0 +1,27 @@
namespace Server.Items
{
[Serializable(0)]
public partial class MischiefMaker : MagicalShortbow
{
[Constructible]
public MischiefMaker()
{
Hue = 0x8AB;
Slayer = SlayerName.Silver;
Balanced = true;
Attributes.WeaponSpeed = 35;
Attributes.WeaponDamage = 45;
}
public override int LabelNumber => 1072910; // Mischief Maker
public override void GetDamageTypes(
Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct
)
{
phys = fire = pois = nrgy = chaos = direct = 0;
cold = 100;
}
}
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AcademicBooksArtifact"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.DecorativeBox"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElvenPodium"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningWheelEastAddon"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningWheelEastDeed"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningWheelSouthAddon"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningWheelSouthDeed"
}

View file

@ -1,4 +0,0 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningwheelEastAddon"
}

View file

@ -1,4 +0,0 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningwheelEastDeed"
}

View file

@ -1,4 +0,0 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningwheelSouthAddon"
}

View file

@ -1,4 +0,0 @@
{
"version": 0,
"type": "Server.Items.ElvenSpinningwheelSouthDeed"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FaerieFire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FancyElvenArmoire"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.GiantReplicaAcorn"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MischiefMaker"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MountedDreadHorn"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.OrnateElvenChestEastAddon"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.OrnateElvenChestEastDeed"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.OrnateElvenChestSouthAddon"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.OrnateElvenChestSouthDeed"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.RarewoodChest"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.SimpleElvenArmoire"
}

View file

@ -1,4 +1,4 @@
{
"version": 0,
"type": "Server.Items.SpinningwheelEastAddon"
"type": "Server.Items.SpinningWheelEastAddon"
}

View file

@ -1,4 +1,4 @@
{
"version": 0,
"type": "Server.Items.SpinningwheelEastDeed"
"type": "Server.Items.SpinningWheelEastDeed"
}

View file

@ -1,4 +1,4 @@
{
"version": 0,
"type": "Server.Items.SpinningwheelSouthAddon"
"type": "Server.Items.SpinningWheelSouthAddon"
}

View file

@ -1,4 +1,4 @@
{
"version": 0,
"type": "Server.Items.SpinningwheelSouthDeed"
"type": "Server.Items.SpinningWheelSouthDeed"
}