From 65ac9683a3035691ecdcdfb33cacd3285486a081 Mon Sep 17 00:00:00 2001 From: KimLS Date: Fri, 12 Jun 2015 13:39:20 -0700 Subject: [PATCH] Removed fluff code, added drakkin heritage and status can use modifiers to aa abilities --- zone/aa.cpp | 468 ++--------------------------------- zone/aa.h | 605 ---------------------------------------------- zone/aa_ability.h | 2 + zone/client.h | 3 - zone/command.cpp | 83 ------- zone/command.h | 2 - 6 files changed, 20 insertions(+), 1143 deletions(-) diff --git a/zone/aa.cpp b/zone/aa.cpp index fc1923506..cf2fb0685 100644 --- a/zone/aa.cpp +++ b/zone/aa.cpp @@ -37,428 +37,6 @@ Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net) extern QueryServ* QServ; -int Client::CalcAAReuseTimer(const AA_DBAction *caa) { - - if(!caa) - return 0; - - int ReuseTime = caa->reuse_time; - - if(ReuseTime > 0) - { - int ReductionPercentage; - - if(caa->redux_aa > 0 && caa->redux_aa < aaHighestID) - { - ReductionPercentage = GetAA(caa->redux_aa) * caa->redux_rate; - - if(caa->redux_aa2 > 0 && caa->redux_aa2 < aaHighestID) - ReductionPercentage += (GetAA(caa->redux_aa2) * caa->redux_rate2); - - ReuseTime = caa->reuse_time * (100 - ReductionPercentage) / 100; - } - - } - return ReuseTime; -} - -void Client::ActivateAA(aaID activate){ -// if(activate < 0 || activate >= aaHighestID) -// return; -// if(IsStunned() || IsFeared() || IsMezzed() || IsSilenced() || IsPet() || IsSitting() || GetFeigned()) -// return; -// -// int AATimerID = GetAATimerID(activate); -// -// SendAA_Struct* aa2 = nullptr; -// aaID aaid = activate; -// uint8 activate_val = GetAA(activate); -// //this wasn't taking into acct multi tiered act talents before... -// if(activate_val == 0){ -// aa2 = zone->FindAA(activate); -// if(!aa2){ -// int i; -// int a; -// for(i=1;iFindAA(a); -// if(aa2 != nullptr) -// break; -// } -// } -// if(aa2){ -// aaid = (aaID) aa2->id; -// activate_val = GetAA(aa2->id); -// } -// } -// -// if (activate_val == 0){ -// return; -// } -// -// if(aa2) -// { -// if(aa2->account_time_required) -// { -// if((Timer::GetTimeSeconds() + account_creation) < aa2->account_time_required) -// { -// return; -// } -// } -// } -// -// if(!p_timers.Expired(&database, AATimerID + pTimerAAStart)) -// { -// uint32 aaremain = p_timers.GetRemainingTime(AATimerID + pTimerAAStart); -// uint32 aaremain_hr = aaremain / (60 * 60); -// uint32 aaremain_min = (aaremain / 60) % 60; -// uint32 aaremain_sec = aaremain % 60; -// -// if(aa2) { -// if (aaremain_hr >= 1) //1 hour or more -// Message(13, "You can use the ability %s again in %u hour(s) %u minute(s) %u seconds", -// aa2->name, aaremain_hr, aaremain_min, aaremain_sec); -// else //less than an hour -// Message(13, "You can use the ability %s again in %u minute(s) %u seconds", -// aa2->name, aaremain_min, aaremain_sec); -// } else { -// if (aaremain_hr >= 1) //1 hour or more -// Message(13, "You can use this ability again in %u hour(s) %u minute(s) %u seconds", -// aaremain_hr, aaremain_min, aaremain_sec); -// else //less than an hour -// Message(13, "You can use this ability again in %u minute(s) %u seconds", -// aaremain_min, aaremain_sec); -// } -// return; -// } -// -// if(activate_val > MAX_AA_ACTION_RANKS) -// activate_val = MAX_AA_ACTION_RANKS; -// activate_val--; //to get array index. -// -// //get our current node, now that the indices are well bounded -// const AA_DBAction *caa = &AA_Actions[aaid][activate_val]; -// -// if((aaid == aaImprovedHarmTouch || aaid == aaLeechTouch) && !p_timers.Expired(&database, pTimerHarmTouch)){ -// Message(13,"Ability recovery time not yet met."); -// return; -// } -// -// //everything should be configured out now -// -// uint16 target_id = 0; -// -// //figure out our target -// switch(caa->target) { -// case aaTargetUser: -// case aaTargetGroup: -// target_id = GetID(); -// break; -// case aaTargetCurrent: -// case aaTargetCurrentGroup: -// if(GetTarget() == nullptr) { -// Message_StringID(MT_DefaultText, AA_NO_TARGET); //You must first select a target for this ability! -// p_timers.Clear(&database, AATimerID + pTimerAAStart); -// return; -// } -// target_id = GetTarget()->GetID(); -// break; -// case aaTargetPet: -// if(GetPet() == nullptr) { -// Message(0, "A pet is required for this skill."); -// return; -// } -// target_id = GetPetID(); -// break; -// } -// -// //handle non-spell action -// if(caa->action != aaActionNone) { -// if(caa->mana_cost > 0) { -// if(GetMana() < caa->mana_cost) { -// Message_StringID(13, INSUFFICIENT_MANA); -// return; -// } -// SetMana(GetMana() - caa->mana_cost); -// } -// if(caa->reuse_time > 0) -// { -// uint32 timer_base = CalcAAReuseTimer(caa); -// if(activate == aaImprovedHarmTouch || activate == aaLeechTouch) -// { -// p_timers.Start(pTimerHarmTouch, HarmTouchReuseTime); -// } -// p_timers.Start(AATimerID + pTimerAAStart, timer_base); -// SendAATimer(AATimerID, 0, 0); -// } -// HandleAAAction(aaid); -// } -// -// //cast the spell, if we have one -// if(caa->spell_id > 0 && caa->spell_id < SPDAT_RECORDS) { -// -// if(caa->reuse_time > 0) -// { -// uint32 timer_base = CalcAAReuseTimer(caa); -// SendAATimer(AATimerID, 0, 0); -// p_timers.Start(AATimerID + pTimerAAStart, timer_base); -// if(activate == aaImprovedHarmTouch || activate == aaLeechTouch) -// { -// p_timers.Start(pTimerHarmTouch, HarmTouchReuseTime); -// } -// // Bards can cast instant cast AAs while they are casting another song -// if (spells[caa->spell_id].cast_time == 0 && GetClass() == BARD && IsBardSong(casting_spell_id)) { -// if(!SpellFinished(caa->spell_id, entity_list.GetMob(target_id), 10, -1, -1, spells[caa->spell_id].ResistDiff, false)) { -// //Reset on failed cast -// SendAATimer(AATimerID, 0, 0xFFFFFF); -// Message_StringID(15,ABILITY_FAILED); -// p_timers.Clear(&database, AATimerID + pTimerAAStart); -// return; -// } -// } else { -// if (!CastSpell(caa->spell_id, target_id, USE_ITEM_SPELL_SLOT, -1, -1, 0, -1, AATimerID + pTimerAAStart, timer_base, 1)) { -// //Reset on failed cast -// SendAATimer(AATimerID, 0, 0xFFFFFF); -// Message_StringID(15,ABILITY_FAILED); -// p_timers.Clear(&database, AATimerID + pTimerAAStart); -// return; -// } -// } -// } -// else -// { -// if(!CastSpell(caa->spell_id, target_id)) -// return; -// } -// } -// // Check if AA is expendable -// if (aas_send[activate - activate_val]->special_category == 7) { -// -// // Add the AA cost to the extended profile to track overall total -// m_epp.expended_aa += aas_send[activate]->cost; -// -// SetAA(activate, 0); -// -// SaveAA(); /* Save Character AA */ -// SendAA(activate); -// SendAATable(); -// } -} - -void Client::HandleAAAction(aaID activate) { -// if(activate < 0 || activate >= aaHighestID) -// return; -// -// uint8 activate_val = GetAA(activate); -// -// if (activate_val == 0) -// return; -// -// if(activate_val > MAX_AA_ACTION_RANKS) -// activate_val = MAX_AA_ACTION_RANKS; -// activate_val--; //to get array index. -// -// //get our current node, now that the indices are well bounded -// const AA_DBAction *caa = &AA_Actions[activate][activate_val]; -// -// uint16 timer_id = 0; -// uint16 timer_duration = caa->duration; -// aaTargetType target = aaTargetUser; -// -// uint16 spell_id = SPELL_UNKNOWN; //gets cast at the end if not still unknown -// -// switch(caa->action) { -// case aaActionAETaunt: -// entity_list.AETaunt(this); -// break; -// -// case aaActionFlamingArrows: -// //toggle it -// if(CheckAAEffect(aaEffectFlamingArrows)) -// EnableAAEffect(aaEffectFlamingArrows); -// else -// DisableAAEffect(aaEffectFlamingArrows); -// break; -// -// case aaActionFrostArrows: -// if(CheckAAEffect(aaEffectFrostArrows)) -// EnableAAEffect(aaEffectFrostArrows); -// else -// DisableAAEffect(aaEffectFrostArrows); -// break; -// -// case aaActionRampage: -// EnableAAEffect(aaEffectRampage, 10); -// break; -// -// case aaActionSharedHealth: -// if(CheckAAEffect(aaEffectSharedHealth)) -// EnableAAEffect(aaEffectSharedHealth); -// else -// DisableAAEffect(aaEffectSharedHealth); -// break; -// -// case aaActionCelestialRegen: { -// //special because spell_id depends on a different AA -// switch (GetAA(aaCelestialRenewal)) { -// case 1: -// spell_id = 3250; -// break; -// case 2: -// spell_id = 3251; -// break; -// default: -// spell_id = 2740; -// break; -// } -// target = aaTargetCurrent; -// break; -// } -// -// case aaActionDireCharm: { -// //special because spell_id depends on class -// switch (GetClass()) -// { -// case DRUID: -// spell_id = 2760; //2644? -// break; -// case NECROMANCER: -// spell_id = 2759; //2643? -// break; -// case ENCHANTER: -// spell_id = 2761; //2642? -// break; -// } -// target = aaTargetCurrent; -// break; -// } -// -// case aaActionImprovedFamiliar: { -// //Spell IDs might be wrong... -// if (GetAA(aaAllegiantFamiliar)) -// spell_id = 3264; //1994? -// else -// spell_id = 2758; //2155? -// break; -// } -// -// case aaActionActOfValor: -// if(GetTarget() != nullptr) { -// int curhp = GetTarget()->GetHP(); -// target = aaTargetCurrent; -// GetTarget()->HealDamage(curhp, this); -// Death(this, 0, SPELL_UNKNOWN, SkillHandtoHand); -// } -// break; -// -// case aaActionSuspendedMinion: -// if (GetPet()) { -// target = aaTargetPet; -// switch (GetAA(aaSuspendedMinion)) { -// case 1: -// spell_id = 3248; -// break; -// case 2: -// spell_id = 3249; -// break; -// } -// //do we really need to cast a spell? -// -// Message(0,"You call your pet to your side."); -// GetPet()->WipeHateList(); -// GetPet()->GMMove(GetX(),GetY(),GetZ()); -// if (activate_val > 1) -// entity_list.ClearFeignAggro(GetPet()); -// } else { -// Message(0,"You have no pet to call."); -// } -// break; -// -// case aaActionEscape: -// Escape(); -// break; -// -// // Don't think this code is used any longer for Bestial Alignment as the aa.has a spell_id and no nonspell_action. -// case aaActionBeastialAlignment: -// switch(GetBaseRace()) { -// case BARBARIAN: -// spell_id = AA_Choose3(activate_val, 4521, 4522, 4523); -// break; -// case TROLL: -// spell_id = AA_Choose3(activate_val, 4524, 4525, 4526); -// break; -// case OGRE: -// spell_id = AA_Choose3(activate_val, 4527, 4527, 4529); -// break; -// case IKSAR: -// spell_id = AA_Choose3(activate_val, 4530, 4531, 4532); -// break; -// case VAHSHIR: -// spell_id = AA_Choose3(activate_val, 4533, 4534, 4535); -// break; -// } -// -// case aaActionLeechTouch: -// target = aaTargetCurrent; -// spell_id = SPELL_HARM_TOUCH2; -// EnableAAEffect(aaEffectLeechTouch, 1000); -// break; -// -// case aaActionFadingMemories: -// // Do nothing since spell effect works correctly, but mana isn't used. -// break; -// -// default: -// Log.Out(Logs::General, Logs::Error, "Unknown AA nonspell action type %d", caa->action); -// return; -// } -// -// -// uint16 target_id = 0; -// //figure out our target -// switch(target) { -// case aaTargetUser: -// case aaTargetGroup: -// target_id = GetID(); -// break; -// case aaTargetCurrent: -// case aaTargetCurrentGroup: -// if(GetTarget() == nullptr) { -// Message_StringID(MT_DefaultText, AA_NO_TARGET); //You must first select a target for this ability! -// p_timers.Clear(&database, timer_id + pTimerAAEffectStart); -// return; -// } -// target_id = GetTarget()->GetID(); -// break; -// case aaTargetPet: -// if(GetPet() == nullptr) { -// Message(0, "A pet is required for this skill."); -// return; -// } -// target_id = GetPetID(); -// break; -// } -// -// //cast the spell, if we have one -// if(IsValidSpell(spell_id)) { -// int aatid = GetAATimerID(activate); -// if (!CastSpell(spell_id, target_id, USE_ITEM_SPELL_SLOT, -1, -1, 0, -1, pTimerAAStart + aatid, CalcAAReuseTimer(caa), 1)) { -// SendAATimer(aatid, 0, 0xFFFFFF); -// Message_StringID(15,ABILITY_FAILED); -// p_timers.Clear(&database, pTimerAAStart + aatid); -// return; -// } -// } -// -// //handle the duration timer if we have one. -// if(timer_id > 0 && timer_duration > 0) { -// p_timers.Start(pTimerAAEffectStart + timer_id, timer_duration); -// } -} - void Mob::TemporaryPets(uint16 spell_id, Mob *targ, const char *name_override, uint32 duration_override, bool followme, bool sticktarg) { //It might not be a bad idea to put these into the database, eventually.. @@ -1333,7 +911,7 @@ void Client::SendAlternateAdvancementRank(int aa_id, int level) { aai->max_level = ability->GetMaxLevel(this); aai->prev_id = rank->prev_id; - if(rank->next && !CanUseAlternateAdvancementRank(rank->next)) { + if(rank->next && !CanUseAlternateAdvancementRank(rank->next) || ability->charges > 0) { aai->next_id = -1; } else { aai->next_id = rank->next_id; @@ -1834,28 +1412,16 @@ bool Mob::CanUseAlternateAdvancementRank(AA::Rank *rank) { return false; } - // Check for racial/Drakkin blood line AAs - //Commented this out for now, will add a drakkin heritage field later - //if(ability->category == 8) - //{ - // uint32 client_race = GetBaseRace(); - // - // // Drakkin Bloodlines - // if(rank->expansion > 522) - // { - // if(client_race != 522) - // return false; - // - // int heritage = this->GetDrakkinHeritage() + 523; // 523 = Drakkin Race(522) + Bloodline - // - // if(heritage != rank->expansion) - // return false; - // } - // else if(client_race != rank->expansion) - // { - // return false; - // } - //} + if(IsClient() && CastToClient()->Admin() < ability->status) { + return false; + } + + if(GetBaseRace() == 522) { + //drakkin_heritage + if(!(ability->drakkin_heritage & (1 << GetDrakkinHeritage()))) { + return false; + } + } return true; } @@ -1963,7 +1529,7 @@ bool ZoneDatabase::LoadAlternateAdvancementAbilities(std::unordered_mapclasses = atoi(row[3]) << 1; ability->races = atoi(row[4]); ability->deities = atoi(row[5]); - ability->type = atoi(row[6]); - ability->charges = atoi(row[7]); - ability->grant_only = atoi(row[8]) != 0 ? true : false; - ability->first_rank_id = atoi(row[9]); + ability->drakkin_heritage = atoi(row[6]); + ability->status = atoi(row[7]); + ability->type = atoi(row[8]); + ability->charges = atoi(row[9]); + ability->grant_only = atoi(row[10]) != 0 ? true : false; + ability->first_rank_id = atoi(row[11]); ability->first = nullptr; abilities[ability->id] = std::unique_ptr(ability); diff --git a/zone/aa.h b/zone/aa.h index 54d495e6e..0ee32c99a 100644 --- a/zone/aa.h +++ b/zone/aa.h @@ -1,27 +1,8 @@ - #ifndef AA_H #define AA_H -struct AA_Ability; -struct SendAA_Struct; - - -#define MANA_BURN 664 - -#include - #define MAX_SWARM_PETS 12 //this can change as long as you make more coords (swarm_pet_x/swarm_pet_y) -//this might be missing some, and some might not be used... -typedef enum { //AA Targeting Constants - aaTargetUser = 1, - aaTargetCurrent = 2, //use current target - aaTargetGroup = 3, //target group of user - aaTargetCurrentGroup = 4, //target group of current target - aaTargetPet = 5 //target the user's pet -} aaTargetType; - - typedef enum { aaActionNone = 0, aaActionAETaunt = 1, @@ -133,571 +114,6 @@ static const uint8 LeadershipAACosts[_maxLeaderAA][MAX_LEADERSHIP_TIERS] = { { 0, 0, 0, 0, 0, 0 }, //raidAA15 }; -/* -typedef enum { //AA IDs - aaNone = 0, - aaInnateStrength = 2, //works - aaInnateStamina = 7, //works - aaInnateAgility = 12, //works - //aaCompleteHeal = 13,/ //not implemented, but is in dbstr_us.txt - aaInnateDexterity = 17, //works - aaInnateIntelligence = 22, //works - aaInnateWisdom = 27, //works - aaInnateCharisma = 32, //works - aaInnateFireProtection = 37, //works - aaInnateColdProtection = 42, //works - aaInnateMagicProtection = 47, //works - aaInnatePoisonProtection = 52, //works - aaInnateDiseaseProtection = 57, //works - aaInnateRunSpeed = 62, //works - aaInnateRegeneration = 65, //works - aaInnateMetabolism = 68, - aaInnateLungCapacity = 71, //handled by client - aaFirstAid = 74, //untested - aaHealingAdept = 77, //untested - aaHealingGift = 80, //untested - aaSpellCastingMastery = 83, //untested - aaSpellCastingReinforcement = 86, //untested - aaMentalClarity = 89, - aaSpellCastingFury = 92, //untested - aaChanellingFocus = 95, - aaSpellCastingSubtlety = 98, //untested - aaSpellCastingExpertise = 101, //untested - aaSpellCastingDeftness = 104, //untested - aaNaturalDurability = 107, //works - aaNaturalHealing = 110, //untested - aaCombatFury = 113, //untested - aaFearResistance = 116, //untested - aaFinishingBlow = 119, //untested - aaCombatStability = 122, - aaCombatAgility = 125, - aaMassGroupBuff = 128, //untested - aaDivineResurrection = 129, //DB - aaInnateInvisToUndead = 130, //DB - aaCelestialRegeneration = 131, //untested - aaBestowDivineAura = 132, //DB - aaTurnUndead = 133, //DB - aaPurifySoul = 136, //DB - aaQuickEvacuation = 137, //untested - aaExodus = 140, //untested - aaQuickDamage = 141, //untested - aaEnhancedRoot = 144, - aaDireCharm = 145, //untested - aaCannibalization = 146, //DB - aaQuickBuff = 147, //untested - aaAlchemyMastery = 150, - aaRabidBear = 153, //DB - aaManaBurn = 154, //DB - aaImprovedFamiliar = 155, //untested, implemented? - aaNexusGate = 156, //DB - aaUnknown54 = 157, - aaPermanentIllusion = 158, - aaJewelCraftMastery = 159, - aaGatherMana = 162, //DB - aaMendCompanion = 163, //DB - aaQuickSummoning = 164, //untested - aaFrenziedBurnout = 167, //DB - aaElementalFormFire = 168, //DB - aaElementalFormWater = 171, //DB - aaElementalFormEarth = 174, //DB - aaElementalFormAir = 177, //DB - aaImprovedReclaimEnergy = 180, //untested - aaTurnSummoned = 181, //DB - aaElementalPact = 182, //DB - aaLifeBurn = 183, //DB - aaDeadMesmerization = 184, //DB - aaFearstorm = 185, //DB - aaFleshToBone = 186, //DB - aaCallToCorpse = 187, //DB - aaDivineStun = 188, //DB - aaImprovedLayOnHands = 189, - aaSlayUndead = 190, - aaActOfValor = 193, //DB - aaHolySteed = 194, //DB - aaFearless = 195, - aa2HandBash = 196, //works. handled by client? - aaInnateCamouflage = 197, //DB - aaAmbidexterity = 198, //untested - aaArcheryMastery = 199, //untested - aaFletchingMastery = 202, //removed from db? - aaEndlessQuiver = 205, //untested - aaUnholySteed = 206, //DB - aaImprovedHarmTouch = 207, //untested - aaLeechTouch = 208, //DB - aaDeathPeace = 209, - aaSoulAbrasion = 210, //untested - aaInstrumentMastery = 213, //untested - aaUnknown91 = 216, //not used - aaUnknown92 = 219, //not used - aaUnknown93 = 222, //not used - aaJamFest = 225, - aaUnknown95 = 228, - aaSonicCall = 229, - aaCriticalMend = 230, //untested - aaPurifyBody = 233, //DB - aaChainCombo = 234, - aaRapidFeign = 237, //works - aaReturnKick = 240, - aaEscape = 243, //DB - aaPoisonMastery = 244, - aaDoubleRiposte = 247, //untested - aaQuickHide = 250, - aaQuickThrow = 253, //corrected from dbstr_us.txt - aaPurgePoison = 254, //DB - aaFlurry = 255, //untested - aaRampage = 258, //untested - aaAreaTaunt = 259, //untested - aaWarcry = 260, //DB - aaBandageWound = 263, //untested - aaSpellCastingReinforcementMastery = 266, //untested - aaSpellCastingFuryMastery = 267, //untested - aaExtendedNotes = 270, //untested - aaDragonPunch = 273, - aaStrongRoot = 274, //DB - aaSingingMastery = 275, //untested - aaBodyAndMindRejuvenation = 278, //added - aaPhysicalEnhancement = 279, //untested - aaAdvTrapNegotiation = 280, //untested - aaAcrobatics = 283, //untested - aaScribbleNotes = 286, - aaChaoticStab = 287, //untested - aaPetDiscipline = 288, //added - aaHobbleofSpirits = 289, //DB - aaFrenzyofSpirit = 290, //DB - aaParagonofSpirit = 291, //DB - aaAdvancedInnateStrength = 292, //works - aaAdvancedInnateStamina = 302, //works - aaAdvancedInnateAgility = 312, //works - aaAdvancedInnateDexterity = 322, //works - aaAdvancedInnateIntelligence = 332, //works - aaAdvancedInnateWisdom = 342, //works - aaAdvancedInnateCharisma = 352, //works - aaWardingofSolusek = 362, //works - aaBlessingofEci = 372, //works - aaMarrsProtection = 382, //works - aaShroudofTheFaceless = 392, //works - aaBertoxxulousGift = 402, //works - aaNewTanaanCraftingMastery = 412, - aaPlanarPower = 418, //untested - aaPlanarDurability = 423, //added - aaInnateEnlightenment = 426, //added - aaAdvancedSpellCastingMastery = 431,//untested - aaAdvancedHealingAdept = 434, //untested - aaAdvancedHealingGift = 437, //untested - aaCoupdeGrace = 440, //added - aaFuryoftheAges = 443, //added - aaMasteryofthePast = 446, //untested - aaLightningReflexes = 449, //added - aaInnateDefense = 454, //added - aaRadiantCure = 459, //DB - aaHastenedDivinity = 462, //DB - aaHastenedTurning = 465, //DB - aaHastenedPurificationofSoul = 468, //DB - aaHastenedGathering = 471, //DB - aaHastenedRabidity = 474, //DB - aaHastenedExodus = 477, //DB - aaHastenedRoot = 480, //DB - aaHastenedMending = 483, //DB - aaHastenedBanishment = 486, //DB - aaHastenedInstigation = 489, //DB, maybe - aaFuriousRampage = 492, //DB - aaHastenedPurificationoftheBody = 495,//DB - aaHastyExit = 498, //DB - aaHastenedPurification = 501, //DB - aaFlashofSteel = 504, - aaDivineArbitration = 507, //DB - aaWrathoftheWild = 510, //DB - aaVirulentParalysis = 513, //DB - aaHarvestofDruzzil = 516, //DB - aaEldritchRune = 517, //DB - aaServantofRo = 520, //DB - aaWaketheDead = 523, //DB - aaSuspendedMinion = 526, //untested - aaSpiritCall = 528, //DB - aaCelestialRenewal = 531, //DB - aaAllegiantFamiliar = 533, - aaHandofPiety = 534, //DB - aaMithanielsBinding = 537, //untested - aaMendingoftheTranquil = 539, - aaRagingFlurry = 542, - aaGuardianoftheForest = 545, //DB - aaSpiritoftheWood = 548, //DB - aaBestialFrenzy = 551, //untested - aaHarmoniousAttack = 556, //untested - aaKnightsAdvantage = 561, - aaFerocity = 564, - aaViscidRoots = 567, - aaSionachiesCrescendo = 568, //untested - aaAyonaesTutelage = 571, - aaFeignedMinion = 574, - aaUnfailingDivinity = 577, - aaAnimationEmpathy = 580, // Implemented - aaRushtoJudgement = 583, - aaLivingShield = 586, - aaConsumptionoftheSoul = 589, //untested - aaBoastfulBellow = 592, //DB - aaFervrentBlessing = 593, //untested - aaTouchoftheWicked = 596, //untested - aaPunishingBlade = 599, - aaSpeedoftheKnight = 602, - aaShroudofStealth = 605, - aaNimbleEvasion = 606, - aaTechniqueofMasterWu = 611, - aaHostoftheElements = 616, //DB - aaCallofXuzl = 619, //DB - aaHastenedStealth = 622, - aaIngenuity = 625, - aaFleetofFoot = 628, - aaFadingMemories = 630, - aaTacticalMastery = 631, - aaTheftofLife = 634, - aaFuryofMagic = 637, - aaFuryofMagicMastery2 = 640, //whats the difference? - aaProjectIllusion = 643, - aaHeadshot = 644, //added - aaEntrap = 645, //DB - aaUnholyTouch = 646, //untested - aaTotalDomination = 649, // Implemented - aaStalwartEndurance = 652, //implemented as bonus - aaQuickSummoning2 = 655, //whats the difference? - aaMentalClarity2 = 658, //whats the difference? - aaInnateRegeneration2 = 661, //whats the difference? - aaManaBurn2 = 664, //whats the difference? - aaExtendedNotes2 = 665, //not implemented - later expansions replaced Extended Notes with this. - aaSionachiesCrescendo2 = 668, //not implemented - later expansions replaced Sionachies Crescendo with this. - aaImprovedReclaimEnergy2 = 671, //whats the difference? untetsed - aaSwiftJourney = 672, //implemented as bonus - aaConvalescence = 674, //added 9/26/08 - aaLastingBreath = 676, //handled by client - aaPackrat = 678, //added 9/29/08 - aaHeightenedEndurance = 683, - aaWeaponAffinity = 686, //implemented - aaSecondaryForte = 691, - aaPersistantCasting = 692, - aaTuneofPursuance = 695, - aaImprovedInstrumentMastery = 700, - aaImprovedSingingMastery =701, - aaExultantBellowing = 702, - aaEchoofTaelosia = 707, - aaInternalMetronome = 710, //In 2006 this AA was removed. - aaPiousSupplication = 715, - aaBeastialAlignment = 718, //untested - aaWrathofXuzl = 721, - aaFeralSwipe = 723, //DB? - aaWardersFury = 724, - aaWardersAlacrity = 729, - aaPetAffinity = 734, // Implemented - aaMasteryofthePast2 = 735, //whats the difference? - aaSpellCastingSubtlety2 = 738, //whats the difference? - aaTouchoftheDivine = 741, - aaDivineAvatar = 746, //DB - aaExquisiteBenediction = 749, //DB - aaQuickenedCuring = 754, - aaNaturesBoon = 757, //DB - aaAdvancedTracking = 762, - aaCriticalAffliction = 767, - aaFuryofMagicMastery = 770, //whats the difference? - aaDoppelganger = 773, - aaEnchancedForgetfulness = 776, - aaMesmerizationMastery = 781, - aaQuickMassGroupBuff = 782, - aaSharedHealth = 785, - aaElementalFury = 790, - aaElementalAlacrity = 795, - aaElementalAgility = 800, - aaElementalDurability = 803, - aaSinisterStrikes = 806, - aaStrikethrough = 807, - aaStonewall = 810, - aaRapidStrikes = 815, - aaKickMastery = 820, - aaHightenedAwareness = 823, - aaDestructiveForce = 828, //DB - aaSwarmofDecay = 831, //DB - aaDeathsFury = 834, - aaQuickeningofDeath = 839, - aaAdvancedTheftofLife = 844, - aaTripleBackstab = 846, - aaHastenedPiety = 849, - aaImmobilizingBash = 852, - aaViciousSmash = 855, - aaRadiantCure2 = 860, //whats the difference? - aaPurification = 863, - aaPrecisionofthePathfinder = 864, - aaCoatofThistles = 867, - aaFlamingArrows = 872, //untested - aaFrostArrows = 875, //untested - aaSeizedOpportunity = 878, - aaTrapCircumvention = 881, - aaImprovedHastyExit = 886, - aaVirulentVenom = 888, - aaImprovedConsumptionofSoul = 893, - aaIntenseHatred = 895, - aaAdvancedSpiritCall = 900, - aaCalloftheAncients = 902, //DB - aaSturdiness = 907, - aaWarlordsTenacity = 912, //DB - aaStrengthenedStrike = 915, - aaExtendedShielding = 918, - aaRosFlamingFamiliar = 921, //DB - aaEcisIcyFamiliar = 922, //DB - aaDruzzilsMysticalFamiliar = 923, //DB - aaAdvancedFuryofMagicMastery = 924, //added 9/29/08 - aaWardofDestruction = 926, //DB - aaFrenziedDevastation = 931, //DB - aaCombatFury2 = 934, //whats the difference? - aaCombatFury3 = 937, //whats the difference? - aaCombatFury4 = 940, //whats the difference? - aaFuryoftheAges2 = 943, //whats the difference? - aaFuryoftheAges3 = 946, //whats the difference? - aaFuryoftheAges4 = 949, //whats the difference? - aaPlanarDurability2 = 952, //whats the difference? - aaInnateEnlightenment2 = 955, //whats the difference? - aaDireCharm2 = 960, //whats the difference? - aaDireCharm3 = 961, //whats the difference? - aaTouchoftheDivine2 = 962, //whats the difference? - aaTouchofDecay = 967, - aaCalloftheAncients2 = 970, //whats the difference? - aaImprovedVision = 975, - aaEternalBreath = 978, //handled by client - aaBlacksmithingMastery = 979, //added 9/29/08 - aaBakingMastery = 982, //added 9/29/08 - aaBrewingMastery = 985, //added 9/29/08 - aaFletchingMastery2 = 988, //added 9/29/08 - aaPotteryMastery = 991, //added 9/29/08 - aaTailoringMastery = 994, //added 9/29/08 - aaSalvage = 997, - aaOrigin = 1000, //spell - aaChaoticPotential = 1001, //added - aaDiscordantDefiance = 1006, //added 9/29/08 - aaTrialsofMataMuram = 1011, - aaMysticalAttuning = 1021, - aaDelayDeath = 1026, - aaHealthyAura = 1031, - aaFitness = 1036, - aaVeteransWrath = 1041, //added 9/29/08 - aaVeteransWrath2 = 1044, //whats the difference? - aaVeteransWrath3 = 1047, //whats the difference? - aaVeteransWrath4 = 1050, //whats the difference? - aaDeathblow = 1053, - aaReflexiveMastery = 1061, - aaDefensiveInstincts = 1066, - aaMnemonicRetention = 1071, //Implemented - aaExpansiveMind = 1072, //added 9/29/08 - aaSleightofHand = 1077, - aaSleightofHand2 = 1080, //whats the difference? - aaHealingAdeptMastery = 1083, - aaHealingGiftMastery = 1086, - aaArcaneTongues = 1089, - aaMasterofDisguise = 1092, - aaSlipperyAttacks = 1093, - aaImprovedCriticalAffliction = 1099, - aaFortifiedBellowing = 1102, - aaFuryofMagic2 = 1107, //whats the difference? - aaDanceofBlades = 1110, - aaShieldofNotes = 1116, - aaRoarofThunder = 1119, - aaPersistentMinion = 1122, - aaPerfectionofSpirit = 1123, - aaReplentishCompanion = 1126, - aaAdvancedPetDiscipline = 1129, - aaThrowingMastery = 1131, - aaBlurofAxes = 1134, - aaHastenedWarCry = 1137, - aaDeadAim = 1140, - aaFrenziedDefense = 1143, - aaTirelessSprint = 1146, - aaDesperation = 1149, - aaUntamedRage = 1150, - aaEchoingCries = 1155, - aaViciousFrenzy = 1158, - aaCrazedOnslaught = 1163, - aaOverwhelmingAttack = 1172, - aaFuriousRage = 1175, - aaBloodPact = 1178, - aaShieldingResistance = 1181, - aaHealingBoon = 1186, - aaResplendentCure = 1189, - aaCelestialHammer = 1192, - aaDivineRetribution = 1195, - aaCelestialRejuvination = 1203, - aaFerventBenediction = 1206, - aaSanctuary = 1209, - aaDestructiveFury = 1210, //added 9/29/08 - aaDestructiveFury2 = 1213, //whats the difference? - aaBoonoftheForest = 1222, - aaSpiritoftheGrove = 1225, - aaCalloftheWild = 1228, - aaSecondaryRecall = 1229, - aaNaturesBounty = 1230, - aaStasis = 1233, - aaColorShock = 1239, - aaMindOverMatter = 1242, - aaSoothingWords = 1245, - aaElementalSwarm = 1248, - aaHeartofFlames = 1251, - aaHeartofVapor = 1252, - aaHeartofIce = 1253, - aaHeartofStone = 1254, - aaImitateDeath = 1255, - aaCripplingStrike = 1256, - aaStunningKick = 1259, - aaEyeGouge = 1262, - aaIronKicks = 1265, - aaStyleoftheMimic = 1268, - aaDeathPeace2 = 1272, //whats the difference? - aaArmyoftheDead = 1274, - aaCelestialStun = 1277, - aaHandofDevotion = 1278, - aaSteadfastWill = 1284, - aaShieldBlock = 1287, - aaScoutsEfficiency = 1290, - aaGuardianoftheGlade = 1293, - aaTrackingMastery = 1296, - aaFlurryofKnives = 1301, - aaPrecision = 1304, - aaNervesofSteel = 1307, - aaTouchoftheCursed = 1313, - aaSpiritualCorrosion = 1316, - aaSoulThief = 1319, - aaSpiritualChanneling = 1323, - aaBoonoftheAncients = 1324, - aaAncestralAid = 1327, - aaResoluteDefiance = 1330, - aaPresstheAttack = 1333, - aaMindCrash = 1334, - aaProlongedDestruction = 1337, - aaRosGreaterFamiliar = 1340, - aaEcisGreaterFamiliar = 1341, - aaDruzzilsGreaterFamiliar = 1342, - aaTeleportBind = 1343, - aaDevotedFamiliar = 1344, - aaAuspiceoftheHunter = 1345, - aaSavageSpirit = 1348, - aaPresstheAttack2 = 1351, //whats the difference? - aaCripplingStrike2 = 1352, //whats the difference? - aaStunningKick2 = 1353, //whats the difference? - aaEyeGouge2 = 1358, //whats the difference? - - //Dragons of Norrath - //good info here: http://www.eqthieves.com/exp-don-progression.htm and here: http://everquest.allakhazam.com/db/guides.html?guide=811 - aaGiftoftheDarkReign = 1361, //from dbstr_us.txt - aaTenacityoftheDarkReign = 1362, //from dbstr_us.txt - aaEmbraceoftheDarkReign = 1363, //from dbstr_us.txt - aaPoweroftheDarkReign = 1364, //from dbstr_us.txt - aaFervoroftheDarkReign = 1365, //from dbstr_us.txt - aaGiftoftheKeepers = 1366, //from dbstr_us.txt - aaValoroftheKeepers = 1367, //from dbstr_us.txt - aaEmbraceoftheKeepers = 1368, //from dbstr_us.txt - aaPoweroftheKeepers = 1369, //from dbstr_us.txt - aaSanctityoftheKeepers = 1370, //from dbstr_us.txt - - //Veteran AAs - aaLessonoftheDevoted = 1371, //from dbstr_us.txt - aaInfusionoftheFaithful = 1372, //from dbstr_us.txt - aaChaoticJester = 1373, //from dbstr_us.txt - aaExpedientRecovery = 1374, //from dbstr_us.txt - aaSteadfastServant = 1375, //from dbstr_us.txt - aaStaunchRecovery = 1376, //from dbstr_us.txt - aaIntensityoftheResolute = 1377, //from dbstr_us.txt - - //Depths of Darkhollow - - //the following 5 look to be used as flags for completion of the Blood Raids for access to the Demiplane of Blood - //quest info here: http://everquest.allakhazam.com/db/quest.html?quest=3582 - //"You must also complete the five Blood Raids in any order: The Council of Nine, Emperor Draygun, Bloodeye, Matriarch Shyra, Sendaii, the Hive Queen" - //"The AA's you receive are: Curse of Blood (1/5), Affliction of Blood (2/5), Torment of Blood (3/5), Temptation of Blood (4/5), Invitation of Blood (5/5)." - aaCurseofBlood = 1378, //from dbstr_us.txt - aaAfflictionofBlood = 1379, //from dbstr_us.txt - aaTormentofBlood = 1380, //from dbstr_us.txt - aaTemptationofBlood = 1381, //from dbstr_us.txt - aaInvitationofBlood = 1382, //from dbstr_us.txt - - aaTurnUndead2 = 1383, //from dbstr_us.txt, Class AA changed in DoD - aaWrackUndead = 1386, //from dbstr_us.txt, PoP Class AA changed in DoD - aaEradicateUndead = 1387, //from dbstr_us.txt - aaInnateSeeInvis = 1388, //from dbstr_us.txt - aaProlongedMortality = 1389, //from dbstr_us.txt - aaPrecognition = 1394, //from dbstr_us.txt - aaThickSkin = 1399, //from dbstr_us.txt - aaSilentCasting = 1404, //from dbstr_us.txt - aaSilentCasting2 = 1409, //from dbstr_us.txt - aaHastenedMindCrash = 1414, //from dbstr_us.txt - aaFieldDressing = 1417, //from dbstr_us.txt - aaBandageWounds = 1420, //from dbstr_us.txt - aaCascadingRage = 1425, //from dbstr_us.txt - aaElementalFerocity = 1430, //from dbstr_us.txt - aaGiftofMana = 1435, //from dbstr_us.txt - aaRuneofShadows = 1440, //from dbstr_us.txt - aaChannelingMastery = 1445, //from dbstr_us.txt - aaConservation = 1453, //from dbstr_us.txt - aaCryofBattle = 1458, //from dbstr_us.txt - aaWardofPurity = 1459, //from dbstr_us.txt - aaTurnSummoned2 = 1462, //from dbstr_us.txt - aaWrackSummoned = 1465, //from dbstr_us.txt - aaEradicateSummoned = 1466, //from dbstr_us.txt - aaWardersSavagery = 1467, //from dbstr_us.txt - aaShackleofSpirits = 1470, //from dbstr_us.txt - aaHastenedThunder = 1471, //from dbstr_us.txt - aaTranslocationalAnchor = 1474, //from dbstr_us.txt - aaStealthyGetaway = 1477, //from dbstr_us.txt - aaPyromancy = 1478, //from dbstr_us.txt - aaMasteryofFury = 1483, //from dbstr_us.txt - aaAbundantHealing = 1486, //from dbstr_us.txt - aaGreaterAvatar = 1491, //from dbstr_us.txt - aaSharedCamouflage = 1494, //from dbstr_us.txt - aaConvergenceofSpirits = 1495, //from dbstr_us.txt - aaNaturesGuardian = 1498, //from dbstr_us.txt - aaEdictofCommand = 1501, //from dbstr_us.txt - aaExtendedBurnout = 1504, //from dbstr_us.txt - aaGuardianofRo = 1507, //from dbstr_us.txt - aaBloodMagic = 1510, //from dbstr_us.txt - aaGraverobbing = 1511, //from dbstr_us.txt - aaAfflictionMastery = 1514, //from dbstr_us.txt - aaGreaterRabidBear = 1517, //from dbstr_us.txt - aaAncestralGuard = 1520, //from dbstr_us.txt - aaCloakofLight = 1523, //from dbstr_us.txt - aaVanquishUndead = 1524, //from dbstr_us.txt - aaCloakofShadows = 1527, //from dbstr_us.txt - aaWillfulDeath = 1528, //from dbstr_us.txt - aaSwiftBlade = 1533, //from dbstr_us.txt - aaWickedBlade = 1536, //from dbstr_us.txt - aaForcedOpening = 1539, //from dbstr_us.txt - aaAppraisal = 1542, //from dbstr_us.txt - aaPreciseStrikes = 1543, //from dbstr_us.txt - aaHastenedDeath = 1546, //from dbstr_us.txt - aaUnflinchingResolve = 1549, //from dbstr_us.txt - aaWeightlessSteps = 1552, //from dbstr_us.txt - aaHastenedBlades = 1555, //from dbstr_us.txt - aaImprovedHarmoniousAttack = 1563, //from dbstr_us.txt - aaImprovedBestialFrenzy = 1566, //from dbstr_us.txt - aaSongofStone = 1569, //from dbstr_us.txt - aaDeepSleep = 1572, //from dbstr_us.txt - aaCompanionsGift = 1577, //from dbstr_us.txt - aaHastenedDefiance = 1583, //from dbstr_us.txt - aaDauntlessPerseverance = 1586, //from dbstr_us.txt - aaConcentration = 1587, //from dbstr_us.txt - aaEnhancedAggression = 1592, //from dbstr_us.txt - aaCallofChallenge = 1597, //from dbstr_us.txt - aaCacophony = 1598, //from dbstr_us.txt - aaImprovedHeadshot = 1601, //from dbstr_us.txt - aaAnatomy = 1604, //from dbstr_us.txt - aaFetterofSpirits = 1607, //from dbstr_us.txt - aaTrickShot = 1608, //from dbstr_us.txt - aaLightningStrikes = 1616, //from dbstr_us.txt - aaRelentlessAssault = 1621, //from dbstr_us.txt - aaKnightsExpertise = 1624, //from dbstr_us.txt - aaSelosEnduringCadence = 1627, //from dbstr_us.txt - aaHarmTouch = 7800, //from dbstr_us.txt - aaLayonHands = 7850, //from dbstr_us.txt - aaLayonHandsRank16 = 7866, - - aaHighestID //this should always be last, and should always - //follow the highest AA ID -} aaID; -*/ - - typedef enum { //AA IDs aaNone =0, aaInnateStrength =2,//implemented as bonus @@ -2109,21 +1525,6 @@ typedef enum { //AA IDs //follow the highest AA ID } aaID; - -//Structure representing the database's AA actions -struct AA_DBAction { - uint32 reuse_time; //in seconds - uint16 spell_id; //spell to cast, SPELL_UNKNOWN=no spell - aaTargetType target; //from aaTargetType - aaNonspellAction action; //non-spell action to take - uint16 mana_cost; //mana the NON-SPELL action costs - uint16 duration; //duration of NON-SPELL effect, 0=N/A - aaID redux_aa; //AA which reduces reuse time - int32 redux_rate; //%/point in redux_aa reduction in reuse time - aaID redux_aa2; //AA which reduces reuse time - int32 redux_rate2; //%/point in redux_aa reduction in reuse time -}; - //Structure representing the database's swarm pet configs struct AA_SwarmPet { uint8 count; //number to summon @@ -2131,12 +1532,6 @@ struct AA_SwarmPet { uint16 duration; //how long they last, in seconds }; -struct AALevelCost_Struct -{ - uint32 Level; - uint32 Cost; -}; - enum { //values of AA_Action.action aaActionActivate = 0, aaActionSetEXP = 1, diff --git a/zone/aa_ability.h b/zone/aa_ability.h index bd2b9e306..ba152fb06 100644 --- a/zone/aa_ability.h +++ b/zone/aa_ability.h @@ -49,6 +49,8 @@ public: int classes; int races; int deities; + int drakkin_heritage; + int status; bool grant_only; int type; int charges; diff --git a/zone/client.h b/zone/client.h index dd283596d..faa4eeb3a 100644 --- a/zone/client.h +++ b/zone/client.h @@ -784,9 +784,6 @@ public: void SetTitleSuffix(const char *txt); inline uint32 GetMaxAAXP(void) const { return max_AAXP; } inline uint32 GetAAXP() const { return m_pp.expAA; } - void SendAATable(); - int CalcAAReuseTimer(const AA_DBAction *caa); - void ActivateAA(aaID activate); void EnableAAEffect(aaEffectType type, uint32 duration = 0); void DisableAAEffect(aaEffectType type); bool CheckAAEffect(aaEffectType type); diff --git a/zone/command.cpp b/zone/command.cpp index 298022dc9..0554a5e68 100644 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -167,7 +167,6 @@ int command_init(void) { command_add("aggro", "(range) [-v] - Display aggro information for all mobs 'range' distance from your target. -v is verbose faction info.", 80, command_aggro) || command_add("aggrozone", "[aggro] - Aggro every mob in the zone with X aggro. Default is 0. Not recommend if you're not invulnerable.", 100, command_aggrozone) || command_add("ai", "[factionid/spellslist/con/guard/roambox/stop/start] - Modify AI on NPC target", 100, command_ai) || - command_add("altactivate", "[argument] - activates alternate advancement abilities, use altactivate help for more information", 0, command_altactivate) || command_add("appearance", "[type] [value] - Send an appearance packet for you or your target", 150, command_appearance) || command_add("attack", "[targetname] - Make your NPC target attack targetname", 150, command_attack) || command_add("augmentitem", "Force augments an item. Must have the augment item window open.", 250, command_augmentitem) || @@ -273,7 +272,6 @@ int command_init(void) { command_add("los", nullptr,0, command_checklos) || command_add("makepet", "[level] [class] [race] [texture] - Make a pet", 50, command_makepet) || command_add("mana", "- Fill your or your target's mana", 50, command_mana) || - command_add("manaburn", "- Use AA Wizard class skill manaburn on target", 10, command_manaburn) || command_add("maxskills", "Maxes skills for you.", 200, command_max_all_skills) || command_add("memspell", "[slotid] [spellid] - Memorize spellid in the specified slot", 50, command_memspell) || command_add("merchant_close_shop", "Closes a merchant shop", 100, command_merchantcloseshop) || @@ -4848,36 +4846,6 @@ void command_zonestatus(Client *c, const Seperator *sep) } } -void command_manaburn(Client *c, const Seperator *sep) -{ - Mob* target=c->GetTarget(); - - if (c->GetTarget() == 0) - c->Message(0, "#Manaburn needs a target."); - else { - int cur_level=c->GetAA(MANA_BURN);//ManaBurn ID - if (DistanceSquared(c->GetPosition(), target->GetPosition()) > 200) - c->Message(0,"You are too far away from your target."); - else { - if(cur_level == 1) { - if(c->IsAttackAllowed(target)) - { - c->SetMana(0); - int nukedmg=(c->GetMana())*2; - if (nukedmg>0) - { - target->Damage(c, nukedmg, 2751, SkillAbjuration/*hackish*/); - c->Message(4,"You unleash an enormous blast of magical energies."); - } - Log.Out(Logs::General, Logs::Normal, "Manaburn request from %s, damage: %d", c->GetName(), nukedmg); - } - } - else - c->Message(0, "You have not learned this skill."); - } - } -} - void command_doanim(Client *c, const Seperator *sep) { if (!sep->IsNumber(1)) @@ -7684,57 +7652,6 @@ void command_reloadtitles(Client *c, const Seperator *sep) } -//old aa, probably to be removed -void command_altactivate(Client *c, const Seperator *sep){ -// if(sep->arg[1][0] == '\0'){ -// c->Message(10, "Invalid argument, usage:"); -// c->Message(10, "#altactivate list - lists the AA ID numbers that are available to you"); -// c->Message(10, "#altactivate time [argument] - returns the time left until you can use the AA with the ID that matches the argument."); -// c->Message(10, "#altactivate [argument] - activates the AA with the ID that matches the argument."); -// return; -// } -// if(!strcasecmp(sep->arg[1], "help")){ -// c->Message(10, "Usage:"); -// c->Message(10, "#altactivate list - lists the AA ID numbers that are available to you"); -// c->Message(10, "#altactivate time [argument] - returns the time left until you can use the AA with the ID that matches the argument."); -// c->Message(10, "#altactivate [argument] - activates the AA with the ID that matches the argument."); -// return; -// } -// if(!strcasecmp(sep->arg[1], "list")){ -// c->Message(10, "You have access to the following AA Abilities:"); -// int x, val; -// SendAA_Struct* saa = nullptr; -// for(x = 0; x < aaHighestID; x++){ -// if(AA_Actions[x][0].spell_id || AA_Actions[x][0].action){ //if there's an action or spell associated we assume it's a valid -// val = 0; //and assume if they don't have a value for the first rank then it isn't valid for any rank -// saa = nullptr; -// val = c->GetAA(x); -// if(val){ -// saa = zone->FindAA(x); -// c->Message(10, "%d: %s %d", x, saa->name, val); -// } -// } -// } -// } -// else if(!strcasecmp(sep->arg[1], "time")){ -// int ability = atoi(sep->arg[2]); -// if(c->GetAA(ability)){ -// int remain = c->GetPTimers().GetRemainingTime(pTimerAAStart + ability); -// if(remain) -// c->Message(10, "You may use that ability in %d minutes and %d seconds.", (remain/60), (remain%60)); -// else -// c->Message(10, "You may use that ability now."); -// } -// else{ -// c->Message(10, "You do not have access to that ability."); -// } -// } -// else -// { -// c->ActivateAA((aaID) atoi(sep->arg[1])); -// } -} - void command_traindisc(Client *c, const Seperator *sep) { uint8 max_level, min_level; diff --git a/zone/command.h b/zone/command.h index 0560b8eff..f44362ea7 100644 --- a/zone/command.h +++ b/zone/command.h @@ -216,7 +216,6 @@ void command_time(Client *c, const Seperator *sep); void command_guild(Client *c, const Seperator *sep); bool helper_guild_edit(Client *c, uint32 dbid, uint32 eqid, uint8 rank, const char* what, const char* value); void command_zonestatus(Client *c, const Seperator *sep); -void command_manaburn(Client *c, const Seperator *sep); void command_doanim(Client *c, const Seperator *sep); void command_randomfeatures(Client *c, const Seperator *sep); void command_face(Client *c, const Seperator *sep); @@ -276,7 +275,6 @@ void command_guildlist(Client *c, const Seperator *sep); void command_rules(Client *c, const Seperator *sep); void command_task(Client *c, const Seperator *sep); void command_reloadtitles(Client *c, const Seperator *sep); -void command_altactivate(Client *c, const Seperator *sep); void command_refundaa(Client *c, const Seperator *sep); void command_traindisc(Client *c, const Seperator *sep); void command_deletegraveyard(Client *c, const Seperator *sep);