I don't see how ours is the same and how i copied yours at all =/ I coppied the Magery List, and then worked my way from there...
Yours...
Code:
private const double HealChance = 0.05; // 5% chance to heal at gm necromancy, uses spirit speak healing
private const double TeleportChance = 0.05; // 5% chance to teleport at gm necromancy
private const double DispelChance = 0.75; // 75% chance to dispel at gm necromancy
Code:
else if ( !m_Mobile.Summoned && (SmartAI || (ScaleByMagery( HealChance ) > Utility.RandomDouble())) )
{
if ( m_Mobile.Hits < (m_Mobile.HitsMax - 50) )
{
if ( !new GreaterHealSpell( m_Mobile, null ).Cast() )
new HealSpell( m_Mobile, null ).Cast();
}
else if ( m_Mobile.Hits < (m_Mobile.HitsMax - 10) )
{
new HealSpell( m_Mobile, null ).Cast();
}
}
My Editing...
Code:
private const double HealChance = 0.10; // 10% chance to heal or spiritspeak at gm magery or gm spiritspeak
private const double TeleportChance = 0.05; // 5% chance to teleport at gm magery
private const double DispelChance = 0.75; // 75% chance to dispel at gm magery
Code:
else if ( !m_Mobile.Summoned && ( SmartAI || ScaleByHealing( HealChance ) > Utility.RandomDouble()))
{
switch( Utility.Random( 2 ) )
{
case 0:
if ( m_Mobile.Hits < (m_Mobile.HitsMax - 50) )
{
m_Mobile.UseSkill( SkillName.SpiritSpeak );
}
else if ( m_Mobile.Hits < (m_Mobile.HitsMax - 10) )
{
m_Mobile.UseSkill( SkillName.SpiritSpeak );
}
break;
case 1:
if ( m_Mobile.Hits < (m_Mobile.HitsMax - 50) )
{
if ( !new GreaterHealSpell( m_Mobile, null ).Cast() )
new HealSpell( m_Mobile, null ).Cast();
}
else if ( m_Mobile.Hits < (m_Mobile.HitsMax - 10) )
{
new HealSpell( m_Mobile, null ).Cast();
}
break;
}
}
And the HEaling format, there is Absolutly nothign in common... Lets look at the Spell Casting for single dmg...
Code:
public virtual Spell GetRandomDamageSpell()
{
int maxCircle = (int)((m_Mobile.Skills[SkillName.Necromancy].Value + 50.0) / (100.0 / 7.0));
int minCircle = (int)((m_Mobile.Skills[SkillName.Magery].Value + 50.0) / (100.0 / 7.0));
if ( maxCircle < 2 && minCircle < 8 )
maxCircle = 2;
minCircle = 8;
switch ( Utility.Random( minCircle + (maxCircle*2) ) )
{
case 0: return new FireballSpell( m_Mobile, null );
case 1: return new PainSpikeSpell( m_Mobile, null );
case 2: return new MindBlastSpell( m_Mobile, null );
case 3: return new BloodOathSpell( m_Mobile, null );
case 4: return new FlameStrikeSpell( m_Mobile, null );
case 5: return new EvilOmenSpell( m_Mobile, null );
case 6: return new CurseSpell( m_Mobile, null );
case 7: return new MindRotSpell( m_Mobile, null );
case 8: return new LightningSpell( m_Mobile, null );
case 9: return new StrangleSpell( m_Mobile, null );
case 10: return new WitherSpell( m_Mobile, null );
case 11: return new VengefulSpiritSpell( m_Mobile, null );
default: return new FlameStrikeSpell( m_Mobile, null );
}
}
That was yours heres mine
Much different...
and Uses far more Spells than yours =/ No offense thats just how i thought of it, And btw i never knew you made one until i submitted mine
Code:
public virtual Spell GetRandomDamageSpell()
{
int maxCircle = (int)(((m_Mobile.Skills[SkillName.Magery].Value + 20.0) / (100.0 / 7)) + (int)((m_Mobile.Skills[SkillName.Necromancy].Value + 20.0) / (100.0 / 7)));
if ( maxCircle < 1 )
maxCircle = 1;
switch ( Utility.Random( maxCircle*2 ) )
{
case 0: case 1: return new MagicArrowSpell( m_Mobile, null );
case 2: case 3: return new HarmSpell( m_Mobile, null );
case 4: case 5: return new FireballSpell( m_Mobile, null );
case 6: case 7: return new LightningSpell( m_Mobile, null );
case 8: case 9: return new MindBlastSpell( m_Mobile, null );
case 10: case 11: return new PainSpikeSpell( m_Mobile, null );
case 12: case 13: return new BloodOathSpell( m_Mobile, null );
case 14: case 15: return new EvilOmenSpell( m_Mobile, null );
case 16: case 17: return new MindRotSpell( m_Mobile, null );
case 18: case 19: return new StrangleSpell( m_Mobile, null );
case 20: return new WitherSpell( m_Mobile, null );
case 21: return new VengefulSpiritSpell( m_Mobile, null );
case 22: return new EnergyBoltSpell( m_Mobile, null );
case 23: return new ExplosionSpell( m_Mobile, null );
case 24: return new PoisonStrikeSpell( m_Mobile, null );
default: return new FlameStrikeSpell( m_Mobile, null );
}
}