Implement not_extendable spell field

This commit is contained in:
Michael Cook (mackal) 2014-01-20 13:34:18 -05:00
parent 70f994cda5
commit 935ce8f968
4 changed files with 17 additions and 11 deletions

View File

@ -1730,6 +1730,7 @@ void SharedDatabase::LoadSpells(void *data, int max_spells) {
sp[tempid].NimbusEffect = atoi(row[193]);
sp[tempid].directional_start = (float)atoi(row[194]);
sp[tempid].directional_end = (float)atoi(row[195]);
sp[tempid].not_extendable = atoi(row[197]) != 0;
sp[tempid].suspendable = atoi(row[200]) != 0;
sp[tempid].spellgroup=atoi(row[207]);
sp[tempid].powerful_flag=atoi(row[209]);

View File

@ -710,7 +710,9 @@ struct SPDat_Spell_Struct
/* 193 */ int NimbusEffect;
/* 194 */ float directional_start;
/* 195 */ float directional_end;
/* 196 - 199 */
/* 196 */
/* 197 */ bool not_extendable;
/* 198- 199 */
/* 200 */ bool suspendable; // buff is suspended in suspended buff zones
/* 201 - 202 */
/* 203 */ //int songcap; // individual song cap (how live currently does it, not implemented)

View File

@ -0,0 +1 @@
ALTER TABLE `spells_new` CHANGE `field197` `not_extendable` INT(11) NOT NULL DEFAULT '0';

View File

@ -400,14 +400,16 @@ int32 Client::GetActSpellCost(uint16 spell_id, int32 cost)
int32 Client::GetActSpellDuration(uint16 spell_id, int32 duration)
{
if (spells[spell_id].not_extendable)
return duration;
int increase = 100;
increase += GetFocusEffect(focusSpellDuration, spell_id);
int tic_inc = 0;
tic_inc = GetFocusEffect(focusSpellDurByTic, spell_id);
if(IsBeneficialSpell(spell_id))
{
switch(GetAA(aaSpellCastingReinforcement)) {
if (IsBeneficialSpell(spell_id)) {
switch (GetAA(aaSpellCastingReinforcement)) {
case 1:
increase += 5;
break;
@ -422,16 +424,16 @@ int32 Client::GetActSpellDuration(uint16 spell_id, int32 duration)
}
}
if(IsMezSpell(spell_id)) {
if (IsMezSpell(spell_id))
tic_inc += GetAA(aaMesmerizationMastery);
}
// Only need this for clients, since the change was for bard songs, I assume we should keep non bard songs getting +1
// However if its bard or not and is mez, charm or fear, we need to add 1 so that client is in sync
if(!IsShortDurationBuff(spell_id) ||
IsFearSpell(spell_id) ||
IsCharmSpell(spell_id) ||
IsMezSpell(spell_id) ||
IsBlindSpell(spell_id))
if (!IsShortDurationBuff(spell_id) ||
IsFearSpell(spell_id) ||
IsCharmSpell(spell_id) ||
IsMezSpell(spell_id) ||
IsBlindSpell(spell_id))
tic_inc += 1;
return (((duration * increase) / 100) + tic_inc);