Converted SkillType typedef enumeration to SkillUseTypes enumeration

This commit is contained in:
Uleat
2013-10-27 13:03:41 -04:00
parent 3e6be197e6
commit e3805d5920
43 changed files with 1119 additions and 949 deletions
+1 -1
View File
@@ -432,7 +432,7 @@ void Client::HandleAAAction(aaID activate) {
int curhp = GetTarget()->GetHP();
target = aaTargetCurrent;
GetTarget()->HealDamage(curhp, this);
Death(this, 0, SPELL_UNKNOWN, HAND_TO_HAND);
Death(this, 0, SPELL_UNKNOWN, SkillHandtoHand);
}
break;
+2 -2
View File
@@ -885,7 +885,7 @@ void Client::AI_Process()
float DualWieldProbability = 0.0f;
int16 Ambidexterity = aabonuses.Ambidexterity + spellbonuses.Ambidexterity + itembonuses.Ambidexterity;
DualWieldProbability = (GetSkill(DUAL_WIELD) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
DualWieldProbability = (GetSkill(SkillDualWield) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
int16 DWBonus = spellbonuses.DualWieldChance + itembonuses.DualWieldChance;
DualWieldProbability += DualWieldProbability*float(DWBonus)/ 100.0f;
@@ -1313,7 +1313,7 @@ void Mob::AI_Process() {
int myclass = GetClass();
//can only dual wield without a weapon if your a monk
if(GetSpecialAbility(SPECATK_INNATE_DW) || (GetEquipment(MaterialSecondary) != 0 && GetLevel() > 29) || myclass == MONK || myclass == MONKGM) {
float DualWieldProbability = (GetSkill(DUAL_WIELD) + GetLevel()) / 400.0f;
float DualWieldProbability = (GetSkill(SkillDualWield) + GetLevel()) / 400.0f;
if(MakeRandomFloat(0.0, 1.0) < DualWieldProbability)
{
Attack(target, 14);
+71 -68
View File
@@ -53,7 +53,7 @@ extern WorldServer worldserver;
extern EntityList entity_list;
extern Zone* zone;
bool Mob::AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapon)
bool Mob::AttackAnimation(SkillUseTypes &skillinuse, int Hand, const ItemInst* weapon)
{
// Determine animation
int type = 0;
@@ -66,49 +66,49 @@ bool Mob::AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapo
{
case ItemType1HSlash: // 1H Slashing
{
skillinuse = _1H_SLASHING;
skillinuse = Skill1HSlashing;
type = anim1HWeapon;
break;
}
case ItemType2HSlash: // 2H Slashing
{
skillinuse = _2H_SLASHING;
skillinuse = Skill2HSlashing;
type = anim2HSlashing;
break;
}
case ItemType1HPiercing: // Piercing
{
skillinuse = PIERCING;
skillinuse = Skill1HPiercing;
type = animPiercing;
break;
}
case ItemType1HBlunt: // 1H Blunt
{
skillinuse = _1H_BLUNT;
skillinuse = Skill1HBlunt;
type = anim1HWeapon;
break;
}
case ItemType2HBlunt: // 2H Blunt
{
skillinuse = _2H_BLUNT;
skillinuse = Skill2HBlunt;
type = anim2HWeapon;
break;
}
case ItemType2HPiercing: // 2H Piercing
{
skillinuse = PIERCING;
skillinuse = Skill1HPiercing; // change to Skill2HPiercing once activated
type = anim2HWeapon;
break;
}
case ItemTypeMartial:
{
skillinuse = HAND_TO_HAND;
skillinuse = SkillHandtoHand;
type = animHand2Hand;
break;
}
default:
{
skillinuse = HAND_TO_HAND;
skillinuse = SkillHandtoHand;
type = animHand2Hand;
break;
}
@@ -118,37 +118,37 @@ bool Mob::AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapo
switch (skillinuse)
{
case _1H_SLASHING: // 1H Slashing
case Skill1HSlashing: // 1H Slashing
{
type = anim1HWeapon;
break;
}
case _2H_SLASHING: // 2H Slashing
case Skill2HSlashing: // 2H Slashing
{
type = anim2HSlashing;
break;
}
case PIERCING: // Piercing
case Skill1HPiercing: // Piercing
{
type = animPiercing;
break;
}
case _1H_BLUNT: // 1H Blunt
case Skill1HBlunt: // 1H Blunt
{
type = anim1HWeapon;
break;
}
case _2H_BLUNT: // 2H Blunt
case Skill2HBlunt: // 2H Blunt
{
type = anim2HWeapon;
break;
}
case 99: // 2H Piercing
case 99: // 2H Piercing // change to Skill2HPiercing once activated
{
type = anim2HWeapon;
break;
}
case HAND_TO_HAND:
case SkillHandtoHand:
{
type = animHand2Hand;
break;
@@ -161,7 +161,7 @@ bool Mob::AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapo
}// switch
}
else {
skillinuse = HAND_TO_HAND;
skillinuse = SkillHandtoHand;
type = animHand2Hand;
}
@@ -175,7 +175,7 @@ bool Mob::AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapo
// called when a mob is attacked, does the checks to see if it's a hit
// and does other mitigation checks. 'this' is the mob being attacked.
bool Mob::CheckHitChance(Mob* other, SkillType skillinuse, int Hand, int16 chance_mod)
bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 chance_mod)
{
/*/
//Reworked a lot of this code to achieve better balance at higher levels.
@@ -254,7 +254,7 @@ bool Mob::CheckHitChance(Mob* other, SkillType skillinuse, int Hand, int16 chanc
if(defender->IsClient())
{
chancetohit += (RuleR(Combat,WeaponSkillFalloff) * (defender->CastToClient()->MaxSkill(DEFENSE) - defender->GetSkill(DEFENSE)));
chancetohit += (RuleR(Combat,WeaponSkillFalloff) * (defender->CastToClient()->MaxSkill(SkillDefense) - defender->GetSkill(SkillDefense)));
mlog(COMBAT__TOHIT, "Chance to hit after weapon falloff calc (defense) %.2f", chancetohit);
}
@@ -314,7 +314,7 @@ bool Mob::CheckHitChance(Mob* other, SkillType skillinuse, int Hand, int16 chanc
chancetohit += ((chancetohit * hitBonus) / 100.0f);
if(skillinuse == ARCHERY)
if(skillinuse == SkillArchery)
chancetohit -= (chancetohit * RuleR(Combat, ArcheryHitPenalty)) / 100.0f;
chancetohit = mod_hit_chance(chancetohit, skillinuse, attacker);
@@ -389,9 +389,9 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (CanRiposte && damage > 0 && CanThisClassRiposte() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
riposte_chance = (100.0f + (float)defender->aabonuses.RiposteChance + (float)defender->spellbonuses.RiposteChance + (float)defender->itembonuses.RiposteChance) / 100.0f;
skill = GetSkill(RIPOSTE);
skill = GetSkill(SkillRiposte);
if (IsClient()) {
CastToClient()->CheckIncreaseSkill(RIPOSTE, other, -10);
CastToClient()->CheckIncreaseSkill(SkillRiposte, other, -10);
}
if (!ghit) { //if they are not using a garunteed hit discipline
@@ -429,9 +429,9 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
float block_chance = 0.0f;
if (damage > 0 && CanThisClassBlock() && (!other->BehindMob(this, other->GetX(), other->GetY()) || bBlockFromRear)) {
block_chance = (100.0f + (float)spellbonuses.IncreaseBlockChance + (float)itembonuses.IncreaseBlockChance) / 100.0f;
skill = CastToClient()->GetSkill(BLOCKSKILL);
skill = CastToClient()->GetSkill(SkillBlock);
if (IsClient()) {
CastToClient()->CheckIncreaseSkill(BLOCKSKILL, other, -10);
CastToClient()->CheckIncreaseSkill(SkillBlock, other, -10);
}
if (!ghit) { //if they are not using a garunteed hit discipline
@@ -480,9 +480,9 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (damage > 0 && CanThisClassParry() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
parry_chance = (100.0f + (float)defender->spellbonuses.ParryChance + (float)defender->itembonuses.ParryChance) / 100.0f;
skill = CastToClient()->GetSkill(PARRY);
skill = CastToClient()->GetSkill(SkillParry);
if (IsClient()) {
CastToClient()->CheckIncreaseSkill(PARRY, other, -10);
CastToClient()->CheckIncreaseSkill(SkillParry, other, -10);
}
if (!ghit) { //if they are not using a garunteed hit discipline
@@ -503,9 +503,9 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (damage > 0 && CanThisClassDodge() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
dodge_chance = (100.0f + (float)defender->spellbonuses.DodgeChance + (float)defender->itembonuses.DodgeChance) / 100.0f;
skill = CastToClient()->GetSkill(DODGE);
skill = CastToClient()->GetSkill(SkillDodge);
if (IsClient()) {
CastToClient()->CheckIncreaseSkill(DODGE, other, -10);
CastToClient()->CheckIncreaseSkill(SkillDodge, other, -10);
}
if (!ghit) { //if they are not using a garunteed hit discipline
@@ -644,11 +644,11 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac
mitigation_rating = 0.0;
if(GetClass() == WIZARD || GetClass() == MAGICIAN || GetClass() == NECROMANCER || GetClass() == ENCHANTER)
{
mitigation_rating = ((GetSkill(DEFENSE) + itembonuses.HeroicAGI/10) / 4.0) + armor + 1;
mitigation_rating = ((GetSkill(SkillDefense) + itembonuses.HeroicAGI/10) / 4.0) + armor + 1;
}
else
{
mitigation_rating = ((GetSkill(DEFENSE) + itembonuses.HeroicAGI/10) / 3.0) + (armor * 1.333333) + 1;
mitigation_rating = ((GetSkill(SkillDefense) + itembonuses.HeroicAGI/10) / 3.0) + (armor * 1.333333) + 1;
}
mitigation_rating *= 0.847;
@@ -656,11 +656,11 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac
if(attacker->IsClient())
{
attack_rating = (attacker->CastToClient()->CalcATK() + ((attacker->GetSTR()-66) * 0.9) + (attacker->GetSkill(OFFENSE)*1.345));
attack_rating = (attacker->CastToClient()->CalcATK() + ((attacker->GetSTR()-66) * 0.9) + (attacker->GetSkill(SkillOffense)*1.345));
}
else
{
attack_rating = (attacker->GetATK() + (attacker->GetSkill(OFFENSE)*1.345) + ((attacker->GetSTR()-66) * 0.9));
attack_rating = (attacker->GetATK() + (attacker->GetSkill(SkillOffense)*1.345) + ((attacker->GetSTR()-66) * 0.9));
}
attack_rating = attacker->mod_attack_rating(attack_rating, this);
@@ -1156,7 +1156,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b
// calculate attack_skill and skillinuse depending on hand and weapon
// also send Packet to near clients
SkillType skillinuse;
SkillUseTypes skillinuse;
AttackAnimation(skillinuse, Hand, weapon);
mlog(COMBAT__ATTACKS, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse);
@@ -1192,7 +1192,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b
max_hit = (RuleI(Combat, HitCapPre20));
CheckIncreaseSkill(skillinuse, other, -15);
CheckIncreaseSkill(OFFENSE, other, -15);
CheckIncreaseSkill(SkillOffense, other, -15);
// ***************************************************************
@@ -1385,7 +1385,7 @@ void Mob::Heal()
SendHPUpdate();
}
void Client::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable, int8 buffslot, bool iBuffTic)
void Client::Damage(Mob* other, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable, int8 buffslot, bool iBuffTic)
{
if(dead || IsCorpse())
return;
@@ -1407,7 +1407,7 @@ void Client::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_
//Don't do PvP mitigation if the caster is damaging himself
if(other && other->IsClient() && (other != this) && damage > 0) {
int PvPMitigation = 100;
if(attack_skill == ARCHERY)
if(attack_skill == SkillArchery)
PvPMitigation = 80;
else
PvPMitigation = 67;
@@ -1423,11 +1423,11 @@ void Client::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_
if (damage > 0) {
if (spell_id == SPELL_UNKNOWN)
CheckIncreaseSkill(DEFENSE, other, -15);
CheckIncreaseSkill(SkillDefense, other, -15);
}
}
bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_skill)
bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack_skill)
{
if(!ClientFinishedLoading())
return false;
@@ -1743,13 +1743,13 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
FaceTarget(GetTarget());
SkillType skillinuse = HAND_TO_HAND;
SkillUseTypes skillinuse = SkillHandtoHand;
if (Hand == 13) {
skillinuse = static_cast<SkillType>(GetPrimSkill());
skillinuse = static_cast<SkillUseTypes>(GetPrimSkill());
OffHandAtk(false);
}
if (Hand == 14) {
skillinuse = static_cast<SkillType>(GetSecSkill());
skillinuse = static_cast<SkillUseTypes>(GetSecSkill());
OffHandAtk(true);
}
@@ -1772,30 +1772,32 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
switch(weapon->ItemType){
case ItemType1HSlash:
skillinuse = _1H_SLASHING;
skillinuse = Skill1HSlashing;
break;
case ItemType2HSlash:
skillinuse = _2H_SLASHING;
skillinuse = Skill2HSlashing;
break;
case ItemType1HPiercing:
//skillinuse = Skill1HPiercing;
//break;
case ItemType2HPiercing:
skillinuse = PIERCING;
skillinuse = Skill1HPiercing; // change to Skill2HPiercing once activated
break;
case ItemType1HBlunt:
skillinuse = _1H_BLUNT;
skillinuse = Skill1HBlunt;
break;
case ItemType2HBlunt:
skillinuse = _2H_BLUNT;
skillinuse = Skill2HBlunt;
break;
case ItemTypeBow:
skillinuse = ARCHERY;
skillinuse = SkillArchery;
break;
case ItemTypeLargeThrowing:
case ItemTypeSmallThrowing:
skillinuse = THROWING;
skillinuse = SkillThrowing;
break;
default:
skillinuse = HAND_TO_HAND;
skillinuse = SkillHandtoHand;
break;
}
}
@@ -1807,9 +1809,10 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
ItemInst weapon_inst(weapon, charges);
AttackAnimation(skillinuse, Hand, &weapon_inst);
// Remove this once Skill2HPiercing is activated
//Work-around for there being no 2HP skill - We use 99 for the 2HB animation and 36 for pierce messages
if(skillinuse == 99)
skillinuse = static_cast<SkillType>(36);
skillinuse = static_cast<SkillUseTypes>(36);
//basically "if not immune" then do the attack
if((weapon_damage) > 0) {
@@ -1996,7 +1999,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
return false;
}
void NPC::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable, int8 buffslot, bool iBuffTic) {
void NPC::Damage(Mob* other, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable, int8 buffslot, bool iBuffTic) {
if(spell_id==0)
spell_id = SPELL_UNKNOWN;
@@ -2039,7 +2042,7 @@ void NPC::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_ski
}
}
bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_skill) {
bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack_skill) {
mlog(COMBAT__HITS, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob->GetName(), damage, spell, attack_skill);
Mob *oos = nullptr;
@@ -2600,7 +2603,7 @@ void Mob::DamageShield(Mob* attacker, bool spell_ds) {
}
DS -= DS * attacker->itembonuses.DSMitigation / 100;
}
attacker->Damage(this, -DS, spellid, ABJURE/*hackish*/, false);
attacker->Damage(this, -DS, spellid, SkillAbjuration/*hackish*/, false);
//we can assume there is a spell now
EQApplicationPacket* outapp = new EQApplicationPacket(OP_Damage, sizeof(CombatDamage_Struct));
CombatDamage_Struct* cds = (CombatDamage_Struct*)outapp->pBuffer;
@@ -2627,7 +2630,7 @@ void Mob::DamageShield(Mob* attacker, bool spell_ds) {
if(rev_ds < 0) {
mlog(COMBAT__HITS, "Applying Reverse Damage Shield of value %d to %s", rev_ds, attacker->GetName());
attacker->Damage(this, -rev_ds, rev_ds_spell_id, ABJURE/*hackish*/, false); //"this" (us) will get the hate, etc. not sure how this works on Live, but it'll works for now, and tanks will love us for this
attacker->Damage(this, -rev_ds, rev_ds_spell_id, SkillAbjuration/*hackish*/, false); //"this" (us) will get the hate, etc. not sure how this works on Live, but it'll works for now, and tanks will love us for this
//do we need to send a damage packet here also?
}
}
@@ -3285,12 +3288,12 @@ bool Client::CheckDoubleAttack(bool tripleAttack) {
//Check for bonuses that give you a double attack chance regardless of skill (ie Bestial Frenzy/Harmonious Attack AA)
uint16 bonusGiveDA = aabonuses.GiveDoubleAttack + spellbonuses.GiveDoubleAttack + itembonuses.GiveDoubleAttack;
if(!HasSkill(DOUBLE_ATTACK) && !bonusGiveDA)
if(!HasSkill(SkillDoubleAttack) && !bonusGiveDA)
return false;
float chance = 0.0f;
uint16 skill = GetSkill(DOUBLE_ATTACK);
uint16 skill = GetSkill(SkillDoubleAttack);
int16 bonusDA = aabonuses.DoubleAttackChance + spellbonuses.DoubleAttackChance + itembonuses.DoubleAttackChance;
@@ -3317,9 +3320,9 @@ bool Client::CheckDoubleAttack(bool tripleAttack) {
return false;
}
void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, const SkillType skill_used, bool &avoidable, const int8 buffslot, const bool iBuffTic) {
void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, const SkillUseTypes skill_used, bool &avoidable, const int8 buffslot, const bool iBuffTic) {
// This method is called with skill_used=ABJURE for Damage Shield damage.
bool FromDamageShield = (skill_used == ABJURE);
bool FromDamageShield = (skill_used == SkillAbjuration);
mlog(COMBAT__HITS, "Applying damage %d done by %s with skill %d and spell %d, avoidable? %s, is %sa buff tic in slot %d",
damage, attacker?attacker->GetName():"NOBODY", skill_used, spell_id, avoidable?"yes":"no", iBuffTic?"":"not ", buffslot);
@@ -3334,7 +3337,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons
// only apply DS if physical damage (no spell damage)
// damage shield calls this function with spell_id set, so its unavoidable
if (attacker && damage > 0 && spell_id == SPELL_UNKNOWN && skill_used != ARCHERY && skill_used != THROWING) {
if (attacker && damage > 0 && spell_id == SPELL_UNKNOWN && skill_used != SkillArchery && skill_used != SkillThrowing) {
DamageShield(attacker);
if (spellbonuses.DamageShield)
@@ -3450,7 +3453,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons
}
//check stun chances if bashing
if (damage > 0 && ((skill_used == BASH || skill_used == KICK) && attacker))
if (damage > 0 && ((skill_used == SkillBash || skill_used == SkillKick) && attacker))
{
// NPCs can stun with their bash/kick as soon as they recieve it.
// Clients can stun mobs under level 56 with their bash/kick when they get level 55 or greater.
@@ -3821,16 +3824,16 @@ void Mob::TryDefensiveProc(const ItemInst* weapon, Mob *on, uint16 hand, int dam
if (bSkillProc && damage < 0){
if (damage == -1)
TrySkillProc(on, BLOCKSKILL, ProcChance);
TrySkillProc(on, SkillBlock, ProcChance);
if (damage == -2)
TrySkillProc(on, PARRY, ProcChance);
TrySkillProc(on, SkillParry, ProcChance);
if (damage == -3)
TrySkillProc(on, RIPOSTE, ProcChance);
TrySkillProc(on, SkillRiposte, ProcChance);
if (damage == -4)
TrySkillProc(on, DODGE, ProcChance);
TrySkillProc(on, SkillDodge, ProcChance);
}
}
@@ -4109,10 +4112,10 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack
critChance += RuleI(Combat, WarBerBaseCritChance);
}
if(skill == ARCHERY && GetClass() == RANGER && GetSkill(ARCHERY) >= 65)
if(skill == SkillArchery && GetClass() == RANGER && GetSkill(SkillArchery) >= 65)
critChance += 6;
if(skill == THROWING && GetClass() == ROGUE && GetSkill(THROWING) >= 65)
if(skill == SkillThrowing && GetClass() == ROGUE && GetSkill(SkillThrowing) >= 65)
critChance += 6;
int CritChanceBonus = GetCriticalChanceBonus(skill);
@@ -4178,7 +4181,7 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack
}
bool Mob::TryFinishingBlow(Mob *defender, SkillType skillinuse)
bool Mob::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse)
{
if (!defender)
@@ -4271,7 +4274,7 @@ bool Mob::HasDied() {
return Result;
}
uint16 Mob::GetDamageTable(SkillType skillinuse)
uint16 Mob::GetDamageTable(SkillUseTypes skillinuse)
{
if(GetLevel() <= 51)
{
+2 -2
View File
@@ -31,8 +31,8 @@ public:
~Beacon();
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill) { return true; }
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false) { return; }
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) { return true; }
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false) { return; }
virtual bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false, bool IsStrikethrough = false, bool IsFromSpell = false,
ExtraAttackOptions *opts = nullptr) { return false; }
virtual bool HasRaid() { return false; }
+100 -100
View File
@@ -1251,19 +1251,19 @@ void Bot::GenerateArmorClass()
{
/// new formula
int avoidance = 0;
avoidance = (acmod() + ((GetSkill(DEFENSE)*16)/9));
avoidance = (acmod() + ((GetSkill(SkillDefense)*16)/9));
if(avoidance < 0)
avoidance = 0;
int mitigation = 0;
if(GetClass() == WIZARD || GetClass() == MAGICIAN || GetClass() == NECROMANCER || GetClass() == ENCHANTER)
{
mitigation = GetSkill(DEFENSE)/4 + (itembonuses.AC+1);
mitigation = GetSkill(SkillDefense)/4 + (itembonuses.AC+1);
mitigation -= 4;
}
else
{
mitigation = GetSkill(DEFENSE)/3 + ((itembonuses.AC*4)/3);
mitigation = GetSkill(SkillDefense)/3 + ((itembonuses.AC*4)/3);
if(GetClass() == MONK)
mitigation += GetLevel() * 13/10; //the 13/10 might be wrong, but it is close...
}
@@ -1290,12 +1290,12 @@ void Bot::GenerateArmorClass()
uint16 Bot::GetPrimarySkillValue()
{
SkillType skill = HIGHEST_SKILL; //because nullptr == 0, which is 1H Slashing, & we want it to return 0 from GetSkill
SkillUseTypes skill = HIGHEST_SKILL; //because nullptr == 0, which is 1H Slashing, & we want it to return 0 from GetSkill
bool equiped = m_inv.GetItem(SLOT_PRIMARY);
if(!equiped)
{
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
}
else
{
@@ -1304,42 +1304,42 @@ uint16 Bot::GetPrimarySkillValue()
{
case ItemType1HSlash: // 1H Slashing
{
skill = _1H_SLASHING;
skill = Skill1HSlashing;
break;
}
case ItemType2HSlash: // 2H Slashing
{
skill = _2H_SLASHING;
skill = Skill2HSlashing;
break;
}
case ItemType1HPiercing: // Piercing
{
skill = PIERCING;
skill = Skill1HPiercing;
break;
}
case ItemType1HBlunt: // 1H Blunt
{
skill = _1H_BLUNT;
skill = Skill1HBlunt;
break;
}
case ItemType2HBlunt: // 2H Blunt
{
skill = _2H_BLUNT;
skill = Skill2HBlunt;
break;
}
case ItemType2HPiercing: // 2H Piercing
{
skill = PIERCING;
skill = Skill1HPiercing; // change to Skill2HPiercing once activated
break;
}
case ItemTypeMartial: // Hand to Hand
{
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
break;
}
default: // All other types default to Hand to Hand
{
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
break;
}
}
@@ -1348,7 +1348,7 @@ uint16 Bot::GetPrimarySkillValue()
return GetSkill(skill);
}
uint16 Bot::MaxSkill(SkillType skillid, uint16 class_, uint16 level) const {
uint16 Bot::MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const {
return(database.GetSkillCap(class_, skillid, level));
}
@@ -1358,7 +1358,7 @@ uint16 Bot::GetTotalATK()
uint16 WornCap = itembonuses.ATK;
if(IsBot()) {
AttackRating = ((WornCap * 1.342) + (GetSkill(OFFENSE) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69));
AttackRating = ((WornCap * 1.342) + (GetSkill(SkillOffense) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69));
AttackRating += aabonuses.ATK + GroupLeadershipAAOffenseEnhancement();
if (AttackRating < 10)
@@ -1376,7 +1376,7 @@ uint16 Bot::GetATKRating()
{
uint16 AttackRating = 0;
if(IsBot()) {
AttackRating = (GetSkill(OFFENSE) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69);
AttackRating = (GetSkill(SkillOffense) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69);
if (AttackRating < 10)
AttackRating = 10;
@@ -3206,7 +3206,7 @@ void Bot::BotRangedAttack(Mob* other) {
return;
}
SendItemAnimation(other, Ammo, ARCHERY);
SendItemAnimation(other, Ammo, SkillArchery);
DoArcheryAttackDmg(GetTarget(), rangedItem, ammoItem);
@@ -3248,13 +3248,13 @@ bool Bot::CheckBotDoubleAttack(bool tripleAttack) {
uint16 bonusGiveDA = aabonuses.GiveDoubleAttack + spellbonuses.GiveDoubleAttack + itembonuses.GiveDoubleAttack;
// If you don't have the double attack skill, return
if(!GetSkill(DOUBLE_ATTACK) && !(GetClass() == BARD || GetClass() == BEASTLORD))
if(!GetSkill(SkillDoubleAttack) && !(GetClass() == BARD || GetClass() == BEASTLORD))
return false;
// You start with no chance of double attacking
float chance = 0.0f;
uint16 skill = GetSkill(DOUBLE_ATTACK);
uint16 skill = GetSkill(SkillDoubleAttack);
int16 bonusDA = aabonuses.DoubleAttackChance + spellbonuses.DoubleAttackChance + itembonuses.DoubleAttackChance;
@@ -3281,15 +3281,15 @@ bool Bot::CheckBotDoubleAttack(bool tripleAttack) {
return false;
}
void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skillinuse, int16 chance_mod, int16 focus, bool CanRiposte)
void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillUseTypes skillinuse, int16 chance_mod, int16 focus, bool CanRiposte)
{
if (!CanDoSpecialAttack(other))
return;
//For spells using skill value 98 (feral swipe ect) server sets this to 67 automatically.
//Kayen: This is unlikely to be completely accurate but use OFFENSE skill value for these effects.
if (skillinuse == BEGGING)
skillinuse = OFFENSE;
if (skillinuse == SkillBegging)
skillinuse = SkillOffense;
int damage = 0;
uint32 hate = 0;
@@ -3351,7 +3351,7 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
else
damage = -5;
if(skillinuse == BASH){
if(skillinuse == SkillBash){
const ItemInst* inst = GetBotItem(SLOT_SECONDARY);
const Item_Struct* botweapon = 0;
if(inst)
@@ -3367,8 +3367,8 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
other->AddToHateList(this, hate);
bool CanSkillProc = true;
if (skillinuse == OFFENSE){ //Hack to allow damage to display.
skillinuse = TIGER_CLAW; //'strike' your opponent - Arbitrary choice for message.
if (skillinuse == SkillOffense){ //Hack to allow damage to display.
skillinuse = SkillTigerClaw; //'strike' your opponent - Arbitrary choice for message.
CanSkillProc = false; //Disable skill procs
}
@@ -3377,7 +3377,7 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
if (HasDied())
return;
if((skillinuse == DRAGON_PUNCH) && GetAA(aaDragonPunch) && MakeRandomInt(0, 99) < 25){
if((skillinuse == SkillDragonPunch) && GetAA(aaDragonPunch) && MakeRandomInt(0, 99) < 25){
SpellFinished(904, other, 10, 0, -1, spells[904].ResistDiff);
other->Stun(100);
}
@@ -3388,26 +3388,26 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
}
}
void Bot::ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg) {
void Bot::ApplySpecialAttackMod(SkillUseTypes skill, int32 &dmg, int32 &mindmg) {
int item_slot = -1;
//1: Apply bonus from AC (BOOT/SHIELD/HANDS) est. 40AC=6dmg
switch (skill){
case FLYING_KICK:
case ROUND_KICK:
case KICK:
case SkillFlyingKick:
case SkillRoundKick:
case SkillKick:
item_slot = SLOT_FEET;
break;
case BASH:
case SkillBash:
item_slot = SLOT_SECONDARY;
break;
case DRAGON_PUNCH:
case EAGLE_STRIKE:
case TIGER_CLAW:
case SkillDragonPunch:
case SkillEagleStrike:
case SkillTigerClaw:
item_slot = SLOT_HANDS;
break;
}
@@ -3847,7 +3847,7 @@ void Bot::AI_Process() {
float DualWieldProbability = 0.0f;
int16 Ambidexterity = aabonuses.Ambidexterity + spellbonuses.Ambidexterity + itembonuses.Ambidexterity;
DualWieldProbability = (GetSkill(DUAL_WIELD) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
DualWieldProbability = (GetSkill(SkillDualWield) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
int16 DWBonus = spellbonuses.DualWieldChance + itembonuses.DualWieldChance;
DualWieldProbability += DualWieldProbability*float(DWBonus)/ 100.0f;
@@ -4127,7 +4127,7 @@ void Bot::PetAIProcess() {
{
if(botPet->GetOwner()->GetLevel() >= 24)
{
float DualWieldProbability = (botPet->GetSkill(DUAL_WIELD) + botPet->GetLevel()) / 400.0f;
float DualWieldProbability = (botPet->GetSkill(SkillDualWield) + botPet->GetLevel()) / 400.0f;
DualWieldProbability -= MakeRandomFloat(0, 1);
if(DualWieldProbability < 0){
botPet->Attack(botPet->GetTarget(), 14);
@@ -6195,7 +6195,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli
}
}
bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillType attack_skill) {
bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) {
if(!NPC::Death(killerMob, damage, spell_id, attack_skill))
return false;
@@ -6300,7 +6300,7 @@ bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillType attack_
return true;
}
void Bot::Damage(Mob *from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable, int8 buffslot, bool iBuffTic) {
void Bot::Damage(Mob *from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable, int8 buffslot, bool iBuffTic) {
if(spell_id==0)
spell_id = SPELL_UNKNOWN;
@@ -6425,7 +6425,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b
// calculate attack_skill and skillinuse depending on hand and weapon
// also send Packet to near clients
SkillType skillinuse;
SkillUseTypes skillinuse;
AttackAnimation(skillinuse, Hand, weapon);
mlog(COMBAT__ATTACKS, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse);
@@ -7828,7 +7828,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (CanRiposte && damage > 0 && CanThisClassRiposte() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
riposte_chance = (100.0f + (float)defender->GetAABonuses().RiposteChance + (float)defender->GetSpellBonuses().RiposteChance + (float)defender->GetItemBonuses().RiposteChance) / 100.0f;
skill = GetSkill(RIPOSTE);
skill = GetSkill(SkillRiposte);
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/60.0 + (GetDEX()/200);
@@ -7864,7 +7864,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
float block_chance = 0.0f;
if (damage > 0 && CanThisClassBlock() && (!other->BehindMob(this, other->GetX(), other->GetY()) || bBlockFromRear)) {
block_chance = (100.0f + (float)spellbonuses.IncreaseBlockChance + (float)itembonuses.IncreaseBlockChance) / 100.0f;
skill = GetSkill(BLOCKSKILL);
skill = GetSkill(SkillBlock);
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/35.0 + (GetDEX()/200);
@@ -7912,7 +7912,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (damage > 0 && CanThisClassParry() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
parry_chance = (100.0f + (float)defender->GetSpellBonuses().ParryChance + (float)defender->GetItemBonuses().ParryChance) / 100.0f;
skill = GetSkill(PARRY);
skill = GetSkill(SkillParry);
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/60.0 + (GetDEX()/200);
@@ -7931,7 +7931,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (damage > 0 && CanThisClassDodge() && !other->BehindMob(this, other->GetX(), other->GetY()))
{
dodge_chance = (100.0f + (float)defender->GetSpellBonuses().DodgeChance + (float)defender->GetItemBonuses().DodgeChance) / 100.0f;
skill = GetSkill(DODGE);
skill = GetSkill(SkillDodge);
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/60.0 + (GetAGI()/200);
@@ -8001,7 +8001,7 @@ int Bot::GetMonkHandToHandDamage(void)
return damage[Level];
}
bool Bot::TryFinishingBlow(Mob *defender, SkillType skillinuse)
bool Bot::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse)
{
if (!defender)
return false;
@@ -8058,7 +8058,7 @@ void Bot::DoRiposte(Mob* defender) {
}
}
void Bot::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int32 min_damage, int32 hate_override,int ReuseTime, bool HitChance) {
void Bot::DoSpecialAttackDamage(Mob *who, SkillUseTypes skill, int32 max_damage, int32 min_damage, int32 hate_override,int ReuseTime, bool HitChance) {
//this really should go through the same code as normal melee damage to
//pick up all the special behavior there
@@ -8066,7 +8066,7 @@ void Bot::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int
if(hate_override > -1)
hate = hate_override;
if(skill == BASH) {
if(skill == SkillBash) {
const ItemInst* inst = GetBotItem(SLOT_SECONDARY);
const Item_Struct* botweapon = 0;
if(inst)
@@ -8086,7 +8086,7 @@ void Bot::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int
else{
bool CanRiposte = true;
if(skill == THROWING || skill == ARCHERY) // changed from '&&'
if(skill == SkillThrowing || skill == SkillArchery) // changed from '&&'
CanRiposte = false;
who->AvoidDamage(this, max_damage, CanRiposte);
@@ -8175,7 +8175,7 @@ void Bot::TryBackstab(Mob *other, int ReuseTime) {
else {
RogueBackstab(other);
if (level > 54) {
float DoubleAttackProbability = (GetSkill(DOUBLE_ATTACK) + GetLevel()) / 500.0f; // 62.4 max
float DoubleAttackProbability = (GetSkill(SkillDoubleAttack) + GetLevel()) / 500.0f; // 62.4 max
// Check for double attack with main hand assuming maxed DA Skill (MS)
if(MakeRandomFloat(0, 1) < DoubleAttackProbability) // Max 62.4 % chance of DA
@@ -8195,7 +8195,7 @@ void Bot::TryBackstab(Mob *other, int ReuseTime) {
//we can stab from any angle, we do min damage though.
RogueBackstab(other, true);
if (level > 54) {
float DoubleAttackProbability = (GetSkill(DOUBLE_ATTACK) + GetLevel()) / 500.0f; // 62.4 max
float DoubleAttackProbability = (GetSkill(SkillDoubleAttack) + GetLevel()) / 500.0f; // 62.4 max
// Check for double attack with main hand assuming maxed DA Skill (MS)
if(MakeRandomFloat(0, 1) < DoubleAttackProbability) // Max 62.4 % chance of DA
if(other->GetHP() > 0)
@@ -8241,12 +8241,12 @@ void Bot::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
if(primaryweapondamage > 0){
if(level > 25){
max_hit = (((2*backstab_dmg) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355) + ((level-25)/3) + 1;
hate = 20 * backstab_dmg * GetSkill(BACKSTAB) / 355;
max_hit = (((2*backstab_dmg) * GetDamageTable(SkillBackstab) / 100) * 10 * GetSkill(SkillBackstab) / 355) + ((level-25)/3) + 1;
hate = 20 * backstab_dmg * GetSkill(SkillBackstab) / 355;
}
else{
max_hit = (((2*backstab_dmg) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355) + 1;
hate = 20 * backstab_dmg * GetSkill(BACKSTAB) / 355;
max_hit = (((2*backstab_dmg) * GetDamageTable(SkillBackstab) / 100) * 10 * GetSkill(SkillBackstab) / 355) + 1;
hate = 20 * backstab_dmg * GetSkill(SkillBackstab) / 355;
}
// determine minimum hits
@@ -8260,7 +8260,7 @@ void Bot::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
min_hit = (level * ( level*5 - 105)) / 100;
}
if(!other->CheckHitChance(this, BACKSTAB, 0)) {
if(!other->CheckHitChance(this, SkillBackstab, 0)) {
ndamage = 0;
}
else{
@@ -8284,7 +8284,7 @@ void Bot::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
ndamage = -5;
}
DoSpecialAttackDamage(other, BACKSTAB, ndamage, min_hit, hate, ReuseTime);
DoSpecialAttackDamage(other, SkillBackstab, ndamage, min_hit, hate, ReuseTime);
DoAnim(animPiercing);
}
@@ -8293,10 +8293,10 @@ void Bot::RogueAssassinate(Mob* other)
ItemInst* botweaponInst = GetBotItem(SLOT_PRIMARY);
if(botweaponInst) {
if(GetWeaponDamage(other, botweaponInst)) {
other->Damage(this, 32000, SPELL_UNKNOWN, BACKSTAB);
other->Damage(this, 32000, SPELL_UNKNOWN, SkillBackstab);
}
else {
other->Damage(this, -5, SPELL_UNKNOWN, BACKSTAB);
other->Damage(this, -5, SPELL_UNKNOWN, SkillBackstab);
}
}
@@ -8389,18 +8389,18 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
}
if(!canBash || MakeRandomInt(0, 100) > 25) { //tested on live, warrior mobs both kick and bash, kick about 75% of the time, casting doesn't seem to make a difference.
skill_to_use = KICK;
skill_to_use = SkillKick;
}
else {
skill_to_use = BASH;
skill_to_use = SkillBash;
}
}
case RANGER:
case BEASTLORD:
skill_to_use = KICK;
skill_to_use = SkillKick;
break;
case BERSERKER:
skill_to_use = FRENZY;
skill_to_use = SkillFrenzy;
break;
case CLERIC:
case SHADOWKNIGHT:
@@ -8412,38 +8412,38 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|| m_inv.GetItem(SLOT_PRIMARY)->GetItem()->ItemType == ItemType2HBlunt
|| m_inv.GetItem(SLOT_PRIMARY)->GetItem()->ItemType == ItemType2HPiercing)
&& GetAA(aa2HandBash) >= 1)) { //Using 2 hand weapon, but has AA 2 Hand Bash
skill_to_use = BASH;
skill_to_use = SkillBash;
}
}
break;
case MONK:
if(GetLevel() >= 30)
{
skill_to_use = FLYING_KICK;
skill_to_use = SkillFlyingKick;
}
else if(GetLevel() >= 25)
{
skill_to_use = DRAGON_PUNCH;
skill_to_use = SkillDragonPunch;
}
else if(GetLevel() >= 20)
{
skill_to_use = EAGLE_STRIKE;
skill_to_use = SkillEagleStrike;
}
else if(GetLevel() >= 10)
{
skill_to_use = TIGER_CLAW;
skill_to_use = SkillTigerClaw;
}
else if(GetLevel() >= 5)
{
skill_to_use = ROUND_KICK;
skill_to_use = SkillRoundKick;
}
else
{
skill_to_use = KICK;
skill_to_use = SkillKick;
}
break;
case ROGUE:
skill_to_use = BACKSTAB;
skill_to_use = SkillBackstab;
break;
}
@@ -8451,7 +8451,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
return;
if(skill_to_use == BASH)
if(skill_to_use == SkillBash)
{
if (target!=this)
{
@@ -8462,7 +8462,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
dmg = -5;
}
else{
if(!target->CheckHitChance(this, BASH, 0)) {
if(!target->CheckHitChance(this, SkillBash, 0)) {
dmg = 0;
}
else{
@@ -8477,7 +8477,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
reuse = BashReuseTime * 1000;
//reuse = (reuse*HasteModifier)/100;
DoSpecialAttackDamage(target, BASH, dmg, 1,-1,reuse);
DoSpecialAttackDamage(target, SkillBash, dmg, 1,-1,reuse);
did_attack = true;
@@ -8488,13 +8488,13 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
}
}
if(skill_to_use == FRENZY)
if(skill_to_use == SkillFrenzy)
{
int AtkRounds = 3;
int skillmod = 0;
if(MaxSkill(FRENZY) > 0)
skillmod = 100*GetSkill(FRENZY)/MaxSkill(FRENZY);
if(MaxSkill(SkillFrenzy) > 0)
skillmod = 100*GetSkill(SkillFrenzy)/MaxSkill(SkillFrenzy);
int32 max_dmg = (26 + ((((GetLevel()-6) * 2)*skillmod)/100)) * ((100+RuleI(Combat, FrenzyBonus))/100);
int32 min_dmg = 0;
@@ -8517,7 +8517,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
while(AtkRounds > 0) {
if (GetTarget() && (AtkRounds == 1 || MakeRandomInt(0,100) < 75)){
DoSpecialAttackDamage(GetTarget(), FRENZY, max_dmg, min_dmg, max_dmg , reuse, true);
DoSpecialAttackDamage(GetTarget(), SkillFrenzy, max_dmg, min_dmg, max_dmg , reuse, true);
}
AtkRounds--;
}
@@ -8527,7 +8527,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
}
}
if(skill_to_use == KICK)
if(skill_to_use == SkillKick)
{
if(target!=this)
{
@@ -8537,7 +8537,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
dmg = -5;
}
else{
if(!target->CheckHitChance(this, KICK, 0)) {
if(!target->CheckHitChance(this, SkillKick, 0)) {
dmg = 0;
}
else{
@@ -8550,17 +8550,17 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
reuse = KickReuseTime * 1000;
DoSpecialAttackDamage(target, KICK, dmg, 1,-1, reuse);
DoSpecialAttackDamage(target, SkillKick, dmg, 1,-1, reuse);
did_attack = true;
}
}
if(skill_to_use == FLYING_KICK ||
skill_to_use == DRAGON_PUNCH ||
skill_to_use == EAGLE_STRIKE ||
skill_to_use == TIGER_CLAW ||
skill_to_use == ROUND_KICK)
if(skill_to_use == SkillFlyingKick ||
skill_to_use == SkillDragonPunch ||
skill_to_use == SkillEagleStrike ||
skill_to_use == SkillTigerClaw ||
skill_to_use == SkillRoundKick)
{
reuse = MonkSpecialAttack(target, skill_to_use) - 1;
MonkSpecialAttack(target, skill_to_use);
@@ -8569,7 +8569,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
uint16 bDoubleSpecialAttack = itembonuses.DoubleSpecialAttack + spellbonuses.DoubleSpecialAttack + aabonuses.DoubleSpecialAttack;
if( bDoubleSpecialAttack && (bDoubleSpecialAttack >= 100 || bDoubleSpecialAttack > MakeRandomInt(0,100))) {
int MonkSPA [5] = { FLYING_KICK, DRAGON_PUNCH, EAGLE_STRIKE, TIGER_CLAW, ROUND_KICK };
int MonkSPA [5] = { SkillFlyingKick, SkillDragonPunch, SkillEagleStrike, SkillTigerClaw, SkillRoundKick };
MonkSpecialAttack(target, MonkSPA[MakeRandomInt(0,4)]);
int TripleChance = 25;
@@ -8586,7 +8586,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
did_attack = true;
}
if(skill_to_use == BACKSTAB)
if(skill_to_use == SkillBackstab)
{
reuse = BackstabReuseTime * 1000;
did_attack = true;
@@ -8600,10 +8600,10 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
classattack_timer.Start(reuse*HasteModifier/100);
}
bool Bot::TryHeadShot(Mob* defender, SkillType skillInUse) {
bool Bot::TryHeadShot(Mob* defender, SkillUseTypes skillInUse) {
bool Result = false;
if(defender && (defender->GetBodyType() == BT_Humanoid) && (skillInUse == ARCHERY) && (GetClass() == RANGER) && (GetLevel() >= 62)) {
if(defender && (defender->GetBodyType() == BT_Humanoid) && (skillInUse == SkillArchery) && (GetClass() == RANGER) && (GetLevel() >= 62)) {
int defenderLevel = defender->GetLevel();
int rangerLevel = GetLevel();
// Bot Ranger Headshot AA through level 85(Underfoot)
@@ -9036,7 +9036,7 @@ void Bot::SetAttackTimer() {
}
//clients must have the skill to use it...
if(!GetSkill(DUAL_WIELD)) {
if(!GetSkill(SkillDualWield)) {
attack_dw_timer.Disable();
continue;
}
@@ -10610,7 +10610,7 @@ int32 Bot::CalcManaRegen()
{
BuffFadeBySitModifier();
if(botclass != WARRIOR && botclass != MONK && botclass != ROGUE && botclass != BERSERKER) {
regen = (((GetSkill(MEDITATE) / 10) + (level - (level / 4))) / 4) + 4;
regen = (((GetSkill(SkillMeditate) / 10) + (level - (level / 4))) / 4) + 4;
regen += spellbonuses.ManaRegen + itembonuses.ManaRegen;
}
else
@@ -11572,7 +11572,7 @@ void Bot::CalcBotStats(bool showtext) {
// Test Code
if(GetClass() == BARD)
GetBotOwner()->Message(15, "Bard Skills-- Brass: %i, Percussion: %i, Singing: %i, Stringed: %i, Wind: %i",
GetSkill(BRASS_INSTRUMENTS), GetSkill(PERCUSSION_INSTRUMENTS), GetSkill(SINGING), GetSkill(STRINGED_INSTRUMENTS), GetSkill(WIND_INSTRUMENTS));
GetSkill(SkillBrassInstruments), GetSkill(SkillPercussionInstruments), GetSkill(SkillSinging), GetSkill(SkillStringedInstruments), GetSkill(SkillWindInstruments));
}
/*if(this->Save())
@@ -11591,11 +11591,11 @@ void Bot::CalcBotStats(bool showtext) {
// Test Code
if(GetClass() == BARD) {
GetBotOwner()->Message(15, "Bard Skills-- Brass: %i, Percussion: %i, Singing: %i, Stringed: %i, Wind: %i",
GetSkill(BRASS_INSTRUMENTS) + GetBrassMod(),
GetSkill(PERCUSSION_INSTRUMENTS) + GetPercMod(),
GetSkill(SINGING) + GetSingMod(),
GetSkill(STRINGED_INSTRUMENTS) + GetStringMod(),
GetSkill(WIND_INSTRUMENTS) + GetWindMod());
GetSkill(SkillBrassInstruments) + GetBrassMod(),
GetSkill(SkillPercussionInstruments) + GetPercMod(),
GetSkill(SkillSinging) + GetSingMod(),
GetSkill(SkillStringedInstruments) + GetStringMod(),
GetSkill(SkillWindInstruments) + GetWindMod());
GetBotOwner()->Message(15, "Bard Skill Mods-- Brass: %i, Percussion: %i, Singing: %i, Stringed: %i, Wind: %i", GetBrassMod(), GetPercMod(), GetSingMod(), GetStringMod(), GetWindMod());
}
}
@@ -15061,7 +15061,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
c->Message(13, "You must target a bot that you own.");
if(targetedBot) {
if(targetedBot->GetSkill(TAUNT) > 0) {
if(targetedBot->GetSkill(SkillTaunt) > 0) {
if(toggle)
taunt = !targetedBot->taunting;
@@ -16336,16 +16336,16 @@ void EntityList::BotPickLock(Bot* rogue)
float bonus1 = 0.0f;
float bonus2 = 0.0f;
float skill = rogue->GetSkill(PICK_LOCK);
float skill = rogue->GetSkill(SkillPickLock);
if(item1) { // Hand slot item
if(item1->GetItem()->SkillModType == PICK_LOCK) {
if(item1->GetItem()->SkillModType == SkillPickLock) {
bonus1 = skill * (((float)item1->GetItem()->SkillModValue) / 100.0f);
}
}
if(item2) { // Primary slot item
if(item2->GetItem()->SkillModType == PICK_LOCK) {
if(item2->GetItem()->SkillModType == SkillPickLock) {
bonus2 = skill * (((float)item2->GetItem()->SkillModValue) / 100.0f);
}
}
+10 -10
View File
@@ -134,8 +134,8 @@ public:
Bot(uint32 botID, uint32 botOwnerCharacterID, uint32 botSpellsID, double totalPlayTime, uint32 lastZoneId, NPCType npcTypeData);
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false, bool IsStrikethrough = false, bool IsFromSpell = false,
ExtraAttackOptions *opts = nullptr);
virtual bool HasRaid() { return (GetRaid() ? true : false); }
@@ -169,23 +169,23 @@ public:
virtual float GetProcChances(float &ProcBonus, float &ProcChance, uint16 weapon_speed, uint16 hand);
virtual bool AvoidDamage(Mob* other, int32 &damage, bool CanRiposte);
virtual int GetMonkHandToHandDamage(void);
virtual bool TryFinishingBlow(Mob *defender, SkillType skillinuse);
virtual bool TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse);
virtual void DoRiposte(Mob* defender);
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(OFFENSE)) * 9 / 10); }
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(SkillOffense)) * 9 / 10); }
inline virtual int16 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
uint16 GetTotalATK();
uint16 GetATKRating();
uint16 GetPrimarySkillValue();
uint16 MaxSkill(SkillType skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillType skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
virtual void DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool HitChance=false);
uint16 MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillUseTypes skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
virtual void DoSpecialAttackDamage(Mob *who, SkillUseTypes skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool HitChance=false);
virtual void TryBackstab(Mob *other,int ReuseTime = 10);
virtual void RogueBackstab(Mob* other, bool min_damage = false, int ReuseTime = 10);
virtual void RogueAssassinate(Mob* other);
virtual void DoClassAttacks(Mob *target, bool IsRiposte=false);
virtual bool TryHeadShot(Mob* defender, SkillType skillInUse);
virtual void DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skillinuse, int16 chance_mod=0, int16 focus=0, bool CanRiposte=false);
virtual void ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg);
virtual bool TryHeadShot(Mob* defender, SkillUseTypes skillInUse);
virtual void DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillUseTypes skillinuse, int16 chance_mod=0, int16 focus=0, bool CanRiposte=false);
virtual void ApplySpecialAttackMod(SkillUseTypes skill, int32 &dmg, int32 &mindmg);
bool CanDoSpecialAttack(Mob *other);
virtual int32 CheckAggroAmount(uint16 spellid);
virtual void CalcBonuses();
+36 -36
View File
@@ -1386,7 +1386,7 @@ bool Client::UpdateLDoNPoints(int32 points, uint32 theme)
return(false);
}
void Client::SetSkill(SkillType skillid, uint16 value) {
void Client::SetSkill(SkillUseTypes skillid, uint16 value) {
if (skillid > HIGHEST_SKILL)
return;
m_pp.skills[skillid] = value; // We need to be able to #setskill 254 and 255 to reset skills
@@ -1419,7 +1419,7 @@ void Client::IncreaseLanguageSkill(int skill_id, int value) {
Message_StringID( MT_Skills, LANG_SKILL_IMPROVED ); //Notify client
}
void Client::AddSkill(SkillType skillid, uint16 value) {
void Client::AddSkill(SkillUseTypes skillid, uint16 value) {
if (skillid > HIGHEST_SKILL)
return;
value = GetRawSkill(skillid) + value;
@@ -2295,7 +2295,7 @@ uint64 Client::GetAllMoney() {
(static_cast<uint64>(m_pp.platinum_shared) * 1000)))));
}
bool Client::CheckIncreaseSkill(SkillType skillid, Mob *against_who, int chancemodi) {
bool Client::CheckIncreaseSkill(SkillUseTypes skillid, Mob *against_who, int chancemodi) {
if (IsAIControlled()) // no skillups while chamred =p
return false;
if (skillid > HIGHEST_SKILL)
@@ -2357,24 +2357,24 @@ void Client::CheckLanguageSkillIncrease(uint8 langid, uint8 TeacherSkill) {
}
}
bool Client::HasSkill(SkillType skill_id) const {
bool Client::HasSkill(SkillUseTypes skill_id) const {
return((GetSkill(skill_id) > 0) && CanHaveSkill(skill_id));
}
bool Client::CanHaveSkill(SkillType skill_id) const {
bool Client::CanHaveSkill(SkillUseTypes skill_id) const {
return(database.GetSkillCap(GetClass(), skill_id, RuleI(Character, MaxLevel)) > 0);
//if you don't have it by max level, then odds are you never will?
}
uint16 Client::MaxSkill(SkillType skillid, uint16 class_, uint16 level) const {
uint16 Client::MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const {
return(database.GetSkillCap(class_, skillid, level));
}
uint8 Client::SkillTrainLevel(SkillType skillid, uint16 class_){
uint8 Client::SkillTrainLevel(SkillUseTypes skillid, uint16 class_){
return(database.GetTrainLevel(class_, skillid, RuleI(Character, MaxLevel)));
}
uint16 Client::GetMaxSkillAfterSpecializationRules(SkillType skillid, uint16 maxSkill)
uint16 Client::GetMaxSkillAfterSpecializationRules(SkillUseTypes skillid, uint16 maxSkill)
{
uint16 Result = maxSkill;
@@ -2384,13 +2384,13 @@ uint16 Client::GetMaxSkillAfterSpecializationRules(SkillType skillid, uint16 max
uint16 MaxSpecializations = GetAA(aaSecondaryForte) ? 2 : 1;
if(skillid >= SPECIALIZE_ABJURE && skillid <= SPECIALIZE_EVOCATION)
if(skillid >= SkillSpecializeAbjure && skillid <= SkillSpecializeEvocation)
{
bool HasPrimarySpecSkill = false;
int NumberOfPrimarySpecSkills = 0;
for(int i = SPECIALIZE_ABJURE; i <= SPECIALIZE_EVOCATION; ++i)
for(int i = SkillSpecializeAbjure; i <= SkillSpecializeEvocation; ++i)
{
if(m_pp.skills[i] > 50)
{
@@ -2447,8 +2447,8 @@ uint16 Client::GetMaxSkillAfterSpecializationRules(SkillType skillid, uint16 max
Message(13, "Your spell casting specializations skills have been reset. "
"Only %i primary specialization skill is allowed.", MaxSpecializations);
for(int i = SPECIALIZE_ABJURE; i <= SPECIALIZE_EVOCATION; ++i)
SetSkill((SkillType)i, 1);
for(int i = SkillSpecializeAbjure; i <= SkillSpecializeEvocation; ++i)
SetSkill((SkillUseTypes)i, 1);
Save();
@@ -2461,7 +2461,7 @@ uint16 Client::GetMaxSkillAfterSpecializationRules(SkillType skillid, uint16 max
// This should possibly be handled by bonuses rather than here.
switch(skillid)
{
case TRACKING:
case SkillTracking:
{
Result += ((GetAA(aaAdvancedTracking) * 10) + (GetAA(aaTuneofPursuance) * 10));
break;
@@ -2679,13 +2679,13 @@ bool Client::BindWound(Mob* bindmob, bool start, bool fail){
bind_out->type = 1; // Done
QueuePacket(outapp);
bind_out->type = 0;
CheckIncreaseSkill(BIND_WOUND, nullptr, 5);
CheckIncreaseSkill(SkillBindWound, nullptr, 5);
int maxHPBonus = spellbonuses.MaxBindWound + itembonuses.MaxBindWound + aabonuses.MaxBindWound;
int max_percent = 50 + 10 * maxHPBonus;
if(GetClass() == MONK && GetSkill(BIND_WOUND) > 200) {
if(GetClass() == MONK && GetSkill(SkillBindWound) > 200) {
max_percent = 70 + 10 * maxHPBonus;
}
@@ -2699,10 +2699,10 @@ bool Client::BindWound(Mob* bindmob, bool start, bool fail){
int bindhps = 3;
if (GetSkill(BIND_WOUND) > 200) {
bindhps += GetSkill(BIND_WOUND)*4/10;
} else if (GetSkill(BIND_WOUND) >= 10) {
bindhps += GetSkill(BIND_WOUND)/4;
if (GetSkill(SkillBindWound) > 200) {
bindhps += GetSkill(SkillBindWound)*4/10;
} else if (GetSkill(SkillBindWound) >= 10) {
bindhps += GetSkill(SkillBindWound)/4;
}
//Implementation of aaMithanielsBinding is a guess (the multiplier)
@@ -3700,7 +3700,7 @@ void Client::SendPickPocketResponse(Mob *from, uint32 amt, int type, const Item_
pick_out->coin = amt;
pick_out->from = GetID();
pick_out->to = from->GetID();
pick_out->myskill = GetSkill(PICK_POCKETS);
pick_out->myskill = GetSkill(SkillPickPockets);
if((type >= PickPocketPlatinum) && (type <= PickPocketCopper) && (amt == 0))
type = PickPocketFailed;
@@ -3973,11 +3973,11 @@ void Client::UpdateLFP() {
uint16 Client::GetPrimarySkillValue()
{
SkillType skill = HIGHEST_SKILL; //because nullptr == 0, which is 1H Slashing, & we want it to return 0 from GetSkill
SkillUseTypes skill = HIGHEST_SKILL; //because nullptr == 0, which is 1H Slashing, & we want it to return 0 from GetSkill
bool equiped = m_inv.GetItem(13);
if (!equiped)
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
else {
@@ -3987,42 +3987,42 @@ uint16 Client::GetPrimarySkillValue()
{
case ItemType1HSlash: // 1H Slashing
{
skill = _1H_SLASHING;
skill = Skill1HSlashing;
break;
}
case ItemType2HSlash: // 2H Slashing
{
skill = _2H_SLASHING;
skill = Skill2HSlashing;
break;
}
case ItemType1HPiercing: // Piercing
{
skill = PIERCING;
skill = Skill1HPiercing;
break;
}
case ItemType1HBlunt: // 1H Blunt
{
skill = _1H_BLUNT;
skill = Skill1HBlunt;
break;
}
case ItemType2HBlunt: // 2H Blunt
{
skill = _2H_BLUNT;
skill = Skill2HBlunt;
break;
}
case ItemType2HPiercing: // 2H Piercing
{
skill = PIERCING;
skill = Skill1HPiercing; // change to Skill2HPiercing once activated
break;
}
case ItemTypeMartial: // Hand to Hand
{
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
break;
}
default: // All other types default to Hand to Hand
{
skill = HAND_TO_HAND;
skill = SkillHandtoHand;
break;
}
}
@@ -4037,7 +4037,7 @@ uint16 Client::GetTotalATK()
uint16 WornCap = itembonuses.ATK;
if(IsClient()) {
AttackRating = ((WornCap * 1.342) + (GetSkill(OFFENSE) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69));
AttackRating = ((WornCap * 1.342) + (GetSkill(SkillOffense) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69));
AttackRating += aabonuses.ATK + GroupLeadershipAAOffenseEnhancement();
if (AttackRating < 10)
@@ -4055,7 +4055,7 @@ uint16 Client::GetATKRating()
{
uint16 AttackRating = 0;
if(IsClient()) {
AttackRating = (GetSkill(OFFENSE) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69);
AttackRating = (GetSkill(SkillOffense) * 1.345) + ((GetSTR() - 66) * 0.9) + (GetPrimarySkillValue() * 2.69);
if (AttackRating < 10)
AttackRating = 10;
@@ -4406,7 +4406,7 @@ void Client::HandleLDoNOpen(NPC *target)
AddEXP(target->GetLevel()*target->GetLevel()*2625/10, GetLevelCon(target->GetLevel()));
}
}
target->Death(this, 1, SPELL_UNKNOWN, HAND_TO_HAND);
target->Death(this, 1, SPELL_UNKNOWN, SkillHandtoHand);
}
}
}
@@ -4724,8 +4724,8 @@ void Client::ShowSkillsWindow()
const char *WindowTitle = "Skills";
std::string WindowText;
// using a map for easy alphabetizing of the skills list
std::map<std::string, SkillType> Skills;
std::map<std::string, SkillType>::iterator it;
std::map<std::string, SkillUseTypes> Skills;
std::map<std::string, SkillUseTypes>::iterator it;
// this list of names must keep the same order as that in common/skills.h
const char* SkillName[] = {"1H Blunt","1H Slashing","2H Blunt","2H Slashing","Abjuration","Alteration","Apply Poison","Archery",
@@ -4737,7 +4737,7 @@ void Client::ShowSkillsWindow()
"Alchemy","Baking","Tailoring","Sense Traps","Blacksmithing","Fletching","Brewing","Alcohol Tolerance","Begging","Jewelry Making",
"Pottery","Percussion Instruments","Intimidation","Berserking","Taunt","Frenzy"};
for(int i = 0; i <= (int)HIGHEST_SKILL; i++)
Skills[SkillName[i]] = (SkillType)i;
Skills[SkillName[i]] = (SkillUseTypes)i;
// print out all available skills
for(it = Skills.begin(); it != Skills.end(); it++) {
+19 -19
View File
@@ -212,8 +212,8 @@ public:
~Client();
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false, bool IsStrikethrough = false, bool IsFromSpell = false,
ExtraAttackOptions *opts = nullptr);
virtual bool HasRaid() { return (GetRaid() ? true : false); }
@@ -284,7 +284,7 @@ public:
void VoiceMacroReceived(uint32 Type, char *Target, uint32 MacroNumber);
void SendSound();
void LearnRecipe(uint32 recipeID);
bool CanIncreaseTradeskill(SkillType tradeskill);
bool CanIncreaseTradeskill(SkillUseTypes tradeskill);
EQApplicationPacket* ReturnItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType packet_type);
@@ -391,7 +391,7 @@ public:
virtual void CalcBonuses();
//these are all precalculated now
inline virtual int16 GetAC() const { return AC; }
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(OFFENSE)) * 9 / 10); }
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(SkillOffense)) * 9 / 10); }
inline virtual int16 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
inline virtual int GetHaste() const { return Haste; }
int GetRawACNoShield(int &shield_ac) const;
@@ -650,29 +650,29 @@ public:
void IncreaseSkill(int skill_id, int value = 1) { if (skill_id <= HIGHEST_SKILL) { m_pp.skills[skill_id] += value; } }
void IncreaseLanguageSkill(int skill_id, int value = 1);
virtual uint16 GetSkill(SkillType skill_id) const { if (skill_id <= HIGHEST_SKILL) { return((itembonuses.skillmod[skill_id] > 0)? m_pp.skills[skill_id]*(100 + itembonuses.skillmod[skill_id])/100 : m_pp.skills[skill_id]); } return 0; }
uint32 GetRawSkill(SkillType skill_id) const { if (skill_id <= HIGHEST_SKILL) { return(m_pp.skills[skill_id]); } return 0; }
bool HasSkill(SkillType skill_id) const;
bool CanHaveSkill(SkillType skill_id) const;
void SetSkill(SkillType skill_num, uint16 value);
void AddSkill(SkillType skillid, uint16 value);
virtual uint16 GetSkill(SkillUseTypes skill_id) const { if (skill_id <= HIGHEST_SKILL) { return((itembonuses.skillmod[skill_id] > 0)? m_pp.skills[skill_id]*(100 + itembonuses.skillmod[skill_id])/100 : m_pp.skills[skill_id]); } return 0; }
uint32 GetRawSkill(SkillUseTypes skill_id) const { if (skill_id <= HIGHEST_SKILL) { return(m_pp.skills[skill_id]); } return 0; }
bool HasSkill(SkillUseTypes skill_id) const;
bool CanHaveSkill(SkillUseTypes skill_id) const;
void SetSkill(SkillUseTypes skill_num, uint16 value);
void AddSkill(SkillUseTypes skillid, uint16 value);
void CheckSpecializeIncrease(uint16 spell_id);
void CheckSongSkillIncrease(uint16 spell_id);
bool CheckIncreaseSkill(SkillType skillid, Mob *against_who, int chancemodi = 0);
bool CheckIncreaseSkill(SkillUseTypes skillid, Mob *against_who, int chancemodi = 0);
void CheckLanguageSkillIncrease(uint8 langid, uint8 TeacherSkill);
void SetLanguageSkill(int langid, int value);
void SetHoTT(uint32 mobid);
void ShowSkillsWindow();
void SendStatsWindow(Client* client, bool use_window);
uint16 MaxSkill(SkillType skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillType skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
uint8 SkillTrainLevel(SkillType skillid, uint16 class_);
uint16 MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillUseTypes skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
uint8 SkillTrainLevel(SkillUseTypes skillid, uint16 class_);
void TradeskillSearchResults(const char *query, unsigned long qlen, unsigned long objtype, unsigned long someid);
void SendTradeskillDetails(uint32 recipe_id);
bool TradeskillExecute(DBTradeskillRecipe_Struct *spec);
void CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float skillup_modifier, uint16 success_modifier, SkillType tradeskill);
void CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float skillup_modifier, uint16 success_modifier, SkillUseTypes tradeskill);
void GMKill();
inline bool IsMedding() const {return medding;}
@@ -885,7 +885,7 @@ public:
int GetNextAvailableSpellBookSlot(int starting_slot = 0);
inline uint32 GetSpellByBookSlot(int book_slot) { return m_pp.spell_book[book_slot]; }
inline bool HasSpellScribed(int spellid) { return (FindSpellBookSlotBySpellID(spellid) != -1 ? true : false); }
uint16 GetMaxSkillAfterSpecializationRules(SkillType skillid, uint16 maxSkill);
uint16 GetMaxSkillAfterSpecializationRules(SkillUseTypes skillid, uint16 maxSkill);
void SendPopupToClient(const char *Title, const char *Text, uint32 PopupID = 0, uint32 Buttons = 0, uint32 Duration = 0);
void SendWindow(uint32 PopupID, uint32 NegativeID, uint32 Buttons, const char *ButtonName0, const char *ButtonName1, uint32 Duration, int title_type, Client* target, const char *Title, const char *Text, ...);
bool PendingTranslocate;
@@ -1153,11 +1153,11 @@ public:
int16 GetActCHA() { return( std::min(GetMaxCHA(), GetCHA()) ); }
void LoadAccountFlags();
void SetAccountFlag(std::string flag, std::string val);
std::string GetAccountFlag(std::string flag); float GetDamageMultiplier(SkillType);
std::string GetAccountFlag(std::string flag); float GetDamageMultiplier(SkillUseTypes);
void Consume(const Item_Struct *item, uint8 type, int16 slot, bool auto_consume);
int mod_client_damage(int damage, SkillType skillinuse, int hand, const ItemInst* weapon, Mob* other);
int mod_client_damage(int damage, SkillUseTypes skillinuse, int hand, const ItemInst* weapon, Mob* other);
bool mod_client_message(char* message, uint8 chan_num);
bool mod_can_increase_skill(SkillType skillid, Mob* against_who);
bool mod_can_increase_skill(SkillUseTypes skillid, Mob* against_who);
int16 mod_increase_skill_chance(int16 chance, Mob* against_who);
int mod_bindwound_percent(int max_percent, Mob* bindmob);
int mod_bindwound_hp(int bindhps, Mob* bindmob);
+21 -21
View File
@@ -855,7 +855,7 @@ int16 Client::acmod() {
int16 Client::CalcAC() {
// new formula
int avoidance = (acmod() + ((GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)*16)/9);
int avoidance = (acmod() + ((GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)*16)/9);
if (avoidance < 0)
avoidance = 0;
@@ -863,12 +863,12 @@ int16 Client::CalcAC() {
if (m_pp.class_ == WIZARD || m_pp.class_ == MAGICIAN || m_pp.class_ == NECROMANCER || m_pp.class_ == ENCHANTER) {
//something is wrong with this, naked casters have the wrong natural AC
// mitigation = (spellbonuses.AC/3) + (GetSkill(DEFENSE)/2) + (itembonuses.AC+1);
mitigation = (GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)/4 + (itembonuses.AC+1);
mitigation = (GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)/4 + (itembonuses.AC+1);
//this might be off by 4..
mitigation -= 4;
} else {
// mitigation = (spellbonuses.AC/4) + (GetSkill(DEFENSE)/3) + ((itembonuses.AC*4)/3);
mitigation = (GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)/3 + ((itembonuses.AC*4)/3);
mitigation = (GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)/3 + ((itembonuses.AC*4)/3);
if(m_pp.class_ == MONK)
mitigation += GetLevel() * 13/10; //the 13/10 might be wrong, but it is close...
}
@@ -907,11 +907,11 @@ int16 Client::GetACMit() {
int mitigation = 0;
if (m_pp.class_ == WIZARD || m_pp.class_ == MAGICIAN || m_pp.class_ == NECROMANCER || m_pp.class_ == ENCHANTER) {
mitigation = (GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)/4 + (itembonuses.AC+1);
mitigation = (GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)/4 + (itembonuses.AC+1);
mitigation -= 4;
}
else {
mitigation = (GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)/3 + ((itembonuses.AC*4)/3);
mitigation = (GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)/3 + ((itembonuses.AC*4)/3);
if(m_pp.class_ == MONK)
mitigation += GetLevel() * 13/10; //the 13/10 might be wrong, but it is close...
}
@@ -931,7 +931,7 @@ int16 Client::GetACMit() {
int16 Client::GetACAvoid() {
int avoidance = (acmod() + ((GetSkill(DEFENSE) + itembonuses.HeroicAGI/10)*16)/9);
int avoidance = (acmod() + ((GetSkill(SkillDefense) + itembonuses.HeroicAGI/10)*16)/9);
if (avoidance < 0)
avoidance = 0;
@@ -1099,8 +1099,8 @@ int32 Client::CalcBaseManaRegen()
int32 regen = 0;
if (IsSitting() || (GetHorseId() != 0))
{
if(HasSkill(MEDITATE))
regen = (((GetSkill(MEDITATE) / 10) + (clevel - (clevel / 4))) / 4) + 4;
if(HasSkill(SkillMeditate))
regen = (((GetSkill(SkillMeditate) / 10) + (clevel - (clevel / 4))) / 4) + 4;
else
regen = 2;
}
@@ -1118,11 +1118,11 @@ int32 Client::CalcManaRegen()
if (IsSitting() || (GetHorseId() != 0))
{
BuffFadeBySitModifier();
if(HasSkill(MEDITATE)) {
if(HasSkill(SkillMeditate)) {
this->medding = true;
regen = (((GetSkill(MEDITATE) / 10) + (clevel - (clevel / 4))) / 4) + 4;
regen = (((GetSkill(SkillMeditate) / 10) + (clevel - (clevel / 4))) / 4) + 4;
regen += spellbonuses.ManaRegen + itembonuses.ManaRegen;
CheckIncreaseSkill(MEDITATE, nullptr, -5);
CheckIncreaseSkill(SkillMeditate, nullptr, -5);
}
else
regen = 2 + spellbonuses.ManaRegen + itembonuses.ManaRegen;
@@ -1836,47 +1836,47 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
//item mods are in 10ths of percent increases
switch(spells[spell_id].skill) {
case PERCUSSION_INSTRUMENTS:
case SkillPercussionInstruments:
if(itembonuses.percussionMod == 0 && spellbonuses.percussionMod == 0)
effectmod = 10;
else if(GetSkill(PERCUSSION_INSTRUMENTS) == 0)
else if(GetSkill(SkillPercussionInstruments) == 0)
effectmod = 10;
else if(itembonuses.percussionMod > spellbonuses.percussionMod)
effectmod = itembonuses.percussionMod;
else
effectmod = spellbonuses.percussionMod;
break;
case STRINGED_INSTRUMENTS:
case SkillStringedInstruments:
if(itembonuses.stringedMod == 0 && spellbonuses.stringedMod == 0)
effectmod = 10;
else if(GetSkill(STRINGED_INSTRUMENTS) == 0)
else if(GetSkill(SkillStringedInstruments) == 0)
effectmod = 10;
else if(itembonuses.stringedMod > spellbonuses.stringedMod)
effectmod = itembonuses.stringedMod;
else
effectmod = spellbonuses.stringedMod;
break;
case WIND_INSTRUMENTS:
case SkillWindInstruments:
if(itembonuses.windMod == 0 && spellbonuses.windMod == 0)
effectmod = 10;
else if(GetSkill(WIND_INSTRUMENTS) == 0)
else if(GetSkill(SkillWindInstruments) == 0)
effectmod = 10;
else if(itembonuses.windMod > spellbonuses.windMod)
effectmod = itembonuses.windMod;
else
effectmod = spellbonuses.windMod;
break;
case BRASS_INSTRUMENTS:
case SkillBrassInstruments:
if(itembonuses.brassMod == 0 && spellbonuses.brassMod == 0)
effectmod = 10;
else if(GetSkill(BRASS_INSTRUMENTS) == 0)
else if(GetSkill(SkillBrassInstruments) == 0)
effectmod = 10;
else if(itembonuses.brassMod > spellbonuses.brassMod)
effectmod = itembonuses.brassMod;
else
effectmod = spellbonuses.brassMod;
break;
case SINGING:
case SkillSinging:
if(itembonuses.singingMod == 0 && spellbonuses.singingMod == 0)
effectmod = 10;
else if(itembonuses.singingMod > spellbonuses.singingMod)
@@ -1889,7 +1889,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
break;
}
if(spells[spell_id].skill == SINGING)
if(spells[spell_id].skill == SkillSinging)
{
effectmod += 2*GetAA(aaSingingMastery);
effectmod += 2*GetAA(aaImprovedSingingMastery);
+51 -51
View File
@@ -1232,7 +1232,7 @@ void Client::Handle_OP_ClientUpdate(const EQApplicationPacket *app)
if(IsTracking() && ((x_pos!=ppu->x_pos) || (y_pos!=ppu->y_pos))){
if(MakeRandomFloat(0, 100) < 70)//should be good
CheckIncreaseSkill(TRACKING, nullptr, -20);
CheckIncreaseSkill(SkillTracking, nullptr, -20);
}
// Break Hide if moving without sneaking and set rewind timer if moved
@@ -1275,7 +1275,7 @@ void Client::Handle_OP_ClientUpdate(const EQApplicationPacket *app)
{
if(zone->watermap->InLiquid(x_pos, y_pos, z_pos))
{
CheckIncreaseSkill(SWIMMING, nullptr, -17);
CheckIncreaseSkill(SkillSwimming, nullptr, -17);
}
}
@@ -2591,7 +2591,7 @@ void Client::Handle_OP_Begging(const EQApplicationPacket *app)
return;
}
if(!HasSkill(BEGGING) || !GetTarget())
if(!HasSkill(SkillBegging) || !GetTarget())
return;
if(GetTarget()->GetClass() == LDON_TREASURE)
@@ -2629,7 +2629,7 @@ void Client::Handle_OP_Begging(const EQApplicationPacket *app)
return;
}
uint16 CurrentSkill = GetSkill(BEGGING);
uint16 CurrentSkill = GetSkill(SkillBegging);
float ChanceToBeg=((float)(CurrentSkill/700.0f) + 0.15f) * 100;
@@ -2651,7 +2651,7 @@ void Client::Handle_OP_Begging(const EQApplicationPacket *app)
}
QueuePacket(outapp);
safe_delete(outapp);
CheckIncreaseSkill(BEGGING, nullptr, -10);
CheckIncreaseSkill(SkillBegging, nullptr, -10);
}
void Client::Handle_OP_TestBuff(const EQApplicationPacket *app)
@@ -2914,7 +2914,7 @@ void Client::Handle_OP_SpawnAppearance(const EQApplicationPacket *app)
if (sa->type == AT_Invis) {
if(sa->parameter != 0)
{
if(!HasSkill(HIDE) && GetSkill(HIDE) == 0)
if(!HasSkill(SkillHide) && GetSkill(SkillHide) == 0)
{
if(GetClientVersion() < EQClientSoF)
{
@@ -3015,7 +3015,7 @@ void Client::Handle_OP_SpawnAppearance(const EQApplicationPacket *app)
else if (sa->type == AT_Sneak) {
if(sa->parameter != 0)
{
if(!HasSkill(SNEAK))
if(!HasSkill(SkillSneak))
{
char *hack_str = nullptr;
MakeAnyLenString(&hack_str, "Player sent OP_SpawnAppearance with AT_Sneak: %i", sa->parameter);
@@ -3099,7 +3099,7 @@ void Client::Handle_OP_Death(const EQApplicationPacket *app)
return;
Mob* killer = entity_list.GetMob(ds->killer_id);
Death(killer, ds->damage, ds->spell_id, (SkillType)ds->attack_skill);
Death(killer, ds->damage, ds->spell_id, (SkillUseTypes)ds->attack_skill);
return;
}
@@ -3354,8 +3354,8 @@ void Client::Handle_OP_FeignDeath(const EQApplicationPacket *app)
//BreakInvis();
uint16 primfeign = GetSkill(FEIGN_DEATH);
uint16 secfeign = GetSkill(FEIGN_DEATH);
uint16 primfeign = GetSkill(SkillFeignDeath);
uint16 secfeign = GetSkill(SkillFeignDeath);
if (primfeign > 100) {
primfeign = 100;
secfeign = secfeign - 100;
@@ -3373,13 +3373,13 @@ void Client::Handle_OP_FeignDeath(const EQApplicationPacket *app)
SetFeigned(true);
}
CheckIncreaseSkill(FEIGN_DEATH, nullptr, 5);
CheckIncreaseSkill(SkillFeignDeath, nullptr, 5);
return;
}
void Client::Handle_OP_Sneak(const EQApplicationPacket *app)
{
if(!HasSkill(SNEAK) && GetSkill(SNEAK) == 0) {
if(!HasSkill(SkillSneak) && GetSkill(SkillSneak) == 0) {
return; //You cannot sneak if you do not have sneak
}
@@ -3403,9 +3403,9 @@ void Client::Handle_OP_Sneak(const EQApplicationPacket *app)
safe_delete(outapp);
}
else {
CheckIncreaseSkill(SNEAK, nullptr, 5);
CheckIncreaseSkill(SkillSneak, nullptr, 5);
}
float hidechance = ((GetSkill(SNEAK)/300.0f) + .25) * 100;
float hidechance = ((GetSkill(SkillSneak)/300.0f) + .25) * 100;
float random = MakeRandomFloat(0, 99);
if(!was && random < hidechance) {
sneaking = true;
@@ -3434,7 +3434,7 @@ void Client::Handle_OP_Sneak(const EQApplicationPacket *app)
void Client::Handle_OP_Hide(const EQApplicationPacket *app)
{
if(!HasSkill(HIDE) && GetSkill(HIDE) == 0)
if(!HasSkill(SkillHide) && GetSkill(SkillHide) == 0)
{
//Can not be able to train hide but still have it from racial though
return; //You cannot hide if you do not have hide
@@ -3447,9 +3447,9 @@ void Client::Handle_OP_Hide(const EQApplicationPacket *app)
int reuse = HideReuseTime - GetAA(209);
p_timers.Start(pTimerHide, reuse-1);
float hidechance = ((GetSkill(HIDE)/250.0f) + .25) * 100;
float hidechance = ((GetSkill(SkillHide)/250.0f) + .25) * 100;
float random = MakeRandomFloat(0, 100);
CheckIncreaseSkill(HIDE, nullptr, 5);
CheckIncreaseSkill(SkillHide, nullptr, 5);
if (random < hidechance) {
EQApplicationPacket* outapp = new EQApplicationPacket(OP_SpawnAppearance, sizeof(SpawnAppearance_Struct));
SpawnAppearance_Struct* sa_out = (SpawnAppearance_Struct*)outapp->pBuffer;
@@ -3470,7 +3470,7 @@ void Client::Handle_OP_Hide(const EQApplicationPacket *app)
SimpleMessage_Struct *msg=(SimpleMessage_Struct *)outapp->pBuffer;
msg->color=0x010E;
if (!auto_attack && entity_list.Fighting(this)) {
if (MakeRandomInt(0, 260) < (int)GetSkill(HIDE)) {
if (MakeRandomInt(0, 260) < (int)GetSkill(SkillHide)) {
msg->string_id=343;
entity_list.Evade(this);
} else {
@@ -3753,14 +3753,14 @@ void Client::Handle_OP_LDoNSenseTraps(const EQApplicationPacket *app)
Mob * target = GetTarget();
if(target->IsNPC())
{
if(HasSkill(SENSE_TRAPS))
if(HasSkill(SkillSenseTraps))
{
if(DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
Message(13, "%s is too far away.", target->GetCleanName());
return;
}
HandleLDoNSenseTraps(target->CastToNPC(), GetSkill(SENSE_TRAPS), LDoNTypeMechanical);
HandleLDoNSenseTraps(target->CastToNPC(), GetSkill(SkillSenseTraps), LDoNTypeMechanical);
}
else
Message(13, "You do not have the sense traps skill.");
@@ -3772,14 +3772,14 @@ void Client::Handle_OP_LDoNDisarmTraps(const EQApplicationPacket *app)
Mob * target = GetTarget();
if(target->IsNPC())
{
if(HasSkill(DISARM_TRAPS))
if(HasSkill(SkillDisarmTraps))
{
if(DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
Message(13, "%s is too far away.", target->GetCleanName());
return;
}
HandleLDoNDisarm(target->CastToNPC(), GetSkill(DISARM_TRAPS), LDoNTypeMechanical);
HandleLDoNDisarm(target->CastToNPC(), GetSkill(SkillDisarmTraps), LDoNTypeMechanical);
}
else
Message(13, "You do not have the disarm trap skill.");
@@ -3791,14 +3791,14 @@ void Client::Handle_OP_LDoNPickLock(const EQApplicationPacket *app)
Mob * target = GetTarget();
if(target->IsNPC())
{
if(HasSkill(PICK_LOCK))
if(HasSkill(SkillPickLock))
{
if(DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
Message(13, "%s is too far away.", target->GetCleanName());
return;
}
HandleLDoNPickLock(target->CastToNPC(), GetSkill(PICK_LOCK), LDoNTypeMechanical);
HandleLDoNPickLock(target->CastToNPC(), GetSkill(SkillPickLock), LDoNTypeMechanical);
}
else
Message(13, "You do not have the pick locks skill.");
@@ -4643,9 +4643,9 @@ void Client::Handle_OP_DeleteItem(const EQApplicationPacket *app)
const ItemInst *inst = GetInv().GetItem(alc->from_slot);
if (inst && inst->GetItem()->ItemType == ItemTypeAlcohol) {
entity_list.MessageClose_StringID(this, true, 50, 0, DRINKING_MESSAGE, GetName(), inst->GetItem()->Name);
CheckIncreaseSkill(ALCOHOL_TOLERANCE, nullptr, 25);
CheckIncreaseSkill(SkillAlcoholTolerance, nullptr, 25);
int16 AlcoholTolerance = GetSkill(ALCOHOL_TOLERANCE);
int16 AlcoholTolerance = GetSkill(SkillAlcoholTolerance);
int16 IntoxicationIncrease;
if(GetClientVersion() < EQClientSoD)
@@ -7574,7 +7574,7 @@ void Client::Handle_OP_Forage(const EQApplicationPacket *app)
void Client::Handle_OP_Mend(const EQApplicationPacket *app)
{
if(!HasSkill(MEND))
if(!HasSkill(SkillMend))
return;
if(!p_timers.Expired(&database, pTimerMend, false)) {
@@ -7585,7 +7585,7 @@ void Client::Handle_OP_Mend(const EQApplicationPacket *app)
int mendhp = GetMaxHP() / 4;
int currenthp = GetHP();
if (MakeRandomInt(0, 199) < (int)GetSkill(MEND)) {
if (MakeRandomInt(0, 199) < (int)GetSkill(SkillMend)) {
int criticalchance = 0;
switch(GetAA(aaCriticalMend)){
case 1:
@@ -7614,7 +7614,7 @@ void Client::Handle_OP_Mend(const EQApplicationPacket *app)
0 skill - 25% chance to worsen
20 skill - 23% chance to worsen
50 skill - 16% chance to worsen */
if ((GetSkill(MEND) <= 75) && (MakeRandomInt(GetSkill(MEND),100) < 75) && (MakeRandomInt(1, 3) == 1))
if ((GetSkill(SkillMend) <= 75) && (MakeRandomInt(GetSkill(SkillMend),100) < 75) && (MakeRandomInt(1, 3) == 1))
{
SetHP(currenthp > mendhp ? (GetHP() - mendhp) : 1);
SendHPUpdate();
@@ -7624,7 +7624,7 @@ void Client::Handle_OP_Mend(const EQApplicationPacket *app)
Message_StringID(4,MEND_FAIL);
}
CheckIncreaseSkill(MEND, nullptr, 10);
CheckIncreaseSkill(SkillMend, nullptr, 10);
return;
}
@@ -7682,7 +7682,7 @@ void Client::Handle_OP_EnvDamage(const EQApplicationPacket *app)
{
mod_client_death_env();
Death(0, 32000, SPELL_UNKNOWN, HAND_TO_HAND);
Death(0, 32000, SPELL_UNKNOWN, SkillHandtoHand);
}
SendHPUpdate();
return;
@@ -7700,7 +7700,7 @@ void Client::Handle_OP_Damage(const EQApplicationPacket *app)
// Broadcast to other clients
CombatDamage_Struct* damage = (CombatDamage_Struct*)app->pBuffer;
//dont send to originator of falling damage packets
entity_list.QueueClients(this, app, (damage->type==FallingDamageType));
entity_list.QueueClients(this, app, (damage->type==DamageTypeFalling));
return;
}
@@ -7958,7 +7958,7 @@ void Client::Handle_OP_PickPocket(const EQApplicationPacket *app)
DumpPacket(app);
}
if(!HasSkill(PICK_POCKETS))
if(!HasSkill(SkillPickPockets))
{
return;
}
@@ -7983,7 +7983,7 @@ void Client::Handle_OP_PickPocket(const EQApplicationPacket *app)
pick_out->coin = 0;
pick_out->from = victim->GetID();
pick_out->to = GetID();
pick_out->myskill = GetSkill(PICK_POCKETS);
pick_out->myskill = GetSkill(SkillPickPockets);
pick_out->type = 0;
//if we do not send this packet the client will lock up and require the player to relog.
QueuePacket(outapp);
@@ -7996,7 +7996,7 @@ void Client::Handle_OP_PickPocket(const EQApplicationPacket *app)
pick_out->coin = 0;
pick_out->from = victim->GetID();
pick_out->to = GetID();
pick_out->myskill = GetSkill(PICK_POCKETS);
pick_out->myskill = GetSkill(SkillPickPockets);
pick_out->type = 0;
//if we do not send this packet the client will lock up and require the player to relog.
QueuePacket(outapp);
@@ -8012,7 +8012,7 @@ void Client::Handle_OP_PickPocket(const EQApplicationPacket *app)
pick_out->coin = 0;
pick_out->from = victim->GetID();
pick_out->to = GetID();
pick_out->myskill = GetSkill(PICK_POCKETS);
pick_out->myskill = GetSkill(SkillPickPockets);
pick_out->type = 0;
//if we do not send this packet the client will lock up and require the player to relog.
QueuePacket(outapp);
@@ -8062,10 +8062,10 @@ void Client::Handle_OP_Track(const EQApplicationPacket *app)
if(GetClass() != RANGER && GetClass() != DRUID && GetClass() != BARD)
return;
if( GetSkill(TRACKING)==0 )
SetSkill(TRACKING,1);
if( GetSkill(SkillTracking)==0 )
SetSkill(SkillTracking,1);
else
CheckIncreaseSkill(TRACKING, nullptr, 15);
CheckIncreaseSkill(SkillTracking, nullptr, 15);
if(!entity_list.MakeTrackPacket(this))
LogFile->write(EQEMuLog::Error, "Unable to generate OP_Track packet requested by client.");
@@ -8145,7 +8145,7 @@ void Client::Handle_OP_Split(const EQApplicationPacket *app)
void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app)
{
if (!HasSkill(SENSE_TRAPS))
if (!HasSkill(SkillSenseTraps))
return;
if(!p_timers.Expired(&database, pTimerSenseTraps, false)) {
@@ -8168,10 +8168,10 @@ void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app)
Trap* trap = entity_list.FindNearbyTrap(this,800);
CheckIncreaseSkill(SENSE_TRAPS, nullptr);
CheckIncreaseSkill(SkillSenseTraps, nullptr);
if (trap && trap->skill > 0) {
int uskill = GetSkill(SENSE_TRAPS);
int uskill = GetSkill(SkillSenseTraps);
if ((MakeRandomInt(0,99) + uskill) >= (MakeRandomInt(0,99) + trap->skill*0.75))
{
float xdif = trap->x - GetX();
@@ -8212,7 +8212,7 @@ void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app)
void Client::Handle_OP_DisarmTraps(const EQApplicationPacket *app)
{
if (!HasSkill(DISARM_TRAPS))
if (!HasSkill(SkillDisarmTraps))
return;
if(!p_timers.Expired(&database, pTimerDisarmTraps, false)) {
@@ -8236,7 +8236,7 @@ void Client::Handle_OP_DisarmTraps(const EQApplicationPacket *app)
Trap* trap = entity_list.FindNearbyTrap(this,60);
if (trap && trap->detected)
{
int uskill = GetSkill(DISARM_TRAPS);
int uskill = GetSkill(SkillDisarmTraps);
if ((MakeRandomInt(0, 49) + uskill) >= (MakeRandomInt(0, 49) + trap->skill))
{
Message(MT_Skills,"You disarm a trap.");
@@ -8254,7 +8254,7 @@ void Client::Handle_OP_DisarmTraps(const EQApplicationPacket *app)
Message(MT_Skills,"You failed to disarm a trap.");
}
}
CheckIncreaseSkill(DISARM_TRAPS, nullptr);
CheckIncreaseSkill(SkillDisarmTraps, nullptr);
return;
}
Message(MT_Skills,"You did not find any traps close enough to disarm.");
@@ -8476,8 +8476,8 @@ void Client::Handle_OP_SetRunMode(const EQApplicationPacket *app)
void Client::Handle_OP_SafeFallSuccess(const EQApplicationPacket *app) // bit of a misnomer, sent whenever safe fall is used (success of fail)
{
if(HasSkill(SAFE_FALL)) //this should only get called if the client has safe fall, but just in case...
CheckIncreaseSkill(SAFE_FALL, nullptr); //check for skill up
if(HasSkill(SkillSafeFall)) //this should only get called if the client has safe fall, but just in case...
CheckIncreaseSkill(SkillSafeFall, nullptr); //check for skill up
}
void Client::Handle_OP_Heartbeat(const EQApplicationPacket *app)
@@ -8910,8 +8910,8 @@ bool Client::FinishConnState2(DBAsyncWork* dbaw) {
if(m_pp.ldon_points_available > 0x77359400)
m_pp.ldon_points_available = 0x77359400;
if(GetSkill(SWIMMING) < 100)
SetSkill(SWIMMING,100);
if(GetSkill(SkillSwimming) < 100)
SetSkill(SkillSwimming,100);
//pull AAs from the PP
for(uint32 a=0; a < MAX_PP_AA_ARRAY; a++){
@@ -11031,10 +11031,10 @@ void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) {
{
if ((PrimaryWeapon && PrimaryWeapon->GetItem()->ItemType == ItemType1HPiercing) ||
(SecondaryWeapon && SecondaryWeapon->GetItem()->ItemType == ItemType1HPiercing)) {
float SuccessChance = (GetSkill(APPLY_POISON) + GetLevel()) / 400.0f;
float SuccessChance = (GetSkill(SkillApplyPoison) + GetLevel()) / 400.0f;
double ChanceRoll = MakeRandomFloat(0, 1);
CheckIncreaseSkill(APPLY_POISON, nullptr, 10);
CheckIncreaseSkill(SkillApplyPoison, nullptr, 10);
if(ChanceRoll < SuccessChance) {
ApplyPoisonSuccessResult = 1;
+25 -25
View File
@@ -405,7 +405,7 @@ bool Client::Process() {
bool tripleAttackSuccess = false;
if( auto_attack_target && CanThisClassDoubleAttack() ) {
CheckIncreaseSkill(DOUBLE_ATTACK, auto_attack_target, -10);
CheckIncreaseSkill(SkillDoubleAttack, auto_attack_target, -10);
if(CheckDoubleAttack()) {
//should we allow rampage on double attack?
if(CheckAAEffect(aaEffectRampage)) {
@@ -494,12 +494,12 @@ bool Client::Process() {
float DualWieldProbability = 0.0f;
int16 Ambidexterity = aabonuses.Ambidexterity + spellbonuses.Ambidexterity + itembonuses.Ambidexterity;
DualWieldProbability = (GetSkill(DUAL_WIELD) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
DualWieldProbability = (GetSkill(SkillDualWield) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
int16 DWBonus = spellbonuses.DualWieldChance + itembonuses.DualWieldChance;
DualWieldProbability += DualWieldProbability*float(DWBonus)/ 100.0f;
float random = MakeRandomFloat(0, 1);
CheckIncreaseSkill(DUAL_WIELD, auto_attack_target, -10);
CheckIncreaseSkill(SkillDualWield, auto_attack_target, -10);
if (random < DualWieldProbability){ // Max 78% of DW
if(CheckAAEffect(aaEffectRampage)) {
entity_list.AEAttack(this, 30, 14);
@@ -1589,9 +1589,9 @@ void Client::OPGMTraining(const EQApplicationPacket *app)
if(DistNoRoot(*pTrainer) > USE_NPC_RANGE2)
return;
SkillType sk;
for (sk = _1H_BLUNT; sk <= HIGHEST_SKILL; sk = (SkillType)(sk+1)) {
if(sk == TINKERING && GetRace() != GNOME) {
SkillUseTypes sk;
for (sk = Skill1HBlunt; sk <= HIGHEST_SKILL; sk = (SkillUseTypes)(sk+1)) {
if(sk == SkillTinkering && GetRace() != GNOME) {
gmtrain->skills[sk] = 0; //Non gnomes can't tinker!
} else {
gmtrain->skills[sk] = GetMaxSkillAfterSpecializationRules(sk, MaxSkill(sk, GetClass(), RuleI(Character, MaxLevel)));
@@ -1688,7 +1688,7 @@ void Client::OPGMTrainSkill(const EQApplicationPacket *app)
return;
}
SkillType skill = (SkillType) gmskill->skill_id;
SkillUseTypes skill = (SkillUseTypes) gmskill->skill_id;
if(!CanHaveSkill(skill)) {
mlog(CLIENT__ERROR, "Tried to train skill %d, which is not allowed.", skill);
@@ -1712,27 +1712,27 @@ void Client::OPGMTrainSkill(const EQApplicationPacket *app)
SetSkill(skill, t_level);
} else {
switch(skill) {
case BREWING:
case MAKE_POISON:
case TINKERING:
case RESEARCH:
case ALCHEMY:
case BAKING:
case TAILORING:
case BLACKSMITHING:
case FLETCHING:
case JEWELRY_MAKING:
case POTTERY:
case SkillBrewing:
case SkillMakePoison:
case SkillTinkering:
case SkillResearch:
case SkillAlchemy:
case SkillBaking:
case SkillTailoring:
case SkillBlacksmithing:
case SkillFletching:
case SkillJewelryMaking:
case SkillPottery:
if(skilllevel >= RuleI(Skills, MaxTrainTradeskills)) {
Message_StringID(13, MORE_SKILLED_THAN_I, pTrainer->GetCleanName());
return;
}
break;
case SPECIALIZE_ABJURE:
case SPECIALIZE_ALTERATION:
case SPECIALIZE_CONJURATION:
case SPECIALIZE_DIVINATION:
case SPECIALIZE_EVOCATION:
case SkillSpecializeAbjure:
case SkillSpecializeAlteration:
case SkillSpecializeConjuration:
case SkillSpecializeDivination:
case SkillSpecializeEvocation:
if(skilllevel >= RuleI(Skills, MaxTrainSpecializations)) {
Message_StringID(13, MORE_SKILLED_THAN_I, pTrainer->GetCleanName());
return;
@@ -1749,7 +1749,7 @@ void Client::OPGMTrainSkill(const EQApplicationPacket *app)
return;
}
if(gmskill->skill_id >= SPECIALIZE_ABJURE && gmskill->skill_id <= SPECIALIZE_EVOCATION)
if(gmskill->skill_id >= SkillSpecializeAbjure && gmskill->skill_id <= SkillSpecializeEvocation)
{
int MaxSpecSkill = GetMaxSkillAfterSpecializationRules(skill, MaxSkillValue);
if (skilllevel >= MaxSpecSkill)
@@ -1787,7 +1787,7 @@ void Client::OPGMTrainSkill(const EQApplicationPacket *app)
gmtsc->SkillID += 100;
}
else
gmtsc->NewSkill = (GetRawSkill((SkillType)gmtsc->SkillID) == 1);
gmtsc->NewSkill = (GetRawSkill((SkillUseTypes)gmtsc->SkillID) == 1);
gmtsc->Cost = Cost;
+15 -15
View File
@@ -2462,7 +2462,7 @@ void command_showskills(Client *c, const Seperator *sep)
t=c->GetTarget()->CastToClient();
c->Message(0, "Skills for %s", t->GetName());
for (SkillType i=_1H_BLUNT; i <= HIGHEST_SKILL; i=(SkillType)(i+1))
for (SkillUseTypes i=Skill1HBlunt; i <= HIGHEST_SKILL; i=(SkillUseTypes)(i+1))
c->Message(0, "Skill [%d] is at [%d]", i, t->GetSkill(i));
}
@@ -2623,7 +2623,7 @@ void command_setskill(Client *c, const Seperator *sep)
int skill_num = atoi(sep->arg[1]);
uint16 skill_value = atoi(sep->arg[2]);
if(skill_num < HIGHEST_SKILL)
c->GetTarget()->CastToClient()->SetSkill((SkillType)skill_num, skill_value);
c->GetTarget()->CastToClient()->SetSkill((SkillUseTypes)skill_num, skill_value);
}
}
@@ -2641,7 +2641,7 @@ void command_setskillall(Client *c, const Seperator *sep)
if (c->Admin() >= commandSetSkillsOther || c->GetTarget()==c || c->GetTarget()==0) {
LogFile->write(EQEMuLog::Normal,"Set ALL skill request from %s, target:%s", c->GetName(), c->GetTarget()->GetName());
uint16 level = atoi(sep->arg[1]);
for(SkillType skill_num=_1H_BLUNT;skill_num <= HIGHEST_SKILL;skill_num=(SkillType)(skill_num+1)) {
for(SkillUseTypes skill_num=Skill1HBlunt;skill_num <= HIGHEST_SKILL;skill_num=(SkillUseTypes)(skill_num+1)) {
c->GetTarget()->CastToClient()->SetSkill(skill_num, level);
}
}
@@ -4586,7 +4586,7 @@ void command_damage(Client *c, const Seperator *sep)
if (nkdmg > 2100000000)
c->Message(0, "Enter a value less then 2,100,000,000.");
else
c->GetTarget()->Damage(c, nkdmg, SPELL_UNKNOWN, HAND_TO_HAND, false);
c->GetTarget()->Damage(c, nkdmg, SPELL_UNKNOWN, SkillHandtoHand, false);
}
}
@@ -5302,7 +5302,7 @@ void command_manaburn(Client *c, const Seperator *sep)
int nukedmg=(c->GetMana())*2;
if (nukedmg>0)
{
target->Damage(c, nukedmg, 2751, ABJURE/*hackish*/);
target->Damage(c, nukedmg, 2751, SkillAbjuration/*hackish*/);
c->Message(4,"You unleash an enormous blast of magical energies.");
}
LogFile->write(EQEMuLog::Normal,"Manaburn request from %s, damage: %d", c->GetName(), nukedmg);
@@ -11042,14 +11042,14 @@ void command_max_all_skills(Client *c, const Seperator *sep)
{
for(int i = 0; i <= HIGHEST_SKILL; ++i)
{
if(i >= SPECIALIZE_ABJURE && i <= SPECIALIZE_EVOCATION)
if(i >= SkillSpecializeAbjure && i <= SkillSpecializeEvocation)
{
c->SetSkill((SkillType)i, 50);
c->SetSkill((SkillUseTypes)i, 50);
}
else
{
int max_skill_level = database.GetSkillCap(c->GetClass(), (SkillType)i, c->GetLevel());
c->SetSkill((SkillType)i, max_skill_level);
int max_skill_level = database.GetSkillCap(c->GetClass(), (SkillUseTypes)i, c->GetLevel());
c->SetSkill((SkillUseTypes)i, max_skill_level);
}
}
}
@@ -11139,14 +11139,14 @@ void command_disarmtrap(Client *c, const Seperator *sep)
if(target->IsNPC())
{
if(c->HasSkill(DISARM_TRAPS))
if(c->HasSkill(SkillDisarmTraps))
{
if(c->DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
c->Message(13, "%s is too far away.", target->GetCleanName());
return;
}
c->HandleLDoNDisarm(target->CastToNPC(), c->GetSkill(DISARM_TRAPS), LDoNTypeMechanical);
c->HandleLDoNDisarm(target->CastToNPC(), c->GetSkill(SkillDisarmTraps), LDoNTypeMechanical);
}
else
c->Message(13, "You do not have the disarm trap skill.");
@@ -11164,14 +11164,14 @@ void command_sensetrap(Client *c, const Seperator *sep)
if(target->IsNPC())
{
if(c->HasSkill(SENSE_TRAPS))
if(c->HasSkill(SkillSenseTraps))
{
if(c->DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
c->Message(13, "%s is too far away.", target->GetCleanName());
return;
}
c->HandleLDoNSenseTraps(target->CastToNPC(), c->GetSkill(SENSE_TRAPS), LDoNTypeMechanical);
c->HandleLDoNSenseTraps(target->CastToNPC(), c->GetSkill(SkillSenseTraps), LDoNTypeMechanical);
}
else
c->Message(13, "You do not have the sense traps skill.");
@@ -11189,14 +11189,14 @@ void command_picklock(Client *c, const Seperator *sep)
if(target->IsNPC())
{
if(c->HasSkill(PICK_LOCK))
if(c->HasSkill(SkillPickLock))
{
if(c->DistNoRootNoZ(*target) > RuleI(Adventure, LDoNTrapDistanceUse))
{
c->Message(13, "%s is too far away.", target->GetCleanName());
return;
}
c->HandleLDoNPickLock(target->CastToNPC(), c->GetSkill(PICK_LOCK), LDoNTypeMechanical);
c->HandleLDoNPickLock(target->CastToNPC(), c->GetSkill(SkillPickLock), LDoNTypeMechanical);
}
else
c->Message(13, "You do not have the pick locks skill.");
+2 -2
View File
@@ -39,8 +39,8 @@ public:
~Corpse();
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill) { return true; }
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false) { return; }
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) { return true; }
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false) { return; }
virtual bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false, bool IsStrikethrough = true, bool IsFromSpell = false,
ExtraAttackOptions *opts = nullptr) { return false; }
virtual bool HasRaid() { return false; }
+3 -3
View File
@@ -292,12 +292,12 @@ void Doors::HandleClick(Client* sender, uint8 trigger)
}
else if(lockpicks != nullptr)
{
if(sender->GetSkill(PICK_LOCK))
if(sender->GetSkill(SkillPickLock))
{
if(lockpicks->GetItem()->ItemType == ItemTypeLockPick)
{
float modskill=sender->GetSkill(PICK_LOCK);
sender->CheckIncreaseSkill(PICK_LOCK, nullptr, 1);
float modskill=sender->GetSkill(SkillPickLock);
sender->CheckIncreaseSkill(SkillPickLock, nullptr, 1);
#if EQDEBUG>=5
LogFile->write(EQEMuLog::Debug, "Client has lockpicks: skill=%f", modskill);
+3 -3
View File
@@ -3234,11 +3234,11 @@ bool EntityList::MakeTrackPacket(Client* client)
float MobDistance;
if(client->GetClass() == DRUID)
distance = (client->GetSkill(TRACKING)*10);
distance = (client->GetSkill(SkillTracking)*10);
else if(client->GetClass() == RANGER)
distance = (client->GetSkill(TRACKING)*12);
distance = (client->GetSkill(SkillTracking)*12);
else if(client->GetClass() == BARD)
distance = (client->GetSkill(TRACKING)*7);
distance = (client->GetSkill(SkillTracking)*7);
if(distance <= 0)
return false;
if(distance<300)
+6 -6
View File
@@ -294,7 +294,7 @@ void Client::GoFish()
//success formula is not researched at all
int fishing_skill = GetSkill(FISHING); //will take into account skill bonuses on pole & bait
int fishing_skill = GetSkill(SkillFishing); //will take into account skill bonuses on pole & bait
//make sure we still have a fishing pole on:
int32 bslot = m_inv.HasItemByUse(ItemTypeFishingBait, 1, invWhereWorn|invWherePersonal);
@@ -303,7 +303,7 @@ void Client::GoFish()
Bait = m_inv.GetItem(bslot);
//if the bait isnt equipped, need to add its skill bonus
if(bslot >= IDX_INV && Bait->GetItem()->SkillModType == FISHING) {
if(bslot >= IDX_INV && Bait->GetItem()->SkillModType == SkillFishing) {
fishing_skill += Bait->GetItem()->SkillModValue;
}
@@ -398,16 +398,16 @@ void Client::GoFish()
DeleteItemInInventory(13,0,true);
}
if(CheckIncreaseSkill(FISHING, nullptr, 5))
if(CheckIncreaseSkill(SkillFishing, nullptr, 5))
{
if(title_manager.IsNewTradeSkillTitleAvailable(FISHING, GetRawSkill(FISHING)))
if(title_manager.IsNewTradeSkillTitleAvailable(SkillFishing, GetRawSkill(SkillFishing)))
NotifyNewTitlesAvailable();
}
}
void Client::ForageItem(bool guarantee) {
int skill_level = GetSkill(FORAGE);
int skill_level = GetSkill(SkillForage);
//be wary of the string ids in switch below when changing this.
uint32 common_food_ids[MAX_COMMON_FOOD_IDS] = {
@@ -498,7 +498,7 @@ void Client::ForageItem(bool guarantee) {
parse->EventPlayer(EVENT_FORAGE_FAILURE, this, "", 0);
}
CheckIncreaseSkill(FORAGE, nullptr, 5);
CheckIncreaseSkill(SkillForage, nullptr, 5);
}
+8 -8
View File
@@ -422,27 +422,27 @@ void Lua_Client::IncreaseLanguageSkill(int skill_id, int value) {
int Lua_Client::GetRawSkill(int skill_id) {
Lua_Safe_Call_Int();
return self->GetRawSkill(static_cast<SkillType>(skill_id));
return self->GetRawSkill(static_cast<SkillUseTypes>(skill_id));
}
bool Lua_Client::HasSkill(int skill_id) {
Lua_Safe_Call_Bool();
return self->HasSkill(static_cast<SkillType>(skill_id));
return self->HasSkill(static_cast<SkillUseTypes>(skill_id));
}
bool Lua_Client::CanHaveSkill(int skill_id) {
Lua_Safe_Call_Bool();
return self->CanHaveSkill(static_cast<SkillType>(skill_id));
return self->CanHaveSkill(static_cast<SkillUseTypes>(skill_id));
}
void Lua_Client::SetSkill(int skill_id, int value) {
Lua_Safe_Call_Void();
self->SetSkill(static_cast<SkillType>(skill_id), value);
self->SetSkill(static_cast<SkillUseTypes>(skill_id), value);
}
void Lua_Client::AddSkill(int skill_id, int value) {
Lua_Safe_Call_Void();
self->AddSkill(static_cast<SkillType>(skill_id), value);
self->AddSkill(static_cast<SkillUseTypes>(skill_id), value);
}
void Lua_Client::CheckSpecializeIncrease(int spell_id) {
@@ -452,12 +452,12 @@ void Lua_Client::CheckSpecializeIncrease(int spell_id) {
void Lua_Client::CheckIncreaseSkill(int skill_id, Lua_Mob target) {
Lua_Safe_Call_Void();
self->CheckIncreaseSkill(static_cast<SkillType>(skill_id), target);
self->CheckIncreaseSkill(static_cast<SkillUseTypes>(skill_id), target);
}
void Lua_Client::CheckIncreaseSkill(int skill_id, Lua_Mob target, int chance_mod) {
Lua_Safe_Call_Void();
self->CheckIncreaseSkill(static_cast<SkillType>(skill_id), target, chance_mod);
self->CheckIncreaseSkill(static_cast<SkillUseTypes>(skill_id), target, chance_mod);
}
void Lua_Client::SetLanguageSkill(int language, int value) {
@@ -467,7 +467,7 @@ void Lua_Client::SetLanguageSkill(int language, int value) {
int Lua_Client::MaxSkill(int skill_id) {
Lua_Safe_Call_Int();
return self->MaxSkill(static_cast<SkillType>(skill_id));
return self->MaxSkill(static_cast<SkillUseTypes>(skill_id));
}
bool Lua_Client::IsMedding() {
+17 -17
View File
@@ -178,22 +178,22 @@ bool Lua_Mob::Attack(Lua_Mob other, int hand, bool from_riposte, bool is_striket
void Lua_Mob::Damage(Lua_Mob from, int damage, int spell_id, int attack_skill) {
Lua_Safe_Call_Void();
return self->Damage(from, damage, spell_id, static_cast<SkillType>(attack_skill));
return self->Damage(from, damage, spell_id, static_cast<SkillUseTypes>(attack_skill));
}
void Lua_Mob::Damage(Lua_Mob from, int damage, int spell_id, int attack_skill, bool avoidable) {
Lua_Safe_Call_Void();
return self->Damage(from, damage, spell_id, static_cast<SkillType>(attack_skill), avoidable);
return self->Damage(from, damage, spell_id, static_cast<SkillUseTypes>(attack_skill), avoidable);
}
void Lua_Mob::Damage(Lua_Mob from, int damage, int spell_id, int attack_skill, bool avoidable, int buffslot) {
Lua_Safe_Call_Void();
return self->Damage(from, damage, spell_id, static_cast<SkillType>(attack_skill), avoidable, buffslot);
return self->Damage(from, damage, spell_id, static_cast<SkillUseTypes>(attack_skill), avoidable, buffslot);
}
void Lua_Mob::Damage(Lua_Mob from, int damage, int spell_id, int attack_skill, bool avoidable, int buffslot, bool buff_tic) {
Lua_Safe_Call_Void();
return self->Damage(from, damage, spell_id, static_cast<SkillType>(attack_skill), avoidable, buffslot, buff_tic);
return self->Damage(from, damage, spell_id, static_cast<SkillUseTypes>(attack_skill), avoidable, buffslot, buff_tic);
}
void Lua_Mob::RangedAttack(Lua_Mob other) {
@@ -1222,28 +1222,28 @@ bool Lua_Mob::CombatRange(Lua_Mob other) {
void Lua_Mob::DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage) {
Lua_Safe_Call_Void();
self->DoSpecialAttackDamage(other, static_cast<SkillType>(skill), max_damage);
self->DoSpecialAttackDamage(other, static_cast<SkillUseTypes>(skill), max_damage);
}
void Lua_Mob::DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage, int min_damage) {
Lua_Safe_Call_Void();
self->DoSpecialAttackDamage(other, static_cast<SkillType>(skill), max_damage, min_damage);
self->DoSpecialAttackDamage(other, static_cast<SkillUseTypes>(skill), max_damage, min_damage);
}
void Lua_Mob::DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage, int min_damage, int hate_override) {
Lua_Safe_Call_Void();
self->DoSpecialAttackDamage(other, static_cast<SkillType>(skill), max_damage, min_damage, hate_override);
self->DoSpecialAttackDamage(other, static_cast<SkillUseTypes>(skill), max_damage, min_damage, hate_override);
}
void Lua_Mob::DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage, int min_damage, int hate_override, int reuse_time) {
Lua_Safe_Call_Void();
self->DoSpecialAttackDamage(other, static_cast<SkillType>(skill), max_damage, min_damage, hate_override, reuse_time);
self->DoSpecialAttackDamage(other, static_cast<SkillUseTypes>(skill), max_damage, min_damage, hate_override, reuse_time);
}
void Lua_Mob::DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage, int min_damage, int hate_override, int reuse_time,
bool hit_chance) {
Lua_Safe_Call_Void();
self->DoSpecialAttackDamage(other, static_cast<SkillType>(skill), max_damage, min_damage, hate_override, reuse_time, hit_chance);
self->DoSpecialAttackDamage(other, static_cast<SkillUseTypes>(skill), max_damage, min_damage, hate_override, reuse_time, hit_chance);
}
void Lua_Mob::DoThrowingAttackDmg(Lua_Mob other) {
@@ -1279,22 +1279,22 @@ void Lua_Mob::DoThrowingAttackDmg(Lua_Mob other, Lua_ItemInst range_weapon, Lua_
void Lua_Mob::DoMeleeSkillAttackDmg(Lua_Mob other, int weapon_damage, int skill) {
Lua_Safe_Call_Void();
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillType>(skill));
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillUseTypes>(skill));
}
void Lua_Mob::DoMeleeSkillAttackDmg(Lua_Mob other, int weapon_damage, int skill, int chance_mod) {
Lua_Safe_Call_Void();
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillType>(skill), chance_mod);
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillUseTypes>(skill), chance_mod);
}
void Lua_Mob::DoMeleeSkillAttackDmg(Lua_Mob other, int weapon_damage, int skill, int chance_mod, int focus) {
Lua_Safe_Call_Void();
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillType>(skill), chance_mod, focus);
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillUseTypes>(skill), chance_mod, focus);
}
void Lua_Mob::DoMeleeSkillAttackDmg(Lua_Mob other, int weapon_damage, int skill, int chance_mod, int focus, bool can_riposte) {
Lua_Safe_Call_Void();
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillType>(skill), chance_mod, focus, can_riposte);
self->DoMeleeSkillAttackDmg(other, weapon_damage, static_cast<SkillUseTypes>(skill), chance_mod, focus, can_riposte);
}
void Lua_Mob::DoArcheryAttackDmg(Lua_Mob other) {
@@ -1698,17 +1698,17 @@ void Lua_Mob::SetTargetable(bool on) {
void Lua_Mob::ModSkillDmgTaken(int skill, int value) {
Lua_Safe_Call_Void();
self->ModSkillDmgTaken(static_cast<SkillType>(skill), value);
self->ModSkillDmgTaken(static_cast<SkillUseTypes>(skill), value);
}
int Lua_Mob::GetModSkillDmgTaken(int skill) {
Lua_Safe_Call_Int();
return self->GetModSkillDmgTaken(static_cast<SkillType>(skill));
return self->GetModSkillDmgTaken(static_cast<SkillUseTypes>(skill));
}
int Lua_Mob::GetSkillDmgTaken(int skill) {
Lua_Safe_Call_Int();
return self->GetSkillDmgTaken(static_cast<SkillType>(skill));
return self->GetSkillDmgTaken(static_cast<SkillUseTypes>(skill));
}
void Lua_Mob::SetAllowBeneficial(bool value) {
@@ -1758,7 +1758,7 @@ int Lua_Mob::GetFlurryChance() {
int Lua_Mob::GetSkill(int skill) {
Lua_Safe_Call_Int();
return self->GetSkill(static_cast<SkillType>(skill));
return self->GetSkill(static_cast<SkillUseTypes>(skill));
}
int Lua_Mob::GetSpecialAbility(int ability) {
+16 -16
View File
@@ -59,7 +59,7 @@ Merc::Merc(const NPCType* d, float x, float y, float z, float heading)
int r;
for(r = 0; r <= HIGHEST_SKILL; r++) {
skills[r] = database.GetSkillCap(GetClass(),(SkillType)r,GetLevel());
skills[r] = database.GetSkillCap(GetClass(),(SkillUseTypes)r,GetLevel());
}
GetMercSize();
@@ -983,8 +983,8 @@ int32 Merc::CalcBaseManaRegen()
int32 regen = 0;
if (IsSitting())
{
if(HasSkill(MEDITATE))
regen = (((GetSkill(MEDITATE) / 10) + (clevel - (clevel / 4))) / 4) + 4;
if(HasSkill(SkillMeditate))
regen = (((GetSkill(SkillMeditate) / 10) + (clevel - (clevel / 4))) / 4) + 4;
else
regen = 2;
}
@@ -1000,9 +1000,9 @@ int32 Merc::CalcManaRegen()
if (IsSitting())
{
BuffFadeBySitModifier();
if(HasSkill(MEDITATE)) {
if(HasSkill(SkillMeditate)) {
this->_medding = true;
regen = ((GetSkill(MEDITATE) / 10) + mana_regen);
regen = ((GetSkill(SkillMeditate) / 10) + mana_regen);
regen += spellbonuses.ManaRegen + itembonuses.ManaRegen;
}
else
@@ -1223,16 +1223,16 @@ void Merc::CalcRestState() {
RestRegenEndurance = (GetMaxEndurance() * RuleI(Character, RestRegenPercent) / 100);
}
bool Merc::HasSkill(SkillType skill_id) const {
bool Merc::HasSkill(SkillUseTypes skill_id) const {
return((GetSkill(skill_id) > 0) && CanHaveSkill(skill_id));
}
bool Merc::CanHaveSkill(SkillType skill_id) const {
bool Merc::CanHaveSkill(SkillUseTypes skill_id) const {
return(database.GetSkillCap(GetClass(), skill_id, RuleI(Character, MaxLevel)) > 0);
//if you don't have it by max level, then odds are you never will?
}
uint16 Merc::MaxSkill(SkillType skillid, uint16 class_, uint16 level) const {
uint16 Merc::MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const {
return(database.GetSkillCap(class_, skillid, level));
}
@@ -1719,7 +1719,7 @@ void Merc::AI_Process() {
float DualWieldProbability = 0.0f;
int16 Ambidexterity = aabonuses.Ambidexterity + spellbonuses.Ambidexterity + itembonuses.Ambidexterity;
DualWieldProbability = (GetSkill(DUAL_WIELD) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
DualWieldProbability = (GetSkill(SkillDualWield) + GetLevel() + Ambidexterity) / 400.0f; // 78.0 max
int16 DWBonus = spellbonuses.DualWieldChance + itembonuses.DualWieldChance;
DualWieldProbability += DualWieldProbability*float(DWBonus)/ 100.0f;
@@ -2403,7 +2403,7 @@ bool Merc::AICastSpell(int8 iChance, int32 iSpellTypes) {
continue;
}
if(spells[selectedMercSpell.spellid].skill == BACKSTAB && spells[selectedMercSpell.spellid].targettype == ST_Self) {
if(spells[selectedMercSpell.spellid].skill == SkillBackstab && spells[selectedMercSpell.spellid].targettype == ST_Self) {
if(!hidden) {
continue;
}
@@ -4658,7 +4658,7 @@ void Merc::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, KICK, 0)) {
if(target->CheckHitChance(this, SkillKick, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetKickDamage();
else
@@ -4668,7 +4668,7 @@ void Merc::DoClassAttacks(Mob *target) {
}
reuse = KickReuseTime * 1000;
DoSpecialAttackDamage(target, KICK, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillKick, dmg, 1, -1, reuse);
did_attack = true;
}
else
@@ -4680,7 +4680,7 @@ void Merc::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, BASH, 0)) {
if(target->CheckHitChance(this, SkillBash, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetBashDamage();
else
@@ -4689,7 +4689,7 @@ void Merc::DoClassAttacks(Mob *target) {
}
reuse = BashReuseTime * 1000;
DoSpecialAttackDamage(target, BASH, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillBash, dmg, 1, -1, reuse);
did_attack = true;
}
}
@@ -4711,7 +4711,7 @@ bool Merc::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, boo
return NPC::Attack(other, Hand, bRiposte, IsStrikethrough, IsFromSpell, opts);
}
void Merc::Damage(Mob* other, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable, int8 buffslot, bool iBuffTic)
void Merc::Damage(Mob* other, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable, int8 buffslot, bool iBuffTic)
{
if(IsDead() || IsCorpse())
return;
@@ -4752,7 +4752,7 @@ Mob* Merc::GetOwnerOrSelf() {
return Result;
}
bool Merc::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_skill)
bool Merc::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack_skill)
{
if(!NPC::Death(killerMob, damage, spell, attack_skill))
return false;
+6 -6
View File
@@ -46,8 +46,8 @@ public:
virtual ~Merc();
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Attack(Mob* other, int Hand = SLOT_PRIMARY, bool FromRiposte = false, bool IsStrikethrough = false,
bool IsFromSpell = false, ExtraAttackOptions *opts = nullptr);
virtual bool HasRaid() { return false; }
@@ -166,10 +166,10 @@ public:
inline const uint8 GetClientVersion() const { return _OwnerClientVersion; }
virtual void SetTarget(Mob* mob);
bool HasSkill(SkillType skill_id) const;
bool CanHaveSkill(SkillType skill_id) const;
uint16 MaxSkill(SkillType skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillType skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
bool HasSkill(SkillUseTypes skill_id) const;
bool CanHaveSkill(SkillUseTypes skill_id) const;
uint16 MaxSkill(SkillUseTypes skillid, uint16 class_, uint16 level) const;
inline uint16 MaxSkill(SkillUseTypes skillid) const { return MaxSkill(skillid, GetClass(), GetLevel()); }
virtual void DoClassAttacks(Mob *target);
void CheckHateList();
bool CheckTaunt();
+25 -25
View File
@@ -1918,7 +1918,7 @@ void Mob::SetZone(uint32 zone_id, uint32 instance_id)
}
void Mob::Kill() {
Death(this, 0, SPELL_UNKNOWN, HAND_TO_HAND);
Death(this, 0, SPELL_UNKNOWN, SkillHandtoHand);
}
void Mob::SetAttackTimer() {
@@ -2077,7 +2077,7 @@ void Mob::SetAttackTimer() {
bool Mob::CanThisClassDualWield(void) const
{
if (!IsClient()) {
return(GetSkill(DUAL_WIELD) > 0);
return(GetSkill(SkillDualWield) > 0);
} else {
const ItemInst* inst = CastToClient()->GetInv().GetItem(SLOT_PRIMARY);
// 2HS, 2HB, or 2HP
@@ -2093,19 +2093,19 @@ bool Mob::CanThisClassDualWield(void) const
}
}
return (CastToClient()->HasSkill(DUAL_WIELD)); // No skill = no chance
return (CastToClient()->HasSkill(SkillDualWield)); // No skill = no chance
}
}
bool Mob::CanThisClassDoubleAttack(void) const
{
if(!IsClient()) {
return(GetSkill(DOUBLE_ATTACK) > 0);
return(GetSkill(SkillDoubleAttack) > 0);
} else {
if(aabonuses.GiveDoubleAttack || itembonuses.GiveDoubleAttack || spellbonuses.GiveDoubleAttack) {
return true;
}
return(CastToClient()->HasSkill(DOUBLE_ATTACK));
return(CastToClient()->HasSkill(SkillDoubleAttack));
}
}
@@ -2145,36 +2145,36 @@ bool Mob::IsWarriorClass(void) const
bool Mob::CanThisClassParry(void) const
{
if(!IsClient()) {
return(GetSkill(PARRY) > 0);
return(GetSkill(SkillParry) > 0);
} else {
return(CastToClient()->HasSkill(PARRY));
return(CastToClient()->HasSkill(SkillParry));
}
}
bool Mob::CanThisClassDodge(void) const
{
if(!IsClient()) {
return(GetSkill(DODGE) > 0);
return(GetSkill(SkillDodge) > 0);
} else {
return(CastToClient()->HasSkill(DODGE));
return(CastToClient()->HasSkill(SkillDodge));
}
}
bool Mob::CanThisClassRiposte(void) const
{
if(!IsClient()) {
return(GetSkill(RIPOSTE) > 0);
return(GetSkill(SkillRiposte) > 0);
} else {
return(CastToClient()->HasSkill(RIPOSTE));
return(CastToClient()->HasSkill(SkillRiposte));
}
}
bool Mob::CanThisClassBlock(void) const
{
if(!IsClient()) {
return(GetSkill(BLOCKSKILL) > 0);
return(GetSkill(SkillBlock) > 0);
} else {
return(CastToClient()->HasSkill(BLOCKSKILL));
return(CastToClient()->HasSkill(SkillBlock));
}
}
@@ -3308,7 +3308,7 @@ int32 Mob::GetVulnerability(int32 damage, Mob *caster, uint32 spell_id, uint32 t
return damage;
}
int16 Mob::GetSkillDmgTaken(const SkillType skill_used)
int16 Mob::GetSkillDmgTaken(const SkillUseTypes skill_used)
{
int skilldmg_mod = 0;
@@ -4414,7 +4414,7 @@ void Mob::SetBodyType(bodyType new_body, bool overwrite_orig) {
}
void Mob::ModSkillDmgTaken(SkillType skill_num, int value)
void Mob::ModSkillDmgTaken(SkillUseTypes skill_num, int value)
{
if (skill_num <= HIGHEST_SKILL)
SkillDmgTaken_Mod[skill_num] = value;
@@ -4424,7 +4424,7 @@ void Mob::ModSkillDmgTaken(SkillType skill_num, int value)
SkillDmgTaken_Mod[HIGHEST_SKILL+1] = value;
}
int16 Mob::GetModSkillDmgTaken(const SkillType skill_num)
int16 Mob::GetModSkillDmgTaken(const SkillUseTypes skill_num)
{
if (skill_num <= HIGHEST_SKILL)
return SkillDmgTaken_Mod[skill_num];
@@ -4537,23 +4537,23 @@ uint16 Mob::GetSkillByItemType(int ItemType)
switch (ItemType)
{
case ItemType1HSlash:
return _1H_SLASHING;
return Skill1HSlashing;
case ItemType2HSlash:
return _2H_SLASHING;
return Skill2HSlashing;
case ItemType1HPiercing:
return PIERCING;
return Skill1HPiercing;
case ItemType1HBlunt:
return _1H_BLUNT;
return Skill1HBlunt;
case ItemType2HBlunt:
return _2H_BLUNT;
return Skill2HBlunt;
case ItemType2HPiercing:
return PIERCING;
return Skill1HPiercing; // change to 2HPiercing once activated
case ItemTypeMartial:
return HAND_TO_HAND;
return SkillHandtoHand;
default:
return HAND_TO_HAND;
return SkillHandtoHand;
}
return HAND_TO_HAND;
return SkillHandtoHand;
}
+18 -18
View File
@@ -117,11 +117,11 @@ public:
virtual void TryBackstab(Mob *other,int ReuseTime = 10);
void TriggerDefensiveProcs(const ItemInst* weapon, Mob *on, uint16 hand = 13, int damage = 0);
virtual bool AvoidDamage(Mob* attacker, int32 &damage, bool CanRiposte = true);
virtual bool CheckHitChance(Mob* attacker, SkillType skillinuse, int Hand, int16 chance_mod = 0);
virtual bool CheckHitChance(Mob* attacker, SkillUseTypes skillinuse, int Hand, int16 chance_mod = 0);
virtual void TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttackOptions *opts = nullptr);
void TryPetCriticalHit(Mob *defender, uint16 skill, int32 &damage);
virtual bool TryFinishingBlow(Mob *defender, SkillType skillinuse);
virtual bool TryHeadShot(Mob* defender, SkillType skillInUse);
virtual bool TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse);
virtual bool TryHeadShot(Mob* defender, SkillUseTypes skillInUse);
virtual void DoRiposte(Mob* defender);
void ApplyMeleeDamageBonus(uint16 skill, int32 &damage);
virtual void MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttackOptions *opts = nullptr);
@@ -147,7 +147,7 @@ public:
inline bool SeeImprovedHide() const { return see_improved_hide; }
bool IsInvisible(Mob* other = 0) const;
void SetInvisible(uint8 state);
bool AttackAnimation(SkillType &skillinuse, int Hand, const ItemInst* weapon);
bool AttackAnimation(SkillUseTypes &skillinuse, int Hand, const ItemInst* weapon);
//Song
bool UseBardSpellLogic(uint16 spell_id = 0xffff, int slot = -1);
@@ -257,14 +257,14 @@ public:
void TempName(const char *newname = nullptr);
void SetTargetable(bool on);
bool IsTargetable() const { return m_targetable; }
virtual uint16 GetSkill(SkillType skill_num) const { return 0; }
virtual uint16 GetSkill(SkillUseTypes skill_num) const { return 0; }
virtual uint32 GetEquipment(uint8 material_slot) const { return(0); }
virtual int32 GetEquipmentMaterial(uint8 material_slot) const;
virtual uint32 GetEquipmentColor(uint8 material_slot) const;
virtual uint32 IsEliteMaterialItem(uint8 material_slot) const;
bool AffectedBySpellExcludingSlot(int slot, int effect);
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill) = 0;
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill,
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) = 0;
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill,
bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false) = 0;
inline virtual void SetHP(int32 hp) { if (hp >= max_hp) cur_hp = max_hp; else cur_hp = hp;}
bool ChangeHP(Mob* other, int32 amount, uint16 spell_id = 0, int8 buffslot = -1, bool iBuffTic = false);
@@ -537,7 +537,7 @@ public:
int16 GetCriticalHealRate(uint16 spell_id);
int32 GetVulnerability(int32 damage, Mob *caster, uint32 spell_id, uint32 ticsremaining);
int32 GetAdditionalDamage(Mob *caster, uint32 spell_id, bool use_skill = false, uint16 skill=0);
int16 GetSkillDmgTaken(const SkillType skill_used);
int16 GetSkillDmgTaken(const SkillUseTypes skill_used);
void DoKnockback(Mob *caster, uint32 pushback, uint32 pushup);
int16 CalcResistChanceBonus();
int16 CalcFearResistChance();
@@ -559,8 +559,8 @@ public:
bool DoHPToManaCovert(uint16 mana_cost = 0);
int32 ApplySpellEffectiveness(Mob* caster, int16 spell_id, int32 value, bool IsBard = false);
void ModSkillDmgTaken(SkillType skill_num, int value);
int16 GetModSkillDmgTaken(const SkillType skill_num);
void ModSkillDmgTaken(SkillUseTypes skill_num, int value);
int16 GetModSkillDmgTaken(const SkillUseTypes skill_num);
void ModVulnerability(uint8 resist, int16 value);
int16 GetModVulnerability(const uint8 resist);
@@ -623,7 +623,7 @@ public:
virtual int GetHaste();
uint8 GetWeaponDamageBonus(const Item_Struct* Weapon);
uint16 GetDamageTable(SkillType skillinuse);
uint16 GetDamageTable(SkillUseTypes skillinuse);
virtual int GetMonkHandToHandDamage(void);
bool CanThisClassDoubleAttack(void) const;
@@ -644,9 +644,9 @@ public:
int32 ReduceDamage(int32 damage);
int32 AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTic, Mob* attacker);
virtual void DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool HitChance=false);
virtual void DoSpecialAttackDamage(Mob *who, SkillUseTypes skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool HitChance=false);
virtual void DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon=nullptr, const Item_Struct* item=nullptr, uint16 weapon_damage=0, int16 chance_mod=0,int16 focus=0);
virtual void DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skillinuse, int16 chance_mod=0, int16 focus=0, bool CanRiposte=false);
virtual void DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillUseTypes skillinuse, int16 chance_mod=0, int16 focus=0, bool CanRiposte=false);
virtual void DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon=nullptr, const ItemInst* Ammo=nullptr, uint16 weapon_damage=0, int16 chance_mod=0, int16 focus=0);
bool CanDoSpecialAttack(Mob *other);
bool Flurry(ExtraAttackOptions *opts);
@@ -760,7 +760,7 @@ public:
// HP Event
inline int GetNextHPEvent() const { return nexthpevent; }
void SetNextHPEvent( int hpevent );
void SendItemAnimation(Mob *to, const Item_Struct *item, SkillType skillInUse);
void SendItemAnimation(Mob *to, const Item_Struct *item, SkillUseTypes skillInUse);
inline int& GetNextIncHPEvent() { return nextinchpevent; }
void SetNextIncHPEvent( int inchpevent );
@@ -810,7 +810,7 @@ public:
bool HasSpellEffect(int effectid);
int mod_effect_value(int effect_value, uint16 spell_id, int effect_type, Mob* caster);
float mod_hit_chance(float chancetohit, SkillType skillinuse, Mob* attacker);
float mod_hit_chance(float chancetohit, SkillUseTypes skillinuse, Mob* attacker);
float mod_riposte_chance(float ripostchance, Mob* attacker);
float mod_block_chance(float blockchance, Mob* attacker);
float mod_parry_chance(float parrychance, Mob* attacker);
@@ -821,7 +821,7 @@ public:
int32 mod_kick_damage(int32 dmg);
int32 mod_bash_damage(int32 dmg);
int32 mod_frenzy_damage(int32 dmg);
int32 mod_monk_special_damage(int32 ndamage, SkillType skill_type);
int32 mod_monk_special_damage(int32 ndamage, SkillUseTypes skill_type);
int32 mod_backstab_damage(int32 ndamage);
int mod_archery_bonus_chance(int bonuschance, const ItemInst* RangeWeapon);
uint32 mod_archery_bonus_damage(uint32 MaxDmg, const ItemInst* RangeWeapon);
@@ -835,7 +835,7 @@ public:
bool mod_will_aggro(Mob *attacker, Mob *on);
protected:
void CommonDamage(Mob* other, int32 &damage, const uint16 spell_id, const SkillType attack_skill, bool &avoidable, const int8 buffslot, const bool iBuffTic);
void CommonDamage(Mob* other, int32 &damage, const uint16 spell_id, const SkillUseTypes attack_skill, bool &avoidable, const int8 buffslot, const bool iBuffTic);
static uint16 GetProcID(uint16 spell_id, uint8 effect_index);
float _GetMovementSpeed(int mod) const;
virtual bool MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, bool checkZ);
@@ -941,7 +941,7 @@ protected:
int GetWeaponDamage(Mob *against, const ItemInst *weapon_item, uint32 *hate = nullptr);
int GetKickDamage();
int GetBashDamage();
virtual void ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg);
virtual void ApplySpecialAttackMod(SkillUseTypes skill, int32 &dmg, int32 &mindmg);
bool HasDied();
void CalculateNewFearpoint();
float FindGroundZ(float new_x, float new_y, float z_offset=0.0);
+5 -5
View File
@@ -33,7 +33,7 @@ void Zone::mod_repop() { return; }
void NPC::mod_prespawn(Spawn2 *sp) { return; }
//Base damage from NPC::Attack
int NPC::mod_npc_damage(int damage, SkillType skillinuse, int hand, const Item_Struct* weapon, Mob* other) { return(damage); }
int NPC::mod_npc_damage(int damage, SkillUseTypes skillinuse, int hand, const Item_Struct* weapon, Mob* other) { return(damage); }
//Mob c has been given credit for a kill. This is called after the regular EVENT_KILLED_MERIT event.
void NPC::mod_npc_killed_merit(Mob* c) { return; }
@@ -42,7 +42,7 @@ void NPC::mod_npc_killed_merit(Mob* c) { return; }
void NPC::mod_npc_killed(Mob* oos) { return; }
//Base damage from Client::Attack - can cover myriad skill types
int Client::mod_client_damage(int damage, SkillType skillinuse, int hand, const ItemInst* weapon, Mob* other) { return(damage); }
int Client::mod_client_damage(int damage, SkillUseTypes skillinuse, int hand, const ItemInst* weapon, Mob* other) { return(damage); }
//message is char[4096], don't screw it up. Return true for normal behavior, false to return immediately.
// Channels:
@@ -62,7 +62,7 @@ bool Client::mod_client_message(char* message, uint8 chan_num) { return(true); }
//Skillup override. When this is called the regular skillup check has failed. Return false to proceed with default behavior.
//This will NOT allow a client to increase skill past a cap.
bool Client::mod_can_increase_skill(SkillType skillid, Mob* against_who) { return(false); }
bool Client::mod_can_increase_skill(SkillUseTypes skillid, Mob* against_who) { return(false); }
//chance of general skill increase, rolled against 0-99 where higher chance is better.
int16 Client::mod_increase_skill_chance(int16 chance, Mob* against_who) { return(chance); }
@@ -118,7 +118,7 @@ int Client::mod_drink_value(const Item_Struct *item, int change) { return(change
int Mob::mod_effect_value(int effect_value, uint16 spell_id, int effect_type, Mob* caster) { return(effect_value); }
//chancetohit - 0 to 100 percent - set over 1000 for a guaranteed hit
float Mob::mod_hit_chance(float chancetohit, SkillType skillinuse, Mob* attacker) { return(chancetohit); }
float Mob::mod_hit_chance(float chancetohit, SkillUseTypes skillinuse, Mob* attacker) { return(chancetohit); }
//Final riposte chance
float Mob::mod_riposte_chance(float ripostechance, Mob* attacker) { return(ripostechance); }
@@ -150,7 +150,7 @@ int32 Mob::mod_bash_damage(int32 dmg) { return(dmg); }
int32 Mob::mod_frenzy_damage(int32 dmg) { return(dmg); }
//Special attack damage after all other bonuses are applied.
int32 Mob::mod_monk_special_damage(int32 ndamage, SkillType skill_type) { return(ndamage); }
int32 Mob::mod_monk_special_damage(int32 ndamage, SkillUseTypes skill_type) { return(ndamage); }
//ndamage - Backstab damage as calculated by default formulas
int32 Mob::mod_backstab_damage(int32 ndamage) { return(ndamage); }
+3 -3
View File
@@ -266,7 +266,7 @@ NPC::NPC(const NPCType* d, Spawn2* in_respawn, float x, float y, float z, float
//give NPCs skill values...
int r;
for(r = 0; r <= HIGHEST_SKILL; r++) {
skills[r] = database.GetSkillCap(GetClass(),(SkillType)r,moblevel);
skills[r] = database.GetSkillCap(GetClass(),(SkillUseTypes)r,moblevel);
}
if(d->trap_template > 0)
@@ -1240,7 +1240,7 @@ uint32 NPC::GetMaxDamage(uint8 tlevel)
void NPC::PickPocket(Client* thief) {
thief->CheckIncreaseSkill(PICK_POCKETS, nullptr, 5);
thief->CheckIncreaseSkill(SkillPickPockets, nullptr, 5);
//make sure were allowed to targte them:
int olevel = GetLevel();
@@ -1259,7 +1259,7 @@ void NPC::PickPocket(Client* thief) {
return;
}
int steal_skill = thief->GetSkill(PICK_POCKETS);
int steal_skill = thief->GetSkill(SkillPickPockets);
int stealchance = steal_skill*100/(5*olevel+5);
ItemInst* inst = 0;
int x = 0;
+4 -4
View File
@@ -79,8 +79,8 @@ public:
virtual ~NPC();
//abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillType attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillType attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill);
virtual void Damage(Mob* from, int32 damage, uint16 spell_id, SkillUseTypes attack_skill, bool avoidable = true, int8 buffslot = -1, bool iBuffTic = false);
virtual bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false, bool IsStrikethrough = false,
bool IsFromSpell = false, ExtraAttackOptions *opts = nullptr);
virtual bool HasRaid() { return false; }
@@ -117,7 +117,7 @@ public:
int32 SpellFocusHeal;
virtual void SetTarget(Mob* mob);
virtual uint16 GetSkill(SkillType skill_num) const { if (skill_num <= HIGHEST_SKILL) { return skills[skill_num]; } return 0; }
virtual uint16 GetSkill(SkillUseTypes skill_num) const { if (skill_num <= HIGHEST_SKILL) { return skills[skill_num]; } return 0; }
void CalcItemBonuses(StatBonuses *newbon);
virtual void CalcBonuses();
@@ -352,7 +352,7 @@ public:
uint32 GetSpawnKillCount();
int GetScore();
void mod_prespawn(Spawn2 *sp);
int mod_npc_damage(int damage, SkillType skillinuse, int hand, const Item_Struct* weapon, Mob* other);
int mod_npc_damage(int damage, SkillUseTypes skillinuse, int hand, const Item_Struct* weapon, Mob* other);
void mod_npc_killed_merit(Mob* c);
void mod_npc_killed(Mob* oos);
+1 -1
View File
@@ -109,7 +109,7 @@ public:
static void HandleAugmentation(Client* user, const AugmentItem_Struct* in_augment, Object *worldo);
static void HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac);
static SkillType TypeToSkill(uint32 type);
static SkillUseTypes TypeToSkill(uint32 type);
// Packet functions
void CreateSpawnPacket(EQApplicationPacket* app);
+8 -8
View File
@@ -1898,7 +1898,7 @@ XS(XS_Client_GetSkill)
Client * THIS;
uint16 RETVAL;
dXSTARG;
SkillType skill_id = (SkillType)SvUV(ST(1));
SkillUseTypes skill_id = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Client")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -1925,7 +1925,7 @@ XS(XS_Client_GetRawSkill)
Client * THIS;
uint32 RETVAL;
dXSTARG;
SkillType skill_id = (SkillType)SvUV(ST(1));
SkillUseTypes skill_id = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Client")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -1951,7 +1951,7 @@ XS(XS_Client_HasSkill)
{
Client * THIS;
bool RETVAL;
SkillType skill_id = (SkillType)SvUV(ST(1));
SkillUseTypes skill_id = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Client")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -1978,7 +1978,7 @@ XS(XS_Client_CanHaveSkill)
{
Client * THIS;
bool RETVAL;
SkillType skill_id = (SkillType)SvUV(ST(1));
SkillUseTypes skill_id = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Client")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -2004,7 +2004,7 @@ XS(XS_Client_SetSkill)
Perl_croak(aTHX_ "Usage: Client::SetSkill(THIS, skill_num, value)");
{
Client * THIS;
SkillType skill_num = (SkillType)SvUV(ST(1));
SkillUseTypes skill_num = (SkillUseTypes)SvUV(ST(1));
uint16 value = (uint16)SvUV(ST(2));
if (sv_derived_from(ST(0), "Client")) {
@@ -2029,7 +2029,7 @@ XS(XS_Client_AddSkill)
Perl_croak(aTHX_ "Usage: Client::AddSkill(THIS, skillid, value)");
{
Client * THIS;
SkillType skillid = (SkillType)SvUV(ST(1));
SkillUseTypes skillid = (SkillUseTypes)SvUV(ST(1));
uint16 value = (uint16)SvUV(ST(2));
if (sv_derived_from(ST(0), "Client")) {
@@ -2079,7 +2079,7 @@ XS(XS_Client_CheckIncreaseSkill)
{
Client * THIS;
bool RETVAL;
SkillType skillid = (SkillType)SvUV(ST(1));
SkillUseTypes skillid = (SkillUseTypes)SvUV(ST(1));
int chancemodi;
if (sv_derived_from(ST(0), "Client")) {
@@ -2138,7 +2138,7 @@ XS(XS_Client_MaxSkill)
{
Client * THIS;
uint16 RETVAL;
SkillType skillid = (SkillType)SvUV(ST(1));
SkillUseTypes skillid = (SkillUseTypes)SvUV(ST(1));
uint16 class_ = 0;
uint16 level = 0;
dXSTARG;
+7 -7
View File
@@ -619,7 +619,7 @@ XS(XS_Mob_GetSkill)
Mob * THIS;
uint32 RETVAL;
dXSTARG;
SkillType skill_num = (SkillType)SvUV(ST(1));
SkillUseTypes skill_num = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Mob")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -901,7 +901,7 @@ XS(XS_Mob_Damage)
Mob* from;
int32 damage = (int32)SvIV(ST(2));
uint16 spell_id = (uint16)SvUV(ST(3));
SkillType attack_skill = (SkillType)SvUV(ST(4));
SkillUseTypes attack_skill = (SkillUseTypes)SvUV(ST(4));
bool avoidable;
int8 buffslot;
bool iBuffTic;
@@ -6639,7 +6639,7 @@ XS(XS_Mob_DoSpecialAttackDamage)
{
Mob * THIS;
Mob* target;
SkillType attack_skill = (SkillType)SvUV(ST(2));
SkillUseTypes attack_skill = (SkillUseTypes)SvUV(ST(2));
int32 max_damage = (int32)SvIV(ST(3));
int32 min_damage = 1;
int32 hate_override = -11;
@@ -7644,7 +7644,7 @@ XS(XS_Mob_ModSkillDmgTaken)
Perl_croak(aTHX_ "Usage: Mob::ModSkillDmgTaken(THIS, skill, value)");
{
Mob * THIS;
SkillType skill_num = (SkillType)SvUV(ST(1));
SkillUseTypes skill_num = (SkillUseTypes)SvUV(ST(1));
int16 value = (int16)SvIV(ST(2));
if (sv_derived_from(ST(0), "Mob")) {
@@ -7671,7 +7671,7 @@ XS(XS_Mob_GetModSkillDmgTaken)
Mob * THIS;
uint32 RETVAL;
dXSTARG;
SkillType skill_num = (SkillType)SvUV(ST(1));
SkillUseTypes skill_num = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Mob")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -7698,7 +7698,7 @@ XS(XS_Mob_GetSkillDmgTaken)
Mob * THIS;
int32 RETVAL;
dXSTARG;
SkillType skill_num = (SkillType)SvUV(ST(1));
SkillUseTypes skill_num = (SkillUseTypes)SvUV(ST(1));
if (sv_derived_from(ST(0), "Mob")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
@@ -7864,7 +7864,7 @@ XS(XS_Mob_DoMeleeSkillAttackDmg)
Mob * THIS;
Mob* target;
uint16 weapon_damage = (uint16)SvIV(ST(2));
SkillType skill = (SkillType)SvUV(ST(3));
SkillUseTypes skill = (SkillUseTypes)SvUV(ST(3));
int16 chance_mod = (int16)SvIV(ST(4));
int16 focus = (int16)SvIV(ST(5));
uint8 CanRiposte = (uint8)SvIV(ST(6));
+5 -5
View File
@@ -1073,7 +1073,7 @@ void QuestManager::addskill(int skill_id, int value) {
if(skill_id < 0 || skill_id > HIGHEST_SKILL)
return;
if (initiator && initiator->IsClient())
initiator->AddSkill((SkillType) skill_id, value);
initiator->AddSkill((SkillUseTypes) skill_id, value);
}
void QuestManager::setlanguage(int skill_id, int value) {
@@ -1087,7 +1087,7 @@ void QuestManager::setskill(int skill_id, int value) {
if(skill_id < 0 || skill_id > HIGHEST_SKILL)
return;
if (initiator && initiator->IsClient())
initiator->SetSkill((SkillType) skill_id, value);
initiator->SetSkill((SkillUseTypes) skill_id, value);
}
void QuestManager::setallskill(int value) {
@@ -1095,8 +1095,8 @@ void QuestManager::setallskill(int value) {
if (!initiator)
return;
if (initiator && initiator->IsClient()) {
SkillType sk;
for (sk = _1H_BLUNT; sk <= HIGHEST_SKILL; sk = (SkillType)(sk+1)) {
SkillUseTypes sk;
for (sk = Skill1HBlunt; sk <= HIGHEST_SKILL; sk = (SkillUseTypes)(sk+1)) {
initiator->SetSkill(sk, value);
}
}
@@ -1710,7 +1710,7 @@ void QuestManager::clear_zone_flag(int zone_id) {
void QuestManager::sethp(int hpperc) {
QuestManagerCurrentQuestVars();
int newhp = (owner->GetMaxHP() * (100 - hpperc)) / 100;
owner->Damage(owner, newhp, SPELL_UNKNOWN, HAND_TO_HAND, false, 0, false);
owner->Damage(owner, newhp, SPELL_UNKNOWN, SkillHandtoHand, false, 0, false);
}
bool QuestManager::summonburriedplayercorpse(uint32 char_id, float dest_x, float dest_y, float dest_z, float dest_heading) {
+76 -76
View File
@@ -18,84 +18,84 @@
#ifndef SKILLS_H
#define SKILLS_H
#define HIGHEST_SKILL 74
#define HIGHEST_SKILL_UNUSED 74
// Correct Skill Numbers as of 4-14-2002
#define _1H_BLUNT 0
#define _1H_SLASHING 1
#define _2H_BLUNT 2
#define _2H_SLASHING 3
#define ABJURE 4
#define ALTERATION 5
#define APPLY_POISON 6
#define ARCHERY 7
#define BACKSTAB 8
#define BIND_WOUND 9
#define BASH 10
#define BLOCKSKILL 11
#define BRASS_INSTRUMENTS 12
#define CHANNELING 13
#define CONJURATION 14
#define DEFENSE 15
#define DISARM 16
#define DISARM_TRAPS 17
#define DIVINATION 18
#define DODGE 19
#define DOUBLE_ATTACK 20
#define DRAGON_PUNCH 21
#define DUAL_WIELD 22
#define EAGLE_STRIKE 23
#define EVOCATION 24
#define FEIGN_DEATH 25
#define FLYING_KICK 26
#define FORAGE 27
#define HAND_TO_HAND 28
#define HIDE 29
#define KICK 30
#define MEDITATE 31
#define MEND 32
#define OFFENSE 33
#define PARRY 34
#define PICK_LOCK 35
#define PIERCING 36
#define RIPOSTE 37
#define ROUND_KICK 38
#define SAFE_FALL 39
#define SENSE_HEADING 40
#define SINGING 41
#define SNEAK 42
#define SPECIALIZE_ABJURE 43
#define SPECIALIZE_ALTERATION 44
#define SPECIALIZE_CONJURATION 45
#define SPECIALIZE_DIVINATION 46
#define SPECIALIZE_EVOCATION 47
#define PICK_POCKETS 48
#define STRINGED_INSTRUMENTS 49
#define SWIMMING 50
#define THROWING 51
#define TIGER_CLAW 52
#define TRACKING 53
#define WIND_INSTRUMENTS 54
#define FISHING 55
#define MAKE_POISON 56
#define TINKERING 57
#define RESEARCH 58
#define ALCHEMY 59
#define BAKING 60
#define TAILORING 61
#define SENSE_TRAPS 62
#define BLACKSMITHING 63
#define FLETCHING 64
#define BREWING 65
#define ALCOHOL_TOLERANCE 66
#define BEGGING 67
#define JEWELRY_MAKING 68
#define POTTERY 69
#define PERCUSSION_INSTRUMENTS 70
#define INTIMIDATION 71
#define BERSERKING 72
#define TAUNT 73
#define FRENZY 74
#define _1H_BLUNT_UNUSED 0
#define _1H_SLASHING_UNUSED 1
#define _2H_BLUNT_UNUSED 2
#define _2H_SLASHING_UNUSED 3
#define ABJURE_UNUSED 4
#define ALTERATION_UNUSED 5
#define APPLY_POISON_UNUSED 6
#define ARCHERY_UNUSED 7
#define BACKSTAB_UNUSED 8
#define BIND_WOUND_UNUSED 9
#define BASH_UNUSED 10
#define BLOCKSKILL_UNUSED 11
#define BRASS_INSTRUMENTS_UNUSED 12
#define CHANNELING_UNUSED 13
#define CONJURATION_UNUSED 14
#define DEFENSE_UNUSED 15
#define DISARM_UNUSED 16
#define DISARM_TRAPS_UNUSED 17
#define DIVINATION_UNUSED 18
#define DODGE_UNUSED 19
#define DOUBLE_ATTACK_UNUSED 20
#define DRAGON_PUNCH_UNUSED 21
#define DUAL_WIELD_UNUSED 22
#define EAGLE_STRIKE_UNUSED 23
#define EVOCATION_UNUSED 24
#define FEIGN_DEATH_UNUSED 25
#define FLYING_KICK_UNUSED 26
#define FORAGE_UNUSED 27
#define HAND_TO_HAND_UNUSED 28
#define HIDE_UNUSED 29
#define KICK_UNUSED 30
#define MEDITATE_UNUSED 31
#define MEND_UNUSED 32
#define OFFENSE_UNUSED 33
#define PARRY_UNUSED 34
#define PICK_LOCK_UNUSED 35
#define PIERCING_UNUSED 36
#define RIPOSTE_UNUSED 37
#define ROUND_KICK_UNUSED 38
#define SAFE_FALL_UNUSED 39
#define SENSE_HEADING_UNUSED 40
#define SINGING_UNUSED 41
#define SNEAK_UNUSED 42
#define SPECIALIZE_ABJURE_UNUSED 43
#define SPECIALIZE_ALTERATION_UNUSED 44
#define SPECIALIZE_CONJURATION_UNUSED 45
#define SPECIALIZE_DIVINATION_UNUSED 46
#define SPECIALIZE_EVOCATION_UNUSED 47
#define PICK_POCKETS_UNUSED 48
#define STRINGED_INSTRUMENTS_UNUSED 49
#define SWIMMING_UNUSED 50
#define THROWING_UNUSED 51
#define TIGER_CLAW_UNUSED 52
#define TRACKING_UNUSED 53
#define WIND_INSTRUMENTS_UNUSED 54
#define FISHING_UNUSED 55
#define MAKE_POISON_UNUSED 56
#define TINKERING_UNUSED 57
#define RESEARCH_UNUSED 58
#define ALCHEMY_UNUSED 59
#define BAKING_UNUSED 60
#define TAILORING_UNUSED 61
#define SENSE_TRAPS_UNUSED 62
#define BLACKSMITHING_UNUSED 63
#define FLETCHING_UNUSED 64
#define BREWING_UNUSED 65
#define ALCOHOL_TOLERANCE_UNUSED 66
#define BEGGING_UNUSED 67
#define JEWELRY_MAKING_UNUSED 68
#define POTTERY_UNUSED 69
#define PERCUSSION_INSTRUMENTS_UNUSED 70
#define INTIMIDATION_UNUSED 71
#define BERSERKING_UNUSED 72
#define TAUNT_UNUSED 73
#define FRENZY_UNUSED 74
#endif
+144 -144
View File
@@ -33,14 +33,14 @@
int Mob::GetKickDamage() {
int multiple=(GetLevel()*100/5);
multiple += 100;
int32 dmg=(((GetSkill(KICK) + GetSTR() + GetLevel())*100 / 9000) * multiple) + 600; //Set a base of 6 damage, 1 seemed too low at the sub level 30 level.
int32 dmg=(((GetSkill(SkillKick) + GetSTR() + GetLevel())*100 / 9000) * multiple) + 600; //Set a base of 6 damage, 1 seemed too low at the sub level 30 level.
if(GetClass() == WARRIOR || GetClass() == WARRIORGM ||GetClass() == BERSERKER || GetClass() == BERSERKERGM) {
dmg*=12/10;//small increase for warriors
}
dmg /= 100;
int32 mindmg = 1;
ApplySpecialAttackMod(KICK, dmg,mindmg);
ApplySpecialAttackMod(SkillKick, dmg,mindmg);
dmg = mod_kick_damage(dmg);
@@ -52,18 +52,18 @@ int Mob::GetBashDamage() {
multiple += 100;
//this is complete shite
int32 dmg=((((GetSkill(BASH) + GetSTR())*100 + GetLevel()*100/2) / 10000) * multiple) + 600; //Set a base of 6 damage, 1 seemed too low at the sub level 30 level.
int32 dmg=((((GetSkill(SkillBash) + GetSTR())*100 + GetLevel()*100/2) / 10000) * multiple) + 600; //Set a base of 6 damage, 1 seemed too low at the sub level 30 level.
dmg /= 100;
int32 mindmg = 1;
ApplySpecialAttackMod(BASH, dmg, mindmg);
ApplySpecialAttackMod(SkillBash, dmg, mindmg);
dmg = mod_bash_damage(dmg);
return(dmg);
}
void Mob::ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg) {
void Mob::ApplySpecialAttackMod(SkillUseTypes skill, int32 &dmg, int32 &mindmg) {
int item_slot = -1;
//1: Apply bonus from AC (BOOT/SHIELD/HANDS) est. 40AC=6dmg
@@ -71,19 +71,19 @@ void Mob::ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg) {
switch (skill){
case FLYING_KICK:
case ROUND_KICK:
case KICK:
case SkillFlyingKick:
case SkillRoundKick:
case SkillKick:
item_slot = SLOT_FEET;
break;
case BASH:
case SkillBash:
item_slot = SLOT_SECONDARY;
break;
case DRAGON_PUNCH:
case EAGLE_STRIKE:
case TIGER_CLAW:
case SkillDragonPunch:
case SkillEagleStrike:
case SkillTigerClaw:
item_slot = SLOT_HANDS;
break;
@@ -100,7 +100,7 @@ void Mob::ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg) {
}
}
void Mob::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int32 min_damage, int32 hate_override,int ReuseTime, bool HitChance) {
void Mob::DoSpecialAttackDamage(Mob *who, SkillUseTypes skill, int32 max_damage, int32 min_damage, int32 hate_override,int ReuseTime, bool HitChance) {
//this really should go through the same code as normal melee damage to
//pick up all the special behavior there
@@ -108,7 +108,7 @@ void Mob::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int
if(hate_override > -1)
hate = hate_override;
if(skill == BASH)
if(skill == SkillBash)
{
if(IsClient())
{
@@ -132,7 +132,7 @@ void Mob::DoSpecialAttackDamage(Mob *who, SkillType skill, int32 max_damage, int
else{
bool CanRiposte = true;
if(skill == THROWING || skill == ARCHERY) // changed from '&&'
if(skill == SkillThrowing || skill == SkillArchery) // changed from '&&'
CanRiposte = false;
who->AvoidDamage(this, max_damage, CanRiposte);
@@ -194,13 +194,13 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
//allready do their checking in conjunction with the attack timer
//throwing weapons
if(ca_atk->m_atk == 11) {
if (ca_atk->m_skill == THROWING) {
if (ca_atk->m_skill == SkillThrowing) {
SetAttackTimer();
ThrowingAttack(GetTarget());
return;
}
//ranged attack (archery)
if (ca_atk->m_skill == ARCHERY) {
if (ca_atk->m_skill == SkillArchery) {
SetAttackTimer();
RangedAttack(GetTarget());
return;
@@ -231,10 +231,10 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
int32 skill_reduction = this->GetSkillReuseTime(ca_atk->m_skill);
if ((ca_atk->m_atk == 100) && (ca_atk->m_skill == BASH)) { // SLAM - Bash without a shield equipped
if ((ca_atk->m_atk == 100) && (ca_atk->m_skill == SkillBash)) { // SLAM - Bash without a shield equipped
if (GetTarget() != this) {
CheckIncreaseSkill(BASH, GetTarget(), 10);
CheckIncreaseSkill(SkillBash, GetTarget(), 10);
DoAnim(animTailRake);
int32 ht = 0;
@@ -243,7 +243,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
dmg = -5;
}
else{
if(!GetTarget()->CheckHitChance(this, BASH, 0)) {
if(!GetTarget()->CheckHitChance(this, SkillBash, 0)) {
dmg = 0;
ht = GetBashDamage();
}
@@ -258,7 +258,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
ReuseTime = BashReuseTime-1-skill_reduction;
ReuseTime = (ReuseTime*HasteMod)/100;
DoSpecialAttackDamage(GetTarget(), BASH, dmg, 1, ht, ReuseTime);
DoSpecialAttackDamage(GetTarget(), SkillBash, dmg, 1, ht, ReuseTime);
if(ReuseTime > 0)
{
p_timers.Start(pTimerCombatAbility, ReuseTime);
@@ -267,11 +267,11 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
return;
}
if ((ca_atk->m_atk == 100) && (ca_atk->m_skill == FRENZY))
if ((ca_atk->m_atk == 100) && (ca_atk->m_skill == SkillFrenzy))
{
CheckIncreaseSkill(FRENZY, GetTarget(), 10);
CheckIncreaseSkill(SkillFrenzy, GetTarget(), 10);
int AtkRounds = 3;
int skillmod = 100*GetSkill(FRENZY)/MaxSkill(FRENZY);
int skillmod = 100*GetSkill(SkillFrenzy)/MaxSkill(SkillFrenzy);
int32 max_dmg = (26 + ((((GetLevel()-6) * 2)*skillmod)/100)) * ((100+RuleI(Combat, FrenzyBonus))/100);
int32 min_dmg = 0;
DoAnim(anim2HSlashing);
@@ -293,7 +293,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
while(AtkRounds > 0) {
if (GetTarget() && (AtkRounds == 1 || MakeRandomInt(0,100) < 75)){
DoSpecialAttackDamage(GetTarget(), FRENZY, max_dmg, min_dmg, max_dmg , ReuseTime, true);
DoSpecialAttackDamage(GetTarget(), SkillFrenzy, max_dmg, min_dmg, max_dmg , ReuseTime, true);
}
AtkRounds--;
}
@@ -310,11 +310,11 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
case WARRIOR:
case RANGER:
case BEASTLORD:
if (ca_atk->m_atk != 100 || ca_atk->m_skill != KICK) {
if (ca_atk->m_atk != 100 || ca_atk->m_skill != SkillKick) {
break;
}
if (GetTarget() != this) {
CheckIncreaseSkill(KICK, GetTarget(), 10);
CheckIncreaseSkill(SkillKick, GetTarget(), 10);
DoAnim(animKick);
int32 ht = 0;
@@ -322,7 +322,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
dmg = -5;
}
else{
if(!GetTarget()->CheckHitChance(this, KICK, 0)) {
if(!GetTarget()->CheckHitChance(this, SkillKick, 0)) {
dmg = 0;
ht = GetKickDamage();
}
@@ -335,7 +335,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
}
ReuseTime = KickReuseTime-1-skill_reduction;
DoSpecialAttackDamage(GetTarget(), KICK, dmg, 1, ht, ReuseTime);
DoSpecialAttackDamage(GetTarget(), SkillKick, dmg, 1, ht, ReuseTime);
}
break;
@@ -346,7 +346,7 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
uint16 bDoubleSpecialAttack = itembonuses.DoubleSpecialAttack + spellbonuses.DoubleSpecialAttack + aabonuses.DoubleSpecialAttack;
if( bDoubleSpecialAttack && (bDoubleSpecialAttack >= 100 || bDoubleSpecialAttack > MakeRandomInt(0,100)) ) {
int MonkSPA [5] = { FLYING_KICK, DRAGON_PUNCH, EAGLE_STRIKE, TIGER_CLAW, ROUND_KICK };
int MonkSPA [5] = { SkillFlyingKick, SkillDragonPunch, SkillEagleStrike, SkillTigerClaw, SkillRoundKick };
MonkSpecialAttack(GetTarget(), MonkSPA[MakeRandomInt(0,4)]);
int TripleChance = 25;
@@ -363,12 +363,12 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
//hackish... but we return a huge reuse time if this is an
// invalid skill, otherwise, we can safely assume it is a
// valid monk skill and just cast it to a SkillType
CheckIncreaseSkill((SkillType) ca_atk->m_skill, GetTarget(), 10);
CheckIncreaseSkill((SkillUseTypes) ca_atk->m_skill, GetTarget(), 10);
}
break;
}
case ROGUE: {
if (ca_atk->m_atk != 100 || ca_atk->m_skill != BACKSTAB) {
if (ca_atk->m_atk != 100 || ca_atk->m_skill != SkillBackstab) {
break;
}
TryBackstab(GetTarget(), ReuseTime);
@@ -398,13 +398,13 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
int32 max_dmg = 0;
int32 min_dmg = 1;
int reuse = 0;
SkillType skill_type; //to avoid casting... even though it "would work"
SkillUseTypes skill_type; //to avoid casting... even though it "would work"
uint8 itemslot = SLOT_FEET;
switch(unchecked_type)
{
case FLYING_KICK:{
skill_type = FLYING_KICK;
case SkillFlyingKick:{
skill_type = SkillFlyingKick;
max_dmg = ((GetSTR()+GetSkill(skill_type)) * RuleI(Combat, FlyingKickBonus) / 100) + 35;
min_dmg = ((level*8)/10);
ApplySpecialAttackMod(skill_type, max_dmg, min_dmg);
@@ -412,8 +412,8 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
reuse = FlyingKickReuseTime;
break;
}
case DRAGON_PUNCH:{
skill_type = DRAGON_PUNCH;
case SkillDragonPunch:{
skill_type = SkillDragonPunch;
max_dmg = ((GetSTR()+GetSkill(skill_type)) * RuleI(Combat, DragonPunchBonus) / 100) + 26;
itemslot = SLOT_HANDS;
ApplySpecialAttackMod(skill_type, max_dmg, min_dmg);
@@ -422,8 +422,8 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
break;
}
case EAGLE_STRIKE:{
skill_type = EAGLE_STRIKE;
case SkillEagleStrike:{
skill_type = SkillEagleStrike;
max_dmg = ((GetSTR()+GetSkill(skill_type)) * RuleI(Combat, EagleStrikeBonus) / 100) + 19;
itemslot = SLOT_HANDS;
ApplySpecialAttackMod(skill_type, max_dmg, min_dmg);
@@ -432,8 +432,8 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
break;
}
case TIGER_CLAW:{
skill_type = TIGER_CLAW;
case SkillTigerClaw:{
skill_type = SkillTigerClaw;
max_dmg = ((GetSTR()+GetSkill(skill_type)) * RuleI(Combat, TigerClawBonus) / 100) + 12;
itemslot = SLOT_HANDS;
ApplySpecialAttackMod(skill_type, max_dmg, min_dmg);
@@ -442,8 +442,8 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
break;
}
case ROUND_KICK:{
skill_type = ROUND_KICK;
case SkillRoundKick:{
skill_type = SkillRoundKick;
max_dmg = ((GetSTR()+GetSkill(skill_type)) * RuleI(Combat, RoundKickBonus) / 100) + 10;
ApplySpecialAttackMod(skill_type, max_dmg, min_dmg);
DoAnim(animRoundKick);
@@ -451,8 +451,8 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
break;
}
case KICK:{
skill_type = KICK;
case SkillKick:{
skill_type = SkillKick;
max_dmg = GetKickDamage();
DoAnim(animKick);
reuse = KickReuseTime;
@@ -544,13 +544,13 @@ void Mob::TryBackstab(Mob *other, int ReuseTime) {
) {
entity_list.MessageClose_StringID(this, false, 200, MT_CritMelee, ASSASSINATES, GetName());
if(IsClient())
CastToClient()->CheckIncreaseSkill(BACKSTAB, other, 10);
CastToClient()->CheckIncreaseSkill(SkillBackstab, other, 10);
RogueAssassinate(other);
}
else {
RogueBackstab(other);
if (level > 54) {
float DoubleAttackProbability = (GetSkill(DOUBLE_ATTACK) + GetLevel()) / 500.0f; // 62.4 max
float DoubleAttackProbability = (GetSkill(SkillDoubleAttack) + GetLevel()) / 500.0f; // 62.4 max
// Check for double attack with main hand assuming maxed DA Skill (MS)
if(MakeRandomFloat(0, 1) < DoubleAttackProbability) // Max 62.4 % chance of DA
@@ -563,7 +563,7 @@ void Mob::TryBackstab(Mob *other, int ReuseTime) {
}
}
if(IsClient())
CastToClient()->CheckIncreaseSkill(BACKSTAB, other, 10);
CastToClient()->CheckIncreaseSkill(SkillBackstab, other, 10);
}
}
//Live AA - Chaotic Backstab
@@ -572,9 +572,9 @@ void Mob::TryBackstab(Mob *other, int ReuseTime) {
//we can stab from any angle, we do min damage though.
RogueBackstab(other, true);
if (level > 54) {
float DoubleAttackProbability = (GetSkill(DOUBLE_ATTACK) + GetLevel()) / 500.0f; // 62.4 max
float DoubleAttackProbability = (GetSkill(SkillDoubleAttack) + GetLevel()) / 500.0f; // 62.4 max
if(IsClient())
CastToClient()->CheckIncreaseSkill(BACKSTAB, other, 10);
CastToClient()->CheckIncreaseSkill(SkillBackstab, other, 10);
// Check for double attack with main hand assuming maxed DA Skill (MS)
if(MakeRandomFloat(0, 1) < DoubleAttackProbability) // Max 62.4 % chance of DA
if(other->GetHP() > 0)
@@ -620,12 +620,12 @@ void Mob::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
if(primaryweapondamage > 0){
if(level > 25){
max_hit = (((2*backstab_dmg) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355) + ((level-25)/3) + 1;
hate = 20 * backstab_dmg * GetSkill(BACKSTAB) / 355;
max_hit = (((2*backstab_dmg) * GetDamageTable(SkillBackstab) / 100) * 10 * GetSkill(SkillBackstab) / 355) + ((level-25)/3) + 1;
hate = 20 * backstab_dmg * GetSkill(SkillBackstab) / 355;
}
else{
max_hit = (((2*backstab_dmg) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355) + 1;;
hate = 20 * backstab_dmg * GetSkill(BACKSTAB) / 355;
max_hit = (((2*backstab_dmg) * GetDamageTable(SkillBackstab) / 100) * 10 * GetSkill(SkillBackstab) / 355) + 1;;
hate = 20 * backstab_dmg * GetSkill(SkillBackstab) / 355;
}
// determine minimum hits
@@ -639,7 +639,7 @@ void Mob::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
min_hit = (level * ( level*5 - 105)) / 100;
}
if(!other->CheckHitChance(this, BACKSTAB, 0)) {
if(!other->CheckHitChance(this, SkillBackstab, 0)) {
ndamage = 0;
}
else{
@@ -665,7 +665,7 @@ void Mob::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
ndamage = mod_backstab_damage(ndamage);
DoSpecialAttackDamage(other, BACKSTAB, ndamage, min_hit, hate, ReuseTime);
DoSpecialAttackDamage(other, SkillBackstab, ndamage, min_hit, hate, ReuseTime);
DoAnim(animPiercing);
}
@@ -675,9 +675,9 @@ void Mob::RogueAssassinate(Mob* other)
//can you dodge, parry, etc.. an assassinate??
//if so, use DoSpecialAttackDamage(other, BACKSTAB, 32000); instead
if(GetWeaponDamage(other, IsClient()?CastToClient()->GetInv().GetItem(SLOT_PRIMARY):(const ItemInst*)nullptr) > 0){
other->Damage(this, 32000, SPELL_UNKNOWN, BACKSTAB);
other->Damage(this, 32000, SPELL_UNKNOWN, SkillBackstab);
}else{
other->Damage(this, -5, SPELL_UNKNOWN, BACKSTAB);
other->Damage(this, -5, SPELL_UNKNOWN, SkillBackstab);
}
DoAnim(animPiercing); //piercing animation
}
@@ -794,7 +794,7 @@ void Client::RangedAttack(Mob* other) {
return;
}
SendItemAnimation(GetTarget(), AmmoItem, ARCHERY);
SendItemAnimation(GetTarget(), AmmoItem, SkillArchery);
DoArcheryAttackDmg(GetTarget(), RangeWeapon, Ammo);
@@ -809,7 +809,7 @@ void Client::RangedAttack(Mob* other) {
mlog(COMBAT__RANGED, "Endless Quiver prevented ammo consumption.");
}
CheckIncreaseSkill(ARCHERY, GetTarget(), -15);
CheckIncreaseSkill(SkillArchery, GetTarget(), -15);
//break invis when you attack
if(invisible) {
@@ -848,13 +848,13 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
if (!CanDoSpecialAttack(other))
return;
if (!other->CheckHitChance(this, ARCHERY, 13,chance_mod)) {
if (!other->CheckHitChance(this, SkillArchery, 13,chance_mod)) {
mlog(COMBAT__RANGED, "Ranged attack missed %s.", other->GetName());
other->Damage(this, 0, SPELL_UNKNOWN, ARCHERY);
other->Damage(this, 0, SPELL_UNKNOWN, SkillArchery);
} else {
mlog(COMBAT__RANGED, "Ranged attack hit %s.", other->GetName());
if(!TryHeadShot(other, ARCHERY))
if(!TryHeadShot(other, SkillArchery))
{
int32 TotalDmg = 0;
int16 WDmg = 0;
@@ -872,7 +872,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
WDmg = 0;
if(ADmg < 0)
ADmg = 0;
uint32 MaxDmg = (RuleR(Combat, ArcheryBaseDamageBonus)*(WDmg+ADmg)*GetDamageTable(ARCHERY)) / 100;
uint32 MaxDmg = (RuleR(Combat, ArcheryBaseDamageBonus)*(WDmg+ADmg)*GetDamageTable(SkillArchery)) / 100;
int32 hate = ((WDmg+ADmg));
uint16 bonusArcheryDamageModifier = aabonuses.ArcheryDamageModifier + itembonuses.ArcheryDamageModifier + spellbonuses.ArcheryDamageModifier;
@@ -927,7 +927,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
//twice, for ammo and weapon
TotalDmg += (2*((GetLevel()-25)/3));
minDmg += (2*((GetLevel()-25)/3));
minDmg += minDmg * GetMeleeMinDamageMod_SE(ARCHERY) / 100;
minDmg += minDmg * GetMeleeMinDamageMod_SE(SkillArchery) / 100;
hate += (2*((GetLevel()-25)/3));
}
@@ -936,20 +936,20 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
if(TotalDmg > 0)
{
TotalDmg += TotalDmg*focus/100;
ApplyMeleeDamageBonus(ARCHERY, TotalDmg);
TotalDmg += other->GetAdditionalDamage(this, 0, true, ARCHERY);
TotalDmg += (itembonuses.HeroicDEX / 10) + (TotalDmg * other->GetSkillDmgTaken(ARCHERY) / 100) + GetSkillDmgAmt(ARCHERY);
ApplyMeleeDamageBonus(SkillArchery, TotalDmg);
TotalDmg += other->GetAdditionalDamage(this, 0, true, SkillArchery);
TotalDmg += (itembonuses.HeroicDEX / 10) + (TotalDmg * other->GetSkillDmgTaken(SkillArchery) / 100) + GetSkillDmgAmt(SkillArchery);
TotalDmg = mod_archery_damage(TotalDmg, dobonus, RangeWeapon);
TryCriticalHit(other, ARCHERY, TotalDmg);
TryCriticalHit(other, SkillArchery, TotalDmg);
other->AddToHateList(this, hate, 0, false);
}
}
else
TotalDmg = -5;
other->Damage(this, TotalDmg, SPELL_UNKNOWN, ARCHERY);
other->Damage(this, TotalDmg, SPELL_UNKNOWN, SkillArchery);
}
}
@@ -1013,16 +1013,16 @@ void NPC::RangedAttack(Mob* other)
}
if(ammo)
SendItemAnimation(GetTarget(), ammo, ARCHERY);
SendItemAnimation(GetTarget(), ammo, SkillArchery);
// Face the Target
FaceTarget(GetTarget());
// Hit?
if (!GetTarget()->CheckHitChance(this, ARCHERY, 13))
if (!GetTarget()->CheckHitChance(this, SkillArchery, 13))
{
mlog(COMBAT__RANGED, "Ranged attack missed %s.", GetTarget()->GetName());
GetTarget()->Damage(this, 0, SPELL_UNKNOWN, ARCHERY);
GetTarget()->Damage(this, 0, SPELL_UNKNOWN, SkillArchery);
}
else
{
@@ -1044,14 +1044,14 @@ void NPC::RangedAttack(Mob* other)
int32 hate = TotalDmg;
GetTarget()->MeleeMitigation(this, TotalDmg, MinDmg);
ApplyMeleeDamageBonus(ARCHERY, TotalDmg);
TryCriticalHit(GetTarget(), ARCHERY, TotalDmg);
ApplyMeleeDamageBonus(SkillArchery, TotalDmg);
TryCriticalHit(GetTarget(), SkillArchery, TotalDmg);
GetTarget()->AddToHateList(this, hate, 0, false);
GetTarget()->Damage(this, TotalDmg, SPELL_UNKNOWN, ARCHERY);
GetTarget()->Damage(this, TotalDmg, SPELL_UNKNOWN, SkillArchery);
}
else
{
GetTarget()->Damage(this, -5, SPELL_UNKNOWN, ARCHERY);
GetTarget()->Damage(this, -5, SPELL_UNKNOWN, SkillArchery);
}
}
@@ -1090,7 +1090,7 @@ void NPC::RangedAttack(Mob* other)
uint16 Mob::GetThrownDamage(int16 wDmg, int32& TotalDmg, int& minDmg)
{
uint16 MaxDmg = (((2 * wDmg) * GetDamageTable(THROWING)) / 100);
uint16 MaxDmg = (((2 * wDmg) * GetDamageTable(SkillThrowing)) / 100);
if (MaxDmg == 0)
MaxDmg = 1;
@@ -1105,7 +1105,7 @@ uint16 Mob::GetThrownDamage(int16 wDmg, int32& TotalDmg, int& minDmg)
{
TotalDmg += ((GetLevel()-25)/3);
minDmg += ((GetLevel()-25)/3);
minDmg += minDmg * GetMeleeMinDamageMod_SE(THROWING) / 100;
minDmg += minDmg * GetMeleeMinDamageMod_SE(SkillThrowing) / 100;
}
if(MaxDmg < minDmg)
@@ -1189,13 +1189,13 @@ void Client::ThrowingAttack(Mob* other) { //old was 51
return;
}
//send item animation, also does the throw animation
SendItemAnimation(GetTarget(), item, THROWING);
SendItemAnimation(GetTarget(), item, SkillThrowing);
DoThrowingAttackDmg(GetTarget(), RangeWeapon, item);
//consume ammo
DeleteItemInInventory(ammo_slot, 1, true);
CheckIncreaseSkill(THROWING, GetTarget());
CheckIncreaseSkill(SkillThrowing, GetTarget());
//break invis when you attack
if(invisible) {
@@ -1234,9 +1234,9 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite
if (!CanDoSpecialAttack(other))
return;
if (!other->CheckHitChance(this, THROWING, 13, chance_mod)){
if (!other->CheckHitChance(this, SkillThrowing, 13, chance_mod)){
mlog(COMBAT__RANGED, "Ranged attack missed %s.", other->GetName());
other->Damage(this, 0, SPELL_UNKNOWN, THROWING);
other->Damage(this, 0, SPELL_UNKNOWN, SkillThrowing);
} else {
mlog(COMBAT__RANGED, "Throwing attack hit %s.", other->GetName());
@@ -1260,10 +1260,10 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite
if(TotalDmg > 0)
{
TotalDmg += TotalDmg*focus/100;
ApplyMeleeDamageBonus(THROWING, TotalDmg);
TotalDmg += other->GetAdditionalDamage(this, 0, true, THROWING);
TotalDmg += (itembonuses.HeroicDEX / 10) + (TotalDmg * other->GetSkillDmgTaken(THROWING) / 100) + GetSkillDmgAmt(THROWING);
TryCriticalHit(other, THROWING, TotalDmg);
ApplyMeleeDamageBonus(SkillThrowing, TotalDmg);
TotalDmg += other->GetAdditionalDamage(this, 0, true, SkillThrowing);
TotalDmg += (itembonuses.HeroicDEX / 10) + (TotalDmg * other->GetSkillDmgTaken(SkillThrowing) / 100) + GetSkillDmgAmt(SkillThrowing);
TryCriticalHit(other, SkillThrowing, TotalDmg);
int32 hate = (2*WDmg);
other->AddToHateList(this, hate, 0, false);
}
@@ -1272,14 +1272,14 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite
else
TotalDmg = -5;
other->Damage(this, TotalDmg, SPELL_UNKNOWN, THROWING);
other->Damage(this, TotalDmg, SPELL_UNKNOWN, SkillThrowing);
}
if((RangeWeapon != nullptr) && GetTarget() && other && (other->GetHP() > -10))
TryWeaponProc(RangeWeapon, other, 11);
}
void Mob::SendItemAnimation(Mob *to, const Item_Struct *item, SkillType skillInUse) {
void Mob::SendItemAnimation(Mob *to, const Item_Struct *item, SkillUseTypes skillInUse) {
EQApplicationPacket *outapp = new EQApplicationPacket(OP_SomeItemPacketMaybe, sizeof(Arrow_Struct));
Arrow_Struct *as = (Arrow_Struct *) outapp->pBuffer;
as->type = 1;
@@ -1450,17 +1450,17 @@ void NPC::DoClassAttacks(Mob *target) {
}
break;
case MONK: case MONKGM: {
uint8 satype = KICK;
uint8 satype = SkillKick;
if(level > 29) {
satype = FLYING_KICK;
satype = SkillFlyingKick;
} else if(level > 24) {
satype = DRAGON_PUNCH;
satype = SkillDragonPunch;
} else if(level > 19) {
satype = EAGLE_STRIKE;
satype = SkillEagleStrike;
} else if(level > 9) {
satype = TIGER_CLAW;
satype = SkillTigerClaw;
} else if(level > 4) {
satype = ROUND_KICK;
satype = SkillRoundKick;
}
reuse = MonkSpecialAttack(target, satype);
@@ -1479,7 +1479,7 @@ void NPC::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, KICK, 0)) {
if(target->CheckHitChance(this, SkillKick, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetKickDamage();
else
@@ -1489,7 +1489,7 @@ void NPC::DoClassAttacks(Mob *target) {
}
reuse = KickReuseTime * 1000;
DoSpecialAttackDamage(target, KICK, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillKick, dmg, 1, -1, reuse);
did_attack = true;
}
else
@@ -1501,7 +1501,7 @@ void NPC::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, BASH, 0)) {
if(target->CheckHitChance(this, SkillBash, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetBashDamage();
else
@@ -1510,7 +1510,7 @@ void NPC::DoClassAttacks(Mob *target) {
}
reuse = BashReuseTime * 1000;
DoSpecialAttackDamage(target, BASH, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillBash, dmg, 1, -1, reuse);
did_attack = true;
}
}
@@ -1536,7 +1536,7 @@ void NPC::DoClassAttacks(Mob *target) {
while(AtkRounds > 0) {
if (GetTarget() && (AtkRounds == 1 || MakeRandomInt(0,100) < 75)){
DoSpecialAttackDamage(GetTarget(), FRENZY, max_dmg, min_dmg, -1 , reuse, true);
DoSpecialAttackDamage(GetTarget(), SkillFrenzy, max_dmg, min_dmg, -1 , reuse, true);
}
AtkRounds--;
}
@@ -1556,7 +1556,7 @@ void NPC::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, KICK, 0)) {
if(target->CheckHitChance(this, SkillKick, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetKickDamage();
else
@@ -1565,7 +1565,7 @@ void NPC::DoClassAttacks(Mob *target) {
}
reuse = KickReuseTime * 1000;
DoSpecialAttackDamage(target, KICK, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillKick, dmg, 1, -1, reuse);
did_attack = true;
}
break;
@@ -1582,7 +1582,7 @@ void NPC::DoClassAttacks(Mob *target) {
dmg = -5;
}
else{
if(target->CheckHitChance(this, BASH, 0)) {
if(target->CheckHitChance(this, SkillBash, 0)) {
if(RuleB(Combat, UseIntervalAC))
dmg = GetBashDamage();
else
@@ -1591,7 +1591,7 @@ void NPC::DoClassAttacks(Mob *target) {
}
reuse = BashReuseTime * 1000;
DoSpecialAttackDamage(target, BASH, dmg, 1, -1, reuse);
DoSpecialAttackDamage(target, SkillBash, dmg, 1, -1, reuse);
did_attack = true;
}
break;
@@ -1643,43 +1643,43 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
case WARRIOR:
case RANGER:
case BEASTLORD:
skill_to_use = KICK;
skill_to_use = SkillKick;
break;
case BERSERKER:
skill_to_use = FRENZY;
skill_to_use = SkillFrenzy;
break;
case SHADOWKNIGHT:
case PALADIN:
skill_to_use = BASH;
skill_to_use = SkillBash;
break;
case MONK:
if(GetLevel() >= 30)
{
skill_to_use = FLYING_KICK;
skill_to_use = SkillFlyingKick;
}
else if(GetLevel() >= 25)
{
skill_to_use = DRAGON_PUNCH;
skill_to_use = SkillDragonPunch;
}
else if(GetLevel() >= 20)
{
skill_to_use = EAGLE_STRIKE;
skill_to_use = SkillEagleStrike;
}
else if(GetLevel() >= 10)
{
skill_to_use = TIGER_CLAW;
skill_to_use = SkillTigerClaw;
}
else if(GetLevel() >= 5)
{
skill_to_use = ROUND_KICK;
skill_to_use = SkillRoundKick;
}
else
{
skill_to_use = KICK;
skill_to_use = SkillKick;
}
break;
case ROGUE:
skill_to_use = BACKSTAB;
skill_to_use = SkillBackstab;
break;
}
}
@@ -1690,7 +1690,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
if(skill_to_use == -1)
return;
if(skill_to_use == BASH)
if(skill_to_use == SkillBash)
{
if (ca_target!=this)
{
@@ -1701,7 +1701,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
dmg = -5;
}
else{
if(!ca_target->CheckHitChance(this, BASH, 0)) {
if(!ca_target->CheckHitChance(this, SkillBash, 0)) {
dmg = 0;
}
else{
@@ -1716,7 +1716,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
ReuseTime = BashReuseTime-1;
ReuseTime = (ReuseTime*HasteMod)/100;
DoSpecialAttackDamage(ca_target, BASH, dmg, 1,-1,ReuseTime);
DoSpecialAttackDamage(ca_target, SkillBash, dmg, 1,-1,ReuseTime);
if(ReuseTime > 0 && !IsRiposte)
{
@@ -1726,11 +1726,11 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
return;
}
if(skill_to_use == FRENZY)
if(skill_to_use == SkillFrenzy)
{
CheckIncreaseSkill(FRENZY, GetTarget(), 10);
CheckIncreaseSkill(SkillFrenzy, GetTarget(), 10);
int AtkRounds = 3;
int skillmod = 100*GetSkill(FRENZY)/MaxSkill(FRENZY);
int skillmod = 100*GetSkill(SkillFrenzy)/MaxSkill(SkillFrenzy);
int32 max_dmg = (26 + ((((GetLevel()-6) * 2)*skillmod)/100)) * ((100+RuleI(Combat, FrenzyBonus))/100);
int32 min_dmg = 0;
DoAnim(anim2HSlashing);
@@ -1750,7 +1750,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
while(AtkRounds > 0) {
if (GetTarget() && (AtkRounds == 1 || MakeRandomInt(0,100) < 75)){
DoSpecialAttackDamage(GetTarget(), FRENZY, max_dmg, min_dmg, max_dmg , ReuseTime, true);
DoSpecialAttackDamage(GetTarget(), SkillFrenzy, max_dmg, min_dmg, max_dmg , ReuseTime, true);
}
AtkRounds--;
}
@@ -1761,7 +1761,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
return;
}
if(skill_to_use == KICK)
if(skill_to_use == SkillKick)
{
if(ca_target!=this)
{
@@ -1771,7 +1771,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
dmg = -5;
}
else{
if(!ca_target->CheckHitChance(this, KICK, 0)) {
if(!ca_target->CheckHitChance(this, SkillKick, 0)) {
dmg = 0;
}
else{
@@ -1784,15 +1784,15 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
ReuseTime = KickReuseTime-1;
DoSpecialAttackDamage(ca_target, KICK, dmg, 1,-1, ReuseTime);
DoSpecialAttackDamage(ca_target, SkillKick, dmg, 1,-1, ReuseTime);
}
}
if(skill_to_use == FLYING_KICK ||
skill_to_use == DRAGON_PUNCH ||
skill_to_use == EAGLE_STRIKE ||
skill_to_use == TIGER_CLAW ||
skill_to_use == ROUND_KICK)
if(skill_to_use == SkillFlyingKick ||
skill_to_use == SkillDragonPunch ||
skill_to_use == SkillEagleStrike ||
skill_to_use == SkillTigerClaw ||
skill_to_use == SkillRoundKick)
{
ReuseTime = MonkSpecialAttack(ca_target, skill_to_use) - 1;
MonkSpecialAttack(ca_target, skill_to_use);
@@ -1804,7 +1804,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
uint16 bDoubleSpecialAttack = itembonuses.DoubleSpecialAttack + spellbonuses.DoubleSpecialAttack + aabonuses.DoubleSpecialAttack;
if( bDoubleSpecialAttack && (bDoubleSpecialAttack >= 100 || bDoubleSpecialAttack > MakeRandomInt(0,100))) {
int MonkSPA [5] = { FLYING_KICK, DRAGON_PUNCH, EAGLE_STRIKE, TIGER_CLAW, ROUND_KICK };
int MonkSPA [5] = { SkillFlyingKick, SkillDragonPunch, SkillEagleStrike, SkillTigerClaw, SkillRoundKick };
MonkSpecialAttack(ca_target, MonkSPA[MakeRandomInt(0,4)]);
int TripleChance = 25;
@@ -1818,7 +1818,7 @@ void Client::DoClassAttacks(Mob *ca_target, uint16 skill, bool IsRiposte)
}
}
if(skill_to_use == BACKSTAB)
if(skill_to_use == SkillBackstab)
{
ReuseTime = BackstabReuseTime-1;
@@ -1933,7 +1933,7 @@ void Mob::Taunt(NPC* who, bool always_succeed, float chance_bonus) {
return;
if(!always_succeed && IsClient())
CastToClient()->CheckIncreaseSkill(TAUNT, who, 10);
CastToClient()->CheckIncreaseSkill(SkillTaunt, who, 10);
Mob *hate_top = who->GetHateMost();
@@ -1971,7 +1971,7 @@ void Mob::Taunt(NPC* who, bool always_succeed, float chance_bonus) {
//TauntSkillFalloff rate is not based on any real data. Default of 33% gives a reasonable result.
if (IsClient() && !always_succeed)
tauntchance -= (RuleR(Combat,TauntSkillFalloff) * (CastToClient()->MaxSkill(TAUNT) - GetSkill(TAUNT)));
tauntchance -= (RuleR(Combat,TauntSkillFalloff) * (CastToClient()->MaxSkill(SkillTaunt) - GetSkill(SkillTaunt)));
//From SE_Taunt (Does a taunt with a chance modifier)
if (chance_bonus)
@@ -2004,7 +2004,7 @@ void Mob::Taunt(NPC* who, bool always_succeed, float chance_bonus) {
if (HasSkillProcs()){
float chance = (float)TauntReuseTime*RuleR(Combat, AvgProcsPerMinute)/60000.0f;
TrySkillProc(who, TAUNT, chance);
TrySkillProc(who, SkillTaunt, chance);
}
}
@@ -2026,14 +2026,14 @@ void Mob::InstillDoubt(Mob *who) {
if(IsClient())
{
CastToClient()->CheckIncreaseSkill(INTIMIDATION, who, 10);
CastToClient()->CheckIncreaseSkill(SkillIntimidation, who, 10);
}
//I think this formula needs work
int value = 0;
//user's bonus
value += GetSkill(INTIMIDATION) + GetCHA()/4;
value += GetSkill(SkillIntimidation) + GetCHA()/4;
//target's counters
value -= target->GetLevel()*4 + who->GetWIS()/4;
@@ -2055,10 +2055,10 @@ void Mob::InstillDoubt(Mob *who) {
}
}
bool Mob::TryHeadShot(Mob* defender, SkillType skillInUse) {
bool Mob::TryHeadShot(Mob* defender, SkillUseTypes skillInUse) {
bool Result = false;
if(defender && skillInUse == ARCHERY) {
if(defender && skillInUse == SkillArchery) {
if(GetAA(aaHeadshot) && defender->GetBodyType() == BT_Humanoid) {
if((GetLevelCon(GetLevel(), defender->GetLevel()) == CON_LIGHTBLUE || GetLevelCon(GetLevel(), defender->GetLevel()) == CON_GREEN) && defender->GetLevel() <= 60 && !defender->IsClient()) {
// WildcardX: These chance formula's below are arbitrary. If someone has a better formula that is more
@@ -2081,15 +2081,15 @@ bool Mob::TryHeadShot(Mob* defender, SkillType skillInUse) {
return Result;
}
void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skillinuse, int16 chance_mod, int16 focus, bool CanRiposte)
void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillUseTypes skillinuse, int16 chance_mod, int16 focus, bool CanRiposte)
{
if (!CanDoSpecialAttack(other))
return;
//For spells using skill value 98 (feral swipe ect) server sets this to 67 automatically.
//Kayen: This is unlikely to be completely accurate but use OFFENSE skill value for these effects.
if (skillinuse == BEGGING)
skillinuse = OFFENSE;
if (skillinuse == SkillBegging)
skillinuse = SkillOffense;
int damage = 0;
uint32 hate = 0;
@@ -2151,7 +2151,7 @@ void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
else
damage = -5;
if(skillinuse == BASH){
if(skillinuse == SkillBash){
if(IsClient()){
ItemInst *item = CastToClient()->GetInv().GetItem(SLOT_SECONDARY);
if(item){
@@ -2167,8 +2167,8 @@ void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, SkillType skil
other->AddToHateList(this, hate);
bool CanSkillProc = true;
if (skillinuse == OFFENSE){ //Hack to allow damage to display.
skillinuse = TIGER_CLAW; //'strike' your opponent - Arbitrary choice for message.
if (skillinuse == SkillOffense){ //Hack to allow damage to display.
skillinuse = SkillTigerClaw; //'strike' your opponent - Arbitrary choice for message.
CanSkillProc = false; //Disable skill procs
}
+4 -4
View File
@@ -2113,11 +2113,11 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
switch(spells[spell_id].skill)
{
case THROWING:
case SkillThrowing:
caster->DoThrowingAttackDmg(this, nullptr, nullptr, spells[spell_id].base[i],spells[spell_id].base2[i], focus);
break;
case ARCHERY:
case SkillArchery:
caster->DoArcheryAttackDmg(this, nullptr, nullptr, spells[spell_id].base[i],spells[spell_id].base2[i],focus);
break;
@@ -3238,11 +3238,11 @@ void Mob::DoBuffTic(uint16 spell_id, int slot, uint32 ticsremaining, uint8 caste
double break_chance = 2.0;
if(caster)
{
break_chance -= (2 * (((double)caster->GetSkill(DIVINATION) + ((double)caster->GetLevel() * 3.0)) / 650.0));
break_chance -= (2 * (((double)caster->GetSkill(SkillDivination) + ((double)caster->GetLevel() * 3.0)) / 650.0));
}
else
{
break_chance -= (2 * (((double)GetSkill(DIVINATION) + ((double)GetLevel() * 3.0)) / 650.0));
break_chance -= (2 * (((double)GetSkill(SkillDivination) + ((double)GetLevel() * 3.0)) / 650.0));
}
if(MakeRandomFloat(0.0, 100.0) < break_chance)
+44 -44
View File
@@ -479,16 +479,16 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot,
uint16 Mob::GetSpecializeSkillValue(uint16 spell_id) const {
switch(spells[spell_id].skill) {
case ABJURE:
return(GetSkill(SPECIALIZE_ABJURE));
case ALTERATION:
return(GetSkill(SPECIALIZE_ALTERATION));
case CONJURATION:
return(GetSkill(SPECIALIZE_CONJURATION));
case DIVINATION:
return(GetSkill(SPECIALIZE_DIVINATION));
case EVOCATION:
return(GetSkill(SPECIALIZE_EVOCATION));
case SkillAbjuration:
return(GetSkill(SkillSpecializeAbjure));
case SkillAlteration:
return(GetSkill(SkillSpecializeAlteration));
case SkillConjuration:
return(GetSkill(SkillSpecializeConjuration));
case SkillDivination:
return(GetSkill(SkillSpecializeDivination));
case SkillEvocation:
return(GetSkill(SkillSpecializeEvocation));
default:
//wtf...
break;
@@ -498,20 +498,20 @@ uint16 Mob::GetSpecializeSkillValue(uint16 spell_id) const {
void Client::CheckSpecializeIncrease(uint16 spell_id) {
switch(spells[spell_id].skill) {
case ABJURE:
CheckIncreaseSkill(SPECIALIZE_ABJURE, nullptr);
case SkillAbjuration:
CheckIncreaseSkill(SkillSpecializeAbjure, nullptr);
break;
case ALTERATION:
CheckIncreaseSkill(SPECIALIZE_ALTERATION, nullptr);
case SkillAlteration:
CheckIncreaseSkill(SkillSpecializeAlteration, nullptr);
break;
case CONJURATION:
CheckIncreaseSkill(SPECIALIZE_CONJURATION, nullptr);
case SkillConjuration:
CheckIncreaseSkill(SkillSpecializeConjuration, nullptr);
break;
case DIVINATION:
CheckIncreaseSkill(SPECIALIZE_DIVINATION, nullptr);
case SkillDivination:
CheckIncreaseSkill(SkillSpecializeDivination, nullptr);
break;
case EVOCATION:
CheckIncreaseSkill(SPECIALIZE_EVOCATION, nullptr);
case SkillEvocation:
CheckIncreaseSkill(SkillSpecializeEvocation, nullptr);
break;
default:
//wtf...
@@ -522,48 +522,48 @@ void Client::CheckSpecializeIncrease(uint16 spell_id) {
void Client::CheckSongSkillIncrease(uint16 spell_id){
switch(spells[spell_id].skill)
{
case SINGING:
CheckIncreaseSkill(SINGING, nullptr, -15);
case SkillSinging:
CheckIncreaseSkill(SkillSinging, nullptr, -15);
break;
case PERCUSSION_INSTRUMENTS:
case SkillPercussionInstruments:
if(this->itembonuses.percussionMod > 0) {
if(GetRawSkill(PERCUSSION_INSTRUMENTS) > 0) // no skill increases if not trained in the instrument
CheckIncreaseSkill(PERCUSSION_INSTRUMENTS, nullptr, -15);
if(GetRawSkill(SkillPercussionInstruments) > 0) // no skill increases if not trained in the instrument
CheckIncreaseSkill(SkillPercussionInstruments, nullptr, -15);
else
Message_StringID(13,NO_INSTRUMENT_SKILL); // tell the client that they need instrument training
}
else
CheckIncreaseSkill(SINGING, nullptr, -15);
CheckIncreaseSkill(SkillSinging, nullptr, -15);
break;
case STRINGED_INSTRUMENTS:
case SkillStringedInstruments:
if(this->itembonuses.stringedMod > 0) {
if(GetRawSkill(STRINGED_INSTRUMENTS) > 0)
CheckIncreaseSkill(STRINGED_INSTRUMENTS, nullptr, -15);
if(GetRawSkill(SkillStringedInstruments) > 0)
CheckIncreaseSkill(SkillStringedInstruments, nullptr, -15);
else
Message_StringID(13,NO_INSTRUMENT_SKILL);
}
else
CheckIncreaseSkill(SINGING, nullptr, -15);
CheckIncreaseSkill(SkillSinging, nullptr, -15);
break;
case WIND_INSTRUMENTS:
case SkillWindInstruments:
if(this->itembonuses.windMod > 0) {
if(GetRawSkill(WIND_INSTRUMENTS) > 0)
CheckIncreaseSkill(WIND_INSTRUMENTS, nullptr, -15);
if(GetRawSkill(SkillWindInstruments) > 0)
CheckIncreaseSkill(SkillWindInstruments, nullptr, -15);
else
Message_StringID(13,NO_INSTRUMENT_SKILL);
}
else
CheckIncreaseSkill(SINGING, nullptr, -15);
CheckIncreaseSkill(SkillSinging, nullptr, -15);
break;
case BRASS_INSTRUMENTS:
case SkillBrassInstruments:
if(this->itembonuses.brassMod > 0) {
if(GetRawSkill(BRASS_INSTRUMENTS) > 0)
CheckIncreaseSkill(BRASS_INSTRUMENTS, nullptr, -15);
if(GetRawSkill(SkillBrassInstruments) > 0)
CheckIncreaseSkill(SkillBrassInstruments, nullptr, -15);
else
Message_StringID(13,NO_INSTRUMENT_SKILL);
}
else
CheckIncreaseSkill(SINGING, nullptr, -15);
CheckIncreaseSkill(SkillSinging, nullptr, -15);
break;
default:
break;
@@ -904,7 +904,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot,
channelbonuses += spellbonuses.ChannelChanceSpells + itembonuses.ChannelChanceSpells + aabonuses.ChannelChanceSpells;
// max 93% chance at 252 skill
channelchance = 30 + GetSkill(CHANNELING) / 400.0f * 100;
channelchance = 30 + GetSkill(SkillChanneling) / 400.0f * 100;
channelchance -= attacked_count * 2;
channelchance += channelchance * channelbonuses / 100.0f;
}
@@ -918,7 +918,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot,
channelbonuses += spellbonuses.ChannelChanceSpells + itembonuses.ChannelChanceSpells + aabonuses.ChannelChanceSpells;
// max 93% chance at 252 skill
channelchance = 30 + GetSkill(CHANNELING) / 400.0f * 100;
channelchance = 30 + GetSkill(SkillChanneling) / 400.0f * 100;
channelchance -= attacked_count * 2;
channelchance += channelchance * channelbonuses / 100.0f;
}
@@ -950,7 +950,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot,
}
}
mlog(SPELLS__CASTING, "Checking Interruption: spell x: %f spell y: %f cur x: %f cur y: %f channelchance %f channeling skill %d\n", GetSpellX(), GetSpellY(), GetX(), GetY(), channelchance, GetSkill(CHANNELING));
mlog(SPELLS__CASTING, "Checking Interruption: spell x: %f spell y: %f cur x: %f cur y: %f channelchance %f channeling skill %d\n", GetSpellX(), GetSpellY(), GetX(), GetY(), channelchance, GetSkill(SkillChanneling));
if(MakeRandomFloat(0, 100) > channelchance) {
mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: interrupted.", spell_id);
@@ -1239,7 +1239,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot,
c->CheckIncreaseSkill(spells[spell_id].skill, nullptr);
// increased chance of gaining channel skill if you regained concentration
c->CheckIncreaseSkill(CHANNELING, nullptr, regain_conc ? 5 : 0);
c->CheckIncreaseSkill(SkillChanneling, nullptr, regain_conc ? 5 : 0);
c->CheckSpecializeIncrease(spell_id);
}
@@ -2251,7 +2251,7 @@ void Mob::BardPulse(uint16 spell_id, Mob *caster) {
action->instrument_mod = caster->GetInstrumentMod(spell_id);
action->buff_unknown = 0;
action->level = buffs[buffs_i].casterlevel;
action->type = SpellDamageType;
action->type = DamageTypeSpell;
entity_list.QueueCloseClients(this, packet, false, 200, 0, true, IsClient() ? FilterPCSpells : FilterNPCSpells);
action->buff_unknown = 4;
@@ -2317,7 +2317,7 @@ void Mob::BardPulse(uint16 spell_id, Mob *caster) {
CombatDamage_Struct *cd = (CombatDamage_Struct *)message_packet->pBuffer;
cd->target = action->target;
cd->source = action->source;
cd->type = SpellDamageType;
cd->type = DamageTypeSpell;
cd->spellid = action->spell;
cd->sequence = action->sequence;
cd->damage = 0;
+3 -3
View File
@@ -51,7 +51,7 @@ bool TitleManager::LoadTitles()
while ((row = mysql_fetch_row(result))) {
Title.TitleID = atoi(row[0]);
Title.SkillID = (SkillType) atoi(row[1]);
Title.SkillID = (SkillUseTypes) atoi(row[1]);
Title.MinSkillValue = atoi(row[2]);
Title.MaxSkillValue = atoi(row[3]);
Title.MinAAPoints = atoi(row[4]);
@@ -193,10 +193,10 @@ bool TitleManager::IsClientEligibleForTitle(Client *c, std::vector<TitleEntry>::
if(Title->SkillID >= 0)
{
if((Title->MinSkillValue >= 0) && (c->GetRawSkill(static_cast<SkillType>(Title->SkillID)) < static_cast<uint32>(Title->MinSkillValue)))
if((Title->MinSkillValue >= 0) && (c->GetRawSkill(static_cast<SkillUseTypes>(Title->SkillID)) < static_cast<uint32>(Title->MinSkillValue)))
return false;
if((Title->MaxSkillValue >= 0) && (c->GetRawSkill(static_cast<SkillType>(Title->SkillID)) > static_cast<uint32>(Title->MaxSkillValue)))
if((Title->MaxSkillValue >= 0) && (c->GetRawSkill(static_cast<SkillUseTypes>(Title->SkillID)) > static_cast<uint32>(Title->MaxSkillValue)))
return false;
}
+74 -74
View File
@@ -35,7 +35,7 @@
#include "../common/rulesys.h"
#include "QuestParserCollection.h"
static const SkillType TradeskillUnknown = _1H_BLUNT; /* an arbitrary non-tradeskill */
static const SkillUseTypes TradeskillUnknown = Skill1HBlunt; /* an arbitrary non-tradeskill */
void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augment, Object *worldo)
{
@@ -315,7 +315,7 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob
}
//changing from a switch to string of if's since we don't need to iterate through all of the skills in the SkillType enum
if (spec.tradeskill == ALCHEMY) {
if (spec.tradeskill == SkillAlchemy) {
if (user_pp.class_ != SHAMAN) {
user->Message(13, "This tradeskill can only be performed by a shaman.");
return;
@@ -325,13 +325,13 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob
return;
}
}
else if (spec.tradeskill == TINKERING) {
else if (spec.tradeskill == SkillTinkering) {
if (user_pp.race != GNOME) {
user->Message(13, "Only gnomes can tinker.");
return;
}
}
else if (spec.tradeskill == MAKE_POISON) {
else if (spec.tradeskill == SkillMakePoison) {
if (user_pp.class_ != ROGUE) {
user->Message(13, "Only rogues can mix poisons.");
return;
@@ -576,18 +576,18 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac
parse->EventPlayer(EVENT_COMBINE_FAILURE, user, spec.name.c_str(), spec.recipe_id);
}
SkillType Object::TypeToSkill(uint32 type)
SkillUseTypes Object::TypeToSkill(uint32 type)
{
switch(type) // grouped and ordered by SkillType name - new types need to be verified for proper SkillType and use
switch(type) // grouped and ordered by SkillUseTypes name - new types need to be verified for proper SkillUseTypes and use
{
/*ALCHEMY*/
case BagTypeMedicineBag: { return (SkillType)ALCHEMY; }
/*SkillAlchemy*/
case BagTypeMedicineBag: { return SkillAlchemy; }
/*BAKING*/
// case BagType_MixingBowl: // No idea...
case BagTypeOven: { return (SkillType)BAKING; }
/*SkillBaking*/
// case BagTypeMixingBowl: // No idea...
case BagTypeOven: { return SkillBaking; }
/*BLACKSMITHING*/
/*SkillBlacksmithing*/
case BagTypeForge:
// case BagTypeKoadaDalForge:
case BagTypeTeirDalForge:
@@ -600,51 +600,51 @@ SkillType Object::TypeToSkill(uint32 type)
// case BagTypeRoyalQeynosForge:
// case BagTypeTrollForge:
case BagTypeFierDalForge:
case BagTypeValeForge: { return (SkillType)BLACKSMITHING; } // Delete return if BagTypeGuktaForge enabled
case BagTypeValeForge: { return SkillBlacksmithing; } // Delete return if BagTypeGuktaForge enabled
// case BagTypeErudForge:
// case BagTypeGuktaForge: { return (SkillType)BLACKSMITHING; }
// case BagTypeGuktaForge: { return SkillBlacksmithing; }
/*BREWING*/
/*SkillBrewing*/
// case BagTypeIceCreamChurn: // No idea...
case BagTypeBrewBarrel: { return (SkillType)BREWING; }
case BagTypeBrewBarrel: { return SkillBrewing; }
/*FISHING*/
case BagTypeTackleBox: { return (SkillType)FISHING; }
/*SkillFishing*/
case BagTypeTackleBox: { return SkillFishing; }
/*FLETCHING*/
case BagTypeFletchingKit: { return (SkillType)FLETCHING; } // Delete return if BagTypeFierDalFletchingKit enabled
// case BagTypeFierDalFletchingKit: { return (SkillType)FLETCHING; }
/*SkillFletching*/
case BagTypeFletchingKit: { return SkillFletching; } // Delete return if BagTypeFierDalFletchingKit enabled
// case BagTypeFierDalFletchingKit: { return SkillFletching; }
/*JEWELRY_MAKING*/
case BagTypeJewelersKit: { return (SkillType)JEWELRY_MAKING; }
/*SkillJewelryMaking*/
case BagTypeJewelersKit: { return SkillJewelryMaking; }
/*MAKE_POISON*/
// This is a guess and needs to be verified... (Could be ALCHEMY)
// case BagTypeMortar: { return (SkillType)MAKE_POISON; }
/*SkillMakePoison*/
// This is a guess and needs to be verified... (Could be SkillAlchemy)
// case BagTypeMortar: { return SkillMakePoison; }
/*POTTERY*/
/*SkillPottery*/
case BagTypePotteryWheel:
case BagTypeKiln: { return (SkillType)POTTERY; } // Delete return if BagTypeIksarPotteryWheel enabled
// case BagTypeIksarPotteryWheel: { return (SkillType)POTTERY; }
case BagTypeKiln: { return SkillPottery; } // Delete return if BagTypeIksarPotteryWheel enabled
// case BagTypeIksarPotteryWheel: { return SkillPottery; }
/*RESEARCH*/
/*SkillResearch*/
// case BagTypeLexicon:
case BagTypeWizardsLexicon:
case BagTypeMagesLexicon:
case BagTypeNecromancersLexicon:
case BagTypeEnchantersLexicon: { return (SkillType)RESEARCH; } // Delete return if BagTypeConcordanceofResearch enabled
// case BagTypeConcordanceofResearch: { return (SkillType)RESEARCH; }
case BagTypeEnchantersLexicon: { return SkillResearch; } // Delete return if BagTypeConcordanceofResearch enabled
// case BagTypeConcordanceofResearch: { return SkillResearch; }
/*TAILORING*/
case BagTypeSewingKit: { return (SkillType)TAILORING; } // Delete return if BagTypeFierDalTailoringKit enabled
/*SkillTailoring*/
case BagTypeSewingKit: { return SkillTailoring; } // Delete return if BagTypeFierDalTailoringKit enabled
// case BagTypeHalflingTailoringKit:
// case BagTypeErudTailoringKit:
// case BagTypeFierDalTailoringKit: { return (SkillType)TAILORING; }
// case BagTypeFierDalTailoringKit: { return SkillTailoring; }
/*TINKERING*/
case BagTypeToolBox: { return (SkillType)TINKERING; }
/*SkillTinkering*/
case BagTypeToolBox: { return SkillTinkering; }
/*Undefined*/
/*Undefined*/
default: { break; }
}
@@ -689,7 +689,7 @@ void Client::TradeskillSearchResults(const char *query, unsigned long qlen, unsi
// Recipes that have either been made before or were
// explicitly learned are excempt from that limit
if (RuleB(Skills, UseLimitTradeskillSearchSkillDiff)) {
if (((int32)trivial - (int32)GetSkill((SkillType)tradeskill)) > RuleI(Skills, MaxTradeskillSearchSkillDiff)
if (((int32)trivial - (int32)GetSkill((SkillUseTypes)tradeskill)) > RuleI(Skills, MaxTradeskillSearchSkillDiff)
&& row[4] == nullptr)
{
continue;
@@ -855,17 +855,17 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
// If you want to customize the stage1 success rate do it here.
// Remember: skillup_modifier is (float). Lower is better
switch(spec->tradeskill) {
case FLETCHING:
case ALCHEMY:
case JEWELRY_MAKING:
case POTTERY:
case SkillFletching:
case SkillAlchemy:
case SkillJewelryMaking:
case SkillPottery:
skillup_modifier = 4;
break;
case BAKING:
case BREWING:
case SkillBaking:
case SkillBrewing:
skillup_modifier = 3;
break;
case RESEARCH:
case SkillResearch:
skillup_modifier = 1;
break;
default:
@@ -876,10 +876,10 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
// Some tradeskills take the higher of one additional stat beside INT and WIS
// to determine the skillup rate. Additionally these tradeskills do not have an
// -15 modifier on their statbonus.
if (spec->tradeskill == FLETCHING || spec->tradeskill == MAKE_POISON) {
if (spec->tradeskill == SkillFletching || spec->tradeskill == SkillMakePoison) {
thirdstat = GetDEX();
stat_modifier = 0;
} else if (spec->tradeskill == BLACKSMITHING) {
} else if (spec->tradeskill == SkillBlacksmithing) {
thirdstat = GetSTR();
stat_modifier = 0;
}
@@ -932,7 +932,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
//AA modifiers
//can we do this with nested switches?
if(spec->tradeskill == ALCHEMY){
if(spec->tradeskill == SkillAlchemy){
switch(GetAA(aaAlchemyMastery)){
case 1:
AAChance = 10;
@@ -946,7 +946,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if(spec->tradeskill == JEWELRY_MAKING){
if(spec->tradeskill == SkillJewelryMaking){
switch(GetAA(aaJewelCraftMastery)){
case 1:
AAChance = 10;
@@ -961,7 +961,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
const Item_Struct* item = nullptr;
if (spec->tradeskill == BLACKSMITHING) {
if (spec->tradeskill == SkillBlacksmithing) {
switch(GetAA(aaBlacksmithingMastery)) {
case 1:
AAChance = 10;
@@ -975,7 +975,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == BAKING) {
if (spec->tradeskill == SkillBaking) {
switch(GetAA(aaBakingMastery)) {
case 1:
AAChance = 10;
@@ -989,7 +989,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == BREWING) {
if (spec->tradeskill == SkillBrewing) {
switch(GetAA(aaBrewingMastery)) {
case 1:
AAChance = 10;
@@ -1003,7 +1003,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == FLETCHING) {
if (spec->tradeskill == SkillFletching) {
switch(GetAA(aaFletchingMastery2)) {
case 1:
AAChance = 10;
@@ -1017,7 +1017,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == POTTERY) {
if (spec->tradeskill == SkillPottery) {
switch(GetAA(aaPotteryMastery)) {
case 1:
AAChance = 10;
@@ -1031,7 +1031,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == TAILORING) {
if (spec->tradeskill == SkillTailoring) {
switch(GetAA(aaTailoringMastery)) {
case 1:
AAChance = 10;
@@ -1045,7 +1045,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
if (spec->tradeskill == RESEARCH) {
if (spec->tradeskill == SkillResearch) {
switch(GetAA(aaArcaneTongues)) {
case 1:
AAChance = 10;
@@ -1124,7 +1124,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
return(false);
}
void Client::CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float skillup_modifier, uint16 success_modifier, SkillType tradeskill)
void Client::CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float skillup_modifier, uint16 success_modifier, SkillUseTypes tradeskill)
{
uint16 current_raw_skill = GetRawSkill(tradeskill);
@@ -1405,7 +1405,7 @@ bool ZoneDatabase::GetTradeRecipe(uint32 recipe_id, uint8 c_type, uint32 some_id
}
row = mysql_fetch_row(result);
spec->tradeskill = (SkillType)atoi(row[1]);
spec->tradeskill = (SkillUseTypes)atoi(row[1]);
spec->skill_needed = (int16)atoi(row[2]);
spec->trivial = (uint16)atoi(row[3]);
spec->nofail = atoi(row[4]) ? true : false;
@@ -1559,31 +1559,31 @@ void Client::LearnRecipe(uint32 recipeID)
}
bool Client::CanIncreaseTradeskill(SkillType tradeskill) {
bool Client::CanIncreaseTradeskill(SkillUseTypes tradeskill) {
uint32 rawskill = GetRawSkill(tradeskill);
uint16 maxskill = MaxSkill(tradeskill);
if (rawskill >= maxskill) //Max skill sanity check
return false;
uint8 Baking = (GetRawSkill(BAKING) > 200) ? 1 : 0;
uint8 Smithing = (GetRawSkill(BLACKSMITHING) > 200) ? 1 : 0;
uint8 Brewing = (GetRawSkill(BREWING) > 200) ? 1 : 0;
uint8 Fletching = (GetRawSkill(FLETCHING) > 200) ? 1 : 0;
uint8 Jewelry = (GetRawSkill(JEWELRY_MAKING) > 200) ? 1 : 0;
uint8 Pottery = (GetRawSkill(POTTERY) > 200) ? 1 : 0;
uint8 Tailoring = (GetRawSkill(TAILORING) > 200) ? 1 : 0;
uint8 Baking = (GetRawSkill(SkillBaking) > 200) ? 1 : 0;
uint8 Smithing = (GetRawSkill(SkillBlacksmithing) > 200) ? 1 : 0;
uint8 Brewing = (GetRawSkill(SkillBrewing) > 200) ? 1 : 0;
uint8 Fletching = (GetRawSkill(SkillFletching) > 200) ? 1 : 0;
uint8 Jewelry = (GetRawSkill(SkillJewelryMaking) > 200) ? 1 : 0;
uint8 Pottery = (GetRawSkill(SkillPottery) > 200) ? 1 : 0;
uint8 Tailoring = (GetRawSkill(SkillTailoring) > 200) ? 1 : 0;
uint8 SkillTotal = Baking + Smithing + Brewing + Fletching + Jewelry + Pottery + Tailoring; //Tradeskills above 200
uint32 aaLevel = GetAA(aaNewTanaanCraftingMastery); //New Tanaan AA: Each level allows an additional tradeskill above 200 (first one is free)
switch (tradeskill) {
case BAKING:
case BLACKSMITHING:
case BREWING:
case FLETCHING:
case JEWELRY_MAKING:
case POTTERY:
case TAILORING:
case SkillBaking:
case SkillBlacksmithing:
case SkillBrewing:
case SkillFletching:
case SkillJewelryMaking:
case SkillPottery:
case SkillTailoring:
if (aaLevel == 6)
break; //Maxed AA
if (SkillTotal == 0)
+1 -1
View File
@@ -39,7 +39,7 @@ struct DBnpcspells_Struct {
};
struct DBTradeskillRecipe_Struct {
SkillType tradeskill;
SkillUseTypes tradeskill;
int16 skill_needed;
uint16 trivial;
bool nofail;