This commit is contained in:
parent
2204d5fb86
commit
03fc95bfb7
105 changed files with 9135 additions and 161 deletions
|
|
@ -3,6 +3,8 @@ using Server;
|
|||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
using Server.Accounting;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Engines.VeteranRewards
|
||||
{
|
||||
|
|
@ -37,8 +39,28 @@ namespace Server.Engines.VeteranRewards
|
|||
public static bool SkillCapRewards = true; // assuming vet rewards are enabled, should total skill cap bonuses be awarded? (720 skills total at 4th level)
|
||||
public static TimeSpan RewardInterval = TimeSpan.FromDays( 30.0 );
|
||||
|
||||
public static bool HasAccess( Mobile mob, RewardCategory category )
|
||||
{
|
||||
List<RewardEntry> entries = category.Entries;
|
||||
|
||||
for ( int j = 0; j < entries.Count; ++j )
|
||||
{
|
||||
//RewardEntry entry = entries[j];
|
||||
if ( RewardSystem.HasAccess( mob, entries[j] ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool HasAccess( Mobile mob, RewardEntry entry )
|
||||
{
|
||||
if ( Core.Expansion < entry.RequiredExpansion )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TimeSpan ts;
|
||||
return HasAccess( mob, entry.List, out ts );
|
||||
}
|
||||
|
|
@ -91,6 +113,25 @@ namespace Server.Engines.VeteranRewards
|
|||
return level;
|
||||
}
|
||||
|
||||
public static bool HasHalfLevel( Mobile mob )
|
||||
{
|
||||
Account acct = mob.Account as Account;
|
||||
|
||||
if ( acct == null )
|
||||
return false;
|
||||
|
||||
return HasHalfLevel( acct );
|
||||
}
|
||||
|
||||
public static bool HasHalfLevel( Account acct )
|
||||
{
|
||||
TimeSpan totalTime = (DateTime.Now - acct.Created);
|
||||
|
||||
Double level = (totalTime.TotalDays / RewardInterval.TotalDays);
|
||||
|
||||
return level >= 0.5;
|
||||
}
|
||||
|
||||
public static bool ConsumeRewardPoint( Mobile mob )
|
||||
{
|
||||
int cur, max;
|
||||
|
|
@ -205,6 +246,52 @@ namespace Server.Engines.VeteranRewards
|
|||
return true;
|
||||
}
|
||||
|
||||
public static int GetRewardYearLabel( Item item, object[] args )
|
||||
{
|
||||
int level = GetRewardYear( item, args );
|
||||
int cliloc = 1076216 + level;
|
||||
if( level > 9 )
|
||||
cliloc += 4231;
|
||||
return cliloc;
|
||||
}
|
||||
|
||||
public static int GetRewardYear( Item item, object[] args )
|
||||
{
|
||||
if ( m_Lists == null )
|
||||
SetupRewardTables();
|
||||
|
||||
Type type = item.GetType();
|
||||
|
||||
for ( int i = 0; i < m_Lists.Length; ++i )
|
||||
{
|
||||
RewardList list = m_Lists[i];
|
||||
RewardEntry[] entries = list.Entries;
|
||||
|
||||
for ( int j = 0; j < entries.Length; ++j )
|
||||
{
|
||||
if ( entries[j].ItemType == type )
|
||||
{
|
||||
if ( args == null && entries[j].Args.Length == 0 )
|
||||
return i + 1;
|
||||
|
||||
if ( args.Length == entries[j].Args.Length )
|
||||
{
|
||||
bool match = true;
|
||||
|
||||
for ( int k = 0; match && k < args.Length; ++k )
|
||||
match = ( args[k].Equals( entries[j].Args[k] ) );
|
||||
|
||||
if ( match )
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// no entry?
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void SetupRewardTables()
|
||||
{
|
||||
RewardCategory monsterStatues = new RewardCategory( 1049750 );
|
||||
|
|
@ -212,6 +299,7 @@ namespace Server.Engines.VeteranRewards
|
|||
RewardCategory etherealSteeds = new RewardCategory( 1049751 );
|
||||
RewardCategory specialDyeTubs = new RewardCategory( 1049753 );
|
||||
RewardCategory houseAddOns = new RewardCategory( 1049754 );
|
||||
RewardCategory miscellaneous = new RewardCategory( 1078596 );
|
||||
|
||||
m_Categories = new RewardCategory[]
|
||||
{
|
||||
|
|
@ -219,7 +307,8 @@ namespace Server.Engines.VeteranRewards
|
|||
cloaksAndRobes,
|
||||
etherealSteeds,
|
||||
specialDyeTubs,
|
||||
houseAddOns
|
||||
houseAddOns,
|
||||
miscellaneous
|
||||
};
|
||||
|
||||
const int Bronze = 0x972;
|
||||
|
|
@ -234,6 +323,8 @@ namespace Server.Engines.VeteranRewards
|
|||
const int Fire = 0x489;
|
||||
const int IceWhite = 0x47E;
|
||||
const int JetBlack = 0x001;
|
||||
const int Pink = 0x490;
|
||||
const int Crimson = 0x485;
|
||||
|
||||
m_Lists = new RewardList[]
|
||||
{
|
||||
|
|
@ -244,8 +335,10 @@ namespace Server.Engines.VeteranRewards
|
|||
new RewardEntry( specialDyeTubs, 1006047, typeof( SpecialDyeTub ) ),
|
||||
new RewardEntry( cloaksAndRobes, 1006009, typeof( RewardCloak ), Bronze, 1041286 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006010, typeof( RewardRobe ), Bronze, 1041287 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080366, typeof( RewardDress ), Expansion.ML, Bronze, 1080366 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006011, typeof( RewardCloak ), Copper, 1041288 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006012, typeof( RewardRobe ), Copper, 1041289 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080367, typeof( RewardDress ), Expansion.ML, Copper, 1080367 ),
|
||||
new RewardEntry( monsterStatues, 1006024, typeof( MonsterStatuette ), MonsterStatuetteType.Crocodile ),
|
||||
new RewardEntry( monsterStatues, 1006025, typeof( MonsterStatuette ), MonsterStatuetteType.Daemon ),
|
||||
new RewardEntry( monsterStatues, 1006026, typeof( MonsterStatuette ), MonsterStatuetteType.Dragon ),
|
||||
|
|
@ -259,71 +352,121 @@ namespace Server.Engines.VeteranRewards
|
|||
new RewardEntry( monsterStatues, 1006034, typeof( MonsterStatuette ), MonsterStatuetteType.Orc ),
|
||||
new RewardEntry( monsterStatues, 1006035, typeof( MonsterStatuette ), MonsterStatuetteType.Ratman ),
|
||||
new RewardEntry( monsterStatues, 1006036, typeof( MonsterStatuette ), MonsterStatuetteType.Skeleton ),
|
||||
new RewardEntry( monsterStatues, 1006037, typeof( MonsterStatuette ), MonsterStatuetteType.Troll )
|
||||
//TODO: RedSoulstone
|
||||
//Need to reorganize this to OSI.
|
||||
new RewardEntry( monsterStatues, 1006037, typeof( MonsterStatuette ), MonsterStatuetteType.Troll ),
|
||||
new RewardEntry( houseAddOns, 1062692, typeof( ContestMiniHouseDeed ), Expansion.AOS, MiniHouseType.MalasMountainPass ),
|
||||
new RewardEntry( houseAddOns, 1072216, typeof( ContestMiniHouseDeed ), Expansion.SE, MiniHouseType.ChurchAtNight ),
|
||||
new RewardEntry( miscellaneous, 1076155, typeof( RedSoulstone ), Expansion.ML ),
|
||||
new RewardEntry( miscellaneous, 1080523, typeof( CommodityDeedBox ), Expansion.ML ),
|
||||
} ),
|
||||
new RewardList( RewardInterval, 2, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( specialDyeTubs, 1006052, typeof( LeatherDyeTub ) ),
|
||||
new RewardEntry( cloaksAndRobes, 1006014, typeof( RewardCloak ), Agapite, 1041290 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006015, typeof( RewardRobe ), Agapite, 1041291 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080369, typeof( RewardDress ), Expansion.ML, Agapite, 1080369 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006016, typeof( RewardCloak ), Golden, 1041292 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006017, typeof( RewardRobe ), Golden, 1041293 )
|
||||
/*new RewardEntry( houseAddOns, 0, typeof( BannerDeed ) ),
|
||||
new RewardEntry( houseAddOns, 0, typeof( FlamingSkullDeed ) )*/
|
||||
new RewardEntry( cloaksAndRobes, 1006017, typeof( RewardRobe ), Golden, 1041293 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080368, typeof( RewardDress ), Expansion.ML, Golden, 1080368 ),
|
||||
new RewardEntry( houseAddOns, 1006048, typeof( BannerDeed ) ),
|
||||
new RewardEntry( houseAddOns, 1006049, typeof( FlamingHeadDeed ) ),
|
||||
new RewardEntry( houseAddOns, 1080409, typeof( MinotaurStatueDeed ), Expansion.ML )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 3, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( cloaksAndRobes, 1006020, typeof( RewardCloak ), Verite, 1041294 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006021, typeof( RewardRobe ), Verite, 1041295 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080370, typeof( RewardDress ), Expansion.ML, Verite, 1080370 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006022, typeof( RewardCloak ), Valorite, 1041296 ),
|
||||
new RewardEntry( cloaksAndRobes, 1006023, typeof( RewardRobe ), Valorite, 1041297 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080371, typeof( RewardDress ), Expansion.ML, Valorite, 1080371 ),
|
||||
new RewardEntry( monsterStatues, 1006038, typeof( MonsterStatuette ), MonsterStatuetteType.Cow ),
|
||||
new RewardEntry( monsterStatues, 1006039, typeof( MonsterStatuette ), MonsterStatuetteType.Zombie ),
|
||||
new RewardEntry( monsterStatues, 1006040, typeof( MonsterStatuette ), MonsterStatuetteType.Llama ),
|
||||
new RewardEntry( etherealSteeds, 1006019, typeof( EtherealHorse ) ),
|
||||
new RewardEntry( etherealSteeds, 1006050, typeof( EtherealOstard ) ),
|
||||
new RewardEntry( etherealSteeds, 1006051, typeof( EtherealLlama ) )
|
||||
new RewardEntry( etherealSteeds, 1006051, typeof( EtherealLlama ) ),
|
||||
new RewardEntry( houseAddOns, 1080407, typeof( PottedCactusDeed ), Expansion.ML )
|
||||
|
||||
} ),
|
||||
new RewardList( RewardInterval, 4, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( specialDyeTubs, 1049740, typeof( RunebookDyeTub ) ),
|
||||
new RewardEntry( cloaksAndRobes, 1049725, typeof( RewardCloak ), DarkGray, 1049757 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049726, typeof( RewardRobe ), DarkGray, 1049756 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080374, typeof( RewardDress ), Expansion.ML, DarkGray, 1080374 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049727, typeof( RewardCloak ), IceGreen, 1049759 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049728, typeof( RewardRobe ), IceGreen, 1049758 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080372, typeof( RewardDress ), Expansion.ML, IceGreen, 1080372 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049729, typeof( RewardCloak ), IceBlue, 1049761 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049730, typeof( RewardRobe ), IceBlue, 1049760 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080373, typeof( RewardDress ), Expansion.ML, IceBlue, 1080373 ),
|
||||
new RewardEntry( monsterStatues, 1049742, typeof( MonsterStatuette ), MonsterStatuetteType.Ophidian ),
|
||||
new RewardEntry( monsterStatues, 1049743, typeof( MonsterStatuette ), MonsterStatuetteType.Reaper ),
|
||||
new RewardEntry( monsterStatues, 1049744, typeof( MonsterStatuette ), MonsterStatuetteType.Mongbat ),
|
||||
new RewardEntry( etherealSteeds, 1049746, typeof( EtherealKirin ) ),
|
||||
new RewardEntry( etherealSteeds, 1049745, typeof( EtherealUnicorn ) ),
|
||||
new RewardEntry( etherealSteeds, 1049747, typeof( EtherealRidgeback ) )
|
||||
/*new RewardEntry( houseAddOns, 0, typeof( DecorativeShieldWallHanging ) ),
|
||||
new RewardEntry( houseAddOns, 0, typeof( SkeletonWallHanging ) )*/
|
||||
new RewardEntry( etherealSteeds, 1049747, typeof( EtherealRidgeback ) ),
|
||||
new RewardEntry( houseAddOns, 1049737, typeof( DecorativeShieldDeed ) ),
|
||||
new RewardEntry( houseAddOns, 1049738, typeof( HangingSkeletonDeed ) )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 5, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( specialDyeTubs, 1049741, typeof( StatuetteDyeTub ) ),
|
||||
new RewardEntry( cloaksAndRobes, 1049731, typeof( RewardCloak ), JetBlack, 1049763 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049732, typeof( RewardRobe ), JetBlack, 1049762 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080377, typeof( RewardDress ), Expansion.ML, JetBlack, 1080377 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049733, typeof( RewardCloak ), IceWhite, 1049765 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049734, typeof( RewardRobe ), IceWhite, 1049764 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080376, typeof( RewardDress ), Expansion.ML, IceWhite, 1080376 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049735, typeof( RewardCloak ), Fire, 1049767 ),
|
||||
new RewardEntry( cloaksAndRobes, 1049736, typeof( RewardRobe ), Fire, 1049766 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080375, typeof( RewardDress ), Expansion.ML, Fire, 1080375 ),
|
||||
new RewardEntry( monsterStatues, 1049768, typeof( MonsterStatuette ), MonsterStatuetteType.Gazer ),
|
||||
new RewardEntry( monsterStatues, 1049769, typeof( MonsterStatuette ), MonsterStatuetteType.FireElemental ),
|
||||
new RewardEntry( monsterStatues, 1049770, typeof( MonsterStatuette ), MonsterStatuetteType.Wolf ),
|
||||
new RewardEntry( etherealSteeds, 1049749, typeof( EtherealSwampDragon ) ),
|
||||
new RewardEntry( etherealSteeds, 1049748, typeof( EtherealBeetle ) )
|
||||
/*new RewardEntry( houseAddOns, 0, typeof( AnkhDecoration ) )*/
|
||||
new RewardEntry( etherealSteeds, 1049748, typeof( EtherealBeetle ) ),
|
||||
new RewardEntry( houseAddOns, 1049739, typeof( StoneAnkhDeed ) ),
|
||||
new RewardEntry( houseAddOns, 1080384, typeof( BloodyPentagramDeed ), Expansion.ML )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 6, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( houseAddOns, 1076188, typeof( CharacterStatueMaker ), Expansion.ML, StatueType.Jade ),
|
||||
new RewardEntry( houseAddOns, 1076189, typeof( CharacterStatueMaker ), Expansion.ML, StatueType.Marble ),
|
||||
new RewardEntry( houseAddOns, 1076190, typeof( CharacterStatueMaker ), Expansion.ML, StatueType.Bronze ),
|
||||
new RewardEntry( houseAddOns, 1080527, typeof( RewardBrazierDeed ), Expansion.ML )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 7, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( houseAddOns, 1076157, typeof( CannonDeed ), Expansion.ML ),
|
||||
new RewardEntry( houseAddOns, 1080550, typeof( TreeStumpDeed ), Expansion.ML )
|
||||
} ),
|
||||
//TODO: 6th year player statue Markers
|
||||
//TODO: 7th year Decorative Cannon
|
||||
//TODO: 8th year Weapon Engraving Tool
|
||||
//TODO: 9th year Ridable polar bear
|
||||
new RewardList( RewardInterval, 8, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( miscellaneous, 1076158, typeof( WeaponEngravingTool ), Expansion.ML )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 9, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( etherealSteeds, 1076159, typeof( RideablePolarBear ), Expansion.ML ),
|
||||
new RewardEntry( houseAddOns, 1080549, typeof( WallBannerDeed ), Expansion.ML )
|
||||
} ),
|
||||
new RewardList( RewardInterval, 10, new RewardEntry[]
|
||||
{
|
||||
new RewardEntry( monsterStatues, 1080520, typeof( MonsterStatuette ), Expansion.ML, MonsterStatuetteType.Harrower ),
|
||||
new RewardEntry( monsterStatues, 1080521, typeof( MonsterStatuette ), Expansion.ML, MonsterStatuetteType.Efreet ),
|
||||
|
||||
new RewardEntry( cloaksAndRobes, 1080382, typeof( RewardCloak ), Expansion.ML, Pink, 1080382 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080380, typeof( RewardRobe ), Expansion.ML, Pink, 1080380 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080378, typeof( RewardDress ), Expansion.ML, Pink, 1080378 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080383, typeof( RewardCloak ), Expansion.ML, Crimson, 1080383 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080381, typeof( RewardRobe ), Expansion.ML, Crimson, 1080381 ),
|
||||
new RewardEntry( cloaksAndRobes, 1080379, typeof( RewardDress ), Expansion.ML, Crimson, 1080379 ),
|
||||
|
||||
new RewardEntry( etherealSteeds, 1080386, typeof( EtherealCuSidhe ), Expansion.ML ),
|
||||
|
||||
new RewardEntry( houseAddOns, 1080548, typeof( MiningCartDeed ), Expansion.ML ),
|
||||
new RewardEntry( houseAddOns, 1080397, typeof( AnkhOfSacrificeDeed ), Expansion.ML )
|
||||
} )
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -355,6 +498,12 @@ namespace Server.Engines.VeteranRewards
|
|||
e.Mobile.SkillsCap = 7000;
|
||||
}
|
||||
|
||||
if ( Core.ML && e.Mobile is PlayerMobile && !((PlayerMobile)e.Mobile).HasStatReward && HasHalfLevel( e.Mobile ) )
|
||||
{
|
||||
((PlayerMobile)e.Mobile).HasStatReward = true;
|
||||
e.Mobile.StatCap += 5;
|
||||
}
|
||||
|
||||
if ( cur < max )
|
||||
e.Mobile.SendGump( new RewardNoticeGump( e.Mobile ) );
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue