- Added more future ML craftables that already drop as loot to the special repair lists.

- Fixed Bloodwood Spirit and Totem of the Void sometimes not spawning with a protection attribute. (Prepatch ones are fixed on server start.)
- Fixed crashes in BaseTalisman resulting from setting Summoner to null.
- Paragon perks added to mobs dropping ML artifacts (by making them paragon "under the hood", seems to be the case on OSI as well). This also means the named mobs will now drop paragon chests.
- Poison immunity level is now also increased by 1 for paragons.
- Rend now drops ML minor artifacts.
- ML named mobs no longer use the AoS specific loot packs, but will adjust to the era the server is set in.
- The 'current speed' of paragons is now updated to account for the speed boost after spawning.
This commit is contained in:
eos 2012-03-11 01:43:55 +00:00
parent aacae9f7b8
commit c0206c6f7e
30 changed files with 197 additions and 126 deletions

View file

@ -16,7 +16,7 @@ namespace Server.Items
Removal = TalismanRemoval.Damage;
Blessed = GetRandomBlessed();
Protection = GetRandomProtection();
Protection = GetRandomProtection( false );
SkillBonuses.SetValues( 0, SkillName.SpiritSpeak, 10.0 );
SkillBonuses.SetValues( 1, SkillName.Necromancy, 5.0 );
@ -30,7 +30,7 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
@ -38,6 +38,9 @@ namespace Server.Items
base.Deserialize( reader );
int version = reader.ReadInt();
if ( version == 0 && ( Protection == null || Protection.IsEmpty ) )
Protection = GetRandomProtection( false );
}
}
}

View file

@ -16,8 +16,8 @@ namespace Server.Items
MaxChargeTime = 1800;
Blessed = GetRandomBlessed();
Protection = GetRandomProtection();
Protection = GetRandomProtection( false );
Attributes.RegenHits = 2;
Attributes.LowerManaCost = 10;
}
@ -35,7 +35,7 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
@ -43,6 +43,9 @@ namespace Server.Items
base.Deserialize( reader );
int version = reader.ReadInt();
if ( version == 0 && ( Protection == null || Protection.IsEmpty ) )
Protection = GetRandomProtection( false );
}
}
}

View file

@ -345,7 +345,7 @@ namespace Server.Items
from.SendLocalizedMessage(1075001); // You have been given some ingots.
else if (item is Bandage)
from.SendLocalizedMessage(1075002); // You have been given some clean bandages.
else if (m_Summoner.Name != null)
else if (m_Summoner != null && m_Summoner.Name != null)
from.SendLocalizedMessage(1074853, m_Summoner.Name.ToString()); // You have been given ~1_name~
}
else if (obj is BaseCreature)
@ -553,7 +553,7 @@ namespace Server.Items
SetSaveFlag(ref flags, SaveFlag.SkillBonuses, !m_AosSkillBonuses.IsEmpty);
SetSaveFlag(ref flags, SaveFlag.Protection, m_Protection != null && !m_Protection.IsEmpty);
SetSaveFlag(ref flags, SaveFlag.Killer, m_Killer != null && !m_Killer.IsEmpty);
SetSaveFlag(ref flags, SaveFlag.Summoner, !m_Summoner.IsEmpty);
SetSaveFlag(ref flags, SaveFlag.Summoner, m_Summoner != null && !m_Summoner.IsEmpty);
SetSaveFlag(ref flags, SaveFlag.Removal, m_Removal != TalismanRemoval.None);
SetSaveFlag(ref flags, SaveFlag.KarmaLoss, m_KarmaLoss != 0);
SetSaveFlag(ref flags, SaveFlag.Skill, (int)m_Skill != 0);
@ -894,26 +894,32 @@ namespace Server.Items
public static TalismanAttribute GetRandomKiller()
{
if (0.5 > Utility.RandomDouble())
{
int num = Utility.Random(m_Killers.Length);
return GetRandomKiller( true );
}
return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(10, 100));
}
public static TalismanAttribute GetRandomKiller( bool includingNone )
{
if ( includingNone && Utility.RandomBool() )
return new TalismanAttribute();
return new TalismanAttribute();
int num = Utility.Random(m_Killers.Length);
return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(10, 100));
}
public static TalismanAttribute GetRandomProtection()
{
if (0.5 > Utility.RandomDouble())
{
int num = Utility.Random(m_Killers.Length);
return GetRandomProtection( true );
}
return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(5, 60));
}
public static TalismanAttribute GetRandomProtection( bool includingNone )
{
if ( includingNone && Utility.RandomBool() )
return new TalismanAttribute();
return new TalismanAttribute();
int num = Utility.Random(m_Killers.Length);
return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(5, 60));
}
private static SkillName[] m_Skills = new SkillName[]