- Added support for ML mods, as well as quivers. More ML artifacts are added
(http://www.uodemise.com/discussion/showthread.php?t=116685) - Dog Form HPR rate is tweaked as per OSI (http://www.uodemise.com/discussion/showthread.php?t=124422) - Hairstylist gump now works for elves (http://www.uodemise.com/discussion/showthread.php?t=120199) - Bless buff icon now will report correct values (http://www.uodemise.com/discussion/showthread.php?t=123760) - When stealthing, the step just before a stealth check won't let you lose the stealth status (you can use shadowjump) (http://www.uodemise.com/discussion/showthread.php?t=121250) - You can open the blacksmith gump even if far from anvil and forge, but you still need to be near them to craft (http://www.uodemise.com/discussion/showthread.php?t=122750)
This commit is contained in:
parent
aff5e22940
commit
30c7232a69
54 changed files with 1363 additions and 149 deletions
|
|
@ -40,20 +40,20 @@ namespace Server
|
|||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, int phys, int fire, int cold, int pois, int nrgy )
|
||||
{
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, false );
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, 0, 0, false, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy )
|
||||
{
|
||||
return Damage( m, from, damage, ignoreArmor, phys, fire, cold, pois, nrgy, false );
|
||||
return Damage( m, from, damage, ignoreArmor, phys, fire, cold, pois, nrgy, 0, 0, false, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, int phys, int fire, int cold, int pois, int nrgy, bool keepAlive )
|
||||
{
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, keepAlive );
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, 0, 0, keepAlive, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy, bool keepAlive )
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy, int chaos, int direct, bool keepAlive, bool archer )
|
||||
{
|
||||
if( m == null || m.Deleted || !m.Alive || damage <= 0 )
|
||||
return 0;
|
||||
|
|
@ -72,6 +72,25 @@ namespace Server
|
|||
Fix( ref cold );
|
||||
Fix( ref pois );
|
||||
Fix( ref nrgy );
|
||||
Fix( ref chaos );
|
||||
Fix( ref direct );
|
||||
|
||||
if ( Core.ML && chaos > 0 )
|
||||
{
|
||||
switch ( Utility.Random( 5 ) )
|
||||
{
|
||||
case 0: phys += chaos; break;
|
||||
case 1: fire += chaos; break;
|
||||
case 2: cold += chaos; break;
|
||||
case 3: pois += chaos; break;
|
||||
case 4: nrgy += chaos; break;
|
||||
}
|
||||
}
|
||||
|
||||
BaseQuiver quiver = null;
|
||||
|
||||
if ( archer && from != null )
|
||||
quiver = from.FindItemOnLayer( Layer.Cloak ) as BaseQuiver;
|
||||
|
||||
int totalDamage;
|
||||
|
||||
|
|
@ -92,16 +111,30 @@ namespace Server
|
|||
|
||||
totalDamage /= 10000;
|
||||
|
||||
if ( Core.ML )
|
||||
{
|
||||
totalDamage += damage * direct / 100;
|
||||
|
||||
if ( quiver != null )
|
||||
totalDamage += totalDamage * quiver.DamageIncrease / 100;
|
||||
}
|
||||
|
||||
if( totalDamage < 1 )
|
||||
totalDamage = 1;
|
||||
}
|
||||
else if( Core.ML && m is PlayerMobile && from is PlayerMobile )
|
||||
{
|
||||
if ( quiver != null )
|
||||
damage += damage * quiver.DamageIncrease / 100;
|
||||
|
||||
totalDamage = Math.Min( damage, 35 ); //Direct Damage cap of 35
|
||||
}
|
||||
else
|
||||
{
|
||||
totalDamage = damage;
|
||||
|
||||
if ( Core.ML && quiver != null )
|
||||
totalDamage += totalDamage * quiver.DamageIncrease / 100;
|
||||
}
|
||||
|
||||
#region Dragon Barding
|
||||
|
|
@ -264,6 +297,13 @@ namespace Server
|
|||
if( attrs != null )
|
||||
value += attrs[attribute];
|
||||
}
|
||||
else if( obj is BaseQuiver )
|
||||
{
|
||||
AosAttributes attrs = ((BaseQuiver)obj).Attributes;
|
||||
|
||||
if( attrs != null )
|
||||
value += attrs[attribute];
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
|
|
@ -280,6 +320,40 @@ namespace Server
|
|||
return "...";
|
||||
}
|
||||
|
||||
public void AddStatBonuses( Mobile to )
|
||||
{
|
||||
int strBonus = BonusStr;
|
||||
int dexBonus = BonusDex;
|
||||
int intBonus = BonusInt;
|
||||
|
||||
if ( strBonus != 0 || dexBonus != 0 || intBonus != 0 )
|
||||
{
|
||||
string modName = Owner.Serial.ToString();
|
||||
|
||||
if ( strBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );
|
||||
|
||||
if ( dexBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );
|
||||
|
||||
if ( intBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
|
||||
}
|
||||
|
||||
to.CheckStatTimers();
|
||||
}
|
||||
|
||||
public void RemoveStatBonuses( Mobile from )
|
||||
{
|
||||
string modName = Owner.Serial.ToString();
|
||||
|
||||
from.RemoveStatMod( modName + "Str" );
|
||||
from.RemoveStatMod( modName + "Dex" );
|
||||
from.RemoveStatMod( modName + "Int" );
|
||||
|
||||
from.CheckStatTimers();
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int RegenHits { get { return this[AosAttribute.RegenHits]; } set { this[AosAttribute.RegenHits] = value; } }
|
||||
|
||||
|
|
@ -823,7 +897,9 @@ namespace Server
|
|||
Fire=0x00000002,
|
||||
Cold=0x00000004,
|
||||
Poison=0x00000008,
|
||||
Energy=0x00000010
|
||||
Energy=0x00000010,
|
||||
Chaos=0x00000020,
|
||||
Direct=0x00000040
|
||||
}
|
||||
|
||||
public sealed class AosElementAttributes : BaseAttributes
|
||||
|
|
@ -868,6 +944,12 @@ namespace Server
|
|||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Energy { get { return this[AosElementAttribute.Energy]; } set { this[AosElementAttribute.Energy] = value; } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Chaos { get { return this[AosElementAttribute.Chaos]; } set { this[AosElementAttribute.Chaos] = value; } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Direct { get { return this[AosElementAttribute.Direct]; } set { this[AosElementAttribute.Direct] = value; } }
|
||||
}
|
||||
|
||||
[PropertyObject]
|
||||
|
|
|
|||
|
|
@ -60,13 +60,6 @@ namespace Server.Misc
|
|||
if ( (from is BaseCreature && ((BaseCreature)from).IsParagon) || from is Leviathan )
|
||||
points += 40;
|
||||
|
||||
if ( CheckTransform( from, typeof( HorrificBeastSpell ) ) )
|
||||
points += 20;
|
||||
|
||||
if ( CheckAnimal( from, typeof( Dog ) ) || CheckAnimal( from, typeof( Cat ) ) )
|
||||
points += from.Skills[SkillName.Ninjitsu].Fixed / 300;
|
||||
//TODO: What's the new increased rate?
|
||||
|
||||
if( Core.ML && from.Race == Race.Human ) //Is this affected by the cap?
|
||||
points += 2;
|
||||
|
||||
|
|
@ -74,7 +67,13 @@ namespace Server.Misc
|
|||
points = 0;
|
||||
|
||||
if( Core.ML && from is PlayerMobile ) //does racial bonus go before/after?
|
||||
points = Math.Min ( points, 18 );
|
||||
points = Math.Min( points, 18 );
|
||||
|
||||
if ( CheckTransform( from, typeof( HorrificBeastSpell ) ) )
|
||||
points += 20;
|
||||
|
||||
if ( CheckAnimal( from, typeof( Dog ) ) || CheckAnimal( from, typeof( Cat ) ) )
|
||||
points += from.Skills[SkillName.Ninjitsu].Fixed / 30;
|
||||
|
||||
return TimeSpan.FromSeconds( 1.0 / (0.1 * (1 + points)) );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@ namespace Server.Items
|
|||
private int m_WeaponColdDamage;
|
||||
private int m_WeaponPoisonDamage;
|
||||
private int m_WeaponEnergyDamage;
|
||||
private int m_WeaponChaosDamage;
|
||||
private int m_WeaponDirectDamage;
|
||||
private int m_WeaponDurability;
|
||||
private int m_WeaponLuck;
|
||||
private int m_WeaponGoldIncrease;
|
||||
|
|
@ -76,6 +78,8 @@ namespace Server.Items
|
|||
public int WeaponColdDamage{ get{ return m_WeaponColdDamage; } set{ m_WeaponColdDamage = value; } }
|
||||
public int WeaponPoisonDamage{ get{ return m_WeaponPoisonDamage; } set{ m_WeaponPoisonDamage = value; } }
|
||||
public int WeaponEnergyDamage{ get{ return m_WeaponEnergyDamage; } set{ m_WeaponEnergyDamage = value; } }
|
||||
public int WeaponChaosDamage{ get{ return m_WeaponChaosDamage; } set{ m_WeaponChaosDamage = value; } }
|
||||
public int WeaponDirectDamage{ get{ return m_WeaponDirectDamage; } set{ m_WeaponDirectDamage = value; } }
|
||||
public int WeaponDurability{ get{ return m_WeaponDurability; } set{ m_WeaponDurability = value; } }
|
||||
public int WeaponLuck{ get{ return m_WeaponLuck; } set{ m_WeaponLuck = value; } }
|
||||
public int WeaponGoldIncrease{ get{ return m_WeaponGoldIncrease; } set{ m_WeaponGoldIncrease = value; } }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue