- Future ML craftables added to the special repair list until the craft system is updated.
- Items can now be repaired while wearing them. - Items can now be fortified while wearing them. - Fixed repair deed messages not sending. - Sound effect added to powder of fortifying. - Map issue for fishing and SOSs fixed, where it would not allow fishing in empty resource banks when not on the target SOS map. - Added proximity spawner. - Improved spawner mouseover menu, now also shows types set on the spawner which are not yet spawned. - Fixed spawners only deleting half of their spawned objects when deleted. - Added the ability to set TextDefinition objects in the props gump. - WaitTeleporters now round delays to nearest in the remaining time messages. - Updated TextDefinition to be more usable; made it parsable from string and added safe serialization/deserialization methods. - Improved checking whether a mobile can flee. - Monsters that give ML minor artifacts will no longer flee when low on hits (like paragons). - Monsters that give ML minor artifacts will no longer spawn as paragon. - Fixed issue with pets not eating certain foods. - AI and targeting fixes for Red Death, Pyre and Swoop. - Fame and karma added to Rend. - Swoop corrected to have 0 karma. - Stat and skill tweaks for Putrefier. - Changelings will no longer show their fame title when morphed. - Added travel restrictions for ML dungeons. - Fixed issue of travel restriction message displaying twice. - Monster teleporting is no longer affected by region travel restrictions.
This commit is contained in:
parent
4bcde77cc2
commit
a0e13d5007
25 changed files with 432 additions and 140 deletions
|
|
@ -46,7 +46,7 @@ namespace Server.Mobiles
|
|||
|
||||
double hitPercent = (double)m_Mobile.Hits / m_Mobile.HitsMax;
|
||||
|
||||
if ( !m_Mobile.Summoned && !m_Mobile.Controlled && hitPercent < 0.1 ) // Less than 10% health
|
||||
if ( !m_Mobile.Summoned && !m_Mobile.Controlled && hitPercent < 0.1 && m_Mobile.CanFlee ) // Less than 10% health
|
||||
{
|
||||
m_Mobile.DebugSay( "I am low on health!" );
|
||||
Action = ActionType.Flee;
|
||||
|
|
@ -102,7 +102,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if ( !m_Mobile.Controlled && !m_Mobile.Summoned )
|
||||
if ( !m_Mobile.Controlled && !m_Mobile.Summoned && m_Mobile.CanFlee )
|
||||
{
|
||||
double hitPercent = (double)m_Mobile.Hits / m_Mobile.HitsMax;
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
double hitPercent = (double)m_Mobile.Hits / m_Mobile.HitsMax;
|
||||
|
||||
if ( !m_Mobile.Summoned && !m_Mobile.Controlled && hitPercent < 0.1 ) // Less than 10% health
|
||||
if ( !m_Mobile.Summoned && !m_Mobile.Controlled && hitPercent < 0.1 && m_Mobile.CanFlee ) // Less than 10% health
|
||||
{
|
||||
Action = ActionType.Flee;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ namespace Server.Mobiles
|
|||
|
||||
|
||||
// At 20% we should check if we must leave
|
||||
if ( m_Mobile.Hits < m_Mobile.HitsMax*20/100 )
|
||||
if ( m_Mobile.Hits < m_Mobile.HitsMax*20/100 && m_Mobile.CanFlee )
|
||||
{
|
||||
bool bFlee = false;
|
||||
// if my current hits are more than my opponent, i don't care
|
||||
|
|
|
|||
|
|
@ -633,7 +633,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
if( !m_Mobile.Controlled && !m_Mobile.Summoned && !m_Mobile.IsParagon )
|
||||
if( !m_Mobile.Controlled && !m_Mobile.Summoned && m_Mobile.CanFlee )
|
||||
{
|
||||
if( m_Mobile.Hits < m_Mobile.HitsMax * 20 / 100 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ namespace Server.Mobiles
|
|||
m_Mobile.DebugSay( "I should be closer to {0}", combatant.Name );
|
||||
}
|
||||
|
||||
if ( !m_Mobile.Controlled && !m_Mobile.Summoned && !m_Mobile.IsParagon )
|
||||
if ( !m_Mobile.Controlled && !m_Mobile.Summoned && m_Mobile.CanFlee )
|
||||
{
|
||||
if ( m_Mobile.Hits < m_Mobile.HitsMax * 20/100 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ namespace Server.Mobiles
|
|||
m_Mobile.DebugSay( "I should be closer to {0}", combatant.Name );
|
||||
}
|
||||
|
||||
if ( m_Mobile.Hits < m_Mobile.HitsMax * 20/100 && !m_Mobile.IsParagon )
|
||||
if ( m_Mobile.Hits < m_Mobile.HitsMax * 20/100 && m_Mobile.CanFlee )
|
||||
{
|
||||
// We are low on health, should we flee?
|
||||
|
||||
|
|
|
|||
|
|
@ -715,6 +715,8 @@ namespace Server.Mobiles
|
|||
#endregion
|
||||
|
||||
#region Flee!!!
|
||||
public virtual bool CanFlee{ get{ return ( !m_Paragon && !GivesMLMinorArtifact ); } }
|
||||
|
||||
private DateTime m_EndFlee;
|
||||
|
||||
public DateTime EndFleeTime
|
||||
|
|
@ -2083,7 +2085,7 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual bool CheckFeed( Mobile from, Item dropped )
|
||||
{
|
||||
if ( !IsDeadPet && Controlled && (ControlMaster == from || IsPetFriend( from )) && (dropped is Food || dropped is Gold || dropped is CookableFood || dropped is Head || dropped is LeftArm || dropped is LeftLeg || dropped is Torso || dropped is RightArm || dropped is RightLeg) )
|
||||
if ( !IsDeadPet && Controlled && ( ControlMaster == from || IsPetFriend( from ) ) )
|
||||
{
|
||||
Item f = dropped;
|
||||
|
||||
|
|
@ -2114,7 +2116,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
for ( int i = 0; i < amount; ++i )
|
||||
{
|
||||
if ( m_Loyalty < MaxLoyalty && 0.5 >= Utility.RandomDouble() )
|
||||
if ( m_Loyalty < MaxLoyalty && 0.5 >= Utility.RandomDouble() )
|
||||
{
|
||||
m_Loyalty += 10;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ namespace Server.Mobiles
|
|||
Hue = 0x21;
|
||||
BaseSoundID = 0x1C3;
|
||||
|
||||
AI = AIType.AI_Melee;
|
||||
FightMode = FightMode.Closest;
|
||||
|
||||
SetStr( 319, 324 );
|
||||
SetDex( 241, 244 );
|
||||
SetInt( 242, 255 );
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ namespace Server.Mobiles
|
|||
Name = "Pyre";
|
||||
Hue = 0x489;
|
||||
|
||||
FightMode = FightMode.Closest;
|
||||
|
||||
SetStr( 605, 611 );
|
||||
SetDex( 391, 519 );
|
||||
SetInt( 669, 818 );
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ namespace Server.Mobiles
|
|||
SetSkill( SkillName.MagicResist, 90.9, 110.0 );
|
||||
SetSkill( SkillName.Anatomy, 66.6, 72.0 );
|
||||
|
||||
Fame = 21000;
|
||||
Karma = -21000;
|
||||
|
||||
Tamable = false;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -13,11 +13,13 @@ namespace Server.Mobiles
|
|||
Name = "Putrefier";
|
||||
Hue = 63;
|
||||
|
||||
SetStr( 1057, 1330 );
|
||||
SetDex( 232, 450 );
|
||||
SetInt( 201, 415 );
|
||||
SetStr( 1057, 1400 );
|
||||
SetDex( 232, 560 );
|
||||
SetInt( 201, 440 );
|
||||
|
||||
SetHits( 3010, 3778 );
|
||||
SetHits( 3010, 4092 );
|
||||
|
||||
SetDamage( 27, 34 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Fire, 0 );
|
||||
|
|
@ -31,12 +33,13 @@ namespace Server.Mobiles
|
|||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 111.2, 128.0 );
|
||||
SetSkill( SkillName.Tactics, 115.6, 125.2 );
|
||||
SetSkill( SkillName.MagicResist, 143.4, 163.0 );
|
||||
SetSkill( SkillName.Tactics, 115.2, 125.2 );
|
||||
SetSkill( SkillName.MagicResist, 143.4, 170.0 );
|
||||
SetSkill( SkillName.Anatomy, 44.6, 67.0 );
|
||||
SetSkill( SkillName.Magery, 117.6, 118.8 );
|
||||
SetSkill( SkillName.EvalInt, 113.0, 128.8 );
|
||||
SetSkill( SkillName.Meditation, 41.4, 80.5 );
|
||||
SetSkill( SkillName.Meditation, 41.4, 85.0 );
|
||||
SetSkill( SkillName.Poisoning, 45.0, 50.0 );
|
||||
|
||||
PackScroll( 4, 7 );
|
||||
PackScroll( 4, 7 );
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@ namespace Server.Mobiles
|
|||
PackArcaneScroll( 0, 1 );
|
||||
}
|
||||
|
||||
public override bool ShowFameTitle{ get{ return false; } }
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.AosRich, 3 );
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ namespace Server.Mobiles
|
|||
Name = "Swoop";
|
||||
Hue = 0xE0;
|
||||
|
||||
AI = AIType.AI_Melee;
|
||||
|
||||
SetStr( 100, 150 );
|
||||
SetDex( 400, 500 );
|
||||
SetInt( 80, 90 );
|
||||
|
|
@ -35,7 +37,7 @@ namespace Server.Mobiles
|
|||
SetSkill( SkillName.MagicResist, 95.0, 105.0 );
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
Karma = 0;
|
||||
|
||||
Tamable = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ namespace Server.Mobiles
|
|||
if ( Array.IndexOf( Maps, m ) == -1 )
|
||||
return false;
|
||||
|
||||
if ( bc is BaseChampion || bc is Harrower || bc is BaseVendor || bc is BaseEscortable || bc is Clone )
|
||||
if ( bc is BaseChampion || bc is Harrower || bc is BaseVendor || bc is BaseEscortable || bc is Clone || bc.GivesMLMinorArtifact )
|
||||
return false;
|
||||
|
||||
int fame = bc.Fame;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue