mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 05:21:29 +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, 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_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_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_END()
|
||||||
|
|
||||||
RULE_CATEGORY(Combat)
|
RULE_CATEGORY(Combat)
|
||||||
|
|||||||
@ -5892,16 +5892,19 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
|||||||
|
|
||||||
// handle effects
|
// handle effects
|
||||||
case SE_ImprovedDamage:
|
case SE_ImprovedDamage:
|
||||||
if (type == focusImprovedDamage) {
|
|
||||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SE_ImprovedDamage2:
|
case SE_ImprovedDamage2:
|
||||||
if (type == focusImprovedDamage2) {
|
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
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:
|
case SE_Fc_Amplify_Mod:
|
||||||
if (type == focusFcAmplifyMod && focus_spell.base_value[i] > value) {
|
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;
|
break;
|
||||||
|
|
||||||
case SE_ImprovedHeal:
|
case SE_ImprovedHeal:
|
||||||
if (type == focusImprovedHeal) {
|
|
||||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SE_ReduceManaCost:
|
case SE_ReduceManaCost:
|
||||||
if (type == focusManaCost) {
|
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
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;
|
break;
|
||||||
|
|
||||||
@ -5967,8 +5974,15 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_ReduceReagentCost:
|
case SE_ReduceReagentCost:
|
||||||
if (type == focusReagentCost) {
|
if (!RuleB(Spells, UseClassicSpellFocus)) {
|
||||||
value = GetFocusRandomEffectivenessValue(focus_spell.base_value[i], focus_spell.limit_value[i], best_focus);
|
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;
|
break;
|
||||||
|
|
||||||
@ -5991,8 +6005,19 @@ int64 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_SpellHateMod:
|
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) {
|
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;
|
break;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user