mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 05:21:29 +00:00
Removed fluff code, added drakkin heritage and status can use modifiers to aa abilities
This commit is contained in:
parent
e5d1e98793
commit
65ac9683a3
468
zone/aa.cpp
468
zone/aa.cpp
@ -37,428 +37,6 @@ Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net)
|
|||||||
|
|
||||||
extern QueryServ* QServ;
|
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;i<MAX_AA_ACTION_RANKS;i++){
|
|
||||||
// a = activate - i;
|
|
||||||
// if(a <= 0)
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// aa2 = zone->FindAA(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) {
|
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..
|
//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->max_level = ability->GetMaxLevel(this);
|
||||||
aai->prev_id = rank->prev_id;
|
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;
|
aai->next_id = -1;
|
||||||
} else {
|
} else {
|
||||||
aai->next_id = rank->next_id;
|
aai->next_id = rank->next_id;
|
||||||
@ -1834,28 +1412,16 @@ bool Mob::CanUseAlternateAdvancementRank(AA::Rank *rank) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for racial/Drakkin blood line AAs
|
if(IsClient() && CastToClient()->Admin() < ability->status) {
|
||||||
//Commented this out for now, will add a drakkin heritage field later
|
return false;
|
||||||
//if(ability->category == 8)
|
}
|
||||||
//{
|
|
||||||
// uint32 client_race = GetBaseRace();
|
if(GetBaseRace() == 522) {
|
||||||
//
|
//drakkin_heritage
|
||||||
// // Drakkin Bloodlines
|
if(!(ability->drakkin_heritage & (1 << GetDrakkinHeritage()))) {
|
||||||
// if(rank->expansion > 522)
|
return false;
|
||||||
// {
|
}
|
||||||
// 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;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1963,7 +1529,7 @@ bool ZoneDatabase::LoadAlternateAdvancementAbilities(std::unordered_map<int, std
|
|||||||
{
|
{
|
||||||
Log.Out(Logs::General, Logs::Status, "Loading Alternate Advancement Abilities...");
|
Log.Out(Logs::General, Logs::Status, "Loading Alternate Advancement Abilities...");
|
||||||
abilities.clear();
|
abilities.clear();
|
||||||
std::string query = "SELECT id, name, category, classes, races, deities, type, charges, grant_only, first_rank_id FROM aa_ability";
|
std::string query = "SELECT id, name, category, classes, races, deities, drakkin_heritage, status, type, charges, grant_only, first_rank_id FROM aa_ability";
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
if(results.Success()) {
|
if(results.Success()) {
|
||||||
for(auto row = results.begin(); row != results.end(); ++row) {
|
for(auto row = results.begin(); row != results.end(); ++row) {
|
||||||
@ -1975,10 +1541,12 @@ bool ZoneDatabase::LoadAlternateAdvancementAbilities(std::unordered_map<int, std
|
|||||||
ability->classes = atoi(row[3]) << 1;
|
ability->classes = atoi(row[3]) << 1;
|
||||||
ability->races = atoi(row[4]);
|
ability->races = atoi(row[4]);
|
||||||
ability->deities = atoi(row[5]);
|
ability->deities = atoi(row[5]);
|
||||||
ability->type = atoi(row[6]);
|
ability->drakkin_heritage = atoi(row[6]);
|
||||||
ability->charges = atoi(row[7]);
|
ability->status = atoi(row[7]);
|
||||||
ability->grant_only = atoi(row[8]) != 0 ? true : false;
|
ability->type = atoi(row[8]);
|
||||||
ability->first_rank_id = atoi(row[9]);
|
ability->charges = atoi(row[9]);
|
||||||
|
ability->grant_only = atoi(row[10]) != 0 ? true : false;
|
||||||
|
ability->first_rank_id = atoi(row[11]);
|
||||||
ability->first = nullptr;
|
ability->first = nullptr;
|
||||||
|
|
||||||
abilities[ability->id] = std::unique_ptr<AA::Ability>(ability);
|
abilities[ability->id] = std::unique_ptr<AA::Ability>(ability);
|
||||||
|
|||||||
605
zone/aa.h
605
zone/aa.h
@ -1,27 +1,8 @@
|
|||||||
|
|
||||||
#ifndef AA_H
|
#ifndef AA_H
|
||||||
#define AA_H
|
#define AA_H
|
||||||
|
|
||||||
struct AA_Ability;
|
|
||||||
struct SendAA_Struct;
|
|
||||||
|
|
||||||
|
|
||||||
#define MANA_BURN 664
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#define MAX_SWARM_PETS 12 //this can change as long as you make more coords (swarm_pet_x/swarm_pet_y)
|
#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 {
|
typedef enum {
|
||||||
aaActionNone = 0,
|
aaActionNone = 0,
|
||||||
aaActionAETaunt = 1,
|
aaActionAETaunt = 1,
|
||||||
@ -133,571 +114,6 @@ static const uint8 LeadershipAACosts[_maxLeaderAA][MAX_LEADERSHIP_TIERS] = {
|
|||||||
{ 0, 0, 0, 0, 0, 0 }, //raidAA15
|
{ 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
|
typedef enum { //AA IDs
|
||||||
aaNone =0,
|
aaNone =0,
|
||||||
aaInnateStrength =2,//implemented as bonus
|
aaInnateStrength =2,//implemented as bonus
|
||||||
@ -2109,21 +1525,6 @@ typedef enum { //AA IDs
|
|||||||
//follow the highest AA ID
|
//follow the highest AA ID
|
||||||
} aaID;
|
} 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
|
//Structure representing the database's swarm pet configs
|
||||||
struct AA_SwarmPet {
|
struct AA_SwarmPet {
|
||||||
uint8 count; //number to summon
|
uint8 count; //number to summon
|
||||||
@ -2131,12 +1532,6 @@ struct AA_SwarmPet {
|
|||||||
uint16 duration; //how long they last, in seconds
|
uint16 duration; //how long they last, in seconds
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AALevelCost_Struct
|
|
||||||
{
|
|
||||||
uint32 Level;
|
|
||||||
uint32 Cost;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum { //values of AA_Action.action
|
enum { //values of AA_Action.action
|
||||||
aaActionActivate = 0,
|
aaActionActivate = 0,
|
||||||
aaActionSetEXP = 1,
|
aaActionSetEXP = 1,
|
||||||
|
|||||||
@ -49,6 +49,8 @@ public:
|
|||||||
int classes;
|
int classes;
|
||||||
int races;
|
int races;
|
||||||
int deities;
|
int deities;
|
||||||
|
int drakkin_heritage;
|
||||||
|
int status;
|
||||||
bool grant_only;
|
bool grant_only;
|
||||||
int type;
|
int type;
|
||||||
int charges;
|
int charges;
|
||||||
|
|||||||
@ -784,9 +784,6 @@ public:
|
|||||||
void SetTitleSuffix(const char *txt);
|
void SetTitleSuffix(const char *txt);
|
||||||
inline uint32 GetMaxAAXP(void) const { return max_AAXP; }
|
inline uint32 GetMaxAAXP(void) const { return max_AAXP; }
|
||||||
inline uint32 GetAAXP() const { return m_pp.expAA; }
|
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 EnableAAEffect(aaEffectType type, uint32 duration = 0);
|
||||||
void DisableAAEffect(aaEffectType type);
|
void DisableAAEffect(aaEffectType type);
|
||||||
bool CheckAAEffect(aaEffectType type);
|
bool CheckAAEffect(aaEffectType type);
|
||||||
|
|||||||
@ -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("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("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("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("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("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) ||
|
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("los", nullptr,0, command_checklos) ||
|
||||||
command_add("makepet", "[level] [class] [race] [texture] - Make a pet", 50, command_makepet) ||
|
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("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("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("memspell", "[slotid] [spellid] - Memorize spellid in the specified slot", 50, command_memspell) ||
|
||||||
command_add("merchant_close_shop", "Closes a merchant shop", 100, command_merchantcloseshop) ||
|
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)
|
void command_doanim(Client *c, const Seperator *sep)
|
||||||
{
|
{
|
||||||
if (!sep->IsNumber(1))
|
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)
|
void command_traindisc(Client *c, const Seperator *sep)
|
||||||
{
|
{
|
||||||
uint8 max_level, min_level;
|
uint8 max_level, min_level;
|
||||||
|
|||||||
@ -216,7 +216,6 @@ void command_time(Client *c, const Seperator *sep);
|
|||||||
void command_guild(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);
|
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_zonestatus(Client *c, const Seperator *sep);
|
||||||
void command_manaburn(Client *c, const Seperator *sep);
|
|
||||||
void command_doanim(Client *c, const Seperator *sep);
|
void command_doanim(Client *c, const Seperator *sep);
|
||||||
void command_randomfeatures(Client *c, const Seperator *sep);
|
void command_randomfeatures(Client *c, const Seperator *sep);
|
||||||
void command_face(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_rules(Client *c, const Seperator *sep);
|
||||||
void command_task(Client *c, const Seperator *sep);
|
void command_task(Client *c, const Seperator *sep);
|
||||||
void command_reloadtitles(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_refundaa(Client *c, const Seperator *sep);
|
||||||
void command_traindisc(Client *c, const Seperator *sep);
|
void command_traindisc(Client *c, const Seperator *sep);
|
||||||
void command_deletegraveyard(Client *c, const Seperator *sep);
|
void command_deletegraveyard(Client *c, const Seperator *sep);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user