- 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...