mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-03 17:32:33 +00:00
Add a CastWhileInvis check and fix some issues
This commit is contained in:
parent
cd9a7f1d5d
commit
f428a8a56a
@ -1111,6 +1111,16 @@ bool IsStackableDot(uint16 spell_id)
|
|||||||
return IsEffectInSpell(spell_id, SE_CurrentHP) || IsEffectInSpell(spell_id, SE_GravityEffect);
|
return IsEffectInSpell(spell_id, SE_CurrentHP) || IsEffectInSpell(spell_id, SE_GravityEffect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsCastWhileInvis(uint16 spell_id)
|
||||||
|
{
|
||||||
|
if (!IsValidSpell(spell_id))
|
||||||
|
return false;
|
||||||
|
const auto &spell = spells[spell_id];
|
||||||
|
if (spell.sneak)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
uint32 GetNimbusEffect(uint16 spell_id)
|
uint32 GetNimbusEffect(uint16 spell_id)
|
||||||
{
|
{
|
||||||
if (IsValidSpell(spell_id))
|
if (IsValidSpell(spell_id))
|
||||||
|
|||||||
@ -903,6 +903,7 @@ uint32 GetPartialMeleeRuneAmount(uint32 spell_id);
|
|||||||
uint32 GetPartialMagicRuneAmount(uint32 spell_id);
|
uint32 GetPartialMagicRuneAmount(uint32 spell_id);
|
||||||
bool NoDetrimentalSpellAggro(uint16 spell_id);
|
bool NoDetrimentalSpellAggro(uint16 spell_id);
|
||||||
bool IsStackableDot(uint16 spell_id);
|
bool IsStackableDot(uint16 spell_id);
|
||||||
|
bool IsCastWhileInvis(uint16 spell_id);
|
||||||
|
|
||||||
int CalcPetHp(int levelb, int classb, int STA = 75);
|
int CalcPetHp(int levelb, int classb, int STA = 75);
|
||||||
const char *GetRandPetName();
|
const char *GetRandPetName();
|
||||||
|
|||||||
@ -1179,7 +1179,8 @@ void Client::ActivateAlternateAdvancementAbility(int rank_id, int target_id) {
|
|||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommonBreakInvisible();
|
if (!IsCastWhileInvis(rank->spell))
|
||||||
|
CommonBreakInvisible();
|
||||||
// Bards can cast instant cast AAs while they are casting another song
|
// Bards can cast instant cast AAs while they are casting another song
|
||||||
if(spells[rank->spell].cast_time == 0 && GetClass() == BARD && IsBardSong(casting_spell_id)) {
|
if(spells[rank->spell].cast_time == 0 && GetClass() == BARD && IsBardSong(casting_spell_id)) {
|
||||||
if(!SpellFinished(rank->spell, entity_list.GetMob(target_id), ALTERNATE_ABILITY_SPELL_SLOT, spells[rank->spell].mana, -1, spells[rank->spell].ResistDiff, false)) {
|
if(!SpellFinished(rank->spell, entity_list.GetMob(target_id), ALTERNATE_ABILITY_SPELL_SLOT, spells[rank->spell].mana, -1, spells[rank->spell].ResistDiff, false)) {
|
||||||
|
|||||||
@ -8550,7 +8550,8 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
CommonBreakInvisible(); // client can't do this for us :(
|
if (!IsCastWhileInvis(item->Click.Effect))
|
||||||
|
CommonBreakInvisible(); // client can't do this for us :(
|
||||||
CastSpell(item->Click.Effect, target_id, USE_ITEM_SPELL_SLOT, item->CastTime, 0, 0, slot_id);
|
CastSpell(item->Click.Effect, target_id, USE_ITEM_SPELL_SLOT, item->CastTime, 0, 0, slot_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8578,7 +8579,8 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
CommonBreakInvisible(); // client can't do this for us :(
|
if (!IsCastWhileInvis(augitem->Click.Effect))
|
||||||
|
CommonBreakInvisible(); // client can't do this for us :(
|
||||||
CastSpell(augitem->Click.Effect, target_id, USE_ITEM_SPELL_SLOT, augitem->CastTime, 0, 0, slot_id);
|
CastSpell(augitem->Click.Effect, target_id, USE_ITEM_SPELL_SLOT, augitem->CastTime, 0, 0, slot_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user