public virtual void Pour_OnTarget(Mobile from, object targ) { if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == this.Content) { from.SendLocalizedMessage(500848); // Couldn't pour it there. It was already full. } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); // Can't pour it there. } else { bev.Content = this.Content; bev.Poison = this.Poison; bev.Poisoner = this.Poisoner; if (this.Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; this.Quantity -= bev.MaxQuantity; } else { bev.Quantity += this.Quantity; this.Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { if (from.Thirst < 20) { from.Thirst += 1; } if (ContainsAlchohol) { int bac = 0; switch (this.Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 60) { from.BAC = 60; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is BaseWaterContainer) { BaseWaterContainer bwc = targ as BaseWaterContainer; if (Content != BeverageType.Water) { from.SendLocalizedMessage(500842); // Can't pour that in there. } else if (bwc.Items.Count != 0) { from.SendLocalizedMessage(500841); // That has something in it. } else { int itNeeds = Math.Min((bwc.MaxQuantity - bwc.Quantity), Quantity); if (itNeeds > 0) { bwc.Quantity += itNeeds; Quantity -= itNeeds; from.PlaySound(0x4E); } } } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }
public virtual void Pour_OnTarget(Mobile from, object targ) { if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == this.Content) { from.SendLocalizedMessage(500848); // Couldn't pour it there. It was already full. } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); // Can't pour it there. } else { bev.Content = this.Content; bev.Poison = this.Poison; bev.Poisoner = this.Poisoner; if (this.Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; this.Quantity -= bev.MaxQuantity; } else { bev.Quantity += this.Quantity; this.Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { // new additions by Alari: fill messages for thirst and no drinking when full. if (from.Thirst >= 20) { from.SendMessage("You are simply too full to drink any more!"); return; } int fillFactor = 4; // how much each 'drink' should fill your thirst. int iThirst = from.Thirst + fillFactor; if (from.Stam < from.StamMax) { from.Stam += Utility.Random(6, 3) + fillFactor / 5; // restore some stamina } if (iThirst >= 20) { from.Thirst = 20; from.SendMessage("You manage to drink the beverage, but you are full!"); } else { from.Thirst = iThirst; if (iThirst < 5) { from.SendMessage("You drink the beverage, but are still extremely thirsty."); } else if (iThirst < 10) { from.SendMessage("You drink the beverage, and begin to feel more satiated."); } else if (iThirst < 15) { from.SendMessage("After drinking the beverage, you feel much less thirsty."); } else { from.SendMessage("You feel quite full after consuming the beverage."); } } // end modifications if (ContainsAlchohol) { int bac = 0; switch (this.Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 60) { from.BAC = 60; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }
public virtual void Pour_OnTarget(Mobile from, object targ) { if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == this.Content) { from.SendLocalizedMessage(500848); // Couldn't pour it there. It was already full. } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); // Can't pour it there. } else { bev.Content = this.Content; bev.Poison = this.Poison; bev.Poisoner = this.Poisoner; if (this.Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; this.Quantity -= bev.MaxQuantity; } else { bev.Quantity += this.Quantity; this.Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { if (from.Thirst < 20) { from.Thirst += 1; } if (ContainsAlchohol) { int bac = 0; switch (this.Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 60) { from.BAC = 60; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else if (targ is WaterElemental) { WaterElemental we = targ as WaterElemental; if (this is Pitcher && this.Quantity == this.MaxQuantity) { if (we.Summoned == true) { from.SendLocalizedMessage(1115895); // It seems that this water elemental no longer has a magical decanter... } else if (we.HasPitcher == false) { from.SendLocalizedMessage(1115895); // It seems that this water elemental no longer has a magical decanter... } else { Effects.SendMovingEffect(from, we, this.ItemID, 7, 0, false, false, this.Hue, 0); if (Utility.Random(100) < 3) { EndlessDecanterOfWater edw = new EndlessDecanterOfWater(); Effects.SendMovingEffect(we, from, edw.ItemID, 7, 0, false, false, edw.Hue, 0); from.AddToBackpack(edw); from.SendLocalizedMessage(1115897); // The water elemental has thrown a magical decanter back to you! we.HasPitcher = false; } else { from.SendLocalizedMessage(1115896); // The water pitcher has shattered. //Play Sound? } } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }
public virtual void Pour_OnTarget(Mobile from, object targ) { if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == Content) { from.SendLocalizedMessage(500848); } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); } else { bev.Content = Content; bev.Poison = Poison; bev.Poisoner = Poisoner; if (Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; Quantity -= bev.MaxQuantity; } else { bev.Quantity += Quantity; Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { // increase characters thirst value based on type of drink if (from.Thirst < 20) { switch (Content) { case BeverageType.Water: from.Thirst += 5; break; case BeverageType.Milk: from.Thirst += 4; break; case BeverageType.Ale: from.Thirst -= 3; break; case BeverageType.Wine: from.Thirst -= 1; break; case BeverageType.Cider: from.Thirst += 3; break; case BeverageType.Liquor: from.Thirst -= 2; break; } int iThirst = from.Thirst; if (iThirst < 5) { from.SendMessage("You take a drink but are still extremely thirsty"); } else if (iThirst < 10) { from.SendMessage("You take a drink and feel less thirsty"); } else if (iThirst < 14) { from.SendMessage("You take a drink and feel much less thirsty"); } else if (iThirst < 18) { from.SendMessage("You take a drink and feel more refreshed"); } else { from.SendMessage("You take a drink and are no longer thirsty"); } } else { from.Thirst = 20; } if (ContainsAlchohol) { int bac = 0; switch (Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 60) { from.BAC = 60; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is BaseWaterContainer) { BaseWaterContainer bwc = targ as BaseWaterContainer; if (this.Content != BeverageType.Water) { from.SendLocalizedMessage(500842); // Can't pour that in there. } else if (bwc.Items.Count != 0) { from.SendLocalizedMessage(500841); // That has something in it. } else { int itNeeds = Math.Min((bwc.MaxQuantity - bwc.Quantity), Quantity); if (itNeeds > 0) { bwc.Quantity += itNeeds; Quantity -= itNeeds; from.PlaySound(0x4E); } } } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else if (targ is WaterElemental) { if (this is Pitcher && Content == BeverageType.Water) { EndlessDecanter.HandleThrow(this, (WaterElemental)targ, from); } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }
public virtual void Pour_OnTarget(Mobile from, object targ) { if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == this.Content) { from.SendLocalizedMessage(500848); // Couldn't pour it there. It was already full. } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); // Can't pour it there. } else { bev.Content = this.Content; bev.Poison = this.Poison; bev.Poisoner = this.Poisoner; //STARMOD: Beverage edit from.Emote("*pours some {1} into a {0}*", ((bev.GetType()).Name).ToLower(), ((bev.Content).ToString()).ToLower()); //ENDMOD: Beverage edit if (this.Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; this.Quantity -= bev.MaxQuantity; } else { bev.Quantity += this.Quantity; this.Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { if (from.Thirst < 20) { from.Thirst += 1; } if (ContainsAlchohol) { int bac = 0; switch (this.Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 100) { from.BAC = 100; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); //STARMOD: Beverage edit from.Emote("*drinks some {0}*", ((this.Content).ToString()).ToLower()); if (from.Body.IsHuman && !from.Mounted) { from.Animate(34, 5, 1, true, false, 0); } //ENDMOD: Beverage edit if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }
public virtual void Pour_OnTarget(Mobile from, object targ) { //I ADDED for fill pitcher from statics part 3 of 3 if (targ is Item /*&& ((((Item)targ).ItemID != null))*/ && AbleToGetWater(((Item)targ).ItemID)) //trying to clear up yellows, item is never null. { FillPitcherWithWater(from, this, targ); return; } if (targ is StaticTarget /*&& ((((StaticTarget)targ).ItemID != null))*/ && AbleToGetWater(((StaticTarget)targ).ItemID)) //trying to clear up yellows. item is never null { FillPitcherWithWater(from, this, targ); return; } //I ADDED for fill pitcher from statics part 3 of 3 if (IsEmpty || !Pourable || !ValidateUse(from, false)) { return; } if (targ is BaseBeverage) { BaseBeverage bev = (BaseBeverage)targ; if (!bev.ValidateUse(from, true)) { return; } if (bev.IsFull && bev.Content == this.Content) { from.SendLocalizedMessage(500848); // Couldn't pour it there. It was already full. } else if (!bev.IsEmpty) { from.SendLocalizedMessage(500846); // Can't pour it there. } else { bev.Content = this.Content; bev.Poison = this.Poison; bev.Poisoner = this.Poisoner; if (this.Quantity > bev.MaxQuantity) { bev.Quantity = bev.MaxQuantity; this.Quantity -= bev.MaxQuantity; } else { bev.Quantity += this.Quantity; this.Quantity = 0; } from.PlaySound(0x4E); } } else if (from == targ) { if (from.Thirst < 20) { from.Thirst += 1; } if (ContainsAlchohol) { int bac = 0; switch (this.Content) { case BeverageType.Ale: bac = 1; break; case BeverageType.Wine: bac = 2; break; case BeverageType.Cider: bac = 3; break; case BeverageType.Liquor: bac = 4; break; } from.BAC += bac; if (from.BAC > 60) { from.BAC = 60; } CheckHeaveTimer(from); } from.PlaySound(Utility.RandomList(0x30, 0x2D6)); if (m_Poison != null) { from.ApplyPoison(m_Poisoner, m_Poison); } --Quantity; } else if (targ is PlantItem) { ((PlantItem)targ).Pour(from, this); } else if (targ is AddonComponent && (((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth) && this.Content == BeverageType.Water) { PlayerMobile player = from as PlayerMobile; if (player != null) { SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest; if (qs != null) { QuestObjective obj = qs.FindObjective(typeof(GatherWaterObjective)); if (obj != null && !obj.Completed) { BaseAddon vat = ((AddonComponent)targ).Addon; if (vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 && ((qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca))) { if (obj.CurProgress + Quantity > obj.MaxProgress) { int delta = obj.MaxProgress - obj.CurProgress; Quantity -= delta; obj.CurProgress = obj.MaxProgress; } else { obj.CurProgress += Quantity; Quantity = 0; } } } } } } else { from.SendLocalizedMessage(500846); // Can't pour it there. } }