mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 19:51:29 +00:00
Implemented deadly strikes and increase rogue throwing crit rate
New rules: Combat:RogueCritThrowingChance, Combat:RogueDeadlyStrikeChance, Combat:RogueDeadlyStrikeMod Rogue throwing crit rate is rather ridiculous. These rules might need tweaking but they gave me fairly live-like results, even with AA added
This commit is contained in:
parent
00068158c1
commit
a67aed9538
@ -1,5 +1,11 @@
|
|||||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 03/03/2014 ==
|
||||||
|
demonstar55: Implemented deadly strikes and gave rogues higher innate throwing crit chance
|
||||||
|
|
||||||
|
New rules: Combat:RogueCritThrowingChance, Combat:RogueDeadlyStrikeChance, Combat:RogueDeadlyStrikeMod
|
||||||
|
Defaults should give fairly close to live results
|
||||||
|
|
||||||
== 03/02/2014 ==
|
== 03/02/2014 ==
|
||||||
Kayen: Revision to charm code to be consistent with live based on extensive personal parsing.
|
Kayen: Revision to charm code to be consistent with live based on extensive personal parsing.
|
||||||
*Charisma ONLY effects the initial resist check when charm is cast with 10 CHA = -1 Resist mod up to 200 CHA
|
*Charisma ONLY effects the initial resist check when charm is cast with 10 CHA = -1 Resist mod up to 200 CHA
|
||||||
|
|||||||
@ -308,6 +308,9 @@ RULE_INT ( Combat, WarBerBaseCritChance, 3 ) //The base crit chance for warriors
|
|||||||
RULE_INT ( Combat, BerserkBaseCritChance, 6 ) //The bonus base crit chance you get when you're berserk
|
RULE_INT ( Combat, BerserkBaseCritChance, 6 ) //The bonus base crit chance you get when you're berserk
|
||||||
RULE_INT ( Combat, NPCBashKickLevel, 6 ) //The level that npcs can KICK/BASH
|
RULE_INT ( Combat, NPCBashKickLevel, 6 ) //The level that npcs can KICK/BASH
|
||||||
RULE_INT ( Combat, NPCBashKickStunChance, 15 ) //Percent chance that a bash/kick will stun
|
RULE_INT ( Combat, NPCBashKickStunChance, 15 ) //Percent chance that a bash/kick will stun
|
||||||
|
RULE_INT ( Combat, RogueCritThrowingChance, 25) //Rogue throwing crit bonus
|
||||||
|
RULE_INT ( Combat, RogueDeadlyStrikeChance, 80) //Rogue chance throwing from behind crit becomes a deadly strike
|
||||||
|
RULE_INT ( Combat, RogueDeadlyStrikeMod, 2) //Deadly strike modifier to crit damage
|
||||||
RULE_INT ( Combat, ClientBaseCritChance, 0 ) //The base crit chance for all clients, this will stack with warrior's/zerker's crit chance.
|
RULE_INT ( Combat, ClientBaseCritChance, 0 ) //The base crit chance for all clients, this will stack with warrior's/zerker's crit chance.
|
||||||
RULE_BOOL ( Combat, UseIntervalAC, true)
|
RULE_BOOL ( Combat, UseIntervalAC, true)
|
||||||
RULE_INT ( Combat, PetAttackMagicLevel, 30)
|
RULE_INT ( Combat, PetAttackMagicLevel, 30)
|
||||||
|
|||||||
@ -160,6 +160,7 @@
|
|||||||
#define ASSASSINATES 1016 //%1 ASSASSINATES their victim!!
|
#define ASSASSINATES 1016 //%1 ASSASSINATES their victim!!
|
||||||
#define CRIPPLING_BLOW 1021 //%1 lands a Crippling Blow!(%2)
|
#define CRIPPLING_BLOW 1021 //%1 lands a Crippling Blow!(%2)
|
||||||
#define CRITICAL_HIT 1023 //%1 scores a critical hit! (%2)
|
#define CRITICAL_HIT 1023 //%1 scores a critical hit! (%2)
|
||||||
|
#define DEADLY_STRIKE 1024 //%1 scores a Deadly Strike!(%2)
|
||||||
#define RESISTS_URGE 1025 //%1 resists their urge to flee.
|
#define RESISTS_URGE 1025 //%1 resists their urge to flee.
|
||||||
#define BERSERK_START 1027 //%1 goes into a berserker frenzy!
|
#define BERSERK_START 1027 //%1 goes into a berserker frenzy!
|
||||||
#define DEATH_PACT 1028 //%1's death pact has been benevolently fulfilled!
|
#define DEATH_PACT 1028 //%1's death pact has been benevolently fulfilled!
|
||||||
|
|||||||
@ -4333,11 +4333,16 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int deadlyChance = 0;
|
||||||
|
int deadlyMod = 0;
|
||||||
if(skill == SkillArchery && GetClass() == RANGER && GetSkill(SkillArchery) >= 65)
|
if(skill == SkillArchery && GetClass() == RANGER && GetSkill(SkillArchery) >= 65)
|
||||||
critChance += 6;
|
critChance += 6;
|
||||||
|
|
||||||
if(skill == SkillThrowing && GetClass() == ROGUE && GetSkill(SkillThrowing) >= 65)
|
if (skill == SkillThrowing && GetClass() == ROGUE && GetSkill(SkillThrowing) >= 65) {
|
||||||
critChance += 6;
|
critChance += RuleI(Combat, RogueCritThrowingChance);
|
||||||
|
deadlyChance = RuleI(Combat, RogueDeadlyStrikeChance);
|
||||||
|
deadlyMod = RuleI(Combat, RogueDeadlyStrikeMod);
|
||||||
|
}
|
||||||
|
|
||||||
int CritChanceBonus = GetCriticalChanceBonus(skill);
|
int CritChanceBonus = GetCriticalChanceBonus(skill);
|
||||||
|
|
||||||
@ -4383,6 +4388,14 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack
|
|||||||
critMod += GetCritDmgMob(skill) * 2; // To account for base crit mod being 200 not 100
|
critMod += GetCritDmgMob(skill) * 2; // To account for base crit mod being 200 not 100
|
||||||
damage = damage * critMod / 100;
|
damage = damage * critMod / 100;
|
||||||
|
|
||||||
|
bool deadlySuccess = false;
|
||||||
|
if (deadlyChance && MakeRandomFloat(0, 1) < static_cast<float>(deadlyChance) / 100.0f) {
|
||||||
|
if (BehindMob(defender, GetX(), GetY())) {
|
||||||
|
damage *= deadlyMod;
|
||||||
|
deadlySuccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (crip_success) {
|
if (crip_success) {
|
||||||
entity_list.FilteredMessageClose_StringID(this, false, 200,
|
entity_list.FilteredMessageClose_StringID(this, false, 200,
|
||||||
MT_CritMelee, FilterMeleeCrits, CRIPPLING_BLOW,
|
MT_CritMelee, FilterMeleeCrits, CRIPPLING_BLOW,
|
||||||
@ -4393,6 +4406,10 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack
|
|||||||
defender->Emote("staggers.");
|
defender->Emote("staggers.");
|
||||||
defender->Stun(0);
|
defender->Stun(0);
|
||||||
}
|
}
|
||||||
|
} else if (deadlySuccess) {
|
||||||
|
entity_list.FilteredMessageClose_StringID(this, false, 200,
|
||||||
|
MT_CritMelee, FilterMeleeCrits, DEADLY_STRIKE,
|
||||||
|
GetCleanName(), itoa(damage));
|
||||||
} else {
|
} else {
|
||||||
entity_list.FilteredMessageClose_StringID(this, false, 200,
|
entity_list.FilteredMessageClose_StringID(this, false, 200,
|
||||||
MT_CritMelee, FilterMeleeCrits, CRITICAL_HIT,
|
MT_CritMelee, FilterMeleeCrits, CRITICAL_HIT,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user