private PlantPigmentHueInfo(PlantHue planthue, int hue, int name, PlantPigmentHue pigmentHue) { this.m_PlantHue = planthue; this.m_Hue = hue; this.m_Name = name; this.m_PlantPigmentHue = pigmentHue; }
public NaturalDye(PlantPigmentHue hue) : base(0x182B) { this.Weight = 1.0; this.PigmentHue = hue; this.m_UsesRemaining = 5; }
public NaturalDye(PlantPigmentHue hue) : base(0x182B) { Weight = 1.0; PigmentHue = hue; m_UsesRemaining = 5; }
public static PlantPigmentHueInfo GetInfo(PlantPigmentHue hue) { if (!m_Table.ContainsKey(hue)) { return(m_Table[PlantPigmentHue.Plain]); } return(m_Table[hue]); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: m_Hue = (PlantPigmentHue)reader.ReadInt(); break; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: m_Hue = (PlantPigmentHue)reader.ReadInt(); break; } }
public static PlantPigmentHueInfo GetInfo(PlantPigmentHue PlantPigmentHue) { PlantPigmentHueInfo info = m_Table[PlantPigmentHue] as PlantPigmentHueInfo; if (info != null) { return(info); } else { return((PlantPigmentHueInfo)m_Table[PlantPigmentHue.Plain]); } }
public CraftContext(Mobile owner, CraftSystem system) { Owner = owner; System = system; Items = new List <CraftItem>(); LastResourceIndex = -1; LastResourceIndex2 = -1; LastGroupIndex = -1; QuestOption = CraftQuestOption.NonQuestItem; RequiredPlantHue = PlantHue.None; RequiredPigmentHue = PlantPigmentHue.None; Contexts.Add(this); }
public CraftContext(Mobile owner, CraftSystem system) { Owner = owner; System = system; this.m_Items = new List <CraftItem>(); this.m_LastResourceIndex = -1; this.m_LastResourceIndex2 = -1; this.m_LastGroupIndex = -1; this.m_CheckedHues = false; this.m_Hues = new List <int>(); this.m_CompareHueTo = null; this.m_QuestOption = CraftQuestOption.NonQuestItem; m_RequiredPlantHue = PlantHue.None; RequiredPigmentHue = PlantPigmentHue.None; Contexts.Add(this); }
private void OnResourceConsumed(Item item, int amount) { #region Plant Pigments if (item is PlantClippings) { m_PlantHue = ((PlantClippings)item).PlantHue; m_ResHue = item.Hue; } if (item is PlantPigment) { m_PlantPigmentHue = ((PlantPigment)item).PigmentHue; m_ResHue = item.Hue; } if (item is DryReeds) { m_PlantHue = ((DryReeds)item).PlantHue; m_ResHue = item.Hue; } if (item is SoftenedReeds) { m_PlantHue = ((SoftenedReeds)item).PlantHue; m_ResHue = item.Hue; } #endregion if (!RetainsColorFrom(m_System, item.GetType())) { return; } if (amount >= m_ResAmount) { m_ResHue = item.Hue; m_ResAmount = amount; } }
public PlantPigment(PlantPigmentHue hue) : base(0x0F02) { Weight = 1.0; PigmentHue = hue; }
public PlantPigment( PlantPigmentHue hue ) : base( 0x0F02 ) { Weight = 1.0; PigmentHue = hue; }
private PlantPigmentHueInfo( int hue, int name, PlantPigmentHue pigmentHue ) { m_Hue = hue; m_Name = name; m_PlantPigmentHue = pigmentHue; }
protected override void OnTarget(Mobile from, object targeted) { if (m_Item.Deleted) { return; } PlantPigment pigment = targeted as PlantPigment; if (null == pigment) { from.SendLocalizedMessage(1112124); // You may only mix this with another non-saturated plant pigment. return; } if (from.Skills[SkillName.Alchemy].Base < 75.0 && from.Skills[SkillName.Cooking].Base < 75.0) { from.SendLocalizedMessage(1112214); // You lack the alchemy or cooking skills to mix plant pigments. } else if ((PlantPigmentHue.White == pigment.PigmentHue || PlantPigmentHue.Black == pigment.PigmentHue || PlantPigmentHue.White == m_Item.PigmentHue || PlantPigmentHue.Black == m_Item.PigmentHue) && from.Skills[SkillName.Alchemy].Base < 100.0 && from.Skills[SkillName.Cooking].Base < 100.0) { from.SendLocalizedMessage(1112213); // You lack the alchemy or cooking skills to mix so unstable a pigment. } else if (m_Item.PigmentHue == pigment.PigmentHue) { from.SendLocalizedMessage(1112242); // You decide not to waste pigments by mixing two identical colors. } else if ((m_Item.PigmentHue & ~(PlantPigmentHue.Bright | PlantPigmentHue.Dark | PlantPigmentHue.Ice)) == (pigment.PigmentHue & ~(PlantPigmentHue.Bright | PlantPigmentHue.Dark | PlantPigmentHue.Ice))) { from.SendLocalizedMessage(1112243); // You decide not to waste pigments by mixing variations of the same hue. } else if ((PlantPigmentHue.White == m_Item.PigmentHue && PlantPigmentHueInfo.IsBright(pigment.PigmentHue)) || (PlantPigmentHue.White == pigment.PigmentHue && PlantPigmentHueInfo.IsBright(m_Item.PigmentHue))) { from.SendLocalizedMessage(1112241); // This pigment is too diluted to be faded further. } else if (!PlantPigmentHueInfo.IsMixable(pigment.PigmentHue)) { from.SendLocalizedMessage(1112125); // This pigment is saturated and cannot be mixed further. } else { PlantPigmentHue newHue = PlantPigmentHueInfo.Mix(m_Item.PigmentHue, pigment.PigmentHue); if (PlantPigmentHue.None == newHue) { from.SendLocalizedMessage(1112125); // This pigment is saturated and cannot be mixed further. } else { pigment.PigmentHue = newHue; Bottle bottle = new Bottle(); bottle.MoveToWorld(m_Item.Location, m_Item.Map); m_Item.Delete(); from.PlaySound(0x240); } } }
public static bool IsPrimary(PlantPigmentHue hue) { return hue == PlantPigmentHue.Red || hue == PlantPigmentHue.Blue || hue == PlantPigmentHue.Yellow; }
public PlantPigment(PlantPigmentHue hue) : base(0x0F02) { this.Weight = 1.0; this.PigmentHue = hue; }
public CraftContext(Mobile owner, CraftSystem system) { Owner = owner; System = system; this.m_Items = new List<CraftItem>(); this.m_LastResourceIndex = -1; this.m_LastResourceIndex2 = -1; this.m_LastGroupIndex = -1; this.m_CheckedHues = false; this.m_Hues = new List<int>(); this.m_CompareHueTo = null; this.m_QuestOption = CraftQuestOption.NonQuestItem; m_RequiredPlantHue = PlantHue.None; RequiredPigmentHue = PlantPigmentHue.None; Contexts.Add(this); }
public static bool IsMixable(PlantPigmentHue hue) { return (hue <= PlantPigmentHue.White && hue != PlantPigmentHue.None); }
private PlantPigmentHueInfo(int hue, int name, PlantPigmentHue pigmentHue) { m_Hue = hue; m_Name = name; m_PlantPigmentHue = pigmentHue; }
private void OnResourceConsumed(Item item, int amount) { #region Plant Pigments if (item is IPlantHue) { m_PlantHue = ((IPlantHue)item).PlantHue; } else if (item is IPigmentHue) { m_PlantPigmentHue = ((IPigmentHue)item).PigmentHue; } #endregion if (!RetainsColorFrom(m_System, item.GetType())) { return; } if (amount >= m_ResAmount) { m_ResHue = item.Hue; m_ResAmount = amount; } }
public void CompleteCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CustomCraft customCraft) { int badCraft = craftSystem.CanCraft(from, tool, m_Type); if (badCraft > 0) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, badCraft)); } else { from.SendLocalizedMessage(badCraft); } AutoCraftTimer.EndTimer(from); return; } int checkResHue = 0, checkMaxAmount = 0; object checkMessage = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref checkResHue, ref checkMaxAmount, ConsumeType.None, ref checkMessage)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); } else if (checkMessage is int && (int)checkMessage > 0) { from.SendLocalizedMessage((int)checkMessage); } else if (checkMessage is string) { from.SendMessage((string)checkMessage); } AutoCraftTimer.EndTimer(from); return; } else if (!ConsumeAttributes(from, ref checkMessage, false)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); } else if (checkMessage is int && (int)checkMessage > 0) { from.SendLocalizedMessage((int)checkMessage); } else if (checkMessage is string) { from.SendMessage((string)checkMessage); } AutoCraftTimer.EndTimer(from); return; } bool toolBroken = false; int ignored = 1; int endquality = 1; bool allRequiredSkills = true; if (CheckSkills(from, typeRes, craftSystem, ref ignored, ref allRequiredSkills)) { // Resource int resHue = 0; int maxAmount = 0; object message = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref message)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } else if (!ConsumeAttributes(from, ref message, true)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } tool.UsesRemaining--; if (craftSystem is DefBlacksmithy) { AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null && hammer != tool) { #region Mondain's Legacy if (hammer is HammerOfHephaestus) { if (hammer.UsesRemaining > 0) { hammer.UsesRemaining--; } if (hammer.UsesRemaining < 1) { from.PlaceInBackpack(hammer); } } else { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } #endregion } } #region Mondain's Legacy if (tool is HammerOfHephaestus) { if (tool.UsesRemaining < 1) { tool.UsesRemaining = 0; } } else { if (tool.UsesRemaining < 1) { toolBroken = true; } if (toolBroken) { tool.Delete(); } } #endregion int num = 0; Item item; if (customCraft != null) { item = customCraft.CompleteCraft(out num); } else if (!Core.SA && typeof(MapItem).IsAssignableFrom(ItemType) && from.Map != Map.Trammel && from.Map != Map.Felucca) { item = new IndecipherableMap(); from.SendLocalizedMessage(1070800); // The map you create becomes mysteriously indecipherable. } else { item = Activator.CreateInstance(ItemType) as Item; } if (item != null) { #region Mondain's Legacy if (item is Board) { Type resourceType = typeRes; if (resourceType == null) { resourceType = Resources.GetAt(0).ItemType; } CraftResource thisResource = CraftResources.GetFromType(resourceType); switch (thisResource) { case CraftResource.OakWood: item = new OakBoard(); break; case CraftResource.AshWood: item = new AshBoard(); break; case CraftResource.YewWood: item = new YewBoard(); break; case CraftResource.Heartwood: item = new HeartwoodBoard(); break; case CraftResource.Bloodwood: item = new BloodwoodBoard(); break; case CraftResource.Frostwood: item = new FrostwoodBoard(); break; default: item = new Board(); break; } } #endregion #region High Seas if (Core.HS && item is MapItem) ((MapItem)item).Facet = from.Map; #endregion if (item is ICraftable) { endquality = ((ICraftable)item).OnCraft(quality, makersMark, from, craftSystem, typeRes, tool, this, resHue); } else if (item is Food) { ((Food)item).PlayerConstructed = true; } else if (item.Hue == 0) { item.Hue = resHue; } if (maxAmount > 0) { if (!item.Stackable && item is IUsesRemaining) { ((IUsesRemaining)item).UsesRemaining *= maxAmount; } else { item.Amount = maxAmount; } } #region Plant Pigments if (m_PlantHue != PlantHue.None) { if (item is IPlantHue) ((IPlantHue)item).PlantHue = m_PlantHue; else if (item is IPigmentHue) ((IPigmentHue)item).PigmentHue = PlantPigmentHueInfo.HueFromPlantHue(m_PlantHue); } else if (m_PlantPigmentHue != PlantPigmentHue.None && item is IPigmentHue) ((IPigmentHue)item).PigmentHue = m_PlantPigmentHue; CraftContext context = craftSystem.GetContext(from); if (context.QuestOption == CraftQuestOption.QuestItem) { PlayerMobile px = from as PlayerMobile; if (!QuestHelper.CheckItem(px, item)) from.SendLocalizedMessage(1072355, null, 0x23); // That item does not match any of your quest criteria } context.RequiredPigmentHue = PlantPigmentHue.None; context.RequiredPlantHue = PlantHue.None; m_PlantHue = PlantHue.None; m_PlantPigmentHue = PlantPigmentHue.None; #endregion if (tool.Parent is Container) { Container cntnr = (Container) tool.Parent; cntnr.TryDropItem(from, item, false); } else { from.AddToBackpack(item); } EventSink.InvokeCraftSuccess(new CraftSuccessEventArgs(from, item, tool)); if (from.IsStaff()) { CommandLogging.WriteLine( from, "Crafting {0} with craft system {1}", CommandLogging.Format(item), craftSystem.GetType().Name); } AutoCraftTimer.OnSuccessfulCraft(from); //from.PlaySound( 0x57 ); } if (num == 0) { num = craftSystem.PlayEndingEffect(from, false, true, toolBroken, endquality, makersMark, this); } bool queryFactionImbue = false; int availableSilver = 0; FactionItemDefinition def = null; Faction faction = null; if (item is IFactionItem) { def = FactionItemDefinition.Identify(item); if (def != null) { faction = Faction.Find(from); if (faction != null) { Town town = Town.FromRegion(from.Region); if (town != null && town.Owner == faction) { Container pack = from.Backpack; if (pack != null) { availableSilver = pack.GetAmount(typeof(Silver)); if (availableSilver >= def.SilverCost) { queryFactionImbue = Faction.IsNearType(from, def.VendorType, 12); } } } } } } // TODO: Scroll imbuing if (queryFactionImbue) { from.SendGump(new FactionImbueGump(quality, item, from, craftSystem, tool, num, availableSilver, faction, def)); } else if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, num)); } else if (num > 0) { from.SendLocalizedMessage(num); } } else if (!allRequiredSkills) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, 1044153)); } else { from.SendLocalizedMessage(1044153); // You don't have the required skills to attempt this item. } AutoCraftTimer.EndTimer(from); } else { ConsumeType consumeType = (UseAllRes ? ConsumeType.Half : ConsumeType.All); int resHue = 0; int maxAmount = 0; object message = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, consumeType, ref message, true)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } tool.UsesRemaining--; if (tool.UsesRemaining < 1) { toolBroken = true; } if (toolBroken) { tool.Delete(); } // SkillCheck failed. int num = craftSystem.PlayEndingEffect(from, true, true, toolBroken, endquality, false, this); if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, num)); } else if (num > 0) { from.SendLocalizedMessage(num); } } }
public static bool IsMixable(PlantPigmentHue hue) { return(hue <= PlantPigmentHue.White && hue != PlantPigmentHue.None); }
public static PlantPigmentHueInfo GetInfo(PlantPigmentHue hue) { if (!m_Table.ContainsKey(hue)) return m_Table[PlantPigmentHue.Plain]; return m_Table[hue]; }
public static bool IsBright(PlantPigmentHue hue) { return((hue & PlantPigmentHue.Bright) != PlantPigmentHue.None); }
public static bool IsBright(PlantPigmentHue hue) { return (hue & PlantPigmentHue.Bright) != PlantPigmentHue.None; }
public static bool IsPrimary(PlantPigmentHue hue) { return(hue == PlantPigmentHue.Red || hue == PlantPigmentHue.Blue || hue == PlantPigmentHue.Yellow); }
public static PlantPigmentHue Mix(PlantPigmentHue first, PlantPigmentHue second) { if (!IsMixable(first) || !IsMixable(second)) return PlantPigmentHue.None; if (first == second && (PlantPigmentHue.Plain == first || PlantPigmentHue.Black == first || PlantPigmentHue.White == first)) return PlantPigmentHue.None; if (first == second) return second | PlantPigmentHue.Bright; if (first == PlantPigmentHue.Plain) return second | PlantPigmentHue.Bright; else if (second == PlantPigmentHue.Plain) return first | PlantPigmentHue.Bright; if (first == PlantPigmentHue.White) return second | PlantPigmentHue.Ice; else if (second == PlantPigmentHue.White) return first | PlantPigmentHue.Ice; if (first == PlantPigmentHue.Black) return second | PlantPigmentHue.Dark; else if (second == PlantPigmentHue.Black) return first | PlantPigmentHue.Dark; bool firstPrimary = IsPrimary(first); bool secondPrimary = IsPrimary(second); if (firstPrimary && secondPrimary) return first | second; // // not sure after this point // // the remaining combinations to precess are (orange,purple,green with // any of red, blue, yellow, orange, purple, green) // the code below is temporary until proper mixed hues can be confirmed // // mixing table on stratics seems incorrect because the table is not symmetrical // if (firstPrimary && !secondPrimary) return first; if (!firstPrimary && secondPrimary) return second; return first & second; }
public static PlantPigmentHue Mix(PlantPigmentHue first, PlantPigmentHue second) { if (!IsMixable(first) || !IsMixable(second)) { return(PlantPigmentHue.None); } if (first == second && (PlantPigmentHue.Plain == first || PlantPigmentHue.Black == first || PlantPigmentHue.White == first)) { return(PlantPigmentHue.None); } if (first == second) { return(second | PlantPigmentHue.Bright); } if (first == PlantPigmentHue.Plain) { return(second | PlantPigmentHue.Bright); } else if (second == PlantPigmentHue.Plain) { return(first | PlantPigmentHue.Bright); } if (first == PlantPigmentHue.White) { return(second | PlantPigmentHue.Ice); } else if (second == PlantPigmentHue.White) { return(first | PlantPigmentHue.Ice); } if (first == PlantPigmentHue.Black) { return(second | PlantPigmentHue.Dark); } else if (second == PlantPigmentHue.Black) { return(first | PlantPigmentHue.Dark); } bool firstPrimary = IsPrimary(first); bool secondPrimary = IsPrimary(second); if (firstPrimary && secondPrimary) { return(first | second); } // // not sure after this point // // the remaining combinations to precess are (orange,purple,green with // any of red, blue, yellow, orange, purple, green) // the code below is temporary until proper mixed hues can be confirmed // // mixing table on stratics seems incorrect because the table is not symmetrical // if (firstPrimary && !secondPrimary) { return(first); } if (!firstPrimary && secondPrimary) { return(second); } return(first & second); }
public NaturalDye( PlantPigmentHue hue ) : base( 0x182B ) { Weight = 1.0; PigmentHue = hue; m_UsesRemaining = 5; }
public static PlantPigmentHueInfo GetInfo( PlantPigmentHue PlantPigmentHue ) { PlantPigmentHueInfo info = m_Table[PlantPigmentHue] as PlantPigmentHueInfo; if ( info != null ) return info; else return (PlantPigmentHueInfo)m_Table[PlantPigmentHue.Plain]; }