Implement cast_not_standing and fix Cazic Touch

No idea why this spell field does this, but that's what the client
is doing with it ...
This commit is contained in:
Michael Cook (mackal)
2016-07-23 18:40:17 -04:00
parent f428a8a56a
commit 343b781e74
5 changed files with 9 additions and 4 deletions
+1
View File
@@ -1688,6 +1688,7 @@ void SharedDatabase::LoadSpells(void *data, int max_spells) {
sp[tempid].pvpresistcalc=atoi(row[178]);
sp[tempid].pvpresistcap=atoi(row[179]);
sp[tempid].spell_category=atoi(row[180]);
sp[tempid].cast_not_standing = atoi(row[184]) != 0;
sp[tempid].can_mgb=atoi(row[185]);
sp[tempid].dispel_flag = atoi(row[186]);
sp[tempid].MinResist = atoi(row[189]);
+1 -1
View File
@@ -1116,7 +1116,7 @@ bool IsCastWhileInvis(uint16 spell_id)
if (!IsValidSpell(spell_id))
return false;
const auto &spell = spells[spell_id];
if (spell.sneak)
if (spell.sneak || spell.cast_not_standing)
return true;
return false;
}
+1 -1
View File
@@ -736,7 +736,7 @@ struct SPDat_Spell_Struct
/* 181 */ //int pvp_duration; // buffdurationformula for PvP -- PVP_DURATION
/* 182 */ //int pvp_duration_cap; // buffduration for PvP -- PVP_DURATION_CAP
/* 183 */ //int pcnpc_only_flag; // valid values are 0, 1, and 2 -- PCNPC_ONLY_FLAG
/* 184 */ //bool cast_not_standing; // this is checked in the client's EQ_Spell::IsCastWhileInvisSpell, this also blocks SE_InterruptCasting from affecting this spell -- CAST_NOT_STANDING
/* 184 */ bool cast_not_standing; // this is checked in the client's EQ_Spell::IsCastWhileInvisSpell, this also blocks SE_InterruptCasting from affecting this spell -- CAST_NOT_STANDING
/* 185 */ bool can_mgb; // 0=no, -1 or 1 = yes -- CAN_MGB
/* 186 */ int dispel_flag; // -- NO_DISPELL
/* 187 */ //int npc_category; // -- NPC_MEM_CATEGORY