RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Summoned Elemental Scalar

Lionar

Wanderer
Hello everybody!
I'm trying to let summoned elemental to increase their power with the Magery skill of the Caster, Higher skill = higher power.

i did this :

Code:
using System;
using Server;
using Server.Items;
 
 
namespace Server.Mobiles
{
[CorpseName( "a fire elemental corpse" )]
public class SummonedFireElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
 
[Constructable]
public SummonedFireElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a fire elemental";
Body = 15;
BaseSoundID = 838;
 
SetStr( 200 );
SetDex( 200 );
SetInt( 100 );
 
            SetHits(250, 260 * scalar);
 
            SetDamage(14, 18 * scalar);
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Fire, 120);
 
            SetResistance(ResistanceType.Physical, 40, 42 * scalar);
            SetResistance(ResistanceType.Fire, 70, 80 * scalar);
            SetResistance(ResistanceType.Cold, 30, 31 * scalar);
            SetResistance(ResistanceType.Poison, 40, 41 * scalar);
            SetResistance(ResistanceType.Energy, 40, 41 * scalar);
 
            SetSkill(SkillName.Meditation, 90.0 * scalar);
            SetSkill(SkillName.EvalInt, 90.0 * scalar);
            SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 90.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
VirtualArmor = 40;
ControlSlots = 4;
 
AddItem( new LightSource() );
            
       
            double mageSkill = from.Skills[SkillName.Magery].Value;
            double scalar;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;         
            else
                scalar = 1.0;
}
 
public SummonedFireElemental( Serial serial ) : base( serial )
{
}
 
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
 
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

But "Scalar" and "from" doesent exist on the context. I tryed in other ways looking at scripts like Golem.cs or Reventant.cs or VengefulSpirit.cs but i cannot find the answer to solve this issue.
Any ideas? Thanks :)
 

_Epila_

Sorceror
[Constructable]
public SummonedFireElemental (double scalar, Mobile from) : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )

You may need to cast values from double to int
 

_Epila_

Sorceror
You should post the errors here :)

As I said, you may need to cast values from double to int

SetHits(250, (int)(260 * scalar)); //example
 

Lionar

Wanderer
Thanks for reply :)

I'm having more problems
i Did :

Code:
using System;
using Server;
using Server.Items;
 
 
namespace Server.Mobiles
{
[CorpseName( "a fire elemental corpse" )]
public class SummonedFireElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
 
[Constructable]
        public SummonedFireElemental(double scalar, Mobile from)      : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "a fire elemental";
Body = 15;
BaseSoundID = 838;
 
SetStr( 200 );
SetDex( 200 );
SetInt( 100 );
 
            SetHits(250, (int)(260 * scalar));
            SetDamage(14, (int)(18 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Fire, 120);
 
            SetResistance(ResistanceType.Physical, 40, (int) (42 * scalar));
            SetResistance(ResistanceType.Fire, 70, (int) (80 * scalar));
            SetResistance(ResistanceType.Cold, 30, (int) (31 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int) (41 * scalar));
            SetResistance(ResistanceType.Energy, 40, (int) (41 * scalar));
 
            SetSkill(SkillName.Meditation, 89.0, (int) (90.0 *scalar));
            SetSkill(SkillName.EvalInt, 90.0, (int) ( 90.1 * scalar));
            SetSkill(SkillName.Magery, 80.0, (int) ( 80.1 * scalar));
            SetSkill(SkillName.MagicResist, 75.0 ,(int) (75.1* scalar));
            SetSkill(SkillName.Tactics, 90.0 , (int) (90.1 * scalar));
            SetSkill(SkillName.Wrestling, 85.0 , (int) (85.1 * scalar));
 
VirtualArmor = 40;
ControlSlots = 4;
 
AddItem( new LightSource() );
            
       
            double mageSkill = from.Skills[SkillName.Magery].Value;
            double scalar;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;         
            else
                scalar = 1.0;
}
 
public SummonedFireElemental( Serial serial ) : base( serial )
{
}
 
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
 
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

Error on line 51
A Local Variable called "scalar" cannot be declared on this context because it will give a different meaning to "scalar" that is already used in one other context to indentify something else

Error con FireElementalspell.cs

line 92 : No Overload of the method "SummonedFireElemental" accept 0 arugments.
 
I would try removing double scalar; and move your cascaded if statement to before the scalar variable is used (top of the constructable).

The error you are getting is because scalar is already defined as a double and you are declaring it a second time. I am at work and cannot test this advice but this should clear up your error on line 51.
 

Lionar

Wanderer
Oh yes, this solved the error on line 51 thanks :).Only the Error con FireElementalspell.cs line 92 remains. Any ideas?
 
The following compiles. I did not really test it. you will need to change my temp name from ScalarTesting back to your summonedfireelemental.

Code:
using System;
using Server;
using Server.Items;
 
 
namespace Server.Mobiles
{
    [CorpseName("a fire elemental corpse")]
    public class ScalarTesting : BaseCreature
    {
        public override double DispelDifficulty { get { return 117.5; } }
        public override double DispelFocus { get { return 45.0; } }
 
        [Constructable]
        public ScalarTesting(double scalar, Mobile from)
            : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            double mageSkill = from.Skills[SkillName.Magery].Value;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else
                scalar = 1.0;
 
            Name = "a fire elemental";
            Body = 15;
            BaseSoundID = 838;
 
            SetStr(200);
            SetDex(200);
            SetInt(100);
 
            SetHits(250, (int)(260 * scalar));
 
            SetDamage(14, (int)(18 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Fire, 120);
 
            SetResistance(ResistanceType.Physical, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Fire, 70, (int)(80 * scalar));
            SetResistance(ResistanceType.Cold, 30, (int)(31 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, 40, (int)(41 * scalar));
 
            SetSkill(SkillName.Meditation, 90.0 * scalar);
            SetSkill(SkillName.EvalInt, 90.0 * scalar);
            SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 90.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
            VirtualArmor = 40;
            ControlSlots = 4;
 
            AddItem(new LightSource());
        }
 
        public ScalarTesting(Serial serial)
            : base(serial)
        {
        }
 
        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);
        }
 
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
        }
    }
}
 

Lionar

Wanderer
The SummonedFireElemental.cs Script it's ok, but i'm having problem with the Spell that summons the FIreElemental.cs
FireElemental.cs
line 92 : No Overload of the method "SummonedFireElemental" accept 0 arugments.
Code:
using System;
using Server.Mobiles;
using Server.Network;
using Server.Targeting;
 
namespace Server.Spells.Eighth
{
public class FireElementalSpell : MagerySpell
{
private static SpellInfo m_Info = new SpellInfo(
"Fire Elemental", "Kal Vas Xen Flam",
269,
9050,
false,
Reagent.Bloodmoss,
Reagent.MandrakeRoot,
Reagent.SpidersSilk,
Reagent.SulfurousAsh
);
 
public override SpellCircle Circle { get { return SpellCircle.Eighth; } }
 
public FireElementalSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
{
}
 
public override bool CheckCast()
{
if ( !base.CheckCast() )
return false;
            if (Caster is MysticLandsPlayer)
            {
                MysticLandsPlayer p = (MysticLandsPlayer)Caster;
                   if (//p.Classe == Classe.Apprendista ||
                    p.Classe == Classe.Scout ||
                    p.Classe == Classe.Guerriero ||
                    p.Classe == Classe.Chierico ||
                    p.Classe == Classe.Sarto ||
                    p.Classe == Classe.Fabbro ||
                    p.Classe == Classe.Barbaro ||
                    p.Classe == Classe.Bardo ||
                    p.Classe == Classe.Samurai ||
                    p.Classe == Classe.Ninja ||
                    p.Classe == Classe.Paladino ||
                    p.Classe == Classe.Berserker ||
                    p.Classe == Classe.Cavaliere ||
                    p.Classe == Classe.CavaliereNero ||
                    p.Classe == Classe.GuerrieroInfernale ||
                    p.Classe == Classe.Necromante ||
                    p.Classe == Classe.FabbroInfernale ||
                    p.Classe == Classe.SartoInfernale ||
                    p.Classe == Classe.ArciereInfernale ||
                    p.Classe == Classe.MangiAnime ||
                    p.Classe == Classe.ArciereAlto ||
                    p.Classe == Classe.GuerrieroAlto ||
                    p.Classe == Classe.Plasmatore ||
                    p.Classe == Classe.Tessitore ||
                    p.Classe == Classe.BladeSinger ||
                    p.Classe == Classe.GuerrieroSilvano ||
                    p.Classe == Classe.ArciereSilvano ||
                   
                    p.Classe == Classe.FabbroSilvano ||
                    p.Classe == Classe.SartoSilvano ||
                    p.Classe == Classe.Assassino ||
                    p.Classe == Classe.TiratoreDrow ||
                    p.Classe == Classe.PlasmatoreOscuro ||
                    p.Classe == Classe.TessitoreOscuro ||
                    p.Classe == Classe.Avventuriero ||
                   // p.Classe == Classe.DemoneDelSangue ||
                    p.Classe == Classe.OmbraDanzante)
                {
                    Caster.SendMessage("La tua classe non ti permette di usare questa magia.");
                    return false;
                }
            }
if ( (Caster.Followers + 4) > Caster.FollowersMax )
{
Caster.SendLocalizedMessage( 1049645 ); // You have too many followers to summon that creature.
return false;
}
 
return true;
}
 
public override void OnCast()
{
if ( CheckSequence() )
{
TimeSpan duration = TimeSpan.FromSeconds( (2 * Caster.Skills.Magery.Fixed) / 5 );
 
if ( Core.AOS )
SpellHelper.Summon( new SummonedFireElemental(), Caster, 0x217, duration, false, false );
else
SpellHelper.Summon( new FireElemental(), Caster, 0x217, duration, false, false );
}
 
FinishSequence();
}
}
}
 
Ahh ok. You have added a double and a Mobile to what is being summoned. You need to pass that information along:

Code:
if (Core.AOS)
                    SpellHelper.Summon(new SummonedFireElemental(1, Caster), Caster, 0x217, duration, false, false);

This passes a default scalar of 1 for the double and the Caster of the spell as the Mobile.
 

Lionar

Wanderer
uhm, Client gives no errors but seems to be some problems . Just the Fireelemental seems to get the scalar and only on skills, damage and HIts, but not on Resistences. The other Elementals doesn't have any improvement while casted

SummonedFireElemental.cs
Code:
using System;
using Server;
using Server.Items;
 
 
namespace Server.Mobiles
{
    [CorpseName("a fire elemental corpse")]
    public class SummonedFireElemental : BaseCreature
    {
        public override double DispelDifficulty { get { return 117.5; } }
        public override double DispelFocus { get { return 45.0; } }
 
        [Constructable]
        public SummonedFireElemental(double scalar, Mobile from)
            : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            double mageSkill = from.Skills[SkillName.Magery].Value;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else
                scalar = 1.0;
 
            Name = "a fire elemental";
            Body = 15;
            BaseSoundID = 838;
 
            SetStr(200);
            SetDex(200);
            SetInt(100);
 
            SetHits(300, (int)(300 * scalar));
 
            SetDamage(20, (int)(22 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Fire, 150);
 
            SetResistance(ResistanceType.Physical, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Fire, 70, (int)(80 * scalar));
            SetResistance(ResistanceType.Cold, 30, (int)(31 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, 40, (int)(41 * scalar));
 
            SetSkill(SkillName.Meditation, 90.0 * scalar);
            SetSkill(SkillName.EvalInt, 90.0 * scalar);
            SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 90.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
            VirtualArmor = 40;
            ControlSlots = 4;
 
            AddItem(new LightSource());
        }
 
        public SummonedFireElemental(Serial serial)
            : base(serial)
        {
        }
 
        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);
        }
 
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
        }
    }
}

SummonedWaterElemental.cs
Code:
using System;
using Server;
using Server.Items;
using Server.Targeting;
using Server.Spells;
 
 
namespace Server.Mobiles
{
[CorpseName( "a water elemental corpse" )]
public class SummonedWaterElemental : BaseCreature
{
       
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
 
[Constructable]
        public SummonedWaterElemental(double scalar, Mobile from)            : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "a water elemental";
Body = 16;
BaseSoundID = 278;
 
SetStr( 200 );
SetDex( 90 );
SetInt( 100 );
 
            SetHits(250, (int)(260 * scalar));
 
            SetDamage(14, (int)(18 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Cold, 150);
 
            SetResistance(ResistanceType.Physical, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Fire, 50, (int)(56 * scalar));
            SetResistance(ResistanceType.Cold, 70, (int)(80 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, 30, (int)(31 * scalar));
 
            SetSkill(SkillName.Meditation, 90.0 * scalar);
            SetSkill(SkillName.EvalInt, 80.0 * scalar);
            SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 80.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
VirtualArmor = 40;
ControlSlots = 3;
CanSwim = true;
 
            double mageSkill = from.Skills[SkillName.Magery].Value;
            //double scalar;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else if (mageSkill >= 80.0)
                scalar = 0.8;
            else if (mageSkill >= 70.0)
                scalar = 0.7;
            else
                scalar = 0.6;
 
            
        
}
       
public SummonedWaterElemental( Serial serial ) : base( serial )
{
}
 
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
 
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

SummonedAirElemental.cs
Code:
using System;
using Server;
using Server.Items;
 
namespace Server.Mobiles
{
[CorpseName( "an air elemental corpse" )]
public class SummonedAirElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
 
[Constructable]
        public SummonedAirElemental(double scalar, Mobile from)            : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "an air elemental";
Body = 13;
Hue = 0x4001;
BaseSoundID = 655;
 
SetStr( 200 );
SetDex( 200 );
SetInt( 100 );
 
            SetHits(250, (int)(260 * scalar));
 
            SetDamage(12, (int)(16 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Energy, 150);
 
           
            SetResistance(ResistanceType.Physical, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Fire, 32, (int)(33 * scalar));
            SetResistance(ResistanceType.Cold, 50, (int)(56 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, 70, (int)(81 * scalar));
 
            SetSkill(SkillName.Meditation, 90.0 * scalar);
            SetSkill(SkillName.EvalInt, 70.0 * scalar);
            SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 80.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
VirtualArmor = 40;
ControlSlots = 2;
 
            double mageSkill = from.Skills[SkillName.Magery].Value;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else
                scalar = 1.0;
}
 
public SummonedAirElemental( Serial serial ) : base( serial )
{
}
 
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
 
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
 
if ( BaseSoundID == 263 )
BaseSoundID = 655;
}
}
}

SummonedEarthElemental.cs
Code:
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
 
namespace Server.Mobiles
{
[CorpseName( "an earth elemental corpse" )]
public class SummonedEarthElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
 
[Constructable]
        public SummonedEarthElemental(double scalar, Mobile from)
            : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "an earth elemental";
Body = 14;
BaseSoundID = 268;
 
SetStr( 200 );
SetDex( 70 );
SetInt( 70 );
 
            SetHits(200, (int)(230 * scalar));
 
            SetDamage(12, (int)(14 * scalar));
 
            SetDamageType(ResistanceType.Physical, 120);
            
 
            SetResistance(ResistanceType.Physical, 46, (int)(47 * scalar));
            SetResistance(ResistanceType.Fire, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Cold, 40, (int)(42 * scalar));
            SetResistance(ResistanceType.Poison, 40, (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, 40, (int)(42 * scalar));
 
           // SetSkill(SkillName.Meditation, 90.0 * scalar);
           // SetSkill(SkillName.EvalInt, 80.0 * scalar);
           // SetSkill(SkillName.Magery, 80.0 * scalar);
            SetSkill(SkillName.MagicResist, 75.0 * scalar);
            SetSkill(SkillName.Tactics, 80.0 * scalar);
            SetSkill(SkillName.Wrestling, 85.0 * scalar);
 
VirtualArmor = 34;
ControlSlots = 2;
 
            double mageSkill = from.Skills[SkillName.Magery].Value;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else
                scalar = 1.0;
}
 
public SummonedEarthElemental( Serial serial ) : base( serial )
{
}
 
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
 
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

What i did wrong?
 

Lionar

Wanderer
Ok Solved!!

Code:
using System;
using Server;
using Server.Items;
 
 
namespace Server.Mobiles
{
    [CorpseName("a fire elemental corpse")]
    public class SummonedFireElemental : BaseCreature
    {
        public override bool IsDispellable { get { return false; } }
        public override double DispelDifficulty { get { return 200.0; } }
        public override double DispelFocus { get { return 200.0; } }
 
        [Constructable]
        public SummonedFireElemental(double scalar, Mobile from)
            : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            double mageSkill = from.Skills[SkillName.Magery].Value;
 
            if (mageSkill >= 200.0)
                scalar = 1.6;
            else if (mageSkill >= 190.0)
                scalar = 1.55;
            else if (mageSkill >= 180.0)
                scalar = 1.5;
            else if (mageSkill >= 170.0)
                scalar = 1.45;
            else if (mageSkill >= 160.0)
                scalar = 1.4;
            else if (mageSkill >= 150.0)
                scalar = 1.35;
            else if (mageSkill >= 140.0)
                scalar = 1.3;
            else if (mageSkill >= 130.0)
                scalar = 1.25;
            else if (mageSkill >= 120.0)
                scalar = 1.2;
            else if (mageSkill >= 110.0)
                scalar = 1.15;
            else if (mageSkill >= 100.0)
                scalar = 1.1;
            else if (mageSkill >= 90.0)
                scalar = 1.0;
            else
                scalar = 1.0;
 
            Name = "a fire elemental";
            Body = 15;
            BaseSoundID = 838;
 
            SetStr(200);
            SetDex(200);
            SetInt(100);
 
            SetHits((int)(260 * scalar), (int)(261 * scalar));
 
            SetDamage((int)(16 * scalar), (int)(18 * scalar));
 
            SetDamageType(ResistanceType.Physical, 0);
            SetDamageType(ResistanceType.Fire, 150);
 
            SetResistance(ResistanceType.Physical, (int)(40 * scalar), (int)(42 * scalar));
            SetResistance(ResistanceType.Fire, (int)(70 * scalar), (int)(80 * scalar));
            SetResistance(ResistanceType.Cold, (int)(30 * scalar), (int)(31 * scalar));
            SetResistance(ResistanceType.Poison, (int)(40 * scalar), (int)(41 * scalar));
            SetResistance(ResistanceType.Energy, (int)(40 * scalar), (int)(41 * scalar));
 
            SetSkill(SkillName.Meditation, (int)(90 * scalar));
            SetSkill(SkillName.EvalInt, (int)(90 * scalar));
            SetSkill(SkillName.Magery, (int)(80 * scalar));
            SetSkill(SkillName.MagicResist, (int)(75 * scalar));
            SetSkill(SkillName.Tactics, (int)(90 * scalar));
            SetSkill(SkillName.Wrestling, (int)(85 * scalar));
 
            VirtualArmor = 40;
            ControlSlots = 2;
 
            AddItem(new LightSource());
        }
       
        public SummonedFireElemental(Serial serial)
            : base(serial)
        {
        }
 
        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);
        }
 
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
        }
    }
}

I Did the same for the others elementals ^^
 
Look at how I changed the constructable. Move your if statements before you use the variables. You are setting values with the scalar with what you passed forward (value of 1) THEN you are setting your scalar to be something different. The computer starts at the top of the constructable and reads/performs each line going straight down. Once it passes a line of code unless something makes it go back up it will not recalculate those lines.

As for the resists not changing I personally would not scale those anyways. Your code could produce summoned pets with 100% or more in different resistances which means that pet can trivialize something that hits for that damage type. As for why it is not working I am not really sure.
 
hehe, looks like you found the solution as I was typing my reply. The first sentence you figured out, I would think about scaling the resists all the same.
 
Top