- Terrible Hatchlings quest fixed to only reward SE weapons and armor.
- Slayer and opposition systems now account for inheritance. - Added Satyrs to the fey opposition group. - Added fey slayer vulnerability to cu sidhes. - Added reptilian and dragon slayer vulnerabilities to reptalons. - Various mage AI additions for necromancers. (Spirit speak for healing, pain spike and strangle for damage, automatic mage/necro bias by skill value.) - Fixed a targeting issue not accounting for FightMode.Evil versus low karma targeting. - Added melee damage bonus for Talisman killer properties. - Added general ML loot for ML areas. - Added ML minor artifact drops for named ML mobs. - Added named ML mobs for Bedlam.
This commit is contained in:
parent
a0bc5e2349
commit
43e5982fbb
22 changed files with 1207 additions and 231 deletions
|
|
@ -9,6 +9,49 @@ namespace Server
|
|||
public class Loot
|
||||
{
|
||||
#region List definitions
|
||||
|
||||
#region Mondain's Legacy
|
||||
private static Type[] m_MLWeaponTypes = new Type[]
|
||||
{
|
||||
typeof( AssassinSpike ), typeof( DiamondMace ), typeof( ElvenMachete ),
|
||||
typeof( ElvenSpellblade ), typeof( Leafblade ), typeof( OrnateAxe ),
|
||||
typeof( RadiantScimitar ), typeof( RuneBlade ), typeof( WarCleaver ),
|
||||
typeof( WildStaff )
|
||||
};
|
||||
|
||||
public static Type[] MLWeaponTypes{ get{ return m_MLWeaponTypes; } }
|
||||
|
||||
private static Type[] m_MLRangedWeaponTypes = new Type[]
|
||||
{
|
||||
typeof( ElvenCompositeLongbow ), typeof( MagicalShortbow )
|
||||
};
|
||||
|
||||
public static Type[] MLRangedWeaponTypes{ get{ return m_MLRangedWeaponTypes; } }
|
||||
|
||||
private static Type[] m_MLArmorTypes = new Type[]
|
||||
{
|
||||
typeof( Circlet ), typeof( GemmedCirclet ), typeof( LeafTonlet ),
|
||||
typeof( RavenHelm ), typeof( RoyalCirclet ), typeof( VultureHelm ),
|
||||
typeof( WingedHelm ), typeof( LeafArms ), typeof( LeafChest ),
|
||||
typeof( LeafGloves ), typeof( LeafGorget ), typeof( LeafLegs ),
|
||||
typeof( WoodlandArms ), typeof( WoodlandChest ), typeof( WoodlandGloves ),
|
||||
typeof( WoodlandGorget ), typeof( WoodlandLegs ), typeof( HideChest ),
|
||||
typeof( HideGloves ), typeof( HideGorget ), typeof( HidePants ),
|
||||
typeof( HidePauldrons )
|
||||
};
|
||||
|
||||
public static Type[] MLArmorTypes{ get{ return m_MLArmorTypes; } }
|
||||
|
||||
private static Type[] m_MLClothingTypes = new Type[]
|
||||
{
|
||||
typeof( MaleElvenRobe ), typeof( FemaleElvenRobe ), typeof( ElvenPants ),
|
||||
typeof( ElvenShirt ), typeof( ElvenDarkShirt ), typeof( ElvenBoots ),
|
||||
typeof( VultureHelm ), typeof( WoodlandBelt )
|
||||
};
|
||||
|
||||
public static Type[] MLClothingTypes{ get{ return m_MLClothingTypes; } }
|
||||
#endregion
|
||||
|
||||
private static Type[] m_SEWeaponTypes = new Type[]
|
||||
{
|
||||
typeof( Bokuto ), typeof( Daisho ), typeof( Kama ),
|
||||
|
|
@ -224,19 +267,23 @@ namespace Server
|
|||
|
||||
private static Type[] m_PaladinScrollTypes = new Type[0];
|
||||
|
||||
private static Type[] m_ArcaneScrollTypes = new Type[]
|
||||
#region Mondain's Legacy
|
||||
private static Type[] m_ArcanistScrollTypes = new Type[]
|
||||
{
|
||||
typeof( ArcaneCircleScroll ), typeof ( GiftOfRenewalScroll ), typeof( ImmolatingWeaponScroll ), typeof( AttuneWeaponScroll ),
|
||||
typeof( ThunderstormScroll ), typeof( NatureFuryScroll ), typeof( ReaperFormScroll ), typeof( WildfireScroll ),
|
||||
typeof( EssenceOfWindScroll ), typeof( DryadAllureScroll ), typeof( EtherealVoyageScroll ), typeof( WordOfDeathScroll ),
|
||||
typeof( GiftOfLifeScroll ), typeof( ArcaneEmpowermentScroll )
|
||||
typeof( ArcaneCircleScroll ), typeof( GiftOfRenewalScroll ), typeof( ImmolatingWeaponScroll ), typeof( AttuneWeaponScroll ),
|
||||
typeof( ThunderstormScroll ), typeof( NatureFuryScroll ), /*typeof( SummonFeyScroll ), typeof( SummonFiendScroll ),*/
|
||||
typeof( ReaperFormScroll ), typeof( WildfireScroll ), typeof( EssenceOfWindScroll ), typeof( DryadAllureScroll ),
|
||||
typeof( EtherealVoyageScroll ), typeof( WordOfDeathScroll ), typeof( GiftOfLifeScroll ), typeof( ArcaneEmpowermentScroll )
|
||||
};
|
||||
#endregion
|
||||
|
||||
public static Type[] RegularScrollTypes{ get{ return m_RegularScrollTypes; } }
|
||||
public static Type[] NecromancyScrollTypes{ get{ return m_NecromancyScrollTypes; } }
|
||||
public static Type[] SENecromancyScrollTypes{ get{ return m_SENecromancyScrollTypes; } }
|
||||
public static Type[] PaladinScrollTypes{ get{ return m_PaladinScrollTypes; } }
|
||||
public static Type[] ArcaneScrollTypes{ get{ return m_ArcaneScrollTypes; } }
|
||||
#region Mondain's Legacy
|
||||
public static Type[] ArcanistScrollTypes{ get{ return m_ArcanistScrollTypes; } }
|
||||
#endregion
|
||||
|
||||
private static Type[] m_GrimmochJournalTypes = new Type[]
|
||||
{
|
||||
|
|
@ -371,11 +418,16 @@ namespace Server
|
|||
|
||||
public static BaseClothing RandomClothing()
|
||||
{
|
||||
return RandomClothing( false );
|
||||
return RandomClothing( false, false );
|
||||
}
|
||||
|
||||
public static BaseClothing RandomClothing( bool inTokuno )
|
||||
public static BaseClothing RandomClothing( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLClothingTypes, m_AosClothingTypes, m_ClothingTypes ) as BaseClothing;
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEClothingTypes, m_AosClothingTypes, m_ClothingTypes ) as BaseClothing;
|
||||
|
||||
|
|
@ -387,11 +439,16 @@ namespace Server
|
|||
|
||||
public static BaseWeapon RandomRangedWeapon()
|
||||
{
|
||||
return RandomRangedWeapon( false );
|
||||
return RandomRangedWeapon( false, false );
|
||||
}
|
||||
|
||||
public static BaseWeapon RandomRangedWeapon( bool inTokuno )
|
||||
public static BaseWeapon RandomRangedWeapon( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLRangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes ) as BaseWeapon;
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SERangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes ) as BaseWeapon;
|
||||
|
||||
|
|
@ -403,11 +460,16 @@ namespace Server
|
|||
|
||||
public static BaseWeapon RandomWeapon()
|
||||
{
|
||||
return RandomWeapon( false );
|
||||
return RandomWeapon( false, false );
|
||||
}
|
||||
|
||||
public static BaseWeapon RandomWeapon( bool inTokuno )
|
||||
public static BaseWeapon RandomWeapon( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLWeaponTypes, m_AosWeaponTypes, m_WeaponTypes ) as BaseWeapon;
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEWeaponTypes, m_AosWeaponTypes, m_WeaponTypes ) as BaseWeapon;
|
||||
|
||||
|
|
@ -419,11 +481,16 @@ namespace Server
|
|||
|
||||
public static Item RandomWeaponOrJewelry()
|
||||
{
|
||||
return RandomWeaponOrJewelry( false );
|
||||
return RandomWeaponOrJewelry( false, false );
|
||||
}
|
||||
|
||||
public static Item RandomWeaponOrJewelry( bool inTokuno )
|
||||
public static Item RandomWeaponOrJewelry( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_JewelryTypes );
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_JewelryTypes );
|
||||
|
||||
|
|
@ -440,11 +507,16 @@ namespace Server
|
|||
|
||||
public static BaseArmor RandomArmor()
|
||||
{
|
||||
return RandomArmor( false );
|
||||
return RandomArmor( false, false );
|
||||
}
|
||||
|
||||
public static BaseArmor RandomArmor( bool inTokuno )
|
||||
public static BaseArmor RandomArmor( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLArmorTypes, m_ArmorTypes ) as BaseArmor;
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEArmorTypes, m_ArmorTypes ) as BaseArmor;
|
||||
|
||||
|
|
@ -469,11 +541,16 @@ namespace Server
|
|||
|
||||
public static Item RandomArmorOrHat()
|
||||
{
|
||||
return RandomArmorOrHat( false );
|
||||
return RandomArmorOrHat( false, false );
|
||||
}
|
||||
|
||||
public static Item RandomArmorOrHat( bool inTokuno )
|
||||
public static Item RandomArmorOrHat( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLArmorTypes, m_ArmorTypes, m_AosHatTypes, m_HatTypes );
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEArmorTypes, m_ArmorTypes, m_SEHatTypes, m_AosHatTypes, m_HatTypes );
|
||||
|
||||
|
|
@ -493,11 +570,16 @@ namespace Server
|
|||
|
||||
public static BaseArmor RandomArmorOrShield()
|
||||
{
|
||||
return RandomArmorOrShield( false );
|
||||
return RandomArmorOrShield( false, false );
|
||||
}
|
||||
|
||||
public static BaseArmor RandomArmorOrShield( bool inTokuno )
|
||||
public static BaseArmor RandomArmorOrShield( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLArmorTypes, m_ArmorTypes, m_AosShieldTypes, m_ShieldTypes ) as BaseArmor;
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEArmorTypes, m_ArmorTypes, m_AosShieldTypes, m_ShieldTypes ) as BaseArmor;
|
||||
|
||||
|
|
@ -509,11 +591,16 @@ namespace Server
|
|||
|
||||
public static Item RandomArmorOrShieldOrJewelry()
|
||||
{
|
||||
return RandomArmorOrShieldOrJewelry( false );
|
||||
return RandomArmorOrShieldOrJewelry( false, false );
|
||||
}
|
||||
|
||||
public static Item RandomArmorOrShieldOrJewelry( bool inTokuno )
|
||||
public static Item RandomArmorOrShieldOrJewelry( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLArmorTypes, m_ArmorTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes, m_JewelryTypes );
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEArmorTypes, m_ArmorTypes, m_SEHatTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes, m_JewelryTypes );
|
||||
|
||||
|
|
@ -525,11 +612,16 @@ namespace Server
|
|||
|
||||
public static Item RandomArmorOrShieldOrWeapon()
|
||||
{
|
||||
return RandomArmorOrShieldOrWeapon( false );
|
||||
return RandomArmorOrShieldOrWeapon( false, false );
|
||||
}
|
||||
|
||||
public static Item RandomArmorOrShieldOrWeapon( bool inTokuno )
|
||||
public static Item RandomArmorOrShieldOrWeapon( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_MLRangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes, m_MLArmorTypes, m_ArmorTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes );
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_SERangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes, m_SEArmorTypes, m_ArmorTypes, m_SEHatTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes );
|
||||
|
||||
|
|
@ -541,11 +633,16 @@ namespace Server
|
|||
|
||||
public static Item RandomArmorOrShieldOrWeaponOrJewelry()
|
||||
{
|
||||
return RandomArmorOrShieldOrWeaponOrJewelry( false );
|
||||
return RandomArmorOrShieldOrWeaponOrJewelry( false, false );
|
||||
}
|
||||
|
||||
public static Item RandomArmorOrShieldOrWeaponOrJewelry( bool inTokuno )
|
||||
public static Item RandomArmorOrShieldOrWeaponOrJewelry( bool inTokuno, bool isMondain )
|
||||
{
|
||||
#region Mondain's Legacy
|
||||
if ( Core.ML && isMondain )
|
||||
return Construct( m_MLWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_MLRangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes, m_MLArmorTypes, m_ArmorTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes, m_JewelryTypes );
|
||||
#endregion
|
||||
|
||||
if ( Core.SE && inTokuno )
|
||||
return Construct( m_SEWeaponTypes, m_AosWeaponTypes, m_WeaponTypes, m_SERangedWeaponTypes, m_AosRangedWeaponTypes, m_RangedWeaponTypes, m_SEArmorTypes, m_ArmorTypes, m_SEHatTypes, m_AosHatTypes, m_HatTypes, m_AosShieldTypes, m_ShieldTypes, m_JewelryTypes );
|
||||
|
||||
|
|
@ -613,7 +710,7 @@ namespace Server
|
|||
case SpellbookType.Regular: types = m_RegularScrollTypes; break;
|
||||
case SpellbookType.Necromancer: types = (Core.SE ? m_SENecromancyScrollTypes : m_NecromancyScrollTypes ); break;
|
||||
case SpellbookType.Paladin: types = m_PaladinScrollTypes; break;
|
||||
case SpellbookType.Arcanist: types = m_ArcaneScrollTypes; break;
|
||||
case SpellbookType.Arcanist: types = m_ArcanistScrollTypes; break;
|
||||
}
|
||||
|
||||
return Construct( types, Utility.RandomMinMax( minIndex, maxIndex ) ) as SpellScroll;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue