mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-22 23:41:29 +00:00
Rewrite Bane and Elemental Dmg stuff and GetWeaponDamage (client version)
This commit is contained in:
parent
ad1c91f204
commit
600866f573
255
zone/attack.cpp
255
zone/attack.cpp
@ -928,231 +928,108 @@ int Mob::GetWeaponDamage(Mob *against, const ItemInst *weapon_item, uint32 *hate
|
|||||||
int banedmg = 0;
|
int banedmg = 0;
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
|
||||||
if(!against || against->GetInvul() || against->GetSpecialAbility(IMMUNE_MELEE)){
|
if (!against || against->GetInvul() || against->GetSpecialAbility(IMMUNE_MELEE))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// check for items being illegally attained
|
||||||
|
if (weapon_item) {
|
||||||
|
if (!weapon_item->GetItem())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (weapon_item->GetItemRequiredLevel(true) > GetLevel())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!weapon_item->IsEquipable(GetBaseRace(), GetClass()))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//check for items being illegally attained
|
if (against->GetSpecialAbility(IMMUNE_MELEE_NONMAGICAL)) {
|
||||||
if(weapon_item){
|
if (weapon_item) {
|
||||||
const Item_Struct *mWeaponItem = weapon_item->GetItem();
|
|
||||||
if(mWeaponItem){
|
|
||||||
if(mWeaponItem->ReqLevel > GetLevel()){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!weapon_item->IsEquipable(GetBaseRace(), GetClass())){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(against->GetSpecialAbility(IMMUNE_MELEE_NONMAGICAL)){
|
|
||||||
if(weapon_item){
|
|
||||||
// check to see if the weapon is magic
|
// check to see if the weapon is magic
|
||||||
bool MagicWeapon = false;
|
bool MagicWeapon = weapon_item->GetItemMagical(true) || spellbonuses.MagicWeapon || itembonuses.MagicWeapon;
|
||||||
if(weapon_item->GetItem() && weapon_item->GetItem()->Magic)
|
if (MagicWeapon) {
|
||||||
MagicWeapon = true;
|
auto rec_level = weapon_item->GetItemRecommendedLevel(true);
|
||||||
|
if (IsClient() && GetLevel() < rec_level)
|
||||||
|
dmg = CastToClient()->CalcRecommendedLevelBonus(
|
||||||
|
GetLevel(), rec_level, weapon_item->GetItemWeaponDamage(true));
|
||||||
else
|
else
|
||||||
if(spellbonuses.MagicWeapon || itembonuses.MagicWeapon)
|
dmg = weapon_item->GetItemWeaponDamage(true);
|
||||||
MagicWeapon = true;
|
|
||||||
else
|
|
||||||
// An augment on the weapon that is marked magic makes
|
|
||||||
// the item magical.
|
|
||||||
for(x = 0; MagicWeapon == false && x < EmuConstants::ITEM_COMMON_SIZE; x++)
|
|
||||||
{
|
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem())
|
|
||||||
{
|
|
||||||
if (weapon_item->GetAugment(x)->GetItem()->Magic)
|
|
||||||
MagicWeapon = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(MagicWeapon) {
|
|
||||||
|
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
|
||||||
dmg = CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->Damage);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
dmg = weapon_item->GetItem()->Damage;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int x = 0; x < EmuConstants::ITEM_COMMON_SIZE; x++){
|
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem()){
|
|
||||||
dmg += weapon_item->GetAugment(x)->GetItem()->Damage;
|
|
||||||
if (hate) *hate += weapon_item->GetAugment(x)->GetItem()->Damage + weapon_item->GetAugment(x)->GetItem()->ElemDmgAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dmg = dmg <= 0 ? 1 : dmg;
|
dmg = dmg <= 0 ? 1 : dmg;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else{
|
} else {
|
||||||
bool MagicGloves=false;
|
bool MagicGloves = false;
|
||||||
if (IsClient()) {
|
if (IsClient()) {
|
||||||
ItemInst *gloves=CastToClient()->GetInv().GetItem(MainHands);
|
const ItemInst *gloves = CastToClient()->GetInv().GetItem(MainHands);
|
||||||
if (gloves != nullptr) {
|
if (gloves)
|
||||||
MagicGloves = gloves->GetItem()->Magic;
|
MagicGloves = gloves->GetItemMagical(true);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if((GetClass() == MONK || GetClass() == BEASTLORD)) {
|
if (GetClass() == MONK || GetClass() == BEASTLORD) {
|
||||||
if(MagicGloves || GetLevel() >= 30){
|
if (MagicGloves || GetLevel() >= 30) {
|
||||||
dmg = GetHandToHandDamage();
|
dmg = GetHandToHandDamage();
|
||||||
if (hate) *hate += dmg;
|
if (hate)
|
||||||
|
*hate += dmg;
|
||||||
}
|
}
|
||||||
}
|
} else if (GetOwner() &&
|
||||||
else if(GetOwner() && GetLevel() >= RuleI(Combat, PetAttackMagicLevel)){ //pets wouldn't actually use this but...
|
GetLevel() >=
|
||||||
dmg = 1; //it gives us an idea if we can hit
|
RuleI(Combat, PetAttackMagicLevel)) { // pets wouldn't actually use this but...
|
||||||
}
|
dmg = 1; // it gives us an idea if we can hit
|
||||||
else if(MagicGloves || GetSpecialAbility(SPECATK_MAGICAL)){
|
} else if (MagicGloves || GetSpecialAbility(SPECATK_MAGICAL)) {
|
||||||
dmg = 1;
|
dmg = 1;
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
if (weapon_item) {
|
||||||
if(weapon_item){
|
if (weapon_item->GetItem()) {
|
||||||
if(weapon_item->GetItem()){
|
auto rec_level = weapon_item->GetItemRecommendedLevel(true);
|
||||||
|
if (IsClient() && GetLevel() < rec_level) {
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
dmg = CastToClient()->CalcRecommendedLevelBonus(
|
||||||
dmg = CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->Damage);
|
GetLevel(), rec_level, weapon_item->GetItemWeaponDamage(true));
|
||||||
}
|
} else {
|
||||||
else{
|
dmg = weapon_item->GetItemWeaponDamage(true);
|
||||||
dmg = weapon_item->GetItem()->Damage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int x = 0; x < EmuConstants::ITEM_COMMON_SIZE; x++){
|
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem()){
|
|
||||||
dmg += weapon_item->GetAugment(x)->GetItem()->Damage;
|
|
||||||
if (hate) *hate += weapon_item->GetAugment(x)->GetItem()->Damage + weapon_item->GetAugment(x)->GetItem()->ElemDmgAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dmg = dmg <= 0 ? 1 : dmg;
|
dmg = dmg <= 0 ? 1 : dmg;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
dmg = GetHandToHandDamage();
|
dmg = GetHandToHandDamage();
|
||||||
if (hate) *hate += dmg;
|
if (hate)
|
||||||
|
*hate += dmg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int eledmg = 0;
|
int eledmg = 0;
|
||||||
if(!against->GetSpecialAbility(IMMUNE_MAGIC)){
|
if (!against->GetSpecialAbility(IMMUNE_MAGIC)) {
|
||||||
if(weapon_item && weapon_item->GetItem() && weapon_item->GetItem()->ElemDmgAmt){
|
if (weapon_item && weapon_item->GetItem() && weapon_item->GetItemElementalFlag(true))
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
// the client actually has the way this is done, it does not appear to check req!
|
||||||
eledmg = CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->ElemDmgAmt);
|
eledmg = against->ResistElementalWeaponDmg(weapon_item);
|
||||||
}
|
|
||||||
else{
|
|
||||||
eledmg = weapon_item->GetItem()->ElemDmgAmt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(eledmg)
|
if (weapon_item && weapon_item->GetItem() &&
|
||||||
{
|
(weapon_item->GetItemBaneDamageBody(true) || weapon_item->GetItemBaneDamageRace(true)))
|
||||||
eledmg = (eledmg * against->ResistSpell(weapon_item->GetItem()->ElemDmgType, 0, this) / 100);
|
banedmg = against->CheckBaneDamage(weapon_item);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(weapon_item){
|
if (against->GetSpecialAbility(IMMUNE_MELEE_EXCEPT_BANE)) {
|
||||||
for (int x = 0; x < EmuConstants::ITEM_COMMON_SIZE; x++){
|
if (!eledmg && !banedmg) {
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem()){
|
if (!GetSpecialAbility(SPECATK_BANE))
|
||||||
if(weapon_item->GetAugment(x)->GetItem()->ElemDmgAmt)
|
|
||||||
eledmg += (weapon_item->GetAugment(x)->GetItem()->ElemDmgAmt * against->ResistSpell(weapon_item->GetAugment(x)->GetItem()->ElemDmgType, 0, this) / 100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(against->GetSpecialAbility(IMMUNE_MELEE_EXCEPT_BANE)){
|
|
||||||
if(weapon_item && weapon_item->GetItem()){
|
|
||||||
if(weapon_item->GetItem()->BaneDmgBody == against->GetBodyType()){
|
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
|
||||||
banedmg += CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->BaneDmgAmt);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
banedmg += weapon_item->GetItem()->BaneDmgAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(weapon_item->GetItem()->BaneDmgRace == against->GetRace()){
|
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
|
||||||
banedmg += CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->BaneDmgRaceAmt);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
banedmg += weapon_item->GetItem()->BaneDmgRaceAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int x = 0; x < EmuConstants::ITEM_COMMON_SIZE; x++){
|
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem()){
|
|
||||||
if(weapon_item->GetAugment(x)->GetItem()->BaneDmgBody == against->GetBodyType()){
|
|
||||||
banedmg += weapon_item->GetAugment(x)->GetItem()->BaneDmgAmt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(weapon_item->GetAugment(x)->GetItem()->BaneDmgRace == against->GetRace()){
|
|
||||||
banedmg += weapon_item->GetAugment(x)->GetItem()->BaneDmgRaceAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!eledmg && !banedmg)
|
|
||||||
{
|
|
||||||
if(!GetSpecialAbility(SPECATK_BANE))
|
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
dmg += (banedmg + eledmg);
|
dmg += (banedmg + eledmg);
|
||||||
if (hate) *hate += banedmg;
|
if (hate)
|
||||||
}
|
*hate += banedmg;
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(weapon_item && weapon_item->GetItem()){
|
|
||||||
if(weapon_item->GetItem()->BaneDmgBody == against->GetBodyType()){
|
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
|
||||||
banedmg += CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->BaneDmgAmt);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
banedmg += weapon_item->GetItem()->BaneDmgAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(weapon_item->GetItem()->BaneDmgRace == against->GetRace()){
|
|
||||||
if(IsClient() && GetLevel() < weapon_item->GetItem()->RecLevel){
|
|
||||||
banedmg += CastToClient()->CalcRecommendedLevelBonus(GetLevel(), weapon_item->GetItem()->RecLevel, weapon_item->GetItem()->BaneDmgRaceAmt);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
banedmg += weapon_item->GetItem()->BaneDmgRaceAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int x = 0; x < EmuConstants::ITEM_COMMON_SIZE; x++){
|
|
||||||
if(weapon_item->GetAugment(x) && weapon_item->GetAugment(x)->GetItem()){
|
|
||||||
if(weapon_item->GetAugment(x)->GetItem()->BaneDmgBody == against->GetBodyType()){
|
|
||||||
banedmg += weapon_item->GetAugment(x)->GetItem()->BaneDmgAmt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(weapon_item->GetAugment(x)->GetItem()->BaneDmgRace == against->GetRace()){
|
|
||||||
banedmg += weapon_item->GetAugment(x)->GetItem()->BaneDmgRaceAmt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
dmg += (banedmg + eledmg);
|
dmg += (banedmg + eledmg);
|
||||||
if (hate) *hate += banedmg;
|
if (hate)
|
||||||
|
*hate += banedmg;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dmg <= 0){
|
return std::max(0, dmg);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return dmg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//note: throughout this method, setting `damage` to a negative is a way to
|
//note: throughout this method, setting `damage` to a negative is a way to
|
||||||
|
|||||||
166
zone/mob.cpp
166
zone/mob.cpp
@ -5690,3 +5690,169 @@ int32 Mob::GetMeleeMitigation() {
|
|||||||
mitigation += aabonuses.MeleeMitigationEffect;
|
mitigation += aabonuses.MeleeMitigationEffect;
|
||||||
return mitigation;
|
return mitigation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* this is the mob being attacked.
|
||||||
|
* Pass in the weapon's ItemInst
|
||||||
|
*/
|
||||||
|
int Mob::ResistElementalWeaponDmg(const ItemInst *item)
|
||||||
|
{
|
||||||
|
if (!item)
|
||||||
|
return 0;
|
||||||
|
int magic = 0, fire = 0, cold = 0, poison = 0, disease = 0, chromatic = 0, prismatic = 0, physical = 0,
|
||||||
|
corruption = 0;
|
||||||
|
int resist = 0;
|
||||||
|
int roll = 0;
|
||||||
|
/* this is how the client does the resist rolls for these.
|
||||||
|
* Given the difficulty of parsing out these resists, I'll trust the client
|
||||||
|
*/
|
||||||
|
if (item->GetItemElementalDamage(magic, fire, cold, poison, disease, chromatic, prismatic, physical, corruption, true)) {
|
||||||
|
if (magic) {
|
||||||
|
resist = GetMR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
magic = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
magic = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
magic = magic * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fire) {
|
||||||
|
resist = GetFR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
fire = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
fire = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
fire = fire * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cold) {
|
||||||
|
resist = GetCR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
cold = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
cold = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
cold = cold * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poison) {
|
||||||
|
resist = GetPR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
poison = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
poison = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
poison = poison * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (disease) {
|
||||||
|
resist = GetDR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
disease = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
disease = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
disease = disease * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corruption) {
|
||||||
|
resist = GetCorrup();
|
||||||
|
if (resist >= 201) {
|
||||||
|
corruption = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
corruption = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
corruption = corruption * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chromatic) {
|
||||||
|
resist = GetFR();
|
||||||
|
int temp = GetCR();
|
||||||
|
if (temp < resist)
|
||||||
|
resist = temp;
|
||||||
|
|
||||||
|
temp = GetMR();
|
||||||
|
if (temp < resist)
|
||||||
|
resist = temp;
|
||||||
|
|
||||||
|
temp = GetDR();
|
||||||
|
if (temp < resist)
|
||||||
|
resist = temp;
|
||||||
|
|
||||||
|
temp = GetPR();
|
||||||
|
if (temp < resist)
|
||||||
|
resist = temp;
|
||||||
|
|
||||||
|
if (resist >= 201) {
|
||||||
|
chromatic = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
chromatic = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
chromatic = chromatic * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prismatic) {
|
||||||
|
resist = (GetFR() + GetCR() + GetMR() + GetDR() + GetPR()) / 5;
|
||||||
|
if (resist >= 201) {
|
||||||
|
prismatic = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
prismatic = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
prismatic = prismatic * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (physical) {
|
||||||
|
resist = GetPhR();
|
||||||
|
if (resist >= 201) {
|
||||||
|
physical = 0;
|
||||||
|
} else {
|
||||||
|
roll = zone->random.Int(0, 200) - resist;
|
||||||
|
if (roll < 1)
|
||||||
|
physical = 0;
|
||||||
|
else if (roll < 100)
|
||||||
|
physical = physical * roll / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return magic + fire + cold + poison + disease + chromatic + prismatic + physical + corruption;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this is the mob being attacked.
|
||||||
|
* Pass in the weapon's ItemInst
|
||||||
|
*/
|
||||||
|
int Mob::CheckBaneDamage(const ItemInst *item)
|
||||||
|
{
|
||||||
|
if (!item)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
int damage = item->GetItemBaneDamageBody(GetBodyType(), true);
|
||||||
|
damage += item->GetItemBaneDamageRace(GetRace(), true);
|
||||||
|
|
||||||
|
return damage;
|
||||||
|
}
|
||||||
|
|||||||
@ -231,6 +231,8 @@ public:
|
|||||||
int resist_override = 0, bool CharismaCheck = false, bool CharmTick = false, bool IsRoot = false,
|
int resist_override = 0, bool CharismaCheck = false, bool CharmTick = false, bool IsRoot = false,
|
||||||
int level_override = -1);
|
int level_override = -1);
|
||||||
int ResistPhysical(int level_diff, uint8 caster_level);
|
int ResistPhysical(int level_diff, uint8 caster_level);
|
||||||
|
int ResistElementalWeaponDmg(const ItemInst *item);
|
||||||
|
int CheckBaneDamage(const ItemInst *item);
|
||||||
uint16 GetSpecializeSkillValue(uint16 spell_id) const;
|
uint16 GetSpecializeSkillValue(uint16 spell_id) const;
|
||||||
void SendSpellBarDisable();
|
void SendSpellBarDisable();
|
||||||
void SendSpellBarEnable(uint16 spellid);
|
void SendSpellBarEnable(uint16 spellid);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user