mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-15 17:02:26 +00:00
[Rules] Add Frontal Stun Immunity Rules. (#2217)
* [Rules] Add Frontal Stun Immunity Rules. - Add Combat:FrontalStunImmunityClasses rule for determining Frontal Stun Immunity by class bitmasks - Add Combat:FrontalStunImmunityRaces rule for determining Frontal Stun Immunity by race bitmasks - Add Combat:NPCsUseFrontalStunImmunityClasses rule for determining if NPCs use Frontal Stun Immunity by class bitmasks - Add Combat:NPCsUseFrontalStunImmunityRaces rule for determining if NPCs uses Frontal Stun Immunity by race bitmasks - Cleanup GetDefaultGender() as best as possible with the globalload I have. - Combat:NPCsUseFrontalStunImmunityRaces defaults to true as NPCs currently use Frontal Stun Immunity. - Added **all** Ogre races to the check for Frontal Stun Immunity. * Remove other Ogre races.
This commit is contained in:
parent
243fb781e8
commit
fc5105eed7
@ -479,6 +479,10 @@ RULE_BOOL(Combat, Classic2HBAnimation, false, "2HB will use the 2 hand piercing
|
|||||||
RULE_BOOL(Combat, ArcheryConsumesAmmo, true, "Set to false to disable Archery Ammo Consumption")
|
RULE_BOOL(Combat, ArcheryConsumesAmmo, true, "Set to false to disable Archery Ammo Consumption")
|
||||||
RULE_BOOL(Combat, ThrowingConsumesAmmo, true, "Set to false to disable Throwing Ammo Consumption")
|
RULE_BOOL(Combat, ThrowingConsumesAmmo, true, "Set to false to disable Throwing Ammo Consumption")
|
||||||
RULE_BOOL(Combat, UseLiveRiposteMechanics, false, "Set to true to disable SPA 173 SE_RiposteChance from making those with the effect on them immune to enrage, can longer riposte from a riposte.")
|
RULE_BOOL(Combat, UseLiveRiposteMechanics, false, "Set to true to disable SPA 173 SE_RiposteChance from making those with the effect on them immune to enrage, can longer riposte from a riposte.")
|
||||||
|
RULE_INT(Combat, FrontalStunImmunityClasses, 0, "Bitmask for Classes than have frontal stun immunity, No Races (0) by default.")
|
||||||
|
RULE_BOOL(Combat, NPCsUseFrontalStunImmunityClasses, false, "Enable or disable NPCs using frontal stun immunity Classes from Combat:FrontalStunImmunityClasses, false by default.")
|
||||||
|
RULE_INT(Combat, FrontalStunImmunityRaces, 512, "Bitmask for Races than have frontal stun immunity, Ogre (512) only by default.")
|
||||||
|
RULE_BOOL(Combat, NPCsUseFrontalStunImmunityRaces, true, "Enable or disable NPCs using frontal stun immunity Races from Combat:FrontalStunImmunityRaces, true by default.")
|
||||||
RULE_CATEGORY_END()
|
RULE_CATEGORY_END()
|
||||||
|
|
||||||
RULE_CATEGORY(NPC)
|
RULE_CATEGORY(NPC)
|
||||||
|
|||||||
@ -3832,11 +3832,59 @@ void Mob::CommonDamage(Mob* attacker, int64 &damage, const uint16 spell_id, cons
|
|||||||
can_stun = true;
|
can_stun = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((GetBaseRace() == OGRE || GetBaseRace() == OGGOK_CITIZEN) &&
|
bool is_immune_to_frontal_stun = false;
|
||||||
!attacker->BehindMob(this, attacker->GetX(), attacker->GetY()))
|
|
||||||
|
if (IsBot() || IsClient() || IsMerc()) {
|
||||||
|
if (
|
||||||
|
IsPlayerClass(GetClass()) &&
|
||||||
|
RuleI(Combat, FrontalStunImmunityClasses) & GetPlayerClassBit(GetClass())
|
||||||
|
) {
|
||||||
|
is_immune_to_frontal_stun = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (
|
||||||
|
(
|
||||||
|
IsPlayerRace(GetBaseRace()) &&
|
||||||
|
RuleI(Combat, FrontalStunImmunityRaces) & GetPlayerRaceBit(GetBaseRace())
|
||||||
|
) ||
|
||||||
|
GetBaseRace() == RACE_OGGOK_CITIZEN_93
|
||||||
|
) {
|
||||||
|
is_immune_to_frontal_stun = true;
|
||||||
|
}
|
||||||
|
} else if (IsNPC()) {
|
||||||
|
if (
|
||||||
|
RuleB(Combat, NPCsUseFrontalStunImmunityClasses) &&
|
||||||
|
IsPlayerClass(GetClass()) &&
|
||||||
|
RuleI(Combat, FrontalStunImmunityClasses) & GetPlayerClassBit(GetClass())
|
||||||
|
) {
|
||||||
|
is_immune_to_frontal_stun = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
RuleB(Combat, NPCsUseFrontalStunImmunityRaces) &&
|
||||||
|
(
|
||||||
|
(
|
||||||
|
IsPlayerRace(GetBaseRace()) &&
|
||||||
|
RuleI(Combat, FrontalStunImmunityRaces) & GetPlayerRaceBit(GetBaseRace())
|
||||||
|
) ||
|
||||||
|
GetBaseRace() == RACE_OGGOK_CITIZEN_93
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
is_immune_to_frontal_stun = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
is_immune_to_frontal_stun &&
|
||||||
|
!attacker->BehindMob(this, attacker->GetX(), attacker->GetY())
|
||||||
|
) {
|
||||||
can_stun = false;
|
can_stun = false;
|
||||||
if (GetSpecialAbility(UNSTUNABLE))
|
}
|
||||||
|
|
||||||
|
if (GetSpecialAbility(UNSTUNABLE)) {
|
||||||
can_stun = false;
|
can_stun = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (can_stun) {
|
if (can_stun) {
|
||||||
int bashsave_roll = zone->random.Int(0, 100);
|
int bashsave_roll = zone->random.Int(0, 100);
|
||||||
|
|||||||
19
zone/mob.cpp
19
zone/mob.cpp
@ -2872,6 +2872,7 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
|
|||||||
in_race == RACE_FAYGUARD_112 ||
|
in_race == RACE_FAYGUARD_112 ||
|
||||||
in_race == RACE_ERUDITE_GHOST_118 ||
|
in_race == RACE_ERUDITE_GHOST_118 ||
|
||||||
in_race == RACE_IKSAR_CITIZEN_139 ||
|
in_race == RACE_IKSAR_CITIZEN_139 ||
|
||||||
|
in_race == RACE_SHADE_224 ||
|
||||||
in_race == RACE_TROLL_CREW_MEMBER_331 ||
|
in_race == RACE_TROLL_CREW_MEMBER_331 ||
|
||||||
in_race == RACE_PIRATE_DECKHAND_332 ||
|
in_race == RACE_PIRATE_DECKHAND_332 ||
|
||||||
in_race == RACE_GNOME_PIRATE_338 ||
|
in_race == RACE_GNOME_PIRATE_338 ||
|
||||||
@ -2884,7 +2885,12 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
|
|||||||
in_race == RACE_WARLOCK_OF_HATE_352 ||
|
in_race == RACE_WARLOCK_OF_HATE_352 ||
|
||||||
in_race == RACE_UNDEAD_VAMPIRE_359 ||
|
in_race == RACE_UNDEAD_VAMPIRE_359 ||
|
||||||
in_race == RACE_VAMPIRE_360 ||
|
in_race == RACE_VAMPIRE_360 ||
|
||||||
|
in_race == RACE_SAND_ELF_364 ||
|
||||||
|
in_race == RACE_TAELOSIAN_NATIVE_385 ||
|
||||||
|
in_race == RACE_TAELOSIAN_EVOKER_386 ||
|
||||||
|
in_race == RACE_DRACHNID_461 ||
|
||||||
in_race == RACE_ZOMBIE_471 ||
|
in_race == RACE_ZOMBIE_471 ||
|
||||||
|
in_race == RACE_ELDDAR_489 ||
|
||||||
in_race == RACE_VAMPIRE_497 ||
|
in_race == RACE_VAMPIRE_497 ||
|
||||||
in_race == RACE_KERRAN_562 ||
|
in_race == RACE_KERRAN_562 ||
|
||||||
in_race == RACE_BROWNIE_568 ||
|
in_race == RACE_BROWNIE_568 ||
|
||||||
@ -2911,11 +2917,22 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
|
|||||||
in_race == RACE_SPECTRAL_IKSAR_147 ||
|
in_race == RACE_SPECTRAL_IKSAR_147 ||
|
||||||
in_race == RACE_INVISIBLE_MAN_127 ||
|
in_race == RACE_INVISIBLE_MAN_127 ||
|
||||||
in_race == RACE_VAMPYRE_208 ||
|
in_race == RACE_VAMPYRE_208 ||
|
||||||
|
in_race == RACE_RECUSO_237 ||
|
||||||
in_race == RACE_BROKEN_SKULL_PIRATE_333 ||
|
in_race == RACE_BROKEN_SKULL_PIRATE_333 ||
|
||||||
|
in_race == RACE_INVISIBLE_MAN_OF_ZOMM_600 ||
|
||||||
|
in_race == RACE_OGRE_NPC_MALE_624 ||
|
||||||
|
in_race == RACE_BEEFEATER_667 ||
|
||||||
in_race == RACE_ERUDITE_678
|
in_race == RACE_ERUDITE_678
|
||||||
) { // Male only races
|
) { // Male only races
|
||||||
return 0;
|
return 0;
|
||||||
} else if (in_race == RACE_FAIRY_25 || in_race == RACE_PIXIE_56) { // Female only races
|
} else if (
|
||||||
|
in_race == RACE_FAIRY_25 ||
|
||||||
|
in_race == RACE_PIXIE_56 ||
|
||||||
|
in_race == RACE_BANSHEE_487 ||
|
||||||
|
in_race == RACE_BANSHEE_488 ||
|
||||||
|
in_race == RACE_AYONAE_RO_498 ||
|
||||||
|
in_race == RACE_SULLON_ZEK_499
|
||||||
|
) { // Female only races
|
||||||
return 1;
|
return 1;
|
||||||
} else { // Neutral default for NPC Races
|
} else { // Neutral default for NPC Races
|
||||||
return 2;
|
return 2;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user