Co-Existing resists

A place to submit .patch fixes for the DOL SVN

Moderator: Developer Team

Co-Existing resists

Postby Yemla » Mon Sep 06, 2010 5:27 pm

This is all in PropertyChangingSpell!!!
Code: Select all
        protected const string CRUSH_VALUE_PROPERTY = "CrushValue";
        protected const string THRUST_VALUE_PROPERTY = "ThrustValue";
        protected const string SLASH_VALUE_PROPERTY = "SlashValue";
        protected const string MATTER_VALUE_PROPERTY = "MatterValue";
        protected const string COLD_VALUE_PROPERTY = "ColdValue";
        protected const string HEAT_VALUE_PROPERTY = "HeatValue";
        protected const string BODY_VALUE_PROPERTY = "BodyValue";
        protected const string SPIRIT_VALUE_PROPERTY = "SpiritValue";
        protected const string ENERGY_VALUE_PROPERTY = "EnergyValue";
        protected const string BODYSPIRITENERGY_VALUE_PROPERTY = "BodySpiritEnergyValue";
        protected const string HEATCOLDMATTER_VALUE_PROPERTY = "HeatColdMatterValue";
        protected const string CRUSHSLASHTHRUST_VALUE_PROPERTY = "CrushSlashThrustValue";


OnEffectStart (in PropertChangingSpell)
Code: Select all
            GameSpellEffect crush = FindEffectOnTarget(effect.Owner, "CrushResistBuff");
            GameSpellEffect thrust = FindEffectOnTarget(effect.Owner, "ThrustResistBuff");
            GameSpellEffect slash = FindEffectOnTarget(effect.Owner, "SlashResistBuff");
            GameSpellEffect matter = FindEffectOnTarget(effect.Owner, "MatterResistBuff");
            GameSpellEffect cold = FindEffectOnTarget(effect.Owner, "ColdResistBuff");
            GameSpellEffect heat = FindEffectOnTarget(effect.Owner, "HeatResistBuff");
            GameSpellEffect body = FindEffectOnTarget(effect.Owner, "BodyResistBuff");
            GameSpellEffect spirit = FindEffectOnTarget(effect.Owner, "SpiritResistBuff");
            GameSpellEffect energy = FindEffectOnTarget(effect.Owner, "EnergyResistBuff");
            GameSpellEffect bodySpiritEnergy = FindEffectOnTarget(effect.Owner, "BodySpiritEnergyBuff");
            GameSpellEffect heatColdMatter = FindEffectOnTarget(effect.Owner, "HeatColdMatterBuff");
            GameSpellEffect crushSlashThrust = FindEffectOnTarget(effect.Owner, "CrushSlashThrustBuff");

            #region Heat/Cold/Matter Buff
            if (this is HeatColdMatterBuff)
            {
                if (heat != null)
                {
                    if (heat.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(HEAT_VALUE_PROPERTY, this.Spell.Value - heat.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(HEAT_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner , BonusCategory1, Property1, (int) (Spell.Value*effect.Effectiveness), false);
                if (cold != null)
                {
                    if (cold.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(COLD_VALUE_PROPERTY, this.Spell.Value - cold.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(COLD_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner , BonusCategory2, Property2, (int) (Spell.Value*effect.Effectiveness), false);
                if (matter != null)
                {
                    if (matter.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(MATTER_VALUE_PROPERTY, this.Spell.Value - matter.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(MATTER_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(Spell.Value * effect.Effectiveness), false);
            }
            if (this is HeatResistBuff || this is ColdResistBuff || this is MatterResistBuff)
            {
                if (heatColdMatter != null)
                {
                    if (heatColdMatter.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(HEATCOLDMATTER_VALUE_PROPERTY, this.Spell.Value - heatColdMatter.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(HEATCOLDMATTER_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(Spell.Value * effect.Effectiveness), false);
            }
            #endregion

            #region Body/Spirit/Energy Buff
            if (this is BodySpiritEnergyBuff)
            {
                if (body != null)
                {
                    if (body.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(BODY_VALUE_PROPERTY, this.Spell.Value - body.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(BODY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(Spell.Value * effect.Effectiveness), false);
                if (spirit != null)
                {
                    if (spirit.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(SPIRIT_VALUE_PROPERTY, this.Spell.Value - spirit.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(SPIRIT_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(Spell.Value * effect.Effectiveness), false);
                if (energy != null)
                {
                    if (energy.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(ENERGY_VALUE_PROPERTY, this.Spell.Value - energy.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(ENERGY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(Spell.Value * effect.Effectiveness), false);
            }
            if (this is BodyResistBuff || this is SpiritResistBuff || this is EnergyResistBuff)
            {
                if (bodySpiritEnergy != null)
                {
                    if (bodySpiritEnergy.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(BODYSPIRITENERGY_VALUE_PROPERTY, this.Spell.Value - bodySpiritEnergy.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(BODYSPIRITENERGY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(Spell.Value * effect.Effectiveness), false);
            }
            #endregion

            #region Crush/Slash/Thrust Buff
            if (this is CrushSlashThrustBuff)
            {
                if (crush != null)
                {
                    if (crush.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(CRUSH_VALUE_PROPERTY, this.Spell.Value - crush.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(CRUSH_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(Spell.Value * effect.Effectiveness), false);
                if (slash != null)
                {
                    if (slash.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(SLASH_VALUE_PROPERTY, this.Spell.Value - slash.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(SLASH_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(Spell.Value * effect.Effectiveness), false);
                if (thrust != null)
                {
                    if (thrust.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(THRUST_VALUE_PROPERTY, this.Spell.Value - thrust.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(THRUST_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(Spell.Value * effect.Effectiveness), false);
            }
            if (this is CrushResistBuff || this is SlashResistBuff || this is ThrustResistBuff)
            {
                if (crushSlashThrust != null)
                {
                    if (crushSlashThrust.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(CRUSHSLASHTHRUST_VALUE_PROPERTY, this.Spell.Value - crushSlashThrust.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(CRUSHSLASHTHRUST_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), false);
                    }
                }
                else
                    ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(Spell.Value * effect.Effectiveness), false);
            }
            #endregion

Basically, you cast Heat/Cold/Matter but Heat isn't null so it checks if heat/cold/matter is better than Heat...if it is Heat/Cold/Matter - Heat (say H/C/M = 10, Heat = 8 ) 10 - 8 = 2 so u get the 8 u alrdy have + 2 to get the 10 for H/C/M

OnEffectExpire
Code: Select all
            GameSpellEffect crush = FindEffectOnTarget(effect.Owner, "CrushResistBuff");
            GameSpellEffect thrust = FindEffectOnTarget(effect.Owner, "ThrustResistBuff");
            GameSpellEffect slash = FindEffectOnTarget(effect.Owner, "SlashResistBuff");
            GameSpellEffect matter = FindEffectOnTarget(effect.Owner, "MatterResistBuff");
            GameSpellEffect cold = FindEffectOnTarget(effect.Owner, "ColdResistBuff");
            GameSpellEffect heat = FindEffectOnTarget(effect.Owner, "HeatResistBuff");
            GameSpellEffect body = FindEffectOnTarget(effect.Owner, "BodyResistBuff");
            GameSpellEffect spirit = FindEffectOnTarget(effect.Owner, "SpiritResistBuff");
            GameSpellEffect energy = FindEffectOnTarget(effect.Owner, "EnergyResistBuff");
            GameSpellEffect bodySpiritEnergy = FindEffectOnTarget(effect.Owner, "BodySpiritEnergyBuff");
            GameSpellEffect heatColdMatter = FindEffectOnTarget(effect.Owner, "HeatColdMatterBuff");
            GameSpellEffect crushSlashThrust = FindEffectOnTarget(effect.Owner, "CrushSlashThrustBuff");

            #region Heat/Cold/Matter Buff
            if (this is HeatColdMatterBuff)
            {
                if (heat != null)
                {
                    if (heat.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(HEAT_VALUE_PROPERTY, this.Spell.Value - heat.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(HEAT_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (cold != null)
                {
                    if (cold.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(COLD_VALUE_PROPERTY, this.Spell.Value - cold.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(COLD_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (matter != null)
                {
                    if (matter.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(MATTER_VALUE_PROPERTY, this.Spell.Value - matter.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(MATTER_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                effect.Owner.TempProperties.removeProperty(HEATCOLDMATTER_VALUE_PROPERTY);
            }
            if (this is HeatResistBuff || this is ColdResistBuff || this is MatterResistBuff)
            {
                if (heatColdMatter != null)
                {
                    if (heatColdMatter.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(HEATCOLDMATTER_VALUE_PROPERTY, this.Spell.Value - heatColdMatter.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(HEATCOLDMATTER_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (this is HeatResistBuff)
                    effect.Owner.TempProperties.removeProperty(HEAT_VALUE_PROPERTY);
                if (this is ColdResistBuff)
                    effect.Owner.TempProperties.removeProperty(COLD_VALUE_PROPERTY);
                if (this is MatterResistBuff)
                    effect.Owner.TempProperties.removeProperty(MATTER_VALUE_PROPERTY);
               
            }
            #endregion

            #region Body/Spirit/Energy Buff
            if (this is BodySpiritEnergyBuff)
            {
                if (body != null)
                {
                    if (body.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(BODY_VALUE_PROPERTY, this.Spell.Value - body.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(BODY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (spirit != null)
                {
                    if (spirit.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(SPIRIT_VALUE_PROPERTY, this.Spell.Value - spirit.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(SPIRIT_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (energy != null)
                {
                    if (energy.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(ENERGY_VALUE_PROPERTY, this.Spell.Value - energy.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(ENERGY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                effect.Owner.TempProperties.removeProperty(BODYSPIRITENERGY_VALUE_PROPERTY);
            }
            if (this is BodyResistBuff || this is SpiritResistBuff || this is EnergyResistBuff)
            {
                if (bodySpiritEnergy != null)
                {
                    if (bodySpiritEnergy.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(BODYSPIRITENERGY_VALUE_PROPERTY, this.Spell.Value - bodySpiritEnergy.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(BODYSPIRITENERGY_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (this is BodyResistBuff)
                    effect.Owner.TempProperties.removeProperty(BODY_VALUE_PROPERTY);
                if (this is SpiritResistBuff)
                    effect.Owner.TempProperties.removeProperty(SPIRIT_VALUE_PROPERTY);
                if (this is EnergyResistBuff)
                    effect.Owner.TempProperties.removeProperty(ENERGY_VALUE_PROPERTY);
            }
            #endregion

            #region Crush/Slash/Thrust Buff
            if (this is CrushSlashThrustBuff)
            {
                if (crush != null)
                {
                    if (crush.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(CRUSH_VALUE_PROPERTY, this.Spell.Value - crush.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(CRUSH_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (slash != null)
                {
                    if (slash.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(SLASH_VALUE_PROPERTY, this.Spell.Value - slash.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(SLASH_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory2, Property2, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (thrust != null)
                {
                    if (thrust.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(THRUST_VALUE_PROPERTY, this.Spell.Value - thrust.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(THRUST_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory3, Property3, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                effect.Owner.TempProperties.removeProperty(CRUSHSLASHTHRUST_VALUE_PROPERTY);
            }
            if (this is CrushResistBuff || this is SlashResistBuff || this is ThrustResistBuff)
            {
                if (crushSlashThrust != null)
                {
                    if (crushSlashThrust.Spell.Value < this.Spell.Value)
                    {
                        effect.Owner.TempProperties.setProperty(CRUSHSLASHTHRUST_VALUE_PROPERTY, this.Spell.Value - crushSlashThrust.Spell.Value);
                        int newValue = effect.Owner.TempProperties.getProperty<int>(CRUSHSLASHTHRUST_VALUE_PROPERTY);
                        ApplyBonus(effect.Owner, BonusCategory1, Property1, (int)(newValue * effect.Effectiveness), true);
                    }
                }
                if (this is CrushResistBuff)
                    effect.Owner.TempProperties.removeProperty(CRUSH_VALUE_PROPERTY);
                if (this is SlashResistBuff)
                    effect.Owner.TempProperties.removeProperty(SLASH_VALUE_PROPERTY);
                if (this is ThrustResistBuff)
                    effect.Owner.TempProperties.removeProperty(COLD_VALUE_PROPERTY);
            }
            #endregion

Same as before H/C/M is being removed but Heat isnt null, (H/C/M = 10, Heat = 8 ) 10 - 8 = 2, so it removes 2 from Heat and u get a remainder of 8 a.k Heat

all my recent posts will be tested soon, just tell me if you think this is the best idea for Co-Existing Resists


Btw, AllMagicResist like (Vampiirs and /uses from live dragon rings/bracers) those give +to abilitybonus like AoM, Empty Mind, ect. but it stacks in value with all other resists...
Yemla
Contributor
 
Posts: 215
Joined: Sat Feb 02, 2008 3:21 am
Website: http://www.facebook.com/J.D.Snelling
Location: California

Return to “%s” DOL Code Contributions

Who is online

Users browsing this forum: No registered users and 1 guest