diff --git a/common/ruletypes.h b/common/ruletypes.h index 26acc7434..7ca940722 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -333,6 +333,8 @@ RULE_REAL ( Combat, ArcheryBaseDamageBonus, 1) // % Modifier to Base Archery Dam RULE_REAL ( Combat, ArcheryNPCMultiplier, 1.0) // this is multiplied by the regular dmg to get the archery dmg RULE_BOOL ( Combat, AssistNoTargetSelf, true) //when assisting a target that does not have a target: true = target self, false = leave target as was before assist (false = live like) RULE_INT ( Combat, MaxRampageTargets, 3) //max number of people hit with rampage +RULE_INT ( Combat, DefaultRampageTargets, 1) // default number of people to hit with rampage +RULE_BOOL ( Combat, RampageHitsTarget, false) // rampage will hit the target if it still has targets left RULE_INT ( Combat, MaxFlurryHits, 2) //max number of extra hits from flurry RULE_INT ( Combat, MonkDamageTableBonus, 5) //% bonus monks get to their damage table calcs RULE_INT ( Combat, FlyingKickBonus, 25) //% Modifier that this skill gets to str and skill bonuses diff --git a/zone/MobAI.cpp b/zone/MobAI.cpp index dedd49f79..e65e357ad 100644 --- a/zone/MobAI.cpp +++ b/zone/MobAI.cpp @@ -2015,7 +2015,10 @@ bool Mob::Rampage(ExtraAttackOptions *opts) entity_list.MessageClose_StringID(this, true, 200, MT_PetFlurry, NPC_RAMPAGE, GetCleanName()); int rampage_targets = GetSpecialAbilityParam(SPECATK_RAMPAGE, 1); - rampage_targets = rampage_targets > 0 ? rampage_targets : RuleI(Combat, MaxRampageTargets); + if (rampage_targets == 0) // if set to 0 or not set in the DB + rampage_targets = RuleI(Combat, DefaultRampageTargets); + if (rampage_targets > RuleI(Combat, MaxRampageTargets)) + rampage_targets = RuleI(Combat, MaxRampageTargets); for (int i = 0; i < RampageArray.size(); i++) { if (index_hit >= rampage_targets) break; @@ -2031,7 +2034,7 @@ bool Mob::Rampage(ExtraAttackOptions *opts) } } - if (index_hit < rampage_targets) + if (RuleB(Combat, RampageHitsTarget) && index_hit < rampage_targets) Attack(GetTarget(), 13, false, false, false, opts); return true;