Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
217
Scripts/SubSystem/LotterySystem/BaseLottoTicket.cs
Normal file
217
Scripts/SubSystem/LotterySystem/BaseLottoTicket.cs
Normal file
@@ -0,0 +1,217 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
using Server.Gumps;
|
||||
using System.Collections.Generic;
|
||||
|
||||
/* To add additional ticket types, update the following scripts:
|
||||
*
|
||||
* This: TicketType enum
|
||||
* ScratcherGump.cs: TicketType enum switches in the contructor and at in GetBackground() method.
|
||||
* ScratcherStongGump.cs: The appropriate info in ticket info region, new page for its stats, and a new response to buy a ticket.
|
||||
* Background length will need to be adjusted accordingly as well.
|
||||
* ScratcherLotto: GetGameType() Method will need to reflect the ticket name.
|
||||
* LottoTicketVendor: Add the new ticket, ID, Hue to the SBInfo
|
||||
*/
|
||||
|
||||
namespace Server.Engines.LotterySystem
|
||||
{
|
||||
public enum TicketType
|
||||
{
|
||||
GoldenTicket = 1, //1 mil jackpot
|
||||
CrazedCrafting = 2, //250k - bonus if owner is 100+ craft skill;
|
||||
SkiesTheLimit = 3, //Progressive
|
||||
Powerball = 4, //Standard Powerball 5white/1red
|
||||
}
|
||||
|
||||
public class BaseLottoTicket : Item, IOwnerRestricted
|
||||
{
|
||||
//Serialized fields/props
|
||||
private int m_Payout;
|
||||
private bool m_CashedOut;
|
||||
private bool m_Checked;
|
||||
private Mobile m_Owner;
|
||||
private TicketType m_Type;
|
||||
|
||||
private int m_Scratch1;
|
||||
private int m_Scratch2;
|
||||
private int m_Scratch3;
|
||||
private bool m_FreeTicket;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Payout { get { return m_Payout; } set { m_Payout = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool CashedOut { get { return m_CashedOut; } set { m_CashedOut = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Checked { get { return m_Checked; } set { m_Checked = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Owner { get { return m_Owner; } set { m_Owner = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TicketType Type { get { return m_Type; } set { m_Type = value; } }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Scratch1 { get { return m_Scratch1; } set { m_Scratch1 = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Scratch2 { get { return m_Scratch2; } set { m_Scratch2 = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Scratch3 { get { return m_Scratch3; } set { m_Scratch3 = value; } }
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool FreeTicket { get { return m_FreeTicket; } set { m_FreeTicket = value; } }
|
||||
|
||||
public virtual string OwnerName { get { return m_Owner != null ? m_Owner.Name : "unknown"; } set { } }
|
||||
|
||||
public BaseLottoTicket(Mobile owner, TicketType type, bool quickScratch) : base(0x0FF3)
|
||||
{
|
||||
m_Type = type;
|
||||
m_Owner = owner;
|
||||
m_CashedOut = false;
|
||||
m_Payout = 0;
|
||||
m_Checked = false;
|
||||
m_FreeTicket = false;
|
||||
|
||||
if (quickScratch)
|
||||
DoQuickScratch();
|
||||
}
|
||||
|
||||
public virtual void CheckScratches()
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool DoScratch(int scratch, Mobile from)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (m_Owner == null)
|
||||
m_Owner = from;
|
||||
|
||||
if (!IsChildOf(from.Backpack))
|
||||
from.SendLocalizedMessage(1042001);
|
||||
|
||||
else if (from != m_Owner)
|
||||
from.SendMessage("Only the owner can view this ticket.");
|
||||
|
||||
else if (this is PowerBallTicket)
|
||||
{
|
||||
if (from.HasGump(typeof(PowerballTicketGump)))
|
||||
from.CloseGump(typeof(PowerballTicketGump));
|
||||
|
||||
from.SendGump(new PowerballTicketGump((PowerBallTicket)this, from));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (from.HasGump(typeof(ScratcherGump)))
|
||||
from.CloseGump(typeof(ScratcherGump));
|
||||
|
||||
from.SendGump(new ScratcherGump(this, from));
|
||||
}
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
string amount = "0";
|
||||
if (m_Payout > 0)
|
||||
{
|
||||
amount = String.Format("{0:##,###,###}", m_Payout);
|
||||
list.Add(1060847, "{0}\t{1}", "Winnings:", amount);
|
||||
}
|
||||
if (m_FreeTicket)
|
||||
list.Add("Free Ticket");
|
||||
}
|
||||
|
||||
public override void OnItemLifted(Mobile from, Item item)
|
||||
{
|
||||
base.OnItemLifted(from, item);
|
||||
|
||||
if (this is PowerBallTicket)
|
||||
{
|
||||
from.CloseGump(typeof(PowerballTicketGump));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.CloseGump(typeof(ScratcherGump));
|
||||
}
|
||||
}
|
||||
|
||||
private void DoQuickScratch()
|
||||
{
|
||||
if (m_Owner == null)
|
||||
return;
|
||||
|
||||
for (int i = 1; i < 4; ++i)
|
||||
DoScratch(i, m_Owner);
|
||||
|
||||
m_Owner.SendMessage("You quickly scratch your ticket once you purchase it.");
|
||||
|
||||
m_Owner.PlaySound(0x249);
|
||||
|
||||
if (m_Owner.HasGump(typeof(ScratcherGump)))
|
||||
m_Owner.CloseGump(typeof(ScratcherGump));
|
||||
|
||||
m_Owner.SendGump(new ScratcherGump(this, m_Owner));
|
||||
|
||||
if (ScratcherLotto.Stone != null && ScratcherLotto.Stone.DeleteTicketOnLoss && m_Checked && !m_FreeTicket && m_Payout == 0)
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), new TimerCallback(TrashLosingTicket));
|
||||
|
||||
}
|
||||
|
||||
public void TrashLosingTicket()
|
||||
{
|
||||
if (m_Owner != null)
|
||||
{
|
||||
m_Owner.SendMessage("You trash the losing ticket.");
|
||||
m_Owner.SendSound(0x48, m_Owner.Location);
|
||||
}
|
||||
|
||||
Delete();
|
||||
}
|
||||
|
||||
public BaseLottoTicket(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); //Version
|
||||
|
||||
writer.Write(m_Owner);
|
||||
writer.Write(m_Payout);
|
||||
writer.Write(m_CashedOut);
|
||||
writer.Write(m_Checked);
|
||||
writer.Write((int)m_Type);
|
||||
|
||||
writer.Write(m_Scratch1);
|
||||
writer.Write(m_Scratch2);
|
||||
writer.Write(m_Scratch3);
|
||||
writer.Write(m_FreeTicket);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Owner = reader.ReadMobile();
|
||||
m_Payout = reader.ReadInt();
|
||||
m_CashedOut = reader.ReadBool();
|
||||
m_Checked = reader.ReadBool();
|
||||
m_Type = (TicketType)reader.ReadInt();
|
||||
|
||||
m_Scratch1 = reader.ReadInt();
|
||||
m_Scratch2 = reader.ReadInt();
|
||||
m_Scratch3 = reader.ReadInt();
|
||||
m_FreeTicket = reader.ReadBool();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user