예제 #1
0
 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;
 }
예제 #2
0
파일: NaturalDye.cs 프로젝트: pallop/Servuo
 public NaturalDye(PlantPigmentHue hue)
     : base(0x182B)
 {
     this.Weight          = 1.0;
     this.PigmentHue      = hue;
     this.m_UsesRemaining = 5;
 }
예제 #3
0
 public NaturalDye(PlantPigmentHue hue)
     : base(0x182B)
 {
     Weight          = 1.0;
     PigmentHue      = hue;
     m_UsesRemaining = 5;
 }
예제 #4
0
 public NaturalDye(PlantPigmentHue hue)
     : base(0x182B)
 {
     this.Weight = 1.0;
     this.PigmentHue = hue;
     this.m_UsesRemaining = 5;
 }
예제 #5
0
        public static PlantPigmentHueInfo GetInfo(PlantPigmentHue hue)
        {
            if (!m_Table.ContainsKey(hue))
            {
                return(m_Table[PlantPigmentHue.Plain]);
            }

            return(m_Table[hue]);
        }
예제 #6
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
                    m_Hue = (PlantPigmentHue)reader.ReadInt();
					break;
            }
        }
예제 #7
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
                m_Hue = (PlantPigmentHue)reader.ReadInt();
                break;
            }
        }
예제 #8
0
        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]);
            }
        }
예제 #9
0
        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);
        }
예제 #10
0
        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);
        }
예제 #11
0
		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;
			}
		}
예제 #12
0
 public PlantPigment(PlantPigmentHue hue)
     : base(0x0F02)
 {
     Weight     = 1.0;
     PigmentHue = hue;
 }
예제 #13
0
 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;
		}
예제 #15
0
            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);
                    }
                }
            }
예제 #16
0
 public static bool IsPrimary(PlantPigmentHue hue)
 {
     return hue == PlantPigmentHue.Red || hue == PlantPigmentHue.Blue || hue == PlantPigmentHue.Yellow;
 }
예제 #17
0
 public PlantPigment(PlantPigmentHue hue)
     : base(0x0F02)
 {
     this.Weight     = 1.0;
     this.PigmentHue = hue;
 }
예제 #18
0
        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);
        }
예제 #19
0
 public static bool IsMixable(PlantPigmentHue hue)
 {
     return (hue <= PlantPigmentHue.White && hue != PlantPigmentHue.None);
 }
예제 #20
0
파일: CraftItem.cs 프로젝트: Serado/ServUO
		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;
			}
		}
예제 #21
0
 private PlantPigmentHueInfo(int hue, int name, PlantPigmentHue pigmentHue)
 {
     m_Hue             = hue;
     m_Name            = name;
     m_PlantPigmentHue = pigmentHue;
 }
예제 #22
0
		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;
			}
		}
예제 #23
0
		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);
				}
			}
		}
예제 #24
0
 public PlantPigment(PlantPigmentHue hue)
     : base(0x0F02)
 {
     this.Weight = 1.0;
     this.PigmentHue = hue;
 }
예제 #25
0
 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;
 }
예제 #26
0
 public static bool IsMixable(PlantPigmentHue hue)
 {
     return(hue <= PlantPigmentHue.White && hue != PlantPigmentHue.None);
 }
예제 #27
0
        public static PlantPigmentHueInfo GetInfo(PlantPigmentHue hue)
        {
            if (!m_Table.ContainsKey(hue))
                return m_Table[PlantPigmentHue.Plain];

            return m_Table[hue];
        }
예제 #28
0
 public static bool IsBright(PlantPigmentHue hue)
 {
     return((hue & PlantPigmentHue.Bright) != PlantPigmentHue.None);
 }
예제 #29
0
 public static bool IsBright(PlantPigmentHue hue)
 {
     return (hue & PlantPigmentHue.Bright) != PlantPigmentHue.None;
 }
예제 #30
0
 public static bool IsPrimary(PlantPigmentHue hue)
 {
     return(hue == PlantPigmentHue.Red || hue == PlantPigmentHue.Blue || hue == PlantPigmentHue.Yellow);
 }
예제 #31
0
        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;
        }
예제 #32
0
        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);
        }
예제 #33
0
 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];
		}