public bool submitTicket(LotteryTicket ticket) { if (ticket == null || ticket.Deleted || mode != LotteryBasketMode.Open || !ticket.Writable || ticket.Data == null) { return(false); } /* register the ticket */ ticket.Drawing = drawing; RegisteredTicket rt = new RegisteredTicket(ticket); incoming[(int)ticket.Serial] = rt; /* half the value of a submitted ticket goes to the * jackpot, the other half is destroyed */ award += LotteryConstants.TicketPrice / 2; destroyed += LotteryConstants.TicketPrice / 2; return(true); }
public override bool OnDragDrop(Mobile from, Item dropped) { if (from == null || from.Deleted || dropped == null || dropped.Deleted) { return(false); /* pedantic check */ } if (!(dropped is LotteryTicket)) { from.SendMessage("Only lottery tickets are accepted"); return(false); } LotteryTicket ticket = (LotteryTicket)dropped; if (mode != LotteryBasketMode.Open) { from.SendMessage("The lottery is currently closed."); return(false); } if (ticket.Data == null) { from.SendMessage("Please fill out your ticket first."); return(false); } else if (ticket.Writable) { /* submit ticket */ if (submitTicket(ticket)) { from.SendMessage("Your lottery ticket was submitted. Good luck!"); } return(false); } else if (ticket.Drawing == drawing) { from.SendMessage("This lottery ticket is already submitted. Please wait for the drawing."); return(false); } else if (ticket.Drawing == drawing - 1) { /* hand out the award */ RegisteredTicket rt = (RegisteredTicket)tickets[(int)ticket.Serial]; bool mainwinning = false; if (rt.Class == 0) { mainwinning = true; } ulong award = rt == null || rt.Class == -1 ? 0 : awards[rt.Class]; if (award == 0) { ticket.Delete(); from.SendMessage("Sorry, you havn't won. Better luck next time."); return(false); } else { if (debug) { Console.WriteLine("Checking winners ticket: Class " + rt.Class); } if (!giveMoney(from, (int)award, mainwinning)) { return(false); } ticket.Delete(); if (mainwinning && itemPrize) { from.SendMessage("Congratulations! You won the main prize! A Deed has placed in your Bagpack."); destroyed += award; } else { from.SendMessage("Congratulations! You won " + award + " gold!"); given += award; } return(false); } } else { ticket.Delete(); from.SendMessage("Sorry, your lottery ticket has expired."); return(false); } }
public bool submitTicket(LotteryTicket ticket) { if (ticket == null || ticket.Deleted || mode != LotteryBasketMode.Open || !ticket.Writable || ticket.Data == null) return false; /* register the ticket */ ticket.Drawing = drawing; RegisteredTicket rt = new RegisteredTicket(ticket); incoming[(int)ticket.Serial] = rt; /* half the value of a submitted ticket goes to the jackpot, the other half is destroyed */ award += LotteryConstants.TicketPrice / 2; destroyed += LotteryConstants.TicketPrice / 2; return true; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: drawing = reader.ReadUInt(); for (uint i = 0; i < jackpot.Length; i++) { jackpot[i] = reader.ReadULong(); } for (uint i = 0; i < awards.Length; i++) { awards[i] = reader.ReadULong(); } award = reader.ReadULong(); given = reader.ReadULong(); destroyed = reader.ReadULong(); mode = (LotteryBasketMode)reader.ReadInt(); if (reader.ReadBool()) { outcome = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { outcome[p] = reader.ReadUInt(); } } uint count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { data[p] = reader.ReadUInt(); } RegisteredTicket rt = new RegisteredTicket(id, data); rt.Class = reader.ReadInt(); tickets[id] = rt; } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { data[p] = reader.ReadUInt(); } incoming[id] = new RegisteredTicket(id, data); } board = reader.ReadItem(); itemPrize = reader.ReadBool(); break; case 1: drawing = reader.ReadUInt(); for (uint i = 0; i < drawingCount.Length; i++) { drawingCount[i] = reader.ReadUInt(); } for (uint i = 0; i < jackpot.Length; i++) { jackpot[i] = reader.ReadULong(); } for (uint i = 0; i < awards.Length; i++) { awards[i] = reader.ReadULong(); } for (uint i = 0; i < winners.Length; i++) { winners[i] = reader.ReadInt(); } oldParticipants = reader.ReadUInt(); award = reader.ReadULong(); given = reader.ReadULong(); destroyed = reader.ReadULong(); mode = (LotteryBasketMode)reader.ReadInt(); if (reader.ReadBool()) { outcome = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { outcome[p] = reader.ReadUInt(); } } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { data[p] = reader.ReadUInt(); } RegisteredTicket rt = new RegisteredTicket(id, data); rt.Class = reader.ReadInt(); tickets[id] = rt; } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) { data[p] = reader.ReadUInt(); } incoming[id] = new RegisteredTicket(id, data); } board = reader.ReadItem(); itemPrize = reader.ReadBool(); break; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: drawing = reader.ReadUInt(); for (uint i = 0; i < jackpot.Length; i++) jackpot[i] = reader.ReadULong(); for (uint i = 0; i < awards.Length; i++) awards[i] = reader.ReadULong(); award = reader.ReadULong(); given = reader.ReadULong(); destroyed = reader.ReadULong(); mode = (LotteryBasketMode)reader.ReadInt(); if (reader.ReadBool()) { outcome = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) outcome[p] = reader.ReadUInt(); } uint count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) data[p] = reader.ReadUInt(); RegisteredTicket rt = new RegisteredTicket(id, data); rt.Class = reader.ReadInt(); tickets[id] = rt; } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) data[p] = reader.ReadUInt(); incoming[id] = new RegisteredTicket(id, data); } board = reader.ReadItem(); itemPrize = reader.ReadBool(); break; case 1: drawing = reader.ReadUInt(); for (uint i = 0; i < drawingCount.Length; i++) drawingCount[i] = reader.ReadUInt(); for (uint i = 0; i < jackpot.Length; i++) jackpot[i] = reader.ReadULong(); for (uint i = 0; i < awards.Length; i++) awards[i] = reader.ReadULong(); for (uint i = 0; i < winners.Length; i++) winners[i] = reader.ReadInt(); oldParticipants = reader.ReadUInt(); award = reader.ReadULong(); given = reader.ReadULong(); destroyed = reader.ReadULong(); mode = (LotteryBasketMode)reader.ReadInt(); if (reader.ReadBool()) { outcome = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) outcome[p] = reader.ReadUInt(); } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) data[p] = reader.ReadUInt(); RegisteredTicket rt = new RegisteredTicket(id, data); rt.Class = reader.ReadInt(); tickets[id] = rt; } count = reader.ReadUInt(); for (uint i = 0; i < count; i++) { int id = reader.ReadInt(); uint[] data = new uint[LotteryConstants.Picks]; for (uint p = 0; p < LotteryConstants.Picks; p++) data[p] = reader.ReadUInt(); incoming[id] = new RegisteredTicket(id, data); } board = reader.ReadItem(); itemPrize = reader.ReadBool(); break; } }