/* EQEMu: Everquest Server Emulator Copyright (C) 2001-2002 EQEMu Development Team (http://eqemulator.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY except by those people which sell it, which are required to give you total support for your newly bought product; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SKILLS_H #define SKILLS_H /* ** This is really messed up... Are we using SkillTypes as a pseudo repository? The 76th skill really throws ** things for standardization... ** ** Below is an attempt to clean this up a little... */ /* ** Skill use types ** ** (ref: eqstr_us.txt [05-10-2013]) */ enum SkillUseTypes : uint32 { /*13855*/ Skill1HBlunt = 0, /*13856*/ Skill1HSlashing, /*13857*/ Skill2HBlunt, /*13858*/ Skill2HSlashing, /*13859*/ SkillAbjuration, /*13861*/ SkillAlteration, /*13862*/ SkillApplyPoison, /*13863*/ SkillArchery, /*13864*/ SkillBackstab, /*13866*/ SkillBindWound, /*13867*/ SkillBash, /*13871*/ SkillBlock, /*13872*/ SkillBrassInstruments, /*13874*/ SkillChanneling, /*13875*/ SkillConjuration, /*13876*/ SkillDefense, /*13877*/ SkillDisarm, /*13878*/ SkillDisarmTraps, /*13879*/ SkillDivination, /*13880*/ SkillDodge, /*13881*/ SkillDoubleAttack, /*13882*/ SkillDragonPunch, /*13924*/ SkillTailRake = SkillDragonPunch, // Iksar Monk equivilent /*13883*/ SkillDualWield, /*13884*/ SkillEagleStrike, /*13885*/ SkillEvocation, /*13886*/ SkillFeignDeath, /*13888*/ SkillFlyingKick, /*13889*/ SkillForage, /*13890*/ SkillHandtoHand, /*13891*/ SkillHide, /*13893*/ SkillKick, /*13894*/ SkillMeditate, /*13895*/ SkillMend, /*13896*/ SkillOffense, /*13897*/ SkillParry, /*13899*/ SkillPickLock, /*13900*/ Skill1HPiercing, // Changed in RoF2(05-10-2013) /*13903*/ SkillRiposte, /*13904*/ SkillRoundKick, /*13905*/ SkillSafeFall, /*13906*/ SkillSenseHeading, /*13908*/ SkillSinging, /*13909*/ SkillSneak, /*13910*/ SkillSpecializeAbjure, // No idea why they truncated this one..especially when there are longer ones... /*13911*/ SkillSpecializeAlteration, /*13912*/ SkillSpecializeConjuration, /*13913*/ SkillSpecializeDivination, /*13914*/ SkillSpecializeEvocation, /*13915*/ SkillPickPockets, /*13916*/ SkillStringedInstruments, /*13917*/ SkillSwimming, /*13919*/ SkillThrowing, /*13920*/ SkillTigerClaw, /*13921*/ SkillTracking, /*13923*/ SkillWindInstruments, /*13854*/ SkillFishing, /*13853*/ SkillMakePoison, /*13852*/ SkillTinkering, /*13851*/ SkillResearch, /*13850*/ SkillAlchemy, /*13865*/ SkillBaking, /*13918*/ SkillTailoring, /*13907*/ SkillSenseTraps, /*13870*/ SkillBlacksmithing, /*13887*/ SkillFletching, /*13873*/ SkillBrewing, /*13860*/ SkillAlcoholTolerance, /*13868*/ SkillBegging, /*13892*/ SkillJewelryMaking, /*13901*/ SkillPottery, /*13898*/ SkillPercussionInstruments, /*13922*/ SkillIntimidation, /*13869*/ SkillBerserking, /*13902*/ SkillTaunt, /*05837*/ SkillFrenzy, // This appears to be the only listed one not grouped with the others // SoF+ specific skills // /*03670*/ SkillRemoveTraps, // /*13049*/ SkillTripleAttack, // RoF2+ specific skills // /*00789*/ Skill2HPiercing, // /*01216*/ SkillNone, // This needs to move down as new skills are added // Skill Counts // /*-----*/ _SkillCount_62 = 75, // use for Ti and earlier max skill checks // /*-----*/ _SkillCount_SoF = 77, // use for SoF thru RoF1 max skill checks // /*-----*/ _SkillCount_RoF2 = 78, // use for RoF2 max skill checks // Support values // /*-----*/ _SkillServerArraySize = _SkillCount_RoF2, // Should reflect last client '_SkillCount' /*-----*/ _SkillPacketArraySize = 100, // Currently supported clients appear to iterate full 100 dword buffer range // Superfluous additions to SkillUseTypes..server-use only // /*-----*/ ExtSkillGenericTradeskill = 100 /* ([EQClientVersion] [0] - Unknown, [3] - SoF, [7] - RoF2[05-10-2013]) [Skill] [index] | [0] [1] [2] [3] [4] [5] [6] [7] Frenzy (05837) | --- 074 074 074 074 074 074 074 Remove Traps (03670) | --- --- --- 075 075 075 075 075 Triple Attack (13049) | --- --- --- 076 076 076 076 076 2H Piercing (00789) | --- --- --- --- --- --- --- 077 */ /* [SkillCaps.txt] (SoF+) a^b^c^d(^e) (^e is RoF+, but cursory glance appears to be all zeros) a - Class b - Skill c - Level d - Max Value (e - Unknown) */ /* NOTE: Disregard this until it is sorted out I changed (tradeskill==75) to ExtSkillGenericTradeskill in tradeskills.cpp for both instances. If it's a pseudo-enumeration of an AA ability, then use the 'ExtSkill' ('ExtentedSkill') prefix with a value >= 100. (current implementation) We probably need to recode ALL of the skill checks to use the new Skill2HPiercing and ensure that the animation value is properly changed in the patch files. As far as earlier clients using this new skill, it can be done, but we just need to ensure that skill address is not inadvertently passed to the client..and we can just send an actual message for the skill-up. Use of a command can tell the player what that particular skill value is. Nothing on SkillTripleAttack just yet..haven't looked into its current implementation. In addition to the above re-coding, we're probably going to need to rework the database pp blob to reserve space for the current 100-dword buffer allocation. This way, we can just add new ones without having to rework it each time. -U */ }; // temporary until it can be sorted out... #define HIGHEST_SKILL SkillFrenzy // TODO: add string return for skill names /* ** Old typedef enumeration ** */ /* Correct Skill Numbers as of 4-14-2002 typedef enum { _1H_BLUNT = 0, _1H_SLASHING = 1, _2H_BLUNT = 2, _2H_SLASHING = 3, ABJURE = 4, ALTERATION = 5, APPLY_POISON = 6, ARCHERY = 7, BACKSTAB = 8, BIND_WOUND = 9, BASH = 10, BLOCKSKILL = 11, BRASS_INSTRUMENTS = 12, CHANNELING = 13, CONJURATION = 14, DEFENSE = 15, DISARM = 16, DISARM_TRAPS = 17, DIVINATION = 18, DODGE = 19, DOUBLE_ATTACK = 20, DRAGON_PUNCH = 21, //aka Tail Rake DUAL_WIELD = 22, EAGLE_STRIKE = 23, EVOCATION = 24, FEIGN_DEATH = 25, FLYING_KICK = 26, FORAGE = 27, HAND_TO_HAND = 28, HIDE = 29, KICK = 30, MEDITATE = 31, MEND = 32, OFFENSE = 33, PARRY = 34, PICK_LOCK = 35, PIERCING = 36, RIPOSTE = 37, ROUND_KICK = 38, SAFE_FALL = 39, SENSE_HEADING = 40, SINGING = 41, SNEAK = 42, SPECIALIZE_ABJURE = 43, SPECIALIZE_ALTERATION = 44, SPECIALIZE_CONJURATION = 45, SPECIALIZE_DIVINATION = 46, SPECIALIZE_EVOCATION = 47, PICK_POCKETS = 48, STRINGED_INSTRUMENTS = 49, SWIMMING = 50, THROWING = 51, TIGER_CLAW = 52, TRACKING = 53, WIND_INSTRUMENTS = 54, FISHING = 55, MAKE_POISON = 56, TINKERING = 57, RESEARCH = 58, ALCHEMY = 59, BAKING = 60, TAILORING = 61, SENSE_TRAPS = 62, BLACKSMITHING = 63, FLETCHING = 64, BREWING = 65, ALCOHOL_TOLERANCE = 66, BEGGING = 67, JEWELRY_MAKING = 68, POTTERY = 69, PERCUSSION_INSTRUMENTS = 70, INTIMIDATION = 71, BERSERKING = 72, TAUNT = 73, FRENZY = 74, GENERIC_TRADESKILL = 75 } SkillType; #define HIGHEST_SKILL FRENZY */ // for skill related helper functions namespace EQEmu { bool IsTradeskill(SkillUseTypes skill); bool IsSpecializedSkill(SkillUseTypes skill); } #endif