mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-11 07:38:36 +00:00
[Rules] Classic Spell Data SPA Calc variability (#3931)
* [Rules] Classic Spell Data SPA Calc variability When using lucy imports of older more classic data, they lack the limit values which provides Focus Random Effectiveness. Example: Bazu Plauge (6472) went from a 40 limit to 0 limit on the 2006 lucy import. Lucy does have limit value data, but it appears the affected SPAs sony handled in source vs in spell data. * Requested Changes
This commit is contained in:
+43
-18
@@ -5892,16 +5892,19 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
|
||||
// handle effects
|
||||
case SE_ImprovedDamage:
|
||||
if (type == focusImprovedDamage) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
|
||||
case SE_ImprovedDamage2:
|
||||
if (type == focusImprovedDamage2) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||
if (type == focusImprovedDamage || type == focusImprovedDamage2) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
if (best_focus) {
|
||||
value = focus_spell.base_value[i];
|
||||
} else {
|
||||
value = zone->random.Int(1, focus_spell.base_value[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SE_Fc_Amplify_Mod:
|
||||
if (type == focusFcAmplifyMod && focus_spell.base_value[i] > value) {
|
||||
@@ -5910,14 +5913,18 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
break;
|
||||
|
||||
case SE_ImprovedHeal:
|
||||
if (type == focusImprovedHeal) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
|
||||
case SE_ReduceManaCost:
|
||||
if (type == focusManaCost) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||
if (type == focusImprovedHeal || type == focusManaCost) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (best_focus) {
|
||||
value = focus_spell.base_value[i];
|
||||
} else {
|
||||
value = zone->random.Int(1, focus_spell.base_value[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5967,8 +5974,15 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
break;
|
||||
|
||||
case SE_ReduceReagentCost:
|
||||
if (type == focusReagentCost) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||
if (type == focusReagentCost) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == focusReagentCost && focus_spell.base_value[i] > value) {
|
||||
value = focus_spell.base_value[i];
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5991,8 +6005,19 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
break;
|
||||
|
||||
case SE_SpellHateMod:
|
||||
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||
if (type == focusSpellHateMod) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == focusSpellHateMod) {
|
||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
||||
if (best_focus) {
|
||||
value = focus_spell.base_value[i];
|
||||
} else {
|
||||
value = zone->random.Int(1, focus_spell.base_value[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user