evil lord kirby
Wanderer
Gotta say i am happy as hell about this myself. I had plans to do this but just hadnt gotten to it so you saved me alot of time on it
using System;
using Server;
using Server.Items;
using Server.Mobiles;
using System.Collections;
namespace Server
{
public class DailyRaresSystem
{
// Enables Daily Rare System
public static readonly bool DailyRaresEnabled = true;
// Enables Custom Rares
public static readonly bool EnableCustomRares = true;
// Enables Maps "If your server only uses a set number of maps, Disable the ones you dont need."
public static readonly bool EnableFelucca = true;
public static readonly bool EnableTrammel = true;
public static readonly bool EnableMalas = true;
public static readonly bool EnableIlshenar = true;
public static readonly bool EnableTokuno = true;
public static void StartRareSpawn( bool isSpawn )
{
// Delete all old rare not taken.
ArrayList toDelete = new ArrayList();
foreach ( Item item in World.Items.Values )
{
if ( item is BaseDailyRare )
{
BaseDailyRare bdr = (BaseDailyRare)item;
if ( bdr.HasBeenMoved == false )
toDelete.Add( bdr );
}
if ( item is BaseDailyRareCont )
{
BaseDailyRareCont bdrc = (BaseDailyRareCont)item;
if ( bdrc.HasBeenMoved == false )
toDelete.Add( bdrc );
}
// Future Support For Water Barrels / Tubs / Buckets
/*if ( item.ItemID == 3703 || item.ItemID == 3715 || item.ItemID == 5344 )
{
//Respawn old used barrels for water barrels
if ( item.Visible == false )
{
item.Visible = true;
item.Z += 20;
}
}*/
}
foreach ( Item delete in toDelete )
{
delete.Delete();
}
if ( isSpawn )
SpawnRares();
}
public static void SpawnRares()
{
if ( DailyRaresEnabled == true )
{
// Spawn Rares (Felucca)
if ( EnableFelucca == true )
{
DailyRocks fdrs = new DailyRocks();
fdrs.MoveToWorld( new Point3D( 2683, 2056, 17 ), Map.Felucca );
DailyRock fdr = new DailyRock();
fdr.MoveToWorld( new Point3D( 5511, 3116, -4 ), Map.Felucca );
DailyFruitBasket fdfb = new DailyFruitBasket();
fdfb.MoveToWorld( new Point3D( 286, 986, 6 ), Map.Felucca );
DailyClosedBarrel fdcb = new DailyClosedBarrel();
fdcb.MoveToWorld( new Point3D( 5191, 587, 0 ), Map.Felucca );
DailyCandle fdc1 = new DailyCandle();
fdc1.Burning = true;
fdc1.ItemID = 0xB1A;
fdc1.MoveToWorld( new Point3D( 5576, 1829, 6 ), Map.Felucca );
DailyCandle fdc2 = new DailyCandle();
fdc2.Burning = true;
fdc2.ItemID = 0xB1A;
fdc2.MoveToWorld( new Point3D( 5582, 1829, 6 ), Map.Felucca );
DailyHay fdh = new DailyHay();
fdh.MoveToWorld( new Point3D( 5999, 3773, 22 ), Map.Felucca );
DailyFullJars fdfj = new DailyFullJars();
fdfj.MoveToWorld( new Point3D( 3656, 2506, 0 ), Map.Felucca );
DailyFruitBasket fdb1 = new DailyFruitBasket();
fdb1.CantBeLifted = true;
fdb1.MoveToWorld( new Point3D( 3787, 1121, 26 ), Map.Felucca );
DailyFruitBasket fdb2 = new DailyFruitBasket();
fdb2.CantBeLifted = true;
fdb2.MoveToWorld( new Point3D( 3683, 2204, 31 ), Map.Felucca );
DailyFruitBasket fdb3 = new DailyFruitBasket();
fdb3.CantBeLifted = true;
fdb3.MoveToWorld( new Point3D( 1132, 2220, 66 ), Map.Felucca );
DailyFruitBasket fdb4 = new DailyFruitBasket();
fdb4.CantBeLifted = true;
fdb4.MoveToWorld( new Point3D( 1135, 2220, 46 ), Map.Felucca );
DailyFruitBasket fdb5 = new DailyFruitBasket();
fdb5.CantBeLifted = true;
fdb5.MoveToWorld( new Point3D( 2636, 2081, 16 ), Map.Felucca );
}
// Spawn Rares (Trammel)
if ( EnableTrammel == true )
{
DailyRocks tdrs = new DailyRocks();
tdrs.MoveToWorld( new Point3D( 2683, 2056, 17 ), Map.Trammel );
DailyRock tdr = new DailyRock();
tdr.MoveToWorld( new Point3D( 5511, 3116, -4 ), Map.Trammel );
DailyFruitBasket tdfb = new DailyFruitBasket();
tdfb.MoveToWorld( new Point3D( 286, 986, 6 ), Map.Trammel );
DailyClosedBarrel tdcb = new DailyClosedBarrel();
tdcb.MoveToWorld( new Point3D( 5191, 587, 0 ), Map.Trammel );
DailyCandle tdc1 = new DailyCandle();
tdc1.Burning = true;
tdc1.ItemID = 0xB1A;
tdc1.MoveToWorld( new Point3D( 5576, 1829, 6 ), Map.Trammel );
DailyCandle tdc2 = new DailyCandle();
tdc2.Burning = true;
tdc2.ItemID = 0xB1A;
tdc2.MoveToWorld( new Point3D( 5582, 1829, 6 ), Map.Trammel );
DailyFruitBasket tdb1 = new DailyFruitBasket();
tdb1.CantBeLifted = true;
tdb1.MoveToWorld( new Point3D( 3787, 1121, 26 ), Map.Trammel );
DailyFruitBasket tdb2 = new DailyFruitBasket();
tdb2.CantBeLifted = true;
tdb2.MoveToWorld( new Point3D( 3683, 2204, 31 ), Map.Trammel );
DailyFruitBasket tdb3 = new DailyFruitBasket();
tdb3.CantBeLifted = true;
tdb3.MoveToWorld( new Point3D( 1132, 2220, 66 ), Map.Trammel );
DailyFruitBasket tdb4 = new DailyFruitBasket();
tdb4.CantBeLifted = true;
tdb4.MoveToWorld( new Point3D( 1135, 2220, 46 ), Map.Trammel );
DailyFruitBasket tdb5 = new DailyFruitBasket();
tdb5.CantBeLifted = true;
tdb5.MoveToWorld( new Point3D( 2636, 2081, 16 ), Map.Trammel );
}
// Spawn Rares (Ilshenar)
if ( EnableIlshenar == true )
{
DailyBrokenChair idbc = new DailyBrokenChair();
idbc.MoveToWorld( new Point3D( 148, 945, -29 ), Map.Ilshenar );
}
// Spawn Rares (Malas)
if ( EnableMalas == true )
{
DailyMeatPie mdmp = new DailyMeatPie();
mdmp.MoveToWorld( new Point3D( 2113, 1311, -44 ), Map.Malas );
}
// Spawn Rares (Tokuno)
if ( EnableMalas == true )
{
//No Spawns Yet
}
if ( EnableCustomRares == true )
{
// Spawn Custom Rares (Felucca)
if ( EnableFelucca == true )
{
DailyLogs fdl = new DailyLogs();
fdl.MoveToWorld( new Point3D( 626, 1152, 0 ), Map.Felucca );
DailyArrows fda = new DailyArrows();
fda.MoveToWorld( new Point3D( 3048, 3371, 21 ), Map.Felucca );
DailyDung fdd = new DailyDung();
fdd.MoveToWorld( new Point3D( 2524, 386, 15 ), Map.Felucca );
DailyStump fds = new DailyStump();
fds.MoveToWorld( new Point3D( 535, 992, 0 ), Map.Felucca );
DailyRedDresser fdrd = new DailyRedDresser();
fdrd.MoveToWorld( new Point3D( 4648, 1222, 0 ), Map.Felucca );
DailyDresser fdd2 = new DailyDresser();
fdd2.MoveToWorld( new Point3D( 2257, 1216, 0 ), Map.Felucca );
DailyEmptyJars fdej = new DailyEmptyJars();
fdej.MoveToWorld( new Point3D( 5732, 93, 0 ), Map.Felucca );
DailyOrfluer fdo = new DailyOrfluer();
fdo.MoveToWorld( new Point3D( 1239, 2568, 0 ), Map.Felucca );
DailyScareCrow fdsc = new DailyScareCrow();
fdsc.MoveToWorld( new Point3D( 833, 2351, 0 ), Map.Felucca );
DailyBookcase fdbc = new DailyBookcase();
fdsc.MoveToWorld( new Point3D( 399, 1216, 0 ), Map.Felucca );
}
// Spawn Custom Rares (Trammel)
if ( EnableTrammel == true )
{
DailyFancyLampPost tflp = new DailyFancyLampPost();
tflp.MoveToWorld( new Point3D( 3623, 2480, 0 ), Map.Trammel );
DailyLogs tdl = new DailyLogs();
tdl.MoveToWorld( new Point3D( 626, 1152, 0 ), Map.Trammel );
DailyArrows tda = new DailyArrows();
tda.MoveToWorld( new Point3D( 3048, 3371, 21 ), Map.Trammel );
DailyDung tdd = new DailyDung();
tdd.MoveToWorld( new Point3D( 2524, 386, 15 ), Map.Trammel );
DailyRedDresser tdrd = new DailyRedDresser();
tdrd.MoveToWorld( new Point3D( 4648, 1222, 0 ), Map.Trammel );
DailyDresser tdd2 = new DailyDresser();
tdd2.MoveToWorld( new Point3D( 2257, 1216, 0 ), Map.Trammel );
DailyEmptyJars tdej = new DailyEmptyJars();
tdej.MoveToWorld( new Point3D( 5732, 93, 0 ), Map.Trammel );
DailyBlanket tdb = new DailyBlanket();
tdb.MoveToWorld( new Point3D( 3677, 2609, 2 ), Map.Trammel );
DailyBookcase tdbc = new DailyBookcase();
tdbc.MoveToWorld( new Point3D( 399, 1216, 0 ), Map.Trammel );
}
// Spawn Custom Rares (Ilshenar)
if ( EnableIlshenar == true )
{
DailyRuinedBookcase idrbc = new DailyRuinedBookcase();
idrbc.MoveToWorld( new Point3D( 1218, 1152, -25 ), Map.Ilshenar );
DailyFlax idf = new DailyFlax();
idf.MoveToWorld( new Point3D( 588, 1176, -97 ), Map.Ilshenar );
DailyCurtian idc = new DailyCurtian();
idc.MoveToWorld( new Point3D( 1508, 537, 10 ), Map.Ilshenar );
DailyCurtian idc2 = new DailyCurtian();
idc2.MoveToWorld( new Point3D( 1508, 534, 10 ), Map.Ilshenar );
}
// Spawn Custom Rares (Malas)
if ( EnableMalas == true )
{
DailyCrystal mdc = new DailyCrystal();
mdc.MoveToWorld( new Point3D( 915, 722, -86 ), Map.Malas );
DailyMushroom mdm = new DailyMushroom();
mdm.MoveToWorld( new Point3D( 2014, 1179, -84 ), Map.Malas );
DailySpittoon mds = new DailySpittoon();
mds.MoveToWorld( new Point3D( 1052, 1438, -71 ), Map.Malas );
}
// Spawn Custom Rares (Tokuno)
if ( EnableTokuno == true )
{
DailySwords tds = new DailySwords();
tds.MoveToWorld( new Point3D( 680, 1245, 47 ), Map.Tokuno );
DailyMenu tdm = new DailyMenu();
tdm.MoveToWorld( new Point3D( 239, 1072, 20 ), Map.Tokuno );
DailySushi tds2 = new DailySushi();
tds2.MoveToWorld( new Point3D( 674, 1296, 30 ), Map.Tokuno );
}
}
}
}
public static void StartExtrasSpawn( bool isSpawn )
{
// Delete all old rare not taken.
ArrayList toDelete = new ArrayList();
foreach ( Item item in World.Items.Values )
{
if ( item is DailyRareSpawner )
{
DailyRareSpawner drs = (DailyRareSpawner)item;
toDelete.Add( drs );
}
if ( item is DailyTownCrate )
{
DailyTownCrate dtc = (DailyTownCrate)item;
toDelete.Add( dtc );
}
}
foreach ( Item delete in toDelete )
{
delete.Delete();
}
if ( isSpawn )
SpawnExtras();
}
public static void SpawnExtras()
{
// Spawn Custom Rares (Felucca)
if ( EnableFelucca == true )
{
// Artist Array List
ArrayList art = new ArrayList();
art.Add( "Artist" );
// Blacksmith Item Array List
ArrayList bsmith = new ArrayList();
bsmith.Add( "CopperWire" );
bsmith.Add( "GoldWire" );
bsmith.Add( "IronWire" );
bsmith.Add( "SilverWire" );
bsmith.Add( "RareIngot" );
bsmith.Add( "IronIngot" );
bsmith.Add( "HorseShoes" );
bsmith.Add( "ForgedMetal" );
bsmith.Add( "IronOre" );
bsmith.Add( "SmithHammer" );
bsmith.Add( "Tongs" );
// Spawn Npcs
Spawner fdrs1 = new DailyRareSpawner();
fdrs1.MoveToWorld( new Point3D( 4523, 1066, 0 ), Map.Felucca );
fdrs1.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs2 = new DailyRareSpawner();
fdrs2.MoveToWorld( new Point3D( 4530, 1059, 0 ), Map.Felucca );
fdrs2.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs3 = new DailyRareSpawner();
fdrs3.MoveToWorld( new Point3D( 4523, 1059, 0 ), Map.Felucca );
fdrs3.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs4 = new DailyRareSpawner();
fdrs4.MoveToWorld( new Point3D( 2907, 714, 0 ), Map.Felucca );
fdrs4.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs5 = new DailyRareSpawner();
fdrs5.MoveToWorld( new Point3D( 2907, 708, 0 ), Map.Felucca );
fdrs5.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs6 = new DailyRareSpawner();
fdrs6.MoveToWorld( new Point3D( 1447, 1664, 10 ), Map.Felucca );
fdrs6.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
VoransTownCrate fdtc1 = new DailyBarrel(); // Bucs Smith Barrels
fdtc1.MoveToWorld( new Point3D( 2636, 2085, 10 ), Map.Felucca );
fdtc1.InitSpawn( 5, TimeSpan.FromMinutes( 60 ), TimeSpan.FromMinutes( 300 ), bsmith );
VoransTownCrate fdtc2 = new DailyBarrel(); // Bucs Smith Barrels
fdtc2.MoveToWorld( new Point3D( 2636, 2084, 10 ), Map.Felucca );
fdtc2.InitSpawn( 5, TimeSpan.FromMinutes( 60 ), TimeSpan.FromMinutes( 300 ), bsmith );
}
// Spawn Custom Rares (Trammel)
if ( EnableTrammel == true )
{
ArrayList art = new ArrayList();
art.Add( "Artist" );
// Spawn Npcs
Spawner fdrs1 = new DailyRareSpawner();
fdrs1.MoveToWorld( new Point3D( 4523, 1066, 0 ), Map.Trammel );
fdrs1.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs2 = new DailyRareSpawner();
fdrs2.MoveToWorld( new Point3D( 4530, 1059, 0 ), Map.Trammel );
fdrs2.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs3 = new DailyRareSpawner();
fdrs3.MoveToWorld( new Point3D( 4523, 1059, 0 ), Map.Trammel );
fdrs3.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs4 = new DailyRareSpawner();
fdrs4.MoveToWorld( new Point3D( 2907, 714, 0 ), Map.Trammel );
fdrs4.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs5 = new DailyRareSpawner();
fdrs5.MoveToWorld( new Point3D( 2907, 708, 0 ), Map.Trammel );
fdrs5.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
Spawner fdrs6 = new DailyRareSpawner();
fdrs6.MoveToWorld( new Point3D( 1447, 1664, 10 ), Map.Trammel );
fdrs6.InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, art );
}
// Spawn Custom Rares (Ilshenar)
if ( EnableIlshenar == true )
{
//No Spawns Yet
}
// Spawn Custom Rares (Malas)
if ( EnableMalas == true )
{
//No Spawns Yet
}
// Spawn Custom Rares (Tokuno)
if ( EnableTokuno == true )
{
//No Spawns Yet
}
}
}
}
ewalsh said:Thanks so much. I've been looking for something like this!
The only problem I found with is in BaseDailyRare.cs:
Set the items so they couldn't be moved.Code:public BaseDailyRare( int itemID ) : base( itemID ) { [COLOR="Red"]Movable = false;[/COLOR] Weight = 10.0;
I simply changed it to:
Works like a charm!Code:public BaseDailyRare( int itemID ) : base( itemID ) { [COLOR="Red"]Movable = true;[/COLOR] Weight = 10.0;
public override bool VerifyMove( Mobile from )
{
if ( m_CantBeLifted == true ) // For fruit baskets that require you to eat fruit before taking basket.
return false;
else if ( this.Movable == false && m_HasBeenMoved == false )
{
this.Movable = true;
m_HasBeenMoved = true;
return true;
}
return Movable;
}
You forgot to fix this its still showning in daily ruined book case this [Flipable( 0xC15, 0xC16)] when it should look like this [Flipable( 0xC15, 0xC14)].Erica said:Ok hehe smacks head oh btw you need to fix the daily ruined bookcase it reads this for flip ---> 0xC16 that number is damaged books if fliped lol should be like this ---> [Flipable( 0xC15, 0xC14)]
notice 16 now is a 14 .
RoninGT said:Code:public override bool VerifyMove( Mobile from ) { if ( m_CantBeLifted == true ) // For fruit baskets that require you to eat fruit before taking basket. return false; else if ( this.Movable == false && m_HasBeenMoved == false ) { this.Movable = true; m_HasBeenMoved = true; return true; } return Movable; }
It should be set movable false. As you see above when the object is moved it sets it to movable true. Why is this? Because if an item is in the world and movable it will decay. OSI Dailys do not decay even if they sit there all day. So the item remains movable false till its lifed then its movable again. To prevent decay. If you set it to movable before its moved. And no one gets the rare before it decays... it decays. and its just like adding spawners
Ronin
Reason is you gotta double click the fruit basket you eat it then turns to a basket after eating it then can pick up the basket.ewalsh said:They couldn't be lifted before I changed the code....am I missing something?
Hmm thats odd havent checked the blankets and curtains going to get on my server to check those will tell you if it does same to me.ewalsh said:Oh, I know that. Ronin used that as an example. I was talking about all the other items...folded blankets, curtains and such. I couldn't move them until I set it to movable true...
Hehe no i just tested it and theres no need to steal them its osi daily rares and custom daily rares the name says it all and i just tested this and can pick up the curtain and blanket and all the rest i tested works fine to me.nacrom said:if i am not mistake i believe some items have to be "stolen" to take them. might want to try that instead of just taking them
ewalsh said:They couldn't be lifted before I changed the code....am I missing something?
RoninGT said:Rosey1
Thanks for that tip ill fix that asap and get it out for download.
Ronin
Rosey1 said:Thank you so much! i have no idea what you fixed but it works