I Understand and see that:
C#:
public override bool HasBreath{ get{ return true; } }

Has been replaced with:
C#:
SetSpecialAbility(SpecialAbility.DragonBreath);

But how am I suppose to edit this section to retain the effect?:
C#:
public override int BreathPhysicalDamage { get { return 0; } }
public override int BreathEnergyDamage { get { return 100; } }
public override int BreathFireDamage { get { return 0; } }
public override int BreathEffectHue { get { return 1; } }
public override double BreathDamageScalar { get { return 0.06; } }
public override double BreathMinDelay { get { return 5.0; } }
public override double BreathMaxDelay { get { return 7.5; } }
 
It's done in SpecialAbility.cs so maybe you can override the default values with your own? I have not tried to do so but it's likely doable.
 
I ended up adding the old Breath system back into BaseCreature as I prefer it.
Thanks for the help as always Falkor.
 
I Understand and see that:
C#:
public override bool HasBreath{ get{ return true; } }

Has been replaced with:
C#:
SetSpecialAbility(SpecialAbility.DragonBreath);

But how am I suppose to edit this section to retain the effect?:
C#:
public override int BreathPhysicalDamage { get { return 0; } }
public override int BreathEnergyDamage { get { return 100; } }
public override int BreathFireDamage { get { return 0; } }
public override int BreathEffectHue { get { return 1; } }
public override double BreathDamageScalar { get { return 0.06; } }
public override double BreathMinDelay { get { return 5.0; } }
public override double BreathMaxDelay { get { return 7.5; } }
Public virtual int BreathEffectSound
 
Public virtual int BreathEffectSound
Wouldn't that Merely change the SoundEffect to a different sound?

Or were you just using that as a single example like:

C#:
public virtual int BreathPhysicalDamage { get { return 0; } }
public virtual int BreathEnergyDamage { get { return 100; } }
public virtual int BreathFireDamage { get { return 0; } }
public virtual int BreathEffectHue { get { return 1; } }
public virtual double BreathDamageScalar { get { return 0.06; } }
public virtual double BreathMinDelay { get { return 5.0; } }
public virtual double BreathMaxDelay { get { return 7.5; } }

To be fair both are running since they're handled differently while I was testing things back and forth between the two Ill give it a shot.

-----------------------------------------------------------------
After Actually seeing Falkor's last statement about SpecialAbility.cs
I see you're correct they're virtuals now.
You also don't need to include the world "Breath"


C#:
public class DragonBreath : SpecialAbility

    public class DragonBreathDefinition
        {
            public Type[] Uses { get; private set; }

            // Base damage given is: CurrentHitPoints * BreathDamageScalar
            public double DamageScalar { get; private set; }

            // Creature stops moving for 1.0 seconds while breathing
            public double StallTime { get; private set; }

            // Effect is sent 1.3 seconds after BreathAngerSound and BreathAngerAnimation is played
            public double EffectDelay { get; private set; }

            // Damage is given 1.0 seconds after effect is sent
            public double DamageDelay { get; private set; }

            // Damage types
            public int PhysicalDamage { get; private set; }
            public int FireDamage { get; private set; }
            public int ColdDamage { get; private set; }
            public int PoisonDamage { get; private set; }
            public int EnergyDamage { get; private set; }
            public int ChaosDamage { get; private set; }
            public int DirectDamage { get; private set; }

            public double MinDelay { get; private set; }
            public double MaxDelay { get; private set; }

            // Effect details and sound
            public int EffectItemID { get; private set; }
            public int EffectSpeed { get; private set; }
            public int EffectDuration { get; private set; }
            public bool EffectExplodes { get; private set; }
            public bool EffectFixedDir { get; private set; }
            public int EffectHue { get; private set; }
            public int EffectRenderMode { get; private set; }

            public int EffectSound { get; private set; }

            // Anger sound/animations
            public int AngerAnimation { get; private set; }

            public bool AttacksMultipleTargets { get; private set; }

            public DragonBreathDefinition(
              
                double scalar,
                double stallTime,
                double effectDelay,
                double damageDelay,
                int physDamage, int fireDamage, int coldDamage, int poisonDamage, int energyDamage, int chaosDamage, int directDamage,
                double minDelay, double maxDelay,
                int effectID,
                int effectDuration,
                int effectSpeed,
                bool explodes,
                bool fixedDirection,
                int effectHue,
                int renderMode,
                int effectSound,
                int angerAnimation,
                bool attacksMultiples = false,

A lot of Mobiles also have predefined factors.

C#:
// Frost Dragon/Drake
                Definitions.Add(new DragonBreathDefinition(
                    Core.AOS ? 0.16 : 0.05,
                    1.0,
                    1.3,
                    1.0,
                    0, 0, 100, 0, 0, 0, 0,
                    30.0, 45.0,
                    0x36D4,
                    5,
                    0,
                    false,
                    false,
                    1264,
                    0,
                    0x227,
                    12,
                    false,
                    new Type[] { typeof(FrostDragon), typeof(ColdDrake) }));
 
Last edited:
Was an example.. virtual.. works for me don't really know why.lol. so does private instead of public in many cases.. again don't know why..
This scripting stuff is the next phase in uo. 2 decades playing..
I want to make a gold pile in Kings castle that funds vendors to buy items and
acrues profits..
Muah..
 
Hi guys im trying to get these special ability's to work on my donator pets. Im getting an error..
What am i missing?
Here is one for example...

CS1001: Line 113: Identifier expected
CS1001: Line 114: Identifier expected

And here is what i have set...

SetSpecialAbility(SpecialAbility.DragonBreath);
SetSpecialAbility(SpecialAbility.VenomousBite);

Thanks for any help.
 
Back