mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 09:31:30 +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:
parent
d0e069f4f8
commit
62b5f8a488
@ -482,6 +482,7 @@ RULE_BOOL(Spells, RequireMnemonicRetention, true, "Enabling will require spell s
|
||||
RULE_BOOL(Spells, EvacClearCharmPet, false, "Enable to have evac in zone clear charm from charm pets and detach buffs.")
|
||||
RULE_BOOL(Spells, ManaTapsRequireNPCMana, false, "Enabling will require target to have mana to tap. Default off as many npc's are caster class with 0 mana and need fixed.")
|
||||
RULE_INT(Spells, HarmTouchCritRatio, 200, "Harmtouch crit bonus, on top of BaseCritRatio")
|
||||
RULE_BOOL(Spells, UseClassicSpellFocus, false, "Enabling will tell the server to handle random focus damage as classic spell imports lack the limit values.")
|
||||
RULE_CATEGORY_END()
|
||||
|
||||
RULE_CATEGORY(Combat)
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user