Index: scripts/globals/abilities/cover.lua =================================================================== --- scripts/globals/abilities/cover.lua (revision 0) +++ scripts/globals/abilities/cover.lua (working copy) @@ -0,0 +1,20 @@ +----------------------------------- +-- Author: Tenjou +-- Cover +-- Allows player to protect the target by placing themselves between them and the enemy. +----------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); + +function OnUseAbility(player, target, ability) + --print(); + ability:setMsg(0); + duration = 60 + player:getMerit(MERIT_COVER_EFFECT_LENGTH); + if (target ~= player) then + target:addStatusEffect(EFFECT_COVER,1,0,duration); + cover = target:getStatusEffect(EFFECT_COVER); + cover:setEffector(player); + end + --target:updateEnmity(player,300,1); +end; \ No newline at end of file Index: scripts/globals/magic.lua =================================================================== --- scripts/globals/magic.lua (revision 2729) +++ scripts/globals/magic.lua (working copy) @@ -125,7 +125,72 @@ spell:setMsg(230); end; + -- List of gear which enhances Cure Potency. + ----------------------------------- + function curePotency(caster) + c = 0; + main = caster:getEquipID(SLOT_MAIN); + sub = caster:getEquipID(SLOT_SUB); + range = caster:getEquipID(SLOT_RANGED); + ammo = caster:getEquipID(SLOT_AMMO); + head = caster:getEquipID(SLOT_HEAD); + body = caster:getEquipID(SLOT_BODY); + hand = caster:getEquipID(SLOT_HANDS); + leg = caster:getEquipID(SLOT_LEGS); + foot = caster:getEquipID(SLOT_FEET); + neck = caster:getEquipID(SLOT_NECK); + waist = caster:getEquipID(SLOT_WAIST); + ear1 = caster:getEquipID(SLOT_EAR1); + ear2 = caster:getEquipID(SLOT_EAR2); + ring1 = caster:getEquipID(SLOT_RING1); + ring2 = caster:getEquipID(SLOT_RING2); + back = caster:getEquipID(SLOT_BACK); + if (main == 0x443a or sub == 0x443a) then + c = (c+0.01); + --print("Cure enhanced by Dia Wand."); + end + if (main == 0x442e or sub == 0x442e) then + c = (c+0.05); + --print("Cure enhanced by Asklepios."); + end + if (main == 0x4999 or sub == 0x4999) then + c = (c+0.10); + --print("Cure enhanced by Templar Mace."); + end + if (main == 17557 or main == 17558 or main == 0x42d4 or main == 0x429b) then + c = (c+0.10); + --print("Cure enhanced by Staff."); + end + if (body == 0x313d) then + c = (c+0.10); + --print("Cure enhanced by Noble's Tunic."); + elseif (body == 0x35ce) then + c = (c+0.12); + --print("Cure enhanced by Aristocrat's Coat."); + end + if (ear1 == 0x39d7 or ear2 == 0x39d7) then + c = (c+0.05); + --print("Cure enhanced by Hospitaler Earring."); + end + if (ear1 == 0x3e82 or ear2 == 0x3e82) then + c = (c+0.05); + --print("Cure enhanced by Roundel Earring."); + end + if (ring1 == 0x33e8 or ring2 == 0x33e8) then + hp = caster:getHP(); + maxhp = caster:getMaxHP(); + ratio = (hp/maxhp); + tp = caster:getTP(); + if (ratio <= 0.75 and tp <= 100) then + c = (c+0.10); + --print("Cure enhanced by Medicine Ring."); + end + end + --print("Total enhancement: " .. (c+1)); + return c; +end; + --------------------------------- -- Author: ZeDingo -- getCurePower returns the caster's cure power @@ -258,6 +323,28 @@ -- Iridal and Chatoyant will return affinity for strong and weak, cancelling their bonus out, so they need to be specifically checked. -- Could do an if strong == weak, but that would cause problems once/if augments or magian gear is added. local equippedMain = caster:getEquipID(SLOT_MAIN); + + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_BLM or sjob == JOB_BLM) then + if(ele == 1) then + affinity = affinity + caster:getMerit(MERIT_FIRE_MAGIC_POTENCY); + elseif(ele == 2) then + affinity = affinity + caster:getMerit(MERIT_EARTH_MAGIC_POTENCY); + elseif(ele == 3) then + affinity = affinity + caster:getMerit(MERIT_WATER_MAGIC_POTENCY); + elseif(ele == 4) then + affinity = affinity + caster:getMerit(MERIT_WIND_MAGIC_POTENCY); + elseif(ele == 5) then + affinity = affinity + caster:getMerit(MERIT_ICE_MAGIC_POTENCY); + elseif(ele == 6) then + affinity = affinity + caster:getMerit(MERIT_LIGHTNING_MAGIC_POTENCY); + else + affinity = affinity; + end + end + end if (equippedMain == 18632) then affinity = affinity + 1; elseif (equippedMain == 18633) then @@ -303,6 +390,94 @@ elseif(player:getStatusEffect(EFFECT_DARK_SEAL) ~= nil and skill == DARK_MAGIC_SKILL) then magicaccbonus = magicaccbonus + 256; end + + + -- add Magical Accuracy Bonus from BLM AM II Spells + local id = spell:getID(); + local merit = 0; + + if(player:getObjType() == TYPE_PC) then + if(id == 207 or id == 209 or id == 211 or id == 213 or id == 215 or id == 205) then + if (id == 205) then + merit = player:getMerit(MERIT_FLARE_II); + elseif (id == 207) then + merit = player:getMerit(MERIT_FREEZE_II); + elseif (id == 209) then + merit = player:getMerit(MERIT_TORNADO_II); + elseif (id == 211) then + merit = player:getMerit(MERIT_QUAKE_II); + elseif (id == 213) then + merit = player:getMerit(MERIT_BURST_II); + elseif (id == 215) then + merit = player:getMerit(MERIT_FLOOD_II); + end + magicaccbonus = magicaccbonus + (merit - 5); + end + end -- if BLM AM II + + + -- add Magical Accuracy Bonus from Merit RDM Spells + + local ele = spell:getElement(); + + if(player:getObjType() == TYPE_PC) then + if(job == JOB_RDM or sjob == JOB_RDM) then + if(ele == 1) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_FIRE_MAGIC_ACCURACY); + elseif(ele == 2) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_EARTH_MAGIC_ACCURACY); + elseif(ele == 3) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_WATER_MAGIC_ACCURACY); + elseif(ele == 4) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_WIND_MAGIC_ACCURACY); + elseif(ele == 5) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_ICE_MAGIC_ACCURACY); + elseif(ele == 6) then + magicaccbonus = magicaccbonus + player:getMerit(MERIT_LIGHTNING_MAGIC_ACCURACY); + else + magicaccbonus = magicaccbonus; + end + end + end + + if(player:getObjType() == TYPE_PC) then + if(id == 79) then + merit = player:getMerit(MERIT_SLOW_II); + magicaccbonus = magicaccbonus + (merit - 1); + end + end + + if(player:getObjType() == TYPE_PC) then + if(id == 80 or id == 276) then + if (id == 80) then + merit = player:getMerit(MERIT_PARALYZE_II); + elseif (id == 276) then + merit = player:getMerit(MERIT_BLIND_II); + end + end + magicaccbonus = magicaccbonus + (merit - 5); + end -- if RDM Merit Spells + + + -- add Magical Accuracy Bonus from Merit NIN Spells + if(player:getObjType() == TYPE_PC) then + if(id == 322 or id == 325 or id == 328 or id == 331 or id == 334 or id == 337) then + if(id == 322) then + merit = player:getMerit(MERIT_KATON_SAN); + elseif(id == 325) then + merit = player:getMerit(MERIT_HYOTON_SAN); + elseif(id == 328) then + merit = player:getMerit(MERIT_HUTON_SAN); + elseif(id == 331) then + merit = player:getMerit(MERIT_DOTON_SAN); + elseif(id == 334) then + merit = player:getMerit(MERIT_RAITON_SAN); + elseif(id == 337) then + merit = player:getMerit(MERIT_SUITON_SAN); + end + end + magicaccbonus = magicaccbonus + ((merit - 1)*5); + + end -- if NIN Merit Spells + + --add acc for staves local affinityBonus = AffinityBonus(player, spell); magicaccbonus = magicaccbonus + (affinityBonus-1) * 200; @@ -508,7 +683,7 @@ if(skin >= dmg) then --absorb all damage target:delMod(MOD_STONESKIN,dmg); if(target:getMod(MOD_STONESKIN)==0) then - target:delStatusEffect(EFFECT_STONESKIN); + wtarget:delStatusEffect(EFFECT_STONESKIN); end return 0; else --absorbs some damage then wear @@ -569,24 +744,42 @@ burstBonus = burstBonus + 0.05; end - -- TODO: This should be getting the spell ID, and checking + -- This should be getting the spell ID, and checking -- if it is an Ancient Magic II spell. Add 0.03 -- to burstBonus for each merit the caster has for - -- the given spell. + -- the given spell over the 1st merit. -- AM 2 get magic burst bonuses - --id = spell:getID(); - --if(id == 207 or id == 209 or id == 211 or id == 213 or id == 215 or id == 205) then - -- if(AM2 Merit 1) then - -- burstBonus = burstBonus + 0.03; - -- elseif(AM2 Merit 2) then - -- burstBonus += 0.06; - -- elseif(AM2 Merit 3) then - -- burstBonus += 0.09; - -- elseif(AM2 Merit 4) then - -- burstBonus += 0.12; - -- end - --end -- if AM2+ + local id = spell:getID(); + local merit = 0; + if(caster:getObjType() == TYPE_PC) then + if(id == 207 or id == 209 or id == 211 or id == 213 or id == 215 or id == 205) then + if (id == 205) then + merit = caster:getMerit(MERIT_FLARE_II); + elseif (id == 207) then + merit = caster:getMerit(MERIT_FREEZE_II); + elseif (id == 209) then + merit = caster:getMerit(MERIT_TORNADO_II); + elseif (id == 211) then + merit = caster:getMerit(MERIT_QUAKE_II); + elseif (id == 213) then + merit = caster:getMerit(MERIT_BURST_II); + elseif (id == 215) then + merit = caster:getMerit(MERIT_FLOOD_II); + end + end + if(merit == 5) then + burstBonus = burstBonus; + elseif(merit == 10) then + burstBonus = burstBonus + 0.03; + elseif(merit == 15) then + burstBonus = burstBonus + 0.06; + elseif(merit == 20) then + burstBonus = burstBonus + 0.09; + elseif(merit == 25) then + burstBonus = burstBonus + 0.12; + end + end -- if AM2+ end return burst, burstBonus; @@ -594,7 +787,8 @@ function addBonuses(caster, spell, target, dmg) local ele = spell:getElement(); - + local id = spell:getID(); + local merit = 0; local affinityBonus = AffinityBonus(caster, spell); dmg = math.floor(dmg * affinityBonus); @@ -668,6 +862,26 @@ local mab = (100 + caster:getMod(MOD_MATT)) / (100 + target:getMod(MOD_MDEF)); + -- add Magical Attack Bonus from Merit NIN Spells + if(caster:getObjType() == TYPE_PC) then + if(id == 322 or id == 325 or id == 328 or id == 331 or id == 334 or id == 337) then + if(id == 322) then + merit = caster:getMerit(MERIT_KATON_SAN); + elseif(id == 325) then + merit = caster:getMerit(MERIT_HYOTON_SAN); + elseif(id == 328) then + merit = caster:getMerit(MERIT_HUTON_SAN); + elseif(id == 331) then + merit = caster:getMerit(MERIT_DOTON_SAN); + elseif(id == 334) then + merit = caster:getMerit(MERIT_RAITON_SAN); + elseif(id == 337) then + merit = caster:getMerit(MERIT_SUITON_SAN); + end + end + mab = mab + ((merit - 1)*5); + + end -- if NIN Merit Spells + dmg = math.floor(dmg * mab); -- Applies "Damage Taken" and "Magic Damage Taken" mods. Index: scripts/globals/spells/arise.lua =================================================================== --- scripts/globals/spells/arise.lua (revision 0) +++ scripts/globals/spells/arise.lua (working copy) @@ -0,0 +1,15 @@ +----------------------------------------- +-- Spell: Arise +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + target:sendRaise(3); + target:delStatusEffect(EFFECT_RERAISE); + target:addStatusEffect(EFFECT_RERAISE,3,0,3600); --reraise 3, 1 hr duration +end; \ No newline at end of file Index: scripts/globals/spells/aspir_ii.lua =================================================================== --- scripts/globals/spells/aspir_ii.lua (revision 0) +++ scripts/globals/spells/aspir_ii.lua (working copy) @@ -0,0 +1,43 @@ +----------------------------------------- +-- Spell: Aspir II +-- Drain functions only on skill level!! +----------------------------------------- + +require("scripts/globals/magic"); +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + --calculate raw damage (unknown function -> only dark skill though) - using http://www.bluegartr.com/threads/44518-Drain-Calculations + -- also have small constant to account for 0 dark skill + dmg = 5 + 0.6 * (caster:getSkillLevel(DARK_MAGIC_SKILL) + caster:getMod(79 + DARK_MAGIC_SKILL)); + --get resist multiplier (1x if no resist) + resist = applyResistance(caster,spell,target,caster:getMod(MOD_INT)-target:getMod(MOD_INT),DARK_MAGIC_SKILL,1.0); + --get the resisted damage + dmg = dmg*resist; + --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) + dmg = addBonuses(caster,spell,target,dmg); + --add in target adjustment + dmg = adjustForTarget(target,dmg); + --add in final adjustments + + if(target:isUndead()) then + spell:setMsg(75); -- No effect + return; + end + + if(target:getMP() > dmg) then + caster:addMP(dmg); + target:delMP(dmg); + else + dmg = target:getMP(); + caster:addMP(dmg); + target:delMP(dmg); + end + + spell:setMsg(228); --change msg to 'xxx mp drained from the yyyy.' + return dmg; +end; \ No newline at end of file Index: scripts/globals/spells/banish.lua =================================================================== --- scripts/globals/spells/banish.lua (revision 2729) +++ scripts/globals/spells/banish.lua (working copy) @@ -13,6 +13,13 @@ function onSpellCast(caster,target,spell) --calculate raw damage dmg = calculateMagicDamage(14,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false); + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(job == JOB_WHM or sjob == JOB_WHM) then + dmg = calculateMagicDamage(14,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false) + caster:getMerit(MERIT_BANISH_EFFECT); + end + end --get resist multiplier (1x if no resist) resist = applyResistance(caster,spell,target,caster:getStat(MOD_MND)-target:getStat(MOD_MND),DIVINE_MAGIC_SKILL,1.0); --get the resisted damage @@ -23,5 +30,20 @@ dmg = adjustForTarget(target,dmg); --add in final adjustments dmg = finalMagicAdjustments(caster,target,spell,dmg); + duration = 15; + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_WHM or sjob == JOB_WHM) then + duration = 15 + caster:getMerit(MERIT_BANISH_EFFECT); + end + end + power = 50; + if(target:isUndead()) then + if(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == false) then + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + elseif(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == true) then + target:delStatusEffect(EFFECT_DEFENSE_DOWN); + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + end + end return dmg; end; \ No newline at end of file Index: scripts/globals/spells/banish_ii.lua =================================================================== --- scripts/globals/spells/banish_ii.lua (revision 2729) +++ scripts/globals/spells/banish_ii.lua (working copy) @@ -13,6 +13,13 @@ function onSpellCast(caster,target,spell) --calculate raw damage dmg = calculateMagicDamage(85,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false); + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(job == JOB_WHM or sjob == JOB_WHM) then + dmg = calculateMagicDamage(85,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false) + caster:getMerit(MERIT_BANISH_EFFECT); + end + end --get resist multiplier (1x if no resist) resist = applyResistance(caster,spell,target,caster:getStat(MOD_MND)-target:getStat(MOD_MND),DIVINE_MAGIC_SKILL,1.0); --get the resisted damage @@ -23,5 +30,20 @@ dmg = adjustForTarget(target,dmg); --add in final adjustments dmg = finalMagicAdjustments(caster,target,spell,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_WHM or sjob == JOB_WHM) then + duration = 30 + caster:getMerit(MERIT_BANISH_EFFECT); + end + end + power = 70; + if(target:isUndead()) then + if(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == false) then + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + elseif(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == true) then + target:delStatusEffect(EFFECT_DEFENSE_DOWN); + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + end + end return dmg; end; \ No newline at end of file Index: scripts/globals/spells/banish_iii.lua =================================================================== --- scripts/globals/spells/banish_iii.lua (revision 2729) +++ scripts/globals/spells/banish_iii.lua (working copy) @@ -13,6 +13,13 @@ function onSpellCast(caster,target,spell) --calculate raw damage dmg = calculateMagicDamage(198,1.5,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false); + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(job == JOB_WHM or sjob == JOB_WHM) then + dmg = calculateMagicDamage(198,1.5,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false) + caster:getMerit(MERIT_BANISH_EFFECT); + end + end --get resist multiplier (1x if no resist) resist = applyResistance(caster,spell,target,caster:getStat(MOD_MND)-target:getStat(MOD_MND),DIVINE_MAGIC_SKILL,1.0); --get the resisted damage @@ -23,5 +30,20 @@ dmg = adjustForTarget(target,dmg); --add in final adjustments dmg = finalMagicAdjustments(caster,target,spell,dmg); + duration = 45; + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_WHM or sjob == JOB_WHM) then + duration = 45 + caster:getMerit(MERIT_BANISH_EFFECT); + end + end + power = 97; + if(target:isUndead()) then + if(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == false) then + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + elseif(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == true) then + target:delStatusEffect(EFFECT_DEFENSE_DOWN); + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + end + end return dmg; end; \ No newline at end of file Index: scripts/globals/spells/banishga.lua =================================================================== --- scripts/globals/spells/banishga.lua (revision 2729) +++ scripts/globals/spells/banishga.lua (working copy) @@ -13,6 +13,13 @@ function onSpellCast(caster,target,spell) --calculate raw damage dmg = calculateMagicDamage(50,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false); + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(job == JOB_WHM or sjob == JOB_WHM) then + dmg = calculateMagicDamage(50,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false) + caster:getMerit(MERIT_BANISH_EFFECT); + end + end --get resist multiplier (1x if no resist) resist = applyResistance(caster,spell,target,caster:getStat(MOD_MND)-target:getStat(MOD_MND),DIVINE_MAGIC_SKILL,1.0); --get the resisted damage @@ -23,5 +30,20 @@ dmg = adjustForTarget(target,dmg); --add in final adjustments dmg = finalMagicAdjustments(caster,target,spell,dmg); + duration = 15; + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_WHM or sjob == JOB_WHM) then + duration = 15 + caster:getMerit(MERIT_BANISH_EFFECT); + end + end + power = 50; + if(target:isUndead()) then + if(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == false) then + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + elseif(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == true) then + target:delStatusEffect(EFFECT_DEFENSE_DOWN); + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + end + end return dmg; end; \ No newline at end of file Index: scripts/globals/spells/banishga_ii.lua =================================================================== --- scripts/globals/spells/banishga_ii.lua (revision 2729) +++ scripts/globals/spells/banishga_ii.lua (working copy) @@ -13,6 +13,13 @@ function onSpellCast(caster,target,spell) --calculate raw damage dmg = calculateMagicDamage(180,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false); + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + if(job == JOB_WHM or sjob == JOB_WHM) then + dmg = calculateMagicDamage(180,1,caster,spell,target,DIVINE_MAGIC_SKILL,MOD_MND,false) + caster:getMerit(MERIT_BANISH_EFFECT); + end + end --get resist multiplier (1x if no resist) resist = applyResistance(caster,spell,target,caster:getStat(MOD_MND)-target:getStat(MOD_MND),DIVINE_MAGIC_SKILL,1.0); --get the resisted damage @@ -23,5 +30,20 @@ dmg = adjustForTarget(target,dmg); --add in final adjustments dmg = finalMagicAdjustments(caster,target,spell,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + if(job == JOB_WHM or sjob == JOB_WHM) then + duration = 30 + caster:getMerit(MERIT_BANISH_EFFECT); + end + end + power = 70; + if(target:isUndead()) then + if(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == false) then + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + elseif(target:hasStatusEffect(EFFECT_DEFENSE_DOWN) == true) then + target:delStatusEffect(EFFECT_DEFENSE_DOWN); + target:addStatusEffect(EFFECT_DEFENSE_DOWN,power,0,duration); + end + end return dmg; end; \ No newline at end of file Index: scripts/globals/spells/baraera.lua =================================================================== --- scripts/globals/spells/baraera.lua (revision 2729) +++ scripts/globals/spells/baraera.lua (working copy) @@ -10,9 +10,11 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end + duration = 150; if(enchanceSkill >180)then @@ -23,7 +25,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARAERO,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARAERO,power,0,duration,0,1); return EFFECT_BARAERO; end; Index: scripts/globals/spells/baramnesra.lua =================================================================== --- scripts/globals/spells/baramnesra.lua (revision 0) +++ scripts/globals/spells/baramnesra.lua (working copy) @@ -0,0 +1,23 @@ +----------------------------------------- +-- Spell: Baramnesra +----------------------------------------- +require("scripts/globals/magic"); +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + duration = getBarspellDuration(caster); + power = getBarspellPower(caster); + if(caster:getObjType() == TYPE_PC) then + power = getBarspellPower(caster) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster == target) then + duration = duration * 3; + end + target:delStatusEffect(EFFECT_BARAMNESIA); + target:addStatusEffect(EFFECT_BARAMNESIA,power,0,duration); +end; \ No newline at end of file Index: scripts/globals/spells/barblindra.lua =================================================================== --- scripts/globals/spells/barblindra.lua (revision 2729) +++ scripts/globals/spells/barblindra.lua (working copy) @@ -10,9 +10,11 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end - power = 1 + 0.02 * enchanceSkill; - duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barblizzara.lua =================================================================== --- scripts/globals/spells/barblizzara.lua (revision 2729) +++ scripts/globals/spells/barblizzara.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then @@ -23,7 +24,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARBLIZZARD,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARBLIZZARD,power,0,duration,0,1); return EFFECT_BARBLIZZARD; end; Index: scripts/globals/spells/barfira.lua =================================================================== --- scripts/globals/spells/barfira.lua (revision 2729) +++ scripts/globals/spells/barfira.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then @@ -23,7 +24,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARFIRE,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARFIRE,power,0,duration,0,1); spell:setMsg(230); return EFFECT_BARFIRE; Index: scripts/globals/spells/barparalyzra.lua =================================================================== --- scripts/globals/spells/barparalyzra.lua (revision 2729) +++ scripts/globals/spells/barparalyzra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barpetra.lua =================================================================== --- scripts/globals/spells/barpetra.lua (revision 2729) +++ scripts/globals/spells/barpetra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barpoison.lua =================================================================== --- scripts/globals/spells/barpoison.lua (revision 2729) +++ scripts/globals/spells/barpoison.lua (working copy) @@ -1,5 +1,5 @@ ----------------------------------------- --- Spell: BARAERA +-- Spell: BARPOISON ----------------------------------------- require("scripts/globals/status"); Index: scripts/globals/spells/barpoisonra.lua =================================================================== --- scripts/globals/spells/barpoisonra.lua (revision 2729) +++ scripts/globals/spells/barpoisonra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barsilencera.lua =================================================================== --- scripts/globals/spells/barsilencera.lua (revision 2729) +++ scripts/globals/spells/barsilencera.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barsleepra.lua =================================================================== --- scripts/globals/spells/barsleepra.lua (revision 2729) +++ scripts/globals/spells/barsleepra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barstonra.lua =================================================================== --- scripts/globals/spells/barstonra.lua (revision 2729) +++ scripts/globals/spells/barstonra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then @@ -23,7 +24,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARSTONE,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARSTONE,power,0,duration,0,1); return EFFECT_BARSTONE; end; Index: scripts/globals/spells/barthundra.lua =================================================================== --- scripts/globals/spells/barthundra.lua (revision 2729) +++ scripts/globals/spells/barthundra.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then @@ -23,7 +24,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARTHUNDER,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARTHUNDER,power,0,duration,0,1); return EFFECT_BARTHUNDER; end; Index: scripts/globals/spells/barvira.lua =================================================================== --- scripts/globals/spells/barvira.lua (revision 2729) +++ scripts/globals/spells/barvira.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 1 + 0.02 * enchanceSkill; - + power = 1 + (0.02 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 1 + (0.02 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then Index: scripts/globals/spells/barwatera.lua =================================================================== --- scripts/globals/spells/barwatera.lua (revision 2729) +++ scripts/globals/spells/barwatera.lua (working copy) @@ -10,9 +10,10 @@ function onSpellCast(caster,target,spell) enchanceSkill = caster:getSkillLevel(34); - - power = 40 + 0.2 * enchanceSkill; - + power = 40 + (0.2 * enchanceSkill); + if(caster:getObjType() == TYPE_PC) then + power = 40 + (0.2 * enchanceSkill) + caster:getMerit(MERIT_BAR_SPELL_EFFECT); + end duration = 150; if(enchanceSkill >180)then @@ -23,7 +24,7 @@ duration = duration * 3; end - target:addStatusEffect(EFFECT_BARWATER,power,0,duration,0,1); + target:addStatusEffect(EFFECT_BARWATER,power,0,duration,0,1); return EFFECT_BARWATER; end; Index: scripts/globals/spells/bio_iii.lua =================================================================== --- scripts/globals/spells/bio_iii.lua (revision 2729) +++ scripts/globals/spells/bio_iii.lua (working copy) @@ -37,8 +37,10 @@ final = finalMagicAdjustments(caster,target,spell,dmg); -- Calculate duration. - duration = 30; -- +30 sec by merit - + duration = 30; + if(caster:getObjType() == TYPE_PC) then + duration = 30 + caster:getMerit(MERIT_BIO_III); + end -- Check for Dia. dia = target:getStatusEffect(EFFECT_DIA); Index: scripts/globals/spells/blade_madrigal.lua =================================================================== --- scripts/globals/spells/blade_madrigal.lua (revision 2729) +++ scripts/globals/spells/blade_madrigal.lua (working copy) @@ -14,6 +14,13 @@ local acc = caster:getSkillLevel(SINGING_SKILL) / 16 + 1; local sItem = caster:getEquipID(2); local duration = 120; + + if(caster:getObjType() == TYPE_PC) then + local merit = caster:getMerit(MERIT_MADRIGAL_EFFECT); + if(merit > 0) then + acc = acc + merit; + end + end if(sItem == 17348) then acc = acc + 2; Index: scripts/globals/spells/blind.lua =================================================================== --- scripts/globals/spells/blind.lua (revision 2729) +++ scripts/globals/spells/blind.lua (working copy) @@ -15,13 +15,13 @@ dINT = (caster:getStat(MOD_INT) - target:getStat(MOD_INT)); bonus = AffinityBonus(caster,spell); - -- Base power. May need more research. + -- Base power. power = math.floor((dINT + 60) / 4); if(power < 5) then power = 5; end - if(power > 30) then - power = 30; + if(power > 20) then + power = 20; end -- Duration, including resistance. Unconfirmed. Index: scripts/globals/spells/blind_ii.lua =================================================================== --- scripts/globals/spells/blind_ii.lua (revision 0) +++ scripts/globals/spells/blind_ii.lua (working copy) @@ -0,0 +1,81 @@ +----------------------------------------- +-- Spell: Blind +----------------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + local merit = 0; + if(caster:getMerit(MERIT_BLIND_II) == 5) then + merit = 0; + elseif(caster:getMerit(MERIT_BLIND_II) == 10) then + merit = 1; + elseif(caster:getMerit(MERIT_BLIND_II) == 15) then + merit = 2; + elseif(caster:getMerit(MERIT_BLIND_II) == 20) then + merit = 3; + elseif(caster:getMerit(MERIT_BLIND_II) == 15) then + merit = 4; + end + -- Pull base stats. + dINT = (caster:getStat(MOD_INT) - target:getStat(MOD_INT)); + bonus = AffinityBonus(caster,spell); + + -- Base power. + power = math.floor((dINT + 100) / 4); + if(power < 15) then + power = 15 + merit; + end + if(power > 30) then + power = 30 + merit; + else + power = power + merit; + end + -- Duration, including resistance. Unconfirmed. + duration = 180 * applyResistance(caster,spell,target,dINT,35,bonus); + + if(100 * math.random() >= target:getMod(MOD_BLINDRES)) then + if(duration >= 90) then --Do it! + -- Try to erase a weaker blind. + blind = target:getStatusEffect(EFFECT_BLINDNESS) + if(blind ~= nil) then + if(blind:getPower() < power) then + target:delStatusEffect(EFFECT_BLINDNESS); + target:addStatusEffect(EFFECT_BLINDNESS,power,0,duration); +-- if(spell:isAOE() == false) then +-- spell:setMsg(237); +-- else + spell:setMsg(267); +-- end + else + spell:setMsg(75); + end + else + target:addStatusEffect(EFFECT_BLINDNESS,power,0,duration); +-- if(spell:isAOE() == false) then +-- spell:setMsg(237); +-- else + spell:setMsg(267); +-- end + end + else +-- if(spell:isAOE() == false) then +-- spell:setMsg(85); +-- else + spell:setMsg(284); +-- end + end + else +-- if(spell:isAOE() == false) then +-- spell:setMsg(85); +-- else + spell:setMsg(284); +-- end + end + return EFFECT_BLINDNESS; +end; \ No newline at end of file Index: scripts/globals/spells/boost-agi.lua =================================================================== --- scripts/globals/spells/boost-agi.lua (revision 0) +++ scripts/globals/spells/boost-agi.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-AGI +-- Boosts targets AGI stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_AGI_DOWN) == true) then + target:delStatusEffect(EFFECT_AGI_DOWN); + else + target:addStatusEffect(EFFECT_AGI_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-chr.lua =================================================================== --- scripts/globals/spells/boost-chr.lua (revision 0) +++ scripts/globals/spells/boost-chr.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-CHR +-- Boosts targets CHR stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_CHR_DOWN) == true) then + target:delStatusEffect(EFFECT_CHR_DOWN); + else + target:addStatusEffect(EFFECT_CHR_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-dex.lua =================================================================== --- scripts/globals/spells/boost-dex.lua (revision 0) +++ scripts/globals/spells/boost-dex.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-DEX +-- Boosts targets DEX stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_DEX_DOWN) == true) then + target:delStatusEffect(EFFECT_DEX_DOWN); + else + target:addStatusEffect(EFFECT_DEX_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-int.lua =================================================================== --- scripts/globals/spells/boost-int.lua (revision 0) +++ scripts/globals/spells/boost-int.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-INT +-- Boosts targets INT stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_INT_DOWN) == true) then + target:delStatusEffect(EFFECT_INT_DOWN); + else + target:addStatusEffect(EFFECT_INT_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-mnd.lua =================================================================== --- scripts/globals/spells/boost-mnd.lua (revision 0) +++ scripts/globals/spells/boost-mnd.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-MND +-- Boosts targets MND stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_MND_DOWN) == true) then + target:delStatusEffect(EFFECT_MND_DOWN); + else + target:addStatusEffect(EFFECT_MND_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-str.lua =================================================================== --- scripts/globals/spells/boost-str.lua (revision 0) +++ scripts/globals/spells/boost-str.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-STR +-- Boosts targets STR stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_STR_DOWN) == true) then + target:delStatusEffect(EFFECT_STR_DOWN); + else + target:addStatusEffect(EFFECT_STR_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/boost-vit.lua =================================================================== --- scripts/globals/spells/boost-vit.lua (revision 0) +++ scripts/globals/spells/boost-vit.lua (working copy) @@ -0,0 +1,34 @@ +-------------------------------------- +-- Spell: Boost-VIT +-- Boosts targets VIT stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill >300)then + power = 5 + (0.1 * (enchanceSkill - 300)); + else + power = 5; + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_VIT_DOWN) == true) then + target:delStatusEffect(EFFECT_VIT_DOWN); + else + target:addStatusEffect(EFFECT_VIT_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/dia_iii.lua =================================================================== --- scripts/globals/spells/dia_iii.lua (revision 2729) +++ scripts/globals/spells/dia_iii.lua (working copy) @@ -37,8 +37,8 @@ final = finalMagicAdjustments(caster,target,spell,dmg); -- Calculate duration. - duration = 30; - + duration = 30 + (caster:getMerit(MERIT_DIA_III)); + -- Check for Bio. bio = target:getStatusEffect(EFFECT_BIO); Index: scripts/globals/spells/doton_ichi.lua =================================================================== --- scripts/globals/spells/doton_ichi.lua (revision 2729) +++ scripts/globals/spells/doton_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_DOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_DOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WINDRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WINDRES); return final; Index: scripts/globals/spells/doton_ni.lua =================================================================== --- scripts/globals/spells/doton_ni.lua (revision 2729) +++ scripts/globals/spells/doton_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_DOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_DOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WINDRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WINDRES); return final; Index: scripts/globals/spells/doton_san.lua =================================================================== --- scripts/globals/spells/doton_san.lua (revision 2729) +++ scripts/globals/spells/doton_san.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_DOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_DOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WINDRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WINDRES); return final; Index: scripts/globals/spells/gain-agi.lua =================================================================== --- scripts/globals/spells/gain-agi.lua (revision 0) +++ scripts/globals/spells/gain-agi.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-AGI +-- Boosts targets AGI stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_AGI_DOWN) == true) then + target:delStatusEffect(EFFECT_AGI_DOWN); + else + target:addStatusEffect(EFFECT_AGI_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-chr.lua =================================================================== --- scripts/globals/spells/gain-chr.lua (revision 0) +++ scripts/globals/spells/gain-chr.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-CHR +-- Boosts targets CHR stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_CHR_DOWN) == true) then + target:delStatusEffect(EFFECT_CHR_DOWN); + else + target:addStatusEffect(EFFECT_CHR_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-dex.lua =================================================================== --- scripts/globals/spells/gain-dex.lua (revision 0) +++ scripts/globals/spells/gain-dex.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-DEX +-- Boosts targets DEX stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_DEX_DOWN) == true) then + target:delStatusEffect(EFFECT_DEX_DOWN); + else + target:addStatusEffect(EFFECT_DEX_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-int.lua =================================================================== --- scripts/globals/spells/gain-int.lua (revision 0) +++ scripts/globals/spells/gain-int.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-INT +-- Boosts targets INT stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_INT_DOWN) == true) then + target:delStatusEffect(EFFECT_INT_DOWN); + else + target:addStatusEffect(EFFECT_INT_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-mnd.lua =================================================================== --- scripts/globals/spells/gain-mnd.lua (revision 0) +++ scripts/globals/spells/gain-mnd.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-MND +-- Boosts targets MND stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_MND_DOWN) == true) then + target:delStatusEffect(EFFECT_MND_DOWN); + else + target:addStatusEffect(EFFECT_MND_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-str.lua =================================================================== --- scripts/globals/spells/gain-str.lua (revision 0) +++ scripts/globals/spells/gain-str.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-STR +-- Boosts targets STR stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_STR_DOWN) == true) then + target:delStatusEffect(EFFECT_STR_DOWN); + else + target:addStatusEffect(EFFECT_STR_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/gain-vit.lua =================================================================== --- scripts/globals/spells/gain-vit.lua (revision 0) +++ scripts/globals/spells/gain-vit.lua (working copy) @@ -0,0 +1,72 @@ +-------------------------------------- +-- Spell: Gain-VIT +-- Boosts targets VIT stat +-------------------------------------- + +require("scripts/globals/settings"); +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enchanceSkill = caster:getSkillLevel(34); + + duration = 300; + + if(enchanceSkill <309)then + power = 5 + elseif(enchanceSkill >=309 and enchanceSkill <=319)then + power = 6 + elseif(enchanceSkill >=320 and enchanceSkill <=329)then + power = 7 + elseif(enchanceSkill >=330 and enchanceSkill <=339)then + power = 8 + elseif(enchanceSkill >=340 and enchanceSkill <=349)then + power = 9 + elseif(enchanceSkill >=350 and enchanceSkill <=359)then + power = 10 + elseif(enchanceSkill >=360 and enchanceSkill <=369)then + power = 11 + elseif(enchanceSkill >=370 and enchanceSkill <=379)then + power = 12 + elseif(enchanceSkill >=380 and enchanceSkill <=389)then + power = 13 + elseif(enchanceSkill >=390 and enchanceSkill <=399)then + power = 14 + elseif(enchanceSkill >=400 and enchanceSkill <=409)then + power = 15 + elseif(enchanceSkill >=410 and enchanceSkill <=419)then + power = 16 + elseif(enchanceSkill >=420 and enchanceSkill <=429)then + power = 17 + elseif(enchanceSkill >=430 and enchanceSkill <=439)then + power = 18 + elseif(enchanceSkill >=440 and enchanceSkill <=449)then + power = 19 + elseif(enchanceSkill >=450 and enchanceSkill <=459)then + power = 20 + elseif(enchanceSkill >=460 and enchanceSkill <=469)then + power = 21 + elseif(enchanceSkill >=470 and enchanceSkill <=479)then + power = 22 + elseif(enchanceSkill >=480 and enchanceSkill <=489)then + power = 23 + elseif(enchanceSkill >=480 and enchanceSkill <=499)then + power = 24 + else + power = 25 + end + + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(target:hasStatusEffect(EFFECT_VIT_DOWN) == true) then + target:delStatusEffect(EFFECT_VIT_DOWN); + else + target:addStatusEffect(EFFECT_VIT_BOOST,power,0,duration); + end +end; Index: scripts/globals/spells/huton_ichi.lua =================================================================== --- scripts/globals/spells/huton_ichi.lua (revision 2729) +++ scripts/globals/spells/huton_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HUTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HUTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_ICERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_ICERES); return final; Index: scripts/globals/spells/huton_ni.lua =================================================================== --- scripts/globals/spells/huton_ni.lua (revision 2729) +++ scripts/globals/spells/huton_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HUTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HUTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_ICERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_ICERES); return final; Index: scripts/globals/spells/huton_san.lua =================================================================== --- scripts/globals/spells/huton_san.lua (revision 2729) +++ scripts/globals/spells/huton_san.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HUTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HUTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_ICERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_ICERES); return final; Index: scripts/globals/spells/hyoton_ichi.lua =================================================================== --- scripts/globals/spells/hyoton_ichi.lua (revision 2729) +++ scripts/globals/spells/hyoton_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HYOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HYOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_FIRERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_FIRERES); return final; Index: scripts/globals/spells/hyoton_ni.lua =================================================================== --- scripts/globals/spells/hyoton_ni.lua (revision 2729) +++ scripts/globals/spells/hyoton_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HYOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HYOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_FIRERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_FIRERES); return final; Index: scripts/globals/spells/hyoton_san.lua =================================================================== --- scripts/globals/spells/hyoton_san.lua (revision 2729) +++ scripts/globals/spells/hyoton_san.lua (working copy) @@ -19,21 +19,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_HYOTON_EFFECT); + duration = 30 + caster:getMerit(MERIT_HYOTON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_FIRERES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_FIRERES); return final; Index: scripts/globals/spells/kakka_ichi.lua =================================================================== --- scripts/globals/spells/kakka_ichi.lua (revision 0) +++ scripts/globals/spells/kakka_ichi.lua (working copy) @@ -0,0 +1,19 @@ +----------------------------------------- +-- Spell: Kakka: Ichi +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + target:delStatusEffect(EFFECT_STORE_TP); + effect = target:getStatusEffect(EFFECT_STORE_TP); + + target:addStatusEffect(EFFECT_STORE_TP,EFFECT_STORE_TP,10,0,180); + spell:setMsg(230); + + return EFFECT_STORE_TP; +end; \ No newline at end of file Index: scripts/globals/spells/katon_ichi.lua =================================================================== --- scripts/globals/spells/katon_ichi.lua (revision 2729) +++ scripts/globals/spells/katon_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_KATON_EFFECT); + duration = 30 + caster:getMerit(MERIT_KATON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WATERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WATERRES); return final; Index: scripts/globals/spells/katon_ni.lua =================================================================== --- scripts/globals/spells/katon_ni.lua (revision 2729) +++ scripts/globals/spells/katon_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_KATON_EFFECT); + duration = 30 + caster:getMerit(MERIT_KATON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WATERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WATERRES); return final; Index: scripts/globals/spells/katon_san.lua =================================================================== --- scripts/globals/spells/katon_san.lua (revision 2729) +++ scripts/globals/spells/katon_san.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_KATON_EFFECT); + duration = 30 + caster:getMerit(MERIT_KATON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_WATERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_WATERRES); return final; Index: scripts/globals/spells/knights_minne.lua =================================================================== --- scripts/globals/spells/knights_minne.lua (revision 2729) +++ scripts/globals/spells/knights_minne.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 6) then -- If your skill level is below 6 your stuck at the minimum + if (sLvl < 6) then -- If your skill level is below 6 you are stuck at the minimum power = 7; end @@ -27,6 +27,21 @@ power = 14; end + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 6) then -- If your skill level is below 6 you are stuck at the minimum + power = 7 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if (sLvl >= 6 and sLvl <= 61) then -- If your above 5 skill then you get the bonus of 1 more defense for every 8 skill + sBoost = math.floor((sLvl - 5)/8); + power = 7 + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(sLvl >= 61) then -- The bonus caps at skill 61 + power = 14 + caster:getMerit(MERIT_MINNE_EFFECT); + end + end + if(sItem == 17373 or sItem == 17354) then -- Maple Harp +1 or Harp will add 3 more power = power + 3; end Index: scripts/globals/spells/knights_minne_ii.lua =================================================================== --- scripts/globals/spells/knights_minne_ii.lua (revision 2729) +++ scripts/globals/spells/knights_minne_ii.lua (working copy) @@ -11,7 +11,7 @@ function onSpellCast(caster,target,spell) - -- If your skill level is below 65 your stuck at the minimum + -- If your skill level is below 65 you are stuck at the minimum local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing power=0; @@ -24,6 +24,20 @@ if(sLvl >= 125) then power = 28; end + + if(caster:getObjType() == TYPE_PC) then + power=0 + caster:getMerit(MERIT_MINNE_EFFECT); + -- If your above 64 skill then you get the bonus of 1 more defense for every 4 skill + if (sLvl >= 65 and sLvl <= 121) then + sBoost = math.floor((sLvl - 61)/4); + power = power + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + -- The bonus caps at skill 125 + if(sLvl >= 125) then + power = 28 + caster:getMerit(MERIT_MINNE_EFFECT); + end + end + -- Maple Harp +1 or Harp will add 3 more if(sItem == 17373 or sItem == 17354) then power = power + 3; Index: scripts/globals/spells/knights_minne_iii.lua =================================================================== --- scripts/globals/spells/knights_minne_iii.lua (revision 2729) +++ scripts/globals/spells/knights_minne_iii.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 118) then -- If your skill level is below 118 your stuck at the minimum + if (sLvl < 118) then -- If your skill level is below 118 you are stuck at the minimum power = 26; end @@ -26,7 +26,22 @@ if(sLvl >= 187) then -- The bonus caps at skill 187 power = 40; end - + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 118) then -- If your skill level is below 118 you are stuck at the minimum + power = 26 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if (sLvl >= 118 and sLvl <= 186) then -- If your above 117 skill then you get the bonus of 1 more defense for every 5 skill + sBoost = math.floor((sLvl - 117)/5); + power = 26 + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(sLvl >= 187) then -- The bonus caps at skill 187 + power = 40 + caster:getMerit(MERIT_MINNE_EFFECT); + end + end + if(sItem == 17373 or sItem == 17354) then -- Maple Harp +1 or Harp will add 3 more power = power + 3; end Index: scripts/globals/spells/knights_minne_iv.lua =================================================================== --- scripts/globals/spells/knights_minne_iv.lua (revision 2729) +++ scripts/globals/spells/knights_minne_iv.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 193) then -- If your skill level is below 193 your stuck at the minimum + if (sLvl < 193) then -- If your skill level is below 193 you are stuck at the minimum power = 38; end @@ -26,6 +26,21 @@ if(sLvl >= 222) then -- The bonus caps at skill 222 power = 48; end + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 193) then -- If your skill level is below 193 you are stuck at the minimum + power = 38 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if (sLvl >= 193 and sLvl <= 221) then -- If your above 192 skill then you get the bonus of 1 more defense for every 3 skill + sBoost = math.floor((sLvl - 192)/3); + power = 38 + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(sLvl >= 222) then -- The bonus caps at skill 222 + power = 48 + caster:getMerit(MERIT_MINNE_EFFECT); + end + end if(sItem == 17373 or sItem == 17354) then -- Maple Harp +1 or Harp will add 3 more power = power + 3; Index: scripts/globals/spells/knights_minne_v.lua =================================================================== --- scripts/globals/spells/knights_minne_v.lua (revision 0) +++ scripts/globals/spells/knights_minne_v.lua (working copy) @@ -0,0 +1,58 @@ +----------------------------------------- +-- Spell: Knight's Minne IV +-- Grants Defense bonus to all allies. +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + + local sItem = caster:getEquipID(2); + local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing + + if (sLvl < 228) then -- If your skill level is below 228 you are stuck at the minimum + power = 50 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if (sLvl >= 228 and sLvl <= 290) then -- If your above 227 skill then you get the bonus of 1 more defense for every 3 skill + sBoost = math.floor((sLvl - 228)/3); + power = 50 + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(sLvl >= 291) then -- The bonus caps at skill 222 + power = 62 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 228) then -- If your skill level is below 228 you are stuck at the minimum + power = 50 + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if (sLvl >= 228 and sLvl <= 290) then -- If your above 227 skill then you get the bonus of 1 more defense for every 3 skill + sBoost = math.floor((sLvl - 228)/3); + power = 50 + sBoost + caster:getMerit(MERIT_MINNE_EFFECT); + end + + if(sLvl >= 291) then -- The bonus caps at skill 222 + power = 62 + caster:getMerit(MERIT_MINNE_EFFECT); + end + end + + if(sItem == 17373 or sItem == 17354) then -- Maple Harp +1 or Harp will add 3 more + power = power + 3; + end + + if(sItem == 17374) then -- Harp +1 gives 5 more + power = power + 5; + end + + -- Until someone finds a way to delete Effects by tier we should not allow bard spells to stack. + -- Since all the tiers use the same effect buff it is hard to delete a specific one. + target:delStatusEffect(EFFECT_MINNE); + target:addStatusEffect(EFFECT_MINNE,power,0,120); + return EFFECT_MINNE; +end; \ No newline at end of file Index: scripts/globals/spells/migawari_ichi.lua =================================================================== --- scripts/globals/spells/migawari_ichi.lua (revision 0) +++ scripts/globals/spells/migawari_ichi.lua (working copy) @@ -0,0 +1,19 @@ +----------------------------------------- +-- Spell: Migawari: Ichi +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + target:delStatusEffect(EFFECT_MIGAWARI); + effect = target:getStatusEffect(EFFECT_MIGAWARI); + + target:addStatusEffect(EFFECT_MIGAWARI,EFFECT_MIGAWARI,0,0,60); + spell:setMsg(230); + + return EFFECT_MIGAWARI; +end; \ No newline at end of file Index: scripts/globals/spells/myoshui_ichi.lua =================================================================== --- scripts/globals/spells/myoshui_ichi.lua (revision 0) +++ scripts/globals/spells/myoshui_ichi.lua (working copy) @@ -0,0 +1,20 @@ +----------------------------------------- +-- Spell: Myoshui: Ichi +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + target:delStatusEffect(EFFECT_SUBTLE_BLOW_PLUS); + effect = target:getStatusEffect(EFFECT_SUBTLE_BLOW_PLUS); + + -- The power is unknown. + target:addStatusEffect(EFFECT_SUBTLE_BLOW_PLUS,EFFECT_SUBTLE_BLOW_PLUS,10,0,180); + spell:setMsg(230); + + return EFFECT_SUBTLE_BLOW_PLUS; +end; \ No newline at end of file Index: scripts/globals/spells/paralyze_ii.lua =================================================================== --- scripts/globals/spells/paralyze_ii.lua (revision 2729) +++ scripts/globals/spells/paralyze_ii.lua (working copy) @@ -28,7 +28,26 @@ -- Calculate potency. potency = (multiplier * (pMND + dMND)) / 8; if potency > 33 then - potency = 33; + potency = 33; + if(caster:getObjType() == TYPE_PC) then + local merit =0; + if (caster:getMerit(MERIT_PARALYZE_II) == 5) then + merit = 0; + elseif (caster:getMerit(MERIT_PARALYZE_II) == 10) then + merit = 1; + elseif (caster:getMerit(MERIT_PARALYZE_II) == 15) then + merit = 2; + elseif (caster:getMerit(MERIT_PARALYZE_II) == 20) then + merit = 3; + elseif (caster:getMerit(MERIT_PARALYZE_II) == 25) then + merit = 4; + end + + if potency > 33 then + potency = 33 + merit; + else + potency = potency + merit; + end end --printf("Duration : %u",duration); --printf("Potency : %u",potency); Index: scripts/globals/spells/phalanx_ii.lua =================================================================== --- scripts/globals/spells/phalanx_ii.lua (revision 0) +++ scripts/globals/spells/phalanx_ii.lua (working copy) @@ -0,0 +1,59 @@ +----------------------------------------- +-- Spell: PHALANX II +----------------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enhskill = caster:getSkillLevel(ENHANCING_MAGIC_SKILL); + final = 0; + duration = 120; + if(caster:getObjType() == TYPE_PC) then + p2merit = target:getMerit(MERIT_PHALANX_II); + if(p2merit == 1) then + duration = 120; + elseif(p2merit == 2) then + duration = 150; + elseif(p2merit == 3) then + duration = 180; + elseif(p2merit == 4) then + duration = 210; + elseif(p2merit == 5) then + duration = 240; + end + end + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + final = (enhskill/25) + (3 * p2merit) + 1; + if(final < 0) then + final = 0; + print("Warning: Unknown enhancing magic skill for phalanx."); + end + + if(final > 35) then + final = 35; + end + + if(target:hasStatusEffect(EFFECT_PHALANX)) then + oldeffect = target:getStatusEffect(EFFECT_PHALANX); + if(oldeffect:getPower()<=final) then --overwrite + target:delStatusEffect(EFFECT_PHALANX); + target:addStatusEffect(EFFECT_PHALANX,final,0,duration); + spell:setMsg(0); + else --no effect + spell:setMsg(75); + end + else + target:addStatusEffect(EFFECT_PHALANX,final,0,duration); + spell:setMsg(0); + end + + return EFFECT_PHALANX; +end; \ No newline at end of file Index: scripts/globals/spells/protectra_v.lua =================================================================== --- scripts/globals/spells/protectra_v.lua (revision 2729) +++ scripts/globals/spells/protectra_v.lua (working copy) @@ -1,23 +1,33 @@ ------------------------------------------ --- Spell: Protectra V ------------------------------------------ - -require("scripts/globals/status"); - ------------------------------------------ --- OnSpellCast ------------------------------------------ - -function onSpellCast(caster,target,spell) - local power = 175; - local duration = 1800; - - local typeEffect = EFFECT_PROTECT; - if(target:addStatusEffect(typeEffect, power, 0, duration)) then - spell:setMsg(230); - else - spell:setMsg(75); -- no effect - end - - return typeEffect; -end; +----------------------------------------- +-- Spell: Protectra IV +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + local power = 175 + if(caster:getObjType() == TYPE_PC) then + local power = 170 + (target:getMerit(MERIT_PROTECTRA_V)); + end + local duration = 1800; + + local typeEffect = EFFECT_PROTECT; + if(target:hasStatusEffect(typeEffect) == true) then + local effect = target:getStatusEffect(typeEffect); + local cPower = effect:getPower(); + if(cPower > power) then + spell:setMsg(75); -- no effect + else + target:delStatusEffect(typeEffect); + target:addStatusEffect(typeEffect,power,0,duration); + end + else + target:addStatusEffect(typeEffect,power,0,duration); + end + + return typeEffect; +end; Index: scripts/globals/spells/raiton_ichi.lua =================================================================== --- scripts/globals/spells/raiton_ichi.lua (revision 2729) +++ scripts/globals/spells/raiton_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_RAITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_RAITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_EARTHRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_EARTHRES); return final; Index: scripts/globals/spells/raiton_ni.lua =================================================================== --- scripts/globals/spells/raiton_ni.lua (revision 2729) +++ scripts/globals/spells/raiton_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_RAITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_RAITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_EARTHRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_EARTHRES); return final; Index: scripts/globals/spells/raiton_san.lua =================================================================== --- scripts/globals/spells/raiton_san.lua (revision 2729) +++ scripts/globals/spells/raiton_san.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_RAITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_RAITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_EARTHRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_EARTHRES); return final; Index: scripts/globals/spells/refresh_ii.lua =================================================================== --- scripts/globals/spells/refresh_ii.lua (revision 0) +++ scripts/globals/spells/refresh_ii.lua (working copy) @@ -0,0 +1,27 @@ +----------------------------------------- +-- Spell: Refresh II +-- Gradually restores target party member's MP +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + + + mp = 6; + duration = 180; + + + if (target:getMainLvl() < 41) then + duration = duration * target:getMainLvl() / 41; + end + + target:delStatusEffect(EFFECT_REFRESH); + target:addStatusEffect(EFFECT_REFRESH,mp,3,duration); + return 0; + +end; \ No newline at end of file Index: scripts/globals/spells/regen.lua =================================================================== --- scripts/globals/spells/regen.lua (revision 2729) +++ scripts/globals/spells/regen.lua (working copy) @@ -17,6 +17,16 @@ hp = 5; + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + merit = caster:getMerit(MERIT_REGEN_EFFECT); + if(job == JOB_WHM or sjob == JOB_WHM) then + if(merit > 0) then + hp = hp + merit; + end + end + body = caster:getEquipID(SLOT_BODY); if (body == 15089 or body == 14502) then hp = hp+1; Index: scripts/globals/spells/regen_ii.lua =================================================================== --- scripts/globals/spells/regen_ii.lua (revision 2729) +++ scripts/globals/spells/regen_ii.lua (working copy) @@ -17,6 +17,16 @@ hp = 12; + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + merit = caster:getMerit(MERIT_REGEN_EFFECT); + if(job == JOB_WHM or sjob == JOB_WHM) then + if(merit > 0) then + hp = hp + merit; + end + end + body = caster:getEquipID(SLOT_BODY); if (body == 15089 or body == 14502) then hp = hp+2; Index: scripts/globals/spells/regen_iii.lua =================================================================== --- scripts/globals/spells/regen_iii.lua (revision 2729) +++ scripts/globals/spells/regen_iii.lua (working copy) @@ -14,9 +14,19 @@ ----------------------------------------- function onSpellCast(caster,target,spell) - + hp = 20; - + + if(caster:getObjType() == TYPE_PC) then + local job = caster:getMainJob(); + local sjob = caster:getSubJob(); + merit = caster:getMerit(MERIT_REGEN_EFFECT); + if(job == JOB_WHM or sjob == JOB_WHM) then + if(merit > 0) then + hp = hp + merit; + end + end + body = caster:getEquipID(SLOT_BODY); if (body == 15089 or body == 14502) then hp = hp+3; @@ -31,8 +41,8 @@ if(target:addStatusEffect(EFFECT_REGEN,hp,3,duration)) then spell:setMsg(230); else - spell:setMsg(75); -- no effect - end + spell:setMsg(75); -- no effect + end return EFFECT_REGEN; end; \ No newline at end of file Index: scripts/globals/spells/shellra_v.lua =================================================================== --- scripts/globals/spells/shellra_v.lua (revision 0) +++ scripts/globals/spells/shellra_v.lua (working copy) @@ -0,0 +1,32 @@ +----------------------------------------- +-- Spell: Shellra IV +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + local power = -62; + if(caster:getObjType() == TYPE_PC) then + local power = -62 - (target:getMerit(MERIT_SHELLRA_V)); + end + local duration = 1800; + + local typeEffect = EFFECT_SHELL; + if(target:hasStatusEffect(typeEffect) == true) then + local effect = target:getStatusEffect(typeEffect); + local cPower = effect:getPower() - 65536; + if(cPower < power) then + spell:setMsg(75); -- no effect + else + target:delStatusEffect(typeEffect); + target:addStatusEffect(typeEffect,power,0,duration); + end + else + target:addStatusEffect(typeEffect,power,0,duration); + end + return typeEffect; +end; Index: scripts/globals/spells/slow_ii.lua =================================================================== --- scripts/globals/spells/slow_ii.lua (revision 0) +++ scripts/globals/spells/slow_ii.lua (working copy) @@ -0,0 +1,94 @@ +----------------------------------------- +-- Spell: Slow II +-- Spell accuracy is most highly affected by Enfeebling Magic Skill, Magic Accuracy, and MND. +-- Slow II's potency is calculated with the formula (230 + dMND*2)/1024, and caps at 350/1024 (~34.2%). +-- And MND of 75 is neccessary to reach the hardcap of Slow. +----------------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + dMND = (caster:getStat(MOD_MND) - target:getStat(MOD_MND)); + bonus = AffinityBonus(caster,spell); + power = 230 + ((dMND * 1.6)/1024); + + if(caster:getObjType() == TYPE_PC) then + local merit; + merit = caster:getMerit(MERIT_SLOW_II) - 1; + if (caster:getMerit(MERIT_SLOW_II) > 1) then + caster:addMod(MOD_MACC, merit); + power = 230 + (caster:getMerit(MERIT_SLOW_II) * 10) + ((dMND * 1.6)/1024); + end + + --Power. + + if(power > 350) then + power = 350; + end + --Duration, including resistance. + duration = 120 * applyResistance(caster,spell,target,dMND,35,bonus); + if(100 * math.random() >= target:getMod(MOD_SLOWRES)) then + if(duration >= 60) then --Do it! + --Try to erase a weaker slow or haste. + slow = target:getStatusEffect(EFFECT_SLOW); + haste = target:getStatusEffect(EFFECT_HASTE); + if(slow ~= nil) then + if(slow:getPower() > power) then + target:delStatusEffect(EFFECT_SLOW); + target:addStatusEffect(EFFECT_SLOW,power,0,duration); +-- if(spell:isAOE() == false) then + spell:setMsg(237); +-- else +-- spell:setMsg(267); +-- end + else + spell:setMsg(75); + end + elseif(haste ~= nil) then + if(haste:getPower() < (-1 * power)) then + target:delStatusEffect(EFFECT_HASTE); + target:addStatusEffect(EFFECT_SLOW,power,0,duration); +-- if(spell:isAOE() == false) then + spell:setMsg(237); +-- else +-- spell:setMsg(267); +-- end + else + spell:setMsg(75); + end + else + target:addStatusEffect(EFFECT_SLOW,power,0,duration); +-- if(spell:isAOE() == false) then + spell:setMsg(237); +-- else +-- spell:setMsg(267); +-- end + end + --print(power); + --print(target:getMod(MOD_HASTE_MAGIC)); + else +-- if(spell:isAOE() == false) then + spell:setMsg(85); +-- else +-- spell:setMsg(284); +-- end + end + else +-- if(spell:isAOE() == false) then + spell:setMsg(85); +-- else +-- spell:setMsg(284); +-- end + end + if (merit > 1) then + caster:delMod(MOD_MACC, merit); + end + + + return EFFECT_SLOW; +end; \ No newline at end of file Index: scripts/globals/spells/suiton_ichi.lua =================================================================== --- scripts/globals/spells/suiton_ichi.lua (revision 2729) +++ scripts/globals/spells/suiton_ichi.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_SUITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_SUITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_THUNDERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_THUNDERRES); return final; Index: scripts/globals/spells/suiton_ni.lua =================================================================== --- scripts/globals/spells/suiton_ni.lua (revision 2729) +++ scripts/globals/spells/suiton_ni.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_SUITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_SUITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_THUNDERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_THUNDERRES); return final; Index: scripts/globals/spells/suiton_san.lua =================================================================== --- scripts/globals/spells/suiton_san.lua (revision 2729) +++ scripts/globals/spells/suiton_san.lua (working copy) @@ -18,20 +18,24 @@ --get the resisted damage dmg = dmg*resist; --add on bonuses (staff/day/weather/jas/mab/etc all go in this function) - -- boost ninjitsu damage - -- 5% ninjitsu damage - local head = caster:getEquipID(SLOT_HEAD); - if(head == 15084) then - dmg = math.floor(dmg * 1.05); - end - + -- boost ninjitsu damage + -- 5% ninjitsu damage + local head = caster:getEquipID(SLOT_HEAD); + if(head == 15084) then + dmg = math.floor(dmg * 1.05); + end dmg = addBonuses(caster,spell,target,dmg); + duration = 30; + if(caster:getObjType() == TYPE_PC) then + dmg = dmg + caster:getMerit(MERIT_SUITON_EFFECT); + duration = 30 + caster:getMerit(MERIT_SUITON_EFFECT); + end --add in target adjustment dmg = adjustForTarget(target,dmg); --add in final adjustments including the actual damage dealt final = finalMagicAdjustments(caster,target,spell,dmg); - handleNinjutsuDebuff(caster, target, spell, 30, 15, MOD_THUNDERRES); + handleNinjutsuDebuff(caster, target, spell, duration, 15, MOD_THUNDERRES); return final; Index: scripts/globals/spells/sword_madrigal.lua =================================================================== --- scripts/globals/spells/sword_madrigal.lua (revision 2729) +++ scripts/globals/spells/sword_madrigal.lua (working copy) @@ -13,11 +13,16 @@ local acc = caster:getSkillLevel(SINGING_SKILL) / 16 + 1; local sItem = caster:getEquipID(2); + local merit = getMerit(MERIT_MADRIGAL_EFFECT); local duration = 120; if(acc > 15) then acc = 15; end + + if(merit > 0) then + acc = acc + merit; + end if(sItem == 17348) then acc = acc + 2; Index: scripts/globals/spells/temper.lua =================================================================== --- scripts/globals/spells/temper.lua (revision 0) +++ scripts/globals/spells/temper.lua (working copy) @@ -0,0 +1,47 @@ +----------------------------------------- +-- Spell: TEMPER +----------------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/magic"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + enhskill = caster:getSkillLevel(ENHANCING_MAGIC_SKILL); + final = 0; + duration = 180; + if (caster:hasStatusEffect(EFFECT_COMPOSURE) == true and caster:getID() == target:getID()) then + duration = duration * 3; + end + + if(enhskill<=360) then + final = 5; + elseif(enhskill>360) then + final = math.floor((enhskill - 360)/10) + 5; + else + print("Warning: Unknown enhancing magic skill for Temper."); + end + + if(final>20) then + final = 20; + end + + if(target:hasStatusEffect(EFFECT_IFRIT_S_FAVOR)) then + oldeffect = target:getStatusEffect(EFFECT_IFRIT_S_FAVOR); + if(oldeffect:getPower()<=final) then --overwrite + target:delStatusEffect(EFFECT_IFIRIT_S_FAVOR); + target:addStatusEffect(EFFECT_IFRIT_S_FAVOR,final,0,duration); + spell:setMsg(0); + else --no effect + spell:setMsg(75); + end + else + target:addStatusEffect(EFFECT_IFRIT_S_FAVOR,final,0,duration); + spell:setMsg(0); + end + + return EFFECT_IFRIT_S_FAVOR; +end; \ No newline at end of file Index: scripts/globals/spells/valor_minuet.lua =================================================================== --- scripts/globals/spells/valor_minuet.lua (revision 2729) +++ scripts/globals/spells/valor_minuet.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 11) then -- If your skill level is below 11 your stuck at the minimum + if (sLvl < 11) then -- If your skill level is below 11 you are stuck at the minimum power = 8; end @@ -27,6 +27,21 @@ power = 16; end + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 11) then -- If your skill level is below 11 you are stuck at the minimum + power = 8 + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if (sLvl >= 11 and sLvl <= 65) then -- If your above 10 skill then you get the bonus of 1 more attack for every 7 skill + sBoost = math.floor((sLvl - 10)/7); + power = 8 + sBoost + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if(sLvl >= 66) then -- The bonus caps at skill 66 + power = 16 + caster:getMerit(MERIT_MINUET_EFFECT); + end + end + if(sItem == 17344) then -- Cornette will add 3 more power = power + 3; end Index: scripts/globals/spells/valor_minuet_ii.lua =================================================================== --- scripts/globals/spells/valor_minuet_ii.lua (revision 2729) +++ scripts/globals/spells/valor_minuet_ii.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 67) then -- If your skill level is below 67 your stuck at the minimum + if (sLvl < 67) then -- If your skill level is below 67 you are stuck at the minimum power = 14; end @@ -26,6 +26,21 @@ if(sLvl >= 120) then -- The bonus caps at skill 120 power = 32; end + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 67) then -- If your skill level is below 67 you are stuck at the minimum + power = 14 + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if (sLvl >= 67 and sLvl <= 119) then -- If your above 66 skill then you get the bonus of 1 more attack for every 3 skill + sBoost = math.floor((sLvl - 66)/3); + power = 14 + sBoost + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if(sLvl >= 120) then -- The bonus caps at skill 120 + power = 32 + caster:getMerit(MERIT_MINUET_EFFECT); + end + end if(sItem == 17344) then -- Cornette will add 3 more power = power + 3; Index: scripts/globals/spells/valor_minuet_iii.lua =================================================================== --- scripts/globals/spells/valor_minuet_iii.lua (revision 2729) +++ scripts/globals/spells/valor_minuet_iii.lua (working copy) @@ -14,7 +14,7 @@ local sItem = caster:getEquipID(2); local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing - if (sLvl < 123) then -- If your skill level is below 123 your stuck at the minimum + if (sLvl < 123) then -- If your skill level is below 123 you are stuck at the minimum power = 30; end @@ -26,7 +26,22 @@ if(sLvl >= 194) then -- The bonus caps at skill 194 power = 48; end - + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 123) then -- If your skill level is below 123 you are stuck at the minimum + power = 30 + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if (sLvl >= 123 and sLvl <= 193) then -- If your above 122 skill then you get the bonus of 1 more attack for every 4 skill + sBoost = math.floor((sLvl - 122)/4); + power = 30 + sBoost + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if(sLvl >= 194) then -- The bonus caps at skill 194 + power = 48 + caster:getMerit(MERIT_MINUET_EFFECT); + end + end + if(sItem == 17344) then -- Cornette will add 3 more power = power + 3; end Index: scripts/globals/spells/valor_minuet_iv.lua =================================================================== --- scripts/globals/spells/valor_minuet_iv.lua (revision 2729) +++ scripts/globals/spells/valor_minuet_iv.lua (working copy) @@ -27,6 +27,21 @@ power = 56; end + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 123) then -- If your skill level is below 123 your stuck at the minimum + power = 30 + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if (sLvl >= 123 and sLvl <= 193) then -- If your above 122 skill then you get the bonus of 1 more attack for every 4 skill + sBoost = math.floor((sLvl - 122)/4); + power = 30 + sBoost + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if(sLvl >= 194) then -- The bonus caps at skill 194 + power = 56 + caster:getMerit(MERIT_MINUET_EFFECT); + end + end + if(sItem == 17344) then -- Cornette will add 3 more power = power + 3; end Index: scripts/globals/spells/valor_minuet_v.lua =================================================================== --- scripts/globals/spells/valor_minuet_v.lua (revision 0) +++ scripts/globals/spells/valor_minuet_v.lua (working copy) @@ -0,0 +1,59 @@ +----------------------------------------- +-- Spell: Valor Minuet IV +-- Grants Attack bonus to all allies. +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + + local sItem = caster:getEquipID(2); + local sLvl = caster:getSkillLevel(40); -- Gets skill level of Singing + + if (sLvl < 200) then -- If your skill level is below 200 you are stuck at the minimum + power = 40; + end + + if (sLvl >= 200 and sLvl <= 270) then -- If your above 201 skill then you get the bonus of 1 more attack for every 4 skill + sBoost = math.floor((sLvl - 200)/4); + power = 40 + sBoost; + end + + if(sLvl >= 271) then -- The bonus caps at skill 271 + power = 72; + end + + if(caster:getObjType() == TYPE_PC) then + if (sLvl < 200) then -- If your skill level is below 200 you are stuck at the minimum + power = 40 + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if (sLvl >= 200 and sLvl <= 270) then -- If your above 201 skill then you get the bonus of 1 more attack for every 4 skill + sBoost = math.floor((sLvl - 200)/4); + power = 40 + sBoost + caster:getMerit(MERIT_MINUET_EFFECT); + end + + if(sLvl >= 271) then -- The bonus caps at skill 271 + power = 72 + caster:getMerit(MERIT_MINUET_EFFECT); + end + end + + if(sItem == 17344) then -- Cornette will add 3 more + power = power + 3; + end + + if(sItem == 17369 or sItem == 17846) then -- Cornette +1 and Cornette +2 give 5 more + power = power + 5; + end + + -- Until someone finds a way to delete Effects by tier we should not allow bard spells to stack. + -- Since all the tiers use the same effect buff it is hard to delete a specific one. + target:delStatusEffect(EFFECT_MINUET); + target:addStatusEffect(EFFECT_MINUET,power,0,120); + + return EFFECT_MINUET; +end; \ No newline at end of file Index: scripts/globals/spells/yurin_ichi.lua =================================================================== --- scripts/globals/spells/yurin_ichi.lua (revision 0) +++ scripts/globals/spells/yurin_ichi.lua (working copy) @@ -0,0 +1,20 @@ +----------------------------------------- +-- Spell: Yurin: Ichi +----------------------------------------- + +require("scripts/globals/status"); + +----------------------------------------- +-- OnSpellCast +----------------------------------------- + +function onSpellCast(caster,target,spell) + target:delStatusEffect(EFFECT_INHIBIT_TP); + effect = target:getStatusEffect(EFFECT_INHIBIT_TP); + + -- The power is unknown. + target:addStatusEffect(EFFECT_INHIBIT_TP,EFFECT_INHIBIT_TP,10,0,180); + spell:setMsg(230); + + return EFFECT_INHIBIT_TP; +end; \ No newline at end of file Index: scripts/globals/weaponskills/atonement.lua =================================================================== --- scripts/globals/weaponskills/atonement.lua (revision 0) +++ scripts/globals/weaponskills/atonement.lua (working copy) @@ -0,0 +1,35 @@ +----------------------------------- +-- Atonement +-- Sword weapon skill +-- Skill Level: NA +-- Delivers a twofold attack. Damage varies with TP. Burtgang: Aftermath effect varies with TP. +-- In order to obtain Atonement, the quest Unlocking a Myth must be completed. +-- Will stack with Sneak Attack. +-- Aligned with the Aqua Gorget, Flane Gorget & Light Gorget +-- Aligned with the Aqua Belt, Flame Belt & Light Belt. +-- Element: None +-- Modifiers: Related to accumulated Eminity +-- 100%TP 200%TP 300%TP +-- 1.00 1.75 2.50 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 2; + params.ftp100 = 1; params.ftp200 = 1.75; params.ftp300 = 2.5; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.0; params.mnd_wsc = 0.5; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/blade_ei.lua =================================================================== --- scripts/globals/weaponskills/blade_ei.lua (revision 0) +++ scripts/globals/weaponskills/blade_ei.lua (working copy) @@ -0,0 +1,33 @@ +----------------------------------- +-- Blade Ei +-- Katana weapon skill +-- Skill Level: 175 +-- Delivers a dark elemental attack. Damage varies with TP. +-- Aligned with the Shadow Gorget. +-- Aligned with the Shadow Belt. +-- Element: Dark +-- Modifiers: STR:30% ; INT:30% +-- 100%TP 200%TP 300%TP +-- 1.00 1.50 2.00 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 1; params.ftp200 = 1.5; params.ftp300 = 2; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.3; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/blade_yu.lua =================================================================== --- scripts/globals/weaponskills/blade_yu.lua (revision 0) +++ scripts/globals/weaponskills/blade_yu.lua (working copy) @@ -0,0 +1,41 @@ +----------------------------------- +-- Blade Yu +-- Katana weapon skill +-- Skill Level: 290 +-- Delivers a water elemental attack. Additional effect Poison. Durration varies with TP. +-- Aligned with the Aqua Gorget & Soil Gorget. +-- Aligned with the Aqua Belt & Soil Belt. +-- Element: Water +-- Modifiers: DEX:50% ; INT:50% +-- 100%TP 200%TP 300%TP +-- 2.25 2.25 2.25 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 2.25; params.ftp200 = 2.25; params.ftp300 = 2.25; + params.str_wsc = 0.0; params.dex_wsc = 0.5; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.5; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + if damage > 0 then + local tp = player:getTP(); + local duration = (tp/100 * 15) + 75; + if(target:hasStatusEffect(EFFECT_POISON) == false) then + target:addStatusEffect(EFFECT_POISON, 10, 0, duration); + end + end + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/expiacion.lua =================================================================== --- scripts/globals/weaponskills/expiacion.lua (revision 0) +++ scripts/globals/weaponskills/expiacion.lua (working copy) @@ -0,0 +1,34 @@ +----------------------------------- +-- Expiacion +-- Sword weapon skill +-- Skill level: NA +-- Tizona: Aftermath effect varies with TP. +-- In order to obtain Expiacion, the quest Unlocking a Myth must be completed. +-- Description: Delivers a twofold attack. +-- Aligned with the Aqua Gorget, Snow Gorget & Soil Gorget. +-- Aligned with the Aqua Belt, Snow Belt & Soil Belt. +-- Element: None +-- Modifiers: STR:30% INT:30% +-- 100%TP 200%TP 300%TP +-- 1.5 2.0 2.5 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 2; + params.ftp100 = 1.5; params.ftp200 = 2.0; params.ftp300 = 2.5; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.3; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + return tpHits, extraHits, damage; +end Index: scripts/globals/weaponskills/glory_slash.lua =================================================================== --- scripts/globals/weaponskills/glory_slash.lua (revision 0) +++ scripts/globals/weaponskills/glory_slash.lua (working copy) @@ -0,0 +1,35 @@ +----------------------------------- +-- Glory Slash +-- Sword weapon skill +-- Skill Level: NA +-- Only avaliable during Campaign Battle while weilding Lex Talionis. +-- Delivers and area attacj that deals triple damage. Damage varies with TP. Additional effect Stun. +-- Will stack with Sneak Attack. +-- Aligned with the Flame Gorget & Light Gorget. +-- Aligned with the Flame Belt & Light Belt. +-- Element: Light +-- Modifiers: STR:30% +-- 100%TP 200%TP 300%TP +-- 3.00 3.50 4.00 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 3; params.ftp200 = 3.5; params.ftp300 = 4; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.0; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/leaden_salute.lua =================================================================== --- scripts/globals/weaponskills/leaden_salute.lua (revision 0) +++ scripts/globals/weaponskills/leaden_salute.lua (working copy) @@ -0,0 +1,34 @@ +----------------------------------- +-- Leaden Salute +-- Marksmanship weapon skill +-- Skill Level: NA +-- Deals darkness elemental damage. Damage varies with TP. +-- Death Penalty: Aftermath effect varies with TP. +-- Aligned with the Shadow, Soil, & Light Gorgets. +-- Aligned with the Shadow, Soil, & Light Belts. +-- Element: Darkness +-- Modifiers: AGI:30% +-- 100%TP 200%TP 300%TP +-- 4.00 4.25 4.75 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 4; params.ftp200 = 4.25; params.ftp300 = 4.75; + params.str_wsc = 0.0; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.3; params.int_wsc = 0.0; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.8; params.acc200= 0.9; params.acc300= 1; + params.atkmulti = 1; + local damage, tpHits, extraHits = doRangedWeaponskill(player, target, params); + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/sanguine_blade.lua =================================================================== --- scripts/globals/weaponskills/sanguine_blade.lua (revision 0) +++ scripts/globals/weaponskills/sanguine_blade.lua (working copy) @@ -0,0 +1,44 @@ +----------------------------------- +-- Sanguine Blade +-- Sword weapon skill +-- Skill Level: 300 +-- Drains a percentage of damage dealt to HP varies with TP. +-- Will not stack with Sneak Attack. +-- Not aligned with any "elemental gorgets" or "elemental belts" due to it's absence of Skillchain properties. +-- Element: Dark +-- Modifiers: STR:30% ; MND:50% +-- 100%TP 200%TP 300%TP +-- 2.75 2.75 2.75 +-- HP Drained by TP: +-- 100%TP 200%TP 300%TP +-- 50% 75% 100% +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + local tp = player:getTP(); + local drain = 0; + if(tp >= 100 and tp <=199) then + drain = 50; + elseif(tp >= 200 and tp <= 299) then + drain = 75; + elseif(tp == 300) then + drain = 100; + end + local params = {}; + params.numHits = 1; + params.ftp100 = 2.75; params.ftp200 = 2.75; params.ftp300 = 2.75; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.0; params.mnd_wsc = 0.5; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + player:addHP(damage/drain); + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/stringing_pummel.lua =================================================================== --- scripts/globals/weaponskills/stringing_pummel.lua (revision 0) +++ scripts/globals/weaponskills/stringing_pummel.lua (working copy) @@ -0,0 +1,34 @@ +----------------------------------- +-- Stringing Pummel +-- Hand-to-Hand weapon skill +-- Skill Level: NA +-- Delivers an sixfold attack. Chance of critical varies with TP. +-- Kenkonken:Aftermath effect varies with TP. +-- In order to obtain Stringing Pummel, the quest Unlocking a Myth must be completed. +-- Aligned with the Shadow Gorget, Soil Gorget & Flame Gorget. +-- Aligned with the Shadow Belt, Soil Belt & Flame Belt. +-- Element: None +-- Modifiers: STR:32% ; VIT:32% +-- 100%TP 200%TP 300%TP +-- 0.75 0.75 0.75 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 6; + params.ftp100 = 0.75; params.ftp200 = 0.75; params.ftp300 = 0.75; + params.str_wsc = 0.32; params.dex_wsc = 0.0; params.vit_wsc = 0.32; params.agi_wsc = 0.0; params.int_wsc = 0.0; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.2; params.crit200 = 0.3; params.crit300 = 0.45; + params.canCrit = false; + params.acc100 = 0.8; params.acc200= 0.9; params.acc300= 1; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/tartarus_torpor.lua =================================================================== --- scripts/globals/weaponskills/tartarus_torpor.lua (revision 0) +++ scripts/globals/weaponskills/tartarus_torpor.lua (working copy) @@ -0,0 +1,47 @@ +----------------------------------- +-- Tartarus Torpor +-- Staff weapon skill +-- Skill level: NA +-- Puts to sleep enemies within the area of effect and lowers their magical defense and magical evasion. +-- Duration of effect varies with TP. +-- Only avaliable during Campaign Battles while wielding Samudra +-- Element: None +-- Modifiers: INT:30% STR:30% +-- 100%TP 200%TP 300%TP +-- 2.75 4.00 5.00 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 2.75; params.ftp200 = 4; params.ftp300 = 5; + params.str_wsc = 0.3; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.3; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + if damage > 0 then + local tp = player:getTP(); + local duration = (tp/100 * 60); + if(target:hasStatusEffect(EFFECT_MAGIC_DEF_DOWN) == false) then + target:addStatusEffect(EFFECT_MAGIC_DEF_DOWN, 10, 0, duration); + end + if(target:hasStatusEffect(EFFECT_MAGIC_EVASION_DOWN) == false) then + target:addStatusEffect(EFFECT_MAGIC_EVASION_DOWN, 10, 0, duration); + end + if(target:hasStatusEffect(EFFECT_SLEEP) == false) then + target:addStatusEffect(EFFECT_SLEEP, 100, 0, duration); + end + end + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/uriel_blade.lua =================================================================== --- scripts/globals/weaponskills/uriel_blade.lua (revision 0) +++ scripts/globals/weaponskills/uriel_blade.lua (working copy) @@ -0,0 +1,38 @@ +----------------------------------- +-- Uriel Blade +-- Sword weapon skill +-- Skill Level: NA +-- Delivers and area attack that deals light elemental damage. Damage varies with TP. Additional effect Flash. +-- Only avaliable durring Campaign Battle while weilding a Griffinclaw +-- Aligned with the Thunder Gorget & Breeze Gorget. +-- Aligned with the Thunder Belt & Breeze Belt. +-- Element: Light +-- Modifiers: STR:32% MND:32% +-- 100%TP 200%TP 300%TP +-- 4.50 6.00 7.50 +----------------------------------- + +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 4.5; params.ftp200 = 6.0; params.ftp300 = 7.5; + params.str_wsc = 0.32; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.0; params.int_wsc = 0.0; params.mnd_wsc = 0.32; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + local damage, tpHits, extraHits = doPhysicalWeaponskill(player, target, params); + + if(target:hasStatusEffect(EFFECT_FLASH) == false) then + target:addStatusEffect(EFFECT_FLASH, 100, 0, 30); + end + + return tpHits, extraHits, damage; + +end Index: scripts/globals/weaponskills/wildfire.lua =================================================================== --- scripts/globals/weaponskills/wildfire.lua (revision 0) +++ scripts/globals/weaponskills/wildfire.lua (working copy) @@ -0,0 +1,33 @@ +----------------------------------- +-- Wildfire +-- Marksmanship weapon skill +-- Skill level: 357 +-- Empyrean Weapon Skill +-- COR Main Job Required +-- Aligned with the Light Gorget & Flame Gorget. +-- Aligned with the Light Belt & Flame Belt. +-- Element: +-- Modifiers: AGI:60% +-- 100%TP 200%TP 300%TP +-- 5.5 5.5 5.5 +----------------------------------- +require("scripts/globals/status"); +require("scripts/globals/settings"); +require("scripts/globals/weaponskills"); +----------------------------------- + +function OnUseWeaponSkill(player, target, wsID) + + local params = {}; + params.numHits = 1; + params.ftp100 = 5.5; params.ftp200 = 5.5; params.ftp300 = 5.5; + params.str_wsc = 0.16; params.dex_wsc = 0.0; params.vit_wsc = 0.0; params.agi_wsc = 0.6; params.int_wsc = 0.0; params.mnd_wsc = 0.0; params.chr_wsc = 0.0; + params.crit100 = 0.0; params.crit200 = 0.0; params.crit300 = 0.0; + params.canCrit = false; + params.acc100 = 0.0; params.acc200= 0.0; params.acc300= 0.0; + params.atkmulti = 1; + damage, tpHits, extraHits = doRangedWeaponskill(player, target, params); + + return tpHits, extraHits, damage; + +end \ No newline at end of file Index: sql/spell_list.sql =================================================================== --- sql/spell_list.sql (revision 2729) +++ sql/spell_list.sql (working copy) @@ -56,9 +56,9 @@ INSERT INTO `spell_list` VALUES ('8', 'curaga_ii', 0x00001F0000000000000000000000000000000000, '6', '7', '0', '3', '33', '120', '4750', '10000', '0', '0', '8', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('9', 'curaga_iii', 0x0000330000000000000000000000000000000000, '6', '7', '0', '3', '33', '180', '5000', '10500', '0', '0', '9', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('10', 'curaga_iv', 0x0000470000000000000000000000000000000000, '6', '7', '0', '3', '33', '260', '5250', '10750', '0', '0', '10', '4000', '1', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('11', 'curaga_v', 0x0000000000000000000000000000000000000000, '6', '7', '0', '3', '33', '380', '5750', '11000', '0', '0', '11', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('11', 'curaga_v', 0x00005B0000000000000000000000000000000000, '6', '7', '0', '3', '33', '380', '5750', '11000', '0', '0', '11', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('12', 'raise', 0x0000190026003200000000000000000000000023, '6', '7', '0', '32', '33', '150', '15000', '60000', '0', '0', '12', '4000', '0', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('13', 'raise_ii', 0x0000380000000000000000000000000000000046, '6', '7', '0', '32', '33', '150', '14000', '60000', '0', '0', '13', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('13', 'raise_ii', 0x000038005F000000000000000000000000000046, '6', '7', '0', '32', '33', '150', '14000', '60000', '0', '0', '13', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('14', 'poisona', 0x000006000000000000000000000000000000000A, '6', '7', '0', '91', '33', '8', '1000', '5000', '0', '0', '14', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('15', 'paralyna', 0x000009000000000000000000000000000000000C, '6', '7', '0', '91', '33', '12', '1000', '5000', '0', '0', '15', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('16', 'blindna', 0x00000E0000000000000000000000000000000011, '6', '7', '0', '91', '33', '16', '1000', '10000', '0', '0', '16', '4000', '0', '0', '1.00', '1', '300'); @@ -196,7 +196,7 @@ INSERT INTO `spell_list` VALUES ('148', 'fire_v', 0x0000005600000000000000000000000000000000, '2', '1', '0', '4', '36', '270', '9750', '42750', '2', '252', '148', '4000', '0', '785', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('149', 'blizzard', 0x000000111800001D000000000000000000000014, '2', '5', '0', '4', '36', '30', '2500', '11500', '2', '252', '149', '4000', '0', '46', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('150', 'blizzard_ii', 0x0000002A3700004200000000000000000000002E, '2', '5', '0', '4', '36', '77', '4500', '20000', '2', '252', '150', '4000', '0', '155', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('151', 'blizzard_iii', 0x0000004049000000000000000000000000000042, '2', '5', '0', '4', '36', '120', '6250', '27750', '2', '252', '151', '4000', '0', '320', '1.50', '0', '0'); +INSERT INTO `spell_list` VALUES ('151', 'blizzard_iii', 0x000000404900005C000000000000000000000042, '2', '5', '0', '4', '36', '120', '6250', '27750', '2', '252', '151', '4000', '0', '320', '1.50', '0', '0'); INSERT INTO `spell_list` VALUES ('152', 'blizzard_iv', 0x0000004A5900000000000000000000000000004A, '2', '5', '0', '4', '36', '164', '8250', '36000', '2', '252', '152', '4000', '0', '506', '2.00', '0', '0'); INSERT INTO `spell_list` VALUES ('153', 'blizzard_v', 0x0000005900000000000000000000000000000000, '2', '5', '0', '4', '36', '282', '10000', '44000', '2', '252', '153', '4000', '0', '829', '2.30', '0', '0'); INSERT INTO `spell_list` VALUES ('154', 'aero', 0x000000090E00001100000000000000000000000C, '2', '4', '0', '4', '36', '18', '2000', '9000', '2', '252', '154', '4000', '0', '25', '1.00', '0', '0'); @@ -211,8 +211,8 @@ INSERT INTO `spell_list` VALUES ('163', 'stone_v', 0x0000004D0000000000000000000000000000004F, '2', '2', '0', '4', '36', '222', '8750', '39000', '2', '252', '163', '4000', '0', '626', '2.30', '0', '0'); INSERT INTO `spell_list` VALUES ('164', 'thunder', 0x000000151D000023000000000000000000000018, '2', '6', '0', '4', '36', '37', '3000', '13000', '2', '252', '164', '4000', '0', '60', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('165', 'thunder_ii', 0x0000002E3C000048000000000000000000000033, '2', '6', '0', '4', '36', '86', '5000', '21000', '2', '252', '165', '4000', '0', '178', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('166', 'thunder_iii', 0x000000424B000000000000000000000000000045, '2', '6', '0', '4', '36', '128', '6750', '29250', '2', '252', '166', '4000', '0', '345', '1.50', '0', '0'); -INSERT INTO `spell_list` VALUES ('167', 'thunder_iv', 0x0000004B0000000000000000000000000000004B, '2', '6', '0', '4', '36', '171', '8500', '37250', '2', '252', '167', '4000', '0', '541', '2.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('166', 'thunder_iii', 0x000000424B000060000000000000000000000045, '2', '6', '0', '4', '36', '128', '6750', '29250', '2', '252', '166', '4000', '0', '345', '1.50', '0', '0'); +INSERT INTO `spell_list` VALUES ('167', 'thunder_iv', 0x0000004B5C00000000000000000000000000004B, '2', '6', '0', '4', '36', '171', '8500', '37250', '2', '252', '167', '4000', '0', '541', '2.00', '0', '0'); INSERT INTO `spell_list` VALUES ('168', 'thunder_v', 0x0000005C00000000000000000000000000000000, '2', '6', '0', '4', '36', '294', '10250', '45500', '2', '252', '168', '4000', '0', '874', '2.30', '0', '0'); INSERT INTO `spell_list` VALUES ('169', 'water', 0x000000050900000B000000000000000000000008, '2', '3', '0', '4', '36', '13', '2000', '8000', '2', '252', '169', '4000', '0', '16', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('170', 'water_ii', 0x0000001E28000030000000000000000000000022, '2', '3', '0', '4', '36', '51', '3500', '15750', '2', '252', '170', '4000', '0', '95', '1.00', '0', '0'); @@ -288,6 +288,7 @@ INSERT INTO `spell_list` VALUES ('240', 'drown', 0x0000001B00000000000000000000000000000000, '2', '3', '0', '4', '36', '25', '2500', '10000', '2', '252', '240', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('241', 'retrace', 0x0000003700000000000000000000000000000000, '2', '8', '0', '3', '34', '150', '8000', '10000', '0', '0', '284', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('242', 'absorb-acc', 0x000000000000003D000000000000000000000000, '2', '8', '0', '4', '37', '33', '2000', '60000', '0', '0', '285', '4000', '0', '0', '1.00', '1', '640'); +INSERT INTO `spell_list` VALUES ('243', 'absorb-attri', 0x000000000000005B000000000000000000000000, '2', '8', '0', '4', '37', '33', '2000', '60000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '640'); INSERT INTO `spell_list` VALUES ('244', 'death', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '37', '666', '5000', '10000', '0', '0', '485', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('245', 'drain', 0x0000000C0000000A000000000000000000000015, '2', '8', '0', '4', '37', '21', '3000', '60000', '227', '274', '245', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('246', 'drain_ii', 0x000000000000003E000000000000000000000000, '2', '8', '0', '4', '37', '37', '3000', '180000', '227', '274', '246', '4000', '0', '0', '1.00', '0', '0'); @@ -299,7 +300,7 @@ INSERT INTO `spell_list` VALUES ('252', 'stun', 0x0000002D00000025000000000000000000000000, '2', '6', '0', '4', '37', '25', '500', '45000', '0', '268', '252', '2000', '0', '0', '1.00', '180', '1280'); INSERT INTO `spell_list` VALUES ('253', 'sleep', 0x000000141900001E00000000000000000000001E, '2', '8', '0', '4', '35', '19', '2500', '30000', '0', '0', '253', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('254', 'blind', 0x0000000408000000000000000000000000000000, '2', '8', '0', '4', '35', '5', '2000', '10000', '0', '0', '254', '4000', '0', '0', '1.00', '1', '300'); -INSERT INTO `spell_list` VALUES ('255', 'break', 0x000000555700000000000000000000000000005A, '2', '2', '0', '4', '35', '39', '3000', '30000', '0', '0', '255', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('255', 'break', 0x000000555700005F00000000000000000000005A, '2', '2', '0', '4', '35', '39', '3000', '30000', '0', '0', '255', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('256', 'virus', 0x0000000000000000000000000000000000000000, '2', '1', '0', '4', '35', '39', '3000', '30000', '0', '0', '256', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('257', 'curse', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '37', '39', '3000', '30000', '0', '0', '257', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('258', 'bind', 0x000000070B000014000000000000000000000000, '2', '5', '0', '4', '35', '8', '2000', '40000', '0', '0', '258', '4000', '0', '0', '1.00', '1', '300'); @@ -330,7 +331,7 @@ INSERT INTO `spell_list` VALUES ('283', 'ionohelix', 0x0000000000000000000000000000000000000047, '2', '6', '0', '4', '36', '26', '3750', '17000', '0', '0', '783', '4000', '0', '25', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('284', 'noctohelix', 0x0000000000000000000000000000000000000049, '2', '8', '0', '4', '36', '26', '3750', '17000', '0', '0', '788', '4000', '0', '25', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('285', 'luminohelix', 0x000000000000000000000000000000000000004B, '2', '7', '0', '4', '36', '26', '3750', '17000', '0', '0', '787', '4000', '0', '25', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('286', 'addle', 0x0000000053000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '2000', '2000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '320'); +INSERT INTO `spell_list` VALUES ('286', 'addle', 0x00005D0053000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '2000', '2000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '320'); INSERT INTO `spell_list` VALUES ('287', 'klimaform', 0x000000000000000000000000000000000000002E, '2', '8', '0', '1', '37', '30', '5000', '180000', '0', '0', '0', '4000', '0', '0', '1.00', '300', '1'); INSERT INTO `spell_list` VALUES ('288', 'fire_spirit', 0x0000000000000000000000000000010000000000, '5', '1', '128', '1', '38', '10', '1000', '10000', '0', '0', '288', '4000', '0', '0', '1.00', '90', '300'); INSERT INTO `spell_list` VALUES ('289', 'ice_spirit', 0x0000000000000000000000000000010000000000, '5', '5', '128', '1', '38', '10', '1000', '10000', '0', '0', '288', '4000', '0', '0', '1.00', '90', '300'); @@ -351,10 +352,11 @@ INSERT INTO `spell_list` VALUES ('304', 'diabolos', 0x0000000000000000000000000000010000000000, '5', '8', '128', '1', '38', '15', '7000', '30000', '0', '0', '288', '4000', '0', '0', '1.00', '90', '300'); INSERT INTO `spell_list` VALUES ('305', 'odin', 0x00000000000000000000000000004B0000000000, '5', '8', '128', '0', '38', '0', '1000', '60000', '0', '0', '288', '4000', '0', '0', '1.00', '90', '300'); INSERT INTO `spell_list` VALUES ('306', 'alexander', 0x00000000000000000000000000004B0000000000, '5', '7', '128', '1', '38', '0', '1000', '60000', '0', '0', '288', '4000', '0', '0', '1.00', '90', '300'); +INSERT INTO `spell_list` VALUES ('307', 'magic_307', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('308', 'animus_augeo', 0x0000000000000000000000000000000000000055, '6', '0', '0', '0', '0', '21', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('309', 'animus_minuo', 0x0000000000000000000000000000000000000055, '6', '0', '0', '0', '0', '21', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '300', '1'); -INSERT INTO `spell_list` VALUES ('310', 'enlight', 0x0000000000005500000000000000000000000000, '6', '0', '0', '0', '0', '24', '3000', '30000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('311', 'endark', 0x0000000000000055000000000000000000000000, '2', '0', '0', '0', '0', '24', '3000', '30000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('310', 'enlight', 0x0000000000005500000000000000000000000000, '6', '7', '0', '1', '34', '24', '3000', '30000', '0', '0', '307', '4000', '0', '0', '1.00', '80', '240'); +INSERT INTO `spell_list` VALUES ('311', 'endark', 0x0000000000000055000000000000000000000000, '2', '8', '0', '1', '34', '24', '3000', '30000', '0', '0', '307', '4000', '0', '0', '1.00', '80', '240'); INSERT INTO `spell_list` VALUES ('312', 'enfire_ii', 0x000000003A000000000000000000000000000000, '6', '1', '0', '1', '34', '24', '3000', '30000', '0', '0', '305', '4000', '0', '0', '1.00', '80', '240'); INSERT INTO `spell_list` VALUES ('313', 'enblizzard_ii', 0x0000000038000000000000000000000000000000, '6', '5', '0', '1', '34', '24', '3000', '30000', '0', '0', '306', '4000', '0', '0', '1.00', '80', '240'); INSERT INTO `spell_list` VALUES ('314', 'enaero_ii', 0x0000000036000000000000000000000000000000, '6', '4', '0', '1', '34', '24', '3000', '30000', '0', '0', '304', '4000', '0', '0', '1.00', '80', '240'); @@ -364,8 +366,8 @@ INSERT INTO `spell_list` VALUES ('318', 'monomi_ichi', 0x0000000000000000000000001900000000000000, '4', '4', '0', '1', '39', '2553', '1500', '30000', '0', '0', '356', '4000', '0', '10', '1.00', '1', '80'); INSERT INTO `spell_list` VALUES ('319', 'aisha_ichi', 0x0000000000000000000000004E00000000000000, '4', '0', '0', '4', '39', '2555', '4000', '30000', '0', '0', '0', '4000', '0', '10', '1.00', '80', '240'); INSERT INTO `spell_list` VALUES ('320', 'katon_ichi', 0x0000000000000000000000000F00000000000000, '4', '1', '0', '4', '39', '1161', '4000', '30000', '2', '2', '320', '4000', '0', '10', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('321', 'katon_ni', 0x0000000000000000000000002800000000000000, '4', '1', '0', '4', '39', '1161', '1500', '45000', '2', '2', '321', '4000', '0', '78', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('322', 'katon_san', 0x0000000000000000000000004B00000000000000, '4', '1', '0', '4', '39', '1161', '2500', '60000', '2', '2', '322', '4000', '0', '105', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('321', 'katon_ni', 0x0000000000000000000000002800000000000000, '4', '1', '0', '4', '39', '1161', '1500', '45000', '2', '2', '322', '4000', '0', '78', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('322', 'katon_san', 0x0000000000000000000000004B00000000000000, '4', '1', '0', '4', '39', '1161', '2500', '60000', '2', '2', '321', '4000', '0', '105', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('323', 'hyoton_ichi', 0x0000000000000000000000000F00000000000000, '4', '5', '0', '4', '39', '1164', '4000', '30000', '2', '2', '323', '4000', '0', '10', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('324', 'hyoton_ni', 0x0000000000000000000000002800000000000000, '4', '5', '0', '4', '39', '1164', '1500', '45000', '2', '2', '324', '4000', '0', '78', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('325', 'hyoton_san', 0x0000000000000000000000004B00000000000000, '4', '5', '0', '4', '39', '1164', '2500', '60000', '2', '2', '325', '4000', '0', '105', '1.00', '0', '0'); @@ -406,19 +408,21 @@ INSERT INTO `spell_list` VALUES ('360', 'dispelga', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '35', '20', '5000', '60000', '0', '0', '492', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('361', 'blindga', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '35', '10', '2500', '20000', '0', '0', '267', '4000', '1', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('362', 'bindga', 0x0000000000000000000000000000000000000000, '2', '5', '0', '4', '35', '16', '2500', '50000', '0', '0', '268', '4000', '1', '0', '1.00', '1', '300'); -INSERT INTO `spell_list` VALUES ('365', 'breakga', 0x0000000000000000000000000000000000000000, '2', '2', '0', '4', '35', '100', '5000', '60000', '0', '0', '271', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('363', 'sleepga', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('364', 'sleepga_ii', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('365', 'breakga', 0x0000005F00000000000000000000000000000000, '2', '2', '0', '4', '35', '100', '5000', '60000', '0', '0', '271', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('366', 'graviga', 0x0000000000000000000000000000000000000000, '2', '4', '0', '4', '35', '48', '2000', '60000', '0', '0', '272', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('367', 'death', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '37', '666', '5000', '10000', '0', '0', '485', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('368', 'foe_requiem', 0x0000000000000000000700000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '368', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('369', 'foe_requiem_ii', 0x0000000000000000001100000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '369', '4000', '0', '0', '1.00', '100', '240'); -INSERT INTO `spell_list` VALUES ('370', 'foe_requiem_iii', 0x0000000000000000002500000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '370', '4000', '0', '0', '1.00', '100', '240'); +INSERT INTO `spell_list` VALUES ('370', 'foe_requiem_iii', 0x0000005F00000000002500000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '370', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('371', 'foe_requiem_iv', 0x0000000000000000002F00000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '371', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('372', 'foe_requiem_v', 0x0000000000000000003900000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '372', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('373', 'foe_requiem_vi', 0x0000000000000000004300000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '373', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('374', 'foe_requiem_vii', 0x0000000000000000004C00000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '374', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('375', 'foe_requiem_viii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '375', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('376', 'horde_lullaby', 0x0000000000000000001B00000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '376', '4000', '1', '0', '1.00', '240', '0'); -INSERT INTO `spell_list` VALUES ('377', 'horde_lullaby_ii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '377', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('377', 'horde_lullaby_ii', 0x0000000000000000005C00000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '377', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('378', 'armys_paeon', 0x0000000000000000000500000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '378', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('379', 'armys_paeon_ii', 0x0000000000000000000F00000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '379', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('380', 'armys_paeon_iii', 0x0000000000000000002300000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '380', '4000', '1', '0', '1.00', '20', '80'); @@ -488,13 +492,13 @@ INSERT INTO `spell_list` VALUES ('444', 'light_carol', 0x0000000000000000002400000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '424', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('445', 'dark_carol', 0x0000000000000000003200000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '425', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('446', 'fire_carol_ii', 0x0000000000000000005A00000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '426', '4000', '1', '0', '1.00', '20', '80'); -INSERT INTO `spell_list` VALUES ('447', 'ice_carol_ii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '427', '4000', '1', '0', '1.00', '20', '80'); +INSERT INTO `spell_list` VALUES ('447', 'ice_carol_ii', 0x0000000000000000005D00000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '427', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('448', 'wind_carol_ii', 0x0000000000000000005700000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '428', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('449', 'earth_carol_ii', 0x0000000000000000005100000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '429', '4000', '1', '0', '1.00', '20', '80'); -INSERT INTO `spell_list` VALUES ('450', 'lightning_carol_ii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '430', '4000', '1', '0', '1.00', '20', '80'); +INSERT INTO `spell_list` VALUES ('450', 'lightning_carol_ii', 0x0000000000000000006000000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '430', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('451', 'water_carol_ii', 0x0000000000000000005400000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '431', '4000', '1', '0', '1.00', '20', '80'); -INSERT INTO `spell_list` VALUES ('452', 'light_carol_ii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '432', '4000', '1', '0', '1.00', '20', '80'); -INSERT INTO `spell_list` VALUES ('453', 'dark_carol_ii', 0x0000000000000000000000000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '433', '4000', '1', '0', '1.00', '20', '80'); +INSERT INTO `spell_list` VALUES ('452', 'light_carol_ii', 0x0000000000000000006300000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '432', '4000', '1', '0', '1.00', '20', '80'); +INSERT INTO `spell_list` VALUES ('453', 'dark_carol_ii', 0x0000000000000000006300000000000000000000, '1', '7', '0', '1', '40', '0', '8000', '24000', '0', '0', '433', '4000', '1', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('454', 'fire_threnody', 0x0000000000000000001400000000000000000000, '1', '3', '0', '4', '40', '0', '2000', '24000', '237', '268', '453', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('455', 'ice_threnody', 0x0000000000000000001600000000000000000000, '1', '1', '0', '4', '40', '0', '2000', '24000', '237', '268', '454', '4000', '0', '0', '1.00', '100', '240'); INSERT INTO `spell_list` VALUES ('456', 'wind_threnody', 0x0000000000000000001200000000000000000000, '1', '5', '0', '4', '40', '0', '2000', '24000', '237', '268', '455', '4000', '0', '0', '1.00', '100', '240'); @@ -513,17 +517,29 @@ INSERT INTO `spell_list` VALUES ('469', 'adventurers_dirge', 0x0000000000000000004B00000000000000000000, '1', '7', '0', '3', '40', '0', '4000', '24000', '0', '0', '292', '4000', '0', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('470', 'sentinels_scherzo', 0x0000000000000000005200000000000000000000, '1', '4', '8', '1', '40', '0', '8000', '24000', '0', '0', '0', '4000', '0', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('471', 'foe_lullaby_ii', 0x0000000000000000005300000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '376', '4000', '0', '0', '1.00', '240', '0'); +INSERT INTO `spell_list` VALUES ('472', 'pining_nocturne', 0x0000000000000000005F00000000000000000000, '1', '7', '0', '4', '40', '0', '2000', '24000', '0', '0', '399', '4000', '0', '0', '1.00', '20', '80'); INSERT INTO `spell_list` VALUES ('473', 'refresh_ii', 0x0000000052000000000000000000000000000000, '6', '7', '0', '3', '34', '60', '5000', '27000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('474', 'cura_ii', 0x0000530000000000000000000000000000000000, '6', '7', '0', '3', '33', '45', '3000', '40000', '0', '0', '298', '4000', '1', '0', '1.00', '50', '100'); +INSERT INTO `spell_list` VALUES ('475', 'cura_iii', 0x0000600000000000000000000000000000000000, '6', '7', '0', '3', '33', '60', '3000', '50000', '0', '0', '298', '4000', '1', '0', '1.00', '50', '100'); +INSERT INTO `spell_list` VALUES ('476', 'magic_476', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('477', 'regen_iv', 0x0000560000000000000000000000000000000000, '6', '7', '0', '3', '34', '82', '5000', '24000', '0', '0', '140', '4000', '0', '0', '1.00', '1', '300'); -INSERT INTO `spell_list` VALUES ('481', 'boost-vit', 0x0000510000000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '8000', '8000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '80'); -INSERT INTO `spell_list` VALUES ('482', 'boost-agi', 0x00005A0000000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '8000', '8000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '80'); -INSERT INTO `spell_list` VALUES ('484', 'boost-mnd', 0x0000540000000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '8000', '8000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '80'); -INSERT INTO `spell_list` VALUES ('485', 'boost-chr', 0x0000570000000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '8000', '8000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '80'); -INSERT INTO `spell_list` VALUES ('488', 'gain-vit', 0x0000000051000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('489', 'gain-agi', 0x000000005A000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('491', 'gain-mnd', 0x0000000054000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); -INSERT INTO `spell_list` VALUES ('492', 'gain-chr', 0x0000000057000000000000000000000000000000, '6', '0', '0', '0', '0', '36', '5000', '10000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('478', 'embrava', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('479', 'boost-str', 0x00005D0000000000000000000000000000000000, '6', '1', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('480', 'boost-dex', 0x0000630000000000000000000000000000000000, '6', '6', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('481', 'boost-vit', 0x0000510000000000000000000000000000000000, '6', '2', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('482', 'boost-agi', 0x00005A0000000000000000000000000000000000, '6', '4', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('483', 'boost-int', 0x0000600000000000000000000000000000000000, '6', '5', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('484', 'boost-mnd', 0x0000540000000000000000000000000000000000, '6', '3', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('485', 'boost-chr', 0x0000570000000000000000000000000000000000, '6', '7', '0', '1', '34', '36', '8000', '8000', '0', '0', '55', '4000', '1', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('486', 'gain-str', 0x000000005D000000000000000000000000000000, '6', '1', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('487', 'gain-dex', 0x0000000063000000000000000000000000000000, '6', '6', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('488', 'gain-vit', 0x0000000051000000000000000000000000000000, '6', '2', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('489', 'gain-agi', 0x000000005A000000000000000000000000000000, '6', '4', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('490', 'gain-int', 0x0000000060000000000000000000000000000000, '6', '5', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('491', 'gain-mnd', 0x0000000054000000000000000000000000000000, '6', '3', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('492', 'gain-chr', 0x0000000057000000000000000000000000000000, '6', '7', '0', '1', '34', '36', '5000', '10000', '0', '0', '55', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('493', 'temper', 0x000000005F000000000000000000000000000000, '6', '7', '0', '1', '34', '36', '3000', '30000', '0', '0', '143', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('494', 'arise', 0x0000630000000000000000000000000000000000, '6', '7', '0', '32', '33', '300', '12000', '120000', '0', '0', '13', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('495', 'adloquium', 0x0000000000000000000000000000000000000058, '6', '0', '0', '0', '0', '50', '5000', '18000', '0', '0', '0', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('496', 'firaja', 0x0000005A00000000000000000000000000000000, '2', '1', '0', '4', '36', '364', '7750', '48750', '2', '252', '821', '4000', '1', '902', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('497', 'blizzaja', 0x0000005D00000000000000000000000000000000, '2', '5', '0', '4', '36', '380', '8000', '50000', '2', '252', '823', '4000', '1', '953', '2.30', '0', '0'); @@ -531,18 +547,33 @@ INSERT INTO `spell_list` VALUES ('499', 'stoneja', 0x0000005100000000000000000000000000000000, '2', '2', '0', '4', '36', '299', '7000', '45000', '2', '252', '819', '4000', '1', '719', '2.30', '0', '0'); INSERT INTO `spell_list` VALUES ('500', 'thundaja', 0x0000006000000000000000000000000000000000, '2', '6', '0', '4', '36', '396', '8250', '51250', '2', '252', '824', '4000', '1', '0', '2.30', '0', '0'); INSERT INTO `spell_list` VALUES ('501', 'waterja', 0x0000005400000000000000000000000000000000, '2', '3', '0', '4', '36', '322', '7250', '46250', '2', '252', '820', '4000', '1', '782', '2.30', '0', '0'); +INSERT INTO `spell_list` VALUES ('502', 'kaustra', 0x0000000000000000000000000000000000000000, '2', '8', '0', '4', '37', '1', '5000', '30000', '0', '0', '780', '4000', '0', '0', '1', '1', '300'); INSERT INTO `spell_list` VALUES ('503', 'impact', 0x00005A5A5A00005A0000000000005A000000005A, '2', '8', '0', '4', '36', '666', '14000', '120000', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('504', 'regen_v', 0x0000000000000000000000000000000000000063, '2', '7', '0', '3', '36', '90', '2250', '25200', '0', '0', '140', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('505', 'magic_505', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('506', 'magic_506', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('507', 'myoshu_ichi', 0x0000000000000000000000005500000000000000, '4', '0', '0', '4', '39', '2642', '4000', '30000', '237', '267', '0', '4000', '0', '10', '1.00', '10', '300'); INSERT INTO `spell_list` VALUES ('508', 'yurin_ichi', 0x0000000000000000000000005300000000000000, '4', '0', '0', '4', '39', '2643', '4000', '30000', '237', '267', '0', '4000', '0', '10', '1.00', '80', '240'); +INSERT INTO `spell_list` VALUES ('509', 'kakka_ichi', 0x0000000000000000000000005D00000000000000, '4', '0', '0', '4', '39', '2643', '4000', '30000', '237', '267', '0', '4000', '0', '10', '1.00', '80', '240'); INSERT INTO `spell_list` VALUES ('510', 'migawari_ichi', 0x0000000000000000000000005800000000000000, '4', '0', '0', '1', '39', '2970', '4000', '30000', '0', '0', '0', '4000', '0', '10', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('511', 'magic_511', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('512', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('513', 'venom_shell', 0x0000000000000000000000000000002A00000000, '3', '3', '0', '4', '43', '86', '3000', '45000', '0', '0', '700', '4000', '1', '0', '1.00', '1', '320'); +INSERT INTO `spell_list` VALUES ('514', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('515', 'maelstrom', 0x0000000000000000000000000000003D00000000, '3', '3', '0', '4', '43', '162', '6000', '39000', '2', '0', '690', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('516', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('517', 'metallic_body', 0x0000000000000000000000000000000800000000, '3', '2', '0', '1', '43', '19', '7000', '60000', '0', '0', '638', '4000', '0', '0', '1.00', '1', '300'); +INSERT INTO `spell_list` VALUES ('518', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('519', 'screwdriver', 0x0000000000000000000000000000001A00000000, '3', '11', '0', '4', '43', '21', '500', '14000', '2', '0', '642', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('520', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('521', 'mp_drainkiss', 0x0000000000000000000000000000002A00000000, '3', '8', '0', '4', '43', '20', '4000', '26000', '0', '0', '664', '4000', '0', '0', '1.00', '320', '0'); INSERT INTO `spell_list` VALUES ('522', 'death_ray', 0x0000000000000000000000000000002200000000, '3', '8', '0', '4', '43', '49', '4500', '29000', '2', '0', '701', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('523', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('524', 'sandspin', 0x0000000000000000000000000000000100000000, '3', '2', '0', '4', '43', '10', '1500', '10000', '2', '0', '631', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('525', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('526', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('527', 'smite_of_rage', 0x0000000000000000000000000000002200000000, '3', '12', '0', '4', '43', '28', '500', '13000', '2', '0', '683', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('528', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('529', 'bludgeon', 0x0000000000000000000000000000001200000000, '3', '9', '0', '4', '43', '16', '500', '12000', '2', '0', '643', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('530', 'refueling', 0x0000000000000000000000000000003000000000, '3', '4', '0', '1', '43', '29', '1500', '30000', '0', '0', '718', '4000', '0', '0', '1.00', '1', '300'); INSERT INTO `spell_list` VALUES ('531', 'ice_break', 0x0000000000000000000000000000003200000000, '3', '5', '0', '4', '43', '142', '5250', '34000', '2', '0', '721', '4000', '1', '0', '1.00', '0', '0'); @@ -560,21 +591,32 @@ INSERT INTO `spell_list` VALUES ('543', 'mandibular_bite', 0x0000000000000000000000000000002C00000000, '3', '12', '0', '4', '43', '38', '500', '19000', '2', '0', '719', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('544', 'cursed_sphere', 0x0000000000000000000000000000001200000000, '3', '3', '0', '4', '43', '36', '3000', '19000', '2', '0', '685', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('545', 'sickle_slash', 0x0000000000000000000000000000003000000000, '3', '9', '0', '4', '43', '41', '500', '20000', '2', '0', '698', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('546', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('547', 'cocoon', 0x0000000000000000000000000000000800000000, '3', '2', '0', '1', '43', '10', '1750', '60000', '0', '0', '654', '4000', '0', '0', '1.00', '1', '80'); INSERT INTO `spell_list` VALUES ('548', 'filamented_hold', 0x0000000000000000000000000000003400000000, '3', '2', '0', '4', '43', '38', '2000', '20000', '0', '0', '723', '4000', '1', '0', '1.00', '1', '320'); INSERT INTO `spell_list` VALUES ('549', 'pollen', 0x0000000000000000000000000000000100000000, '3', '7', '0', '1', '43', '8', '2000', '5000', '0', '0', '650', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('550', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('551', 'power_attack', 0x0000000000000000000000000000000400000000, '3', '9', '0', '4', '43', '5', '500', '7000', '2', '0', '675', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('552', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('553', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('554', 'death_scissors', 0x0000000000000000000000000000003C00000000, '3', '12', '0', '4', '43', '51', '500', '24000', '2', '0', '681', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('555', 'magnetite_cloud', 0x0000000000000000000000000000002E00000000, '3', '2', '0', '4', '43', '86', '4500', '29000', '2', '0', '711', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('556', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('557', 'eyes_on_me', 0x0000000000000000000000000000003D00000000, '3', '8', '0', '4', '43', '112', '4500', '29000', '2', '0', '704', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('558', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('559', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('560', 'frenetic_rip', 0x0000000000000000000000000000003F00000000, '3', '9', '0', '4', '43', '61', '500', '28000', '2', '0', '748', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('561', 'frightful_roar', 0x0000000000000000000000000000003200000000, '3', '4', '0', '4', '43', '32', '2000', '20000', '0', '0', '716', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('562', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('563', 'hecatomb_wave', 0x0000000000000000000000000000003600000000, '3', '4', '0', '4', '43', '116', '5250', '34000', '2', '0', '732', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('564', 'body_slam', 0x0000000000000000000000000000003E00000000, '3', '9', '0', '4', '43', '74', '1000', '28000', '2', '0', '733', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('565', 'radiant_breath', 0x0000000000000000000000000000003600000000, '3', '7', '0', '4', '43', '116', '5250', '34000', '2', '0', '722', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('566', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('567', 'helldive', 0x0000000000000000000000000000001000000000, '3', '9', '0', '4', '43', '16', '500', '11000', '2', '0', '652', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('568', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('569', 'jet_stream', 0x0000000000000000000000000000002600000000, '3', '9', '0', '4', '43', '47', '500', '23000', '2', '0', '634', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('570', 'blood_drain', 0x0000000000000000000000000000001400000000, '3', '8', '0', '4', '43', '10', '4000', '26000', '0', '0', '635', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('571', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('572', 'sound_blast', 0x0000000000000000000000000000002000000000, '3', '1', '0', '4', '43', '25', '4000', '30000', '0', '0', '761', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('573', 'feather_tickle', 0x0000000000000000000000000000004000000000, '3', '4', '0', '4', '43', '48', '4000', '26000', '0', '0', '746', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('574', 'feather_barrier', 0x0000000000000000000000000000003800000000, '3', '4', '0', '1', '43', '29', '2000', '56000', '0', '0', '731', '4000', '0', '0', '1.00', '0', '0'); @@ -583,13 +625,17 @@ INSERT INTO `spell_list` VALUES ('577', 'foot_kick', 0x0000000000000000000000000000000100000000, '3', '12', '0', '4', '43', '5', '500', '6000', '2', '0', '639', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('578', 'wild_carrot', 0x0000000000000000000000000000001E00000000, '3', '7', '0', '3', '43', '37', '2500', '6000', '0', '0', '640', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('579', 'voracious_trunk', 0x0000000000000000000000000000004000000000, '3', '4', '0', '4', '43', '72', '10000', '56000', '0', '0', '747', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('580', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('581', 'healing_breeze', 0x0000000000000000000000000000001000000000, '3', '4', '0', '1', '43', '55', '4500', '15000', '0', '0', '679', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('582', 'chaotic_eye', 0x0000000000000000000000000000002000000000, '3', '4', '0', '4', '43', '13', '3000', '10000', '0', '0', '691', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('583', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('584', 'sheep_song', 0x0000000000000000000000000000001000000000, '3', '7', '0', '4', '43', '22', '3000', '60000', '0', '0', '672', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('585', 'ram_charge', 0x0000000000000000000000000000004900000000, '3', '9', '0', '4', '43', '79', '500', '35000', '2', '0', '743', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('586', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('587', 'claw_cyclone', 0x0000000000000000000000000000001400000000, '3', '12', '0', '4', '43', '24', '1000', '20000', '2', '0', '687', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('588', 'lowing', 0x0000000000000000000000000000004700000000, '3', '8', '0', '4', '43', '66', '7000', '56000', '0', '0', '734', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('589', 'dimensional_death', 0x0000000000000000000000000000003C00000000, '3', '9', '0', '4', '43', '48', '500', '24000', '2', '0', '745', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('590', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('591', 'heat_breath', 0x0000000000000000000000000000004700000000, '3', '1', '0', '4', '43', '169', '7500', '49000', '2', '0', '729', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('592', 'blank_gaze', 0x0000000000000000000000000000002600000000, '3', '7', '0', '4', '43', '25', '3000', '10000', '0', '0', '707', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('593', 'magic_fruit', 0x0000000000000000000000000000003A00000000, '3', '7', '0', '3', '43', '72', '2500', '5000', '0', '0', '708', '4000', '0', '0', '1.00', '0', '0'); @@ -599,11 +645,16 @@ INSERT INTO `spell_list` VALUES ('597', 'sprout_smack', 0x0000000000000000000000000000000400000000, '3', '9', '0', '4', '43', '6', '500', '7000', '2', '0', '653', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('598', 'soporific', 0x0000000000000000000000000000001800000000, '3', '8', '0', '4', '43', '38', '3000', '26000', '0', '0', '682', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('599', 'queasyshroom', 0x0000000000000000000000000000000800000000, '3', '11', '0', '4', '43', '20', '2000', '15000', '2', '0', '669', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('600', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('601', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('602', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('603', 'wild_oats', 0x0000000000000000000000000000000400000000, '3', '11', '0', '4', '43', '9', '500', '7000', '2', '0', '656', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('604', 'bad_breath', 0x0000000000000000000000000000003D00000000, '3', '2', '0', '4', '43', '212', '8750', '56000', '2', '0', '694', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('605', 'geist_wall', 0x0000000000000000000000000000002E00000000, '3', '8', '0', '4', '43', '35', '3000', '30000', '0', '0', '703', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('606', 'awful_eye', 0x0000000000000000000000000000002E00000000, '3', '3', '0', '4', '43', '32', '2500', '60000', '0', '0', '709', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('607', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('608', 'frost_breath', 0x0000000000000000000000000000004200000000, '3', '5', '0', '4', '43', '136', '6500', '43000', '2', '0', '688', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('609', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('610', 'infrasonics', 0x0000000000000000000000000000004100000000, '3', '5', '0', '4', '43', '42', '3000', '60000', '0', '0', '633', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('611', 'disseverment', 0x0000000000000000000000000000004800000000, '3', '11', '0', '4', '43', '74', '500', '33000', '2', '0', '738', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('612', 'actinic_burst', 0x0000000000000000000000000000004A00000000, '3', '7', '0', '4', '43', '24', '500', '60000', '0', '0', '741', '4000', '1', '0', '1.00', '0', '0'); @@ -613,20 +664,27 @@ INSERT INTO `spell_list` VALUES ('616', 'temporal_shift', 0x0000000000000000000000000000004900000000, '3', '6', '0', '4', '43', '48', '500', '56000', '0', '0', '736', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('617', 'vertical_cleave', 0x0000000000000000000000000000004B00000000, '3', '12', '0', '4', '43', '86', '500', '37000', '2', '0', '739', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('618', 'blastbomb', 0x0000000000000000000000000000001200000000, '3', '1', '0', '4', '43', '36', '2250', '15000', '2', '0', '674', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('619', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('620', 'battle_dance', 0x0000000000000000000000000000000C00000000, '3', '12', '0', '4', '43', '12', '1000', '10000', '2', '0', '668', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('621', 'sandspray', 0x0000000000000000000000000000004200000000, '3', '8', '0', '4', '43', '43', '3000', '26000', '0', '0', '751', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('622', 'grand_slam', 0x0000000000000000000000000000001E00000000, '3', '9', '0', '4', '43', '24', '1000', '14000', '2', '0', '696', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('623', 'head_butt', 0x0000000000000000000000000000000C00000000, '3', '9', '0', '4', '43', '12', '500', '10000', '2', '0', '665', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('624', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('625', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('626', 'bomb_toss', 0x0000000000000000000000000000001C00000000, '3', '1', '0', '4', '43', '42', '3750', '24000', '2', '0', '645', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('627', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('628', 'frypan', 0x0000000000000000000000000000003F00000000, '3', '9', '0', '4', '43', '65', '1000', '26000', '2', '0', '646', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('629', 'flying_hip_press', 0x0000000000000000000000000000003A00000000, '3', '4', '0', '4', '43', '125', '5750', '34000', '2', '0', '725', '4000', '1', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('630', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('631', 'hydro_shot', 0x0000000000000000000000000000003F00000000, '3', '9', '0', '4', '43', '55', '500', '26000', '2', '0', '714', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('632', 'diamondhide', 0x0000000000000000000000000000004300000000, '3', '2', '0', '1', '43', '99', '7000', '26000', '0', '0', '753', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('633', 'enervation', 0x0000000000000000000000000000004300000000, '3', '8', '0', '4', '43', '48', '3500', '60000', '0', '0', '754', '4000', '1', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('634', 'light_of_penance', 0x0000000000000000000000000000003A00000000, '3', '7', '0', '4', '43', '53', '3000', '60000', '0', '0', '727', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('635', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('636', 'warm-up', 0x0000000000000000000000000000004400000000, '3', '2', '0', '1', '43', '59', '7000', '56000', '0', '0', '752', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('637', 'firespit', 0x0000000000000000000000000000004400000000, '3', '1', '0', '4', '43', '121', '6500', '43000', '2', '0', '758', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('638', 'feather_storm', 0x0000000000000000000000000000000C00000000, '3', '11', '0', '4', '43', '12', '500', '10000', '0', '0', '648', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('639', 'dummy', 0x0000000000000000000000000000000000000000, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `spell_list` VALUES ('640', 'tail_slap', 0x0000000000000000000000000000004500000000, '3', '9', '0', '4', '43', '77', '1000', '28000', '2', '0', '756', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('641', 'hysteric_barrage', 0x0000000000000000000000000000004500000000, '3', '10', '0', '4', '43', '61', '500', '28000', '2', '0', '755', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('642', 'amplification', 0x0000000000000000000000000000004600000000, '3', '3', '0', '1', '43', '48', '7000', '56000', '0', '0', '760', '4000', '0', '0', '1.00', '0', '0'); @@ -670,3 +728,90 @@ INSERT INTO `spell_list` VALUES ('682', 'delta_thrust', 0x0000000000000000000000000000005900000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('683', 'everyones_grudge', 0x0000000000000000000000000000005A00000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '728', '4000', '0', '0', '1.00', '0', '0'); INSERT INTO `spell_list` VALUES ('684', 'reaving_wind', 0x0000000000000000000000000000005A00000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '4000', '0', '0', '1.00', '0', '0'); +INSERT INTO `spell_list` VALUES ('685', 'barrier_tusk', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('686', 'mortal_ray', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('687', 'water_bomb', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('688', 'heavy_strike', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('689', 'dark_orb', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('690', 'white_wind', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('691', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('692', 'sudden_lunge', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('693', 'quadrastrike', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('694', 'vapor_spray', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('695', 'thunder_breath', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('696', 'o_counterstance', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('697', 'amorphic_spikes', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('698', 'wind_breath', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('699', 'barbed_crescent', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('700', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('701', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('702', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('703', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('704', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('705', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('706', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('707', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('708', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('709', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('710', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('711', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('712', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('713', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('714', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('715', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('716', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('717', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('718', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('719', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('720', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('721', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('722', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('723', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('724', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('725', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('726', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('727', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('728', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('729', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('730', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('731', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('732', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('733', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('734', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('735', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('736', 'thunderbolt', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('737', 'harden_shell', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('738', 'absolute_terror', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('739', 'gates_of_hades', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('740', 'tourbillion', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('741', 'pyric_bulwark', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('742', 'bilgestorm', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('743', 'bloodrake', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('744', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('745', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('746', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('747', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('748', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('749', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('750', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('751', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('752', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('753', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('754', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('755', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('756', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('757', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('758', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('759', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('760', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('761', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('762', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('763', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('764', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('765', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('766', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); +INSERT INTO `spell_list` VALUES ('767', 'jet-stream-attack', 0x0000000000000000000000000000000000000000, '3', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); + + + + Index: src/map/merit.cpp =================================================================== --- src/map/merit.cpp (revision 2729) +++ src/map/merit.cpp (working copy) @@ -1,4 +1,4 @@ -/* +/* =========================================================================== Copyright (c) 2010-2012 Darkstar Dev Teams @@ -26,14 +26,17 @@ #include "map.h" #include "merit.h" #include "charentity.h" +#include "charutils.h" +#include "spell.h" +#include "lua/lua_baseentity.h" /************************************************************************ * * -* Две версии значений - до abyssea и после * +* Two versions of the values - up to and after abyssea * * * ************************************************************************/ -// массив больше на одно значение, заполняемое нулем +// greater array to the same value, filled zero #ifdef ABYSSEA_EXPANSION static uint8 upgrade[9][16] = @@ -41,58 +44,58 @@ {1,2,3,4,5,5,5,5,5,7,7,7,9,9,9}, // HP-MP {3,6,9,9,9,12,12,12,12,15,15,15}, // Attributes {1,2,3,3,3,3,3,3}, // Combat Skills - {1,2,3,3}, // Defensive Skills + {1,2,3,3}, // Defensive Skills {1,2,3,3,3,3,3,3}, // Magic Skills {1,2,3,4,5}, // Others {1,2,3,4,5}, // Job Group 1 {3,4,5,5,5}, // Job Group 2 {10,15,20,25,30}, // Weapon Skills }; -#define MAX_LIMIT_POINTS 10000 // количество опыта для получения одного merit -//#define MAX_MERIT_POINTS 30 // максимальное количество неиспользованных merit +#define MAX_LIMIT_POINTS 10000 // amount of experience to get one merit +//#define MAX_MERIT_POINTS 30 // the maximum number of unused merits // option to change max points, kept the original above -#define MAX_MERIT_POINTS map_config.max_merit_points +#define MAX_MERIT_POINTS map_config.max_merit_points #else static uint8 upgrade[9][9] = { {1,2,3,4,5,5,5,5}, //0 HP-MP {3,6,9,9,9}, //1 Attributes - {1,2,3,3,3,3,3,3}, //2 Combat Skills - {1,2,3,3}, //3 Defensive Skills - {1,2,3,3,3,3,3,3}, //4 Magic Skills + {1,2,3,3,3,3,3,3}, //2 Combat Skills + {1,2,3,3}, //3 Defensive Skills + {1,2,3,3,3,3,3,3}, //4 Magic Skills {1,2,3,4,5}, //5 Others {1,2,3,4,5}, //6 Job Group 1 {3,4,5,5,5}, //7 Job Group 2 {0}, //8 Weapon Skills }; -#define MAX_LIMIT_POINTS 10000 // количество опыта для получения одного merit -//#define MAX_MERIT_POINTS 100 // максимальное количество неиспользованных merit +#define MAX_LIMIT_POINTS 10000 // amount of experience to get a merit +//#define MAX_MERIT_POINTS 100 // the maximum number of unused merits // option to change max points, kept the original above -#define MAX_MERIT_POINTS map_config.max_merit_points +#define MAX_MERIT_POINTS map_config.max_merit_points -#endif +#endif -// TODO: скорее всего придется все это перенести в базу +// TODO: most likely will have to move it to the database /************************************************************************ * * -* Ограничение количества усилений metir * +* Limit the number of maximum merit * * * ************************************************************************/ static uint8 cap[100] = -{ - 0,0,0,0,0,0,0,0,0,0, // 0-9 0 - 1,1,1,1,1,1,1,1,1,1, // 10-19 1 - 2,2,2,2,2,2,2,2,2,2, // 20-29 2 - 3,3,3,3,3,3,3,3,3,3, // 30-39 3 - 4,4,4,4,4,4,4,4,4,4, // 40-49 4 - 5,5,5,5,5, // 50-54 5 - 6,6,6,6,6, // 55-59 6 - 7,7,7,7,7, // 60-64 7 +{ + 0,0,0,0,0,0,0,0,0,0, // 0-9 0 + 1,1,1,1,1,1,1,1,1,1, // 10-19 1 + 2,2,2,2,2,2,2,2,2,2, // 20-29 2 + 3,3,3,3,3,3,3,3,3,3, // 30-39 3 + 4,4,4,4,4,4,4,4,4,4, // 40-49 4 + 5,5,5,5,5, // 50-54 5 + 6,6,6,6,6, // 55-59 6 + 7,7,7,7,7, // 60-64 7 8,8,8,8,8, // 65-69 8 8,8,8,8,8,8,8,8,8,8, // 70-79 8 8,8,8,8,8,8,8,8,8,8, // 80-89 8 @@ -101,78 +104,78 @@ /************************************************************************ * * -* Количество элементов в каждой из категорий * +* The number of items in each category * * * ************************************************************************/ struct MeritCategoryInfo_t { - int8 MeritsInCat; // количество элементов в группе - uint8 MaxPoints; // максимальное количество points, которые можно вложить в группу - uint8 UpgradeID; // индекс группы в массиве upgrade + int8 MeritsInCat; // the number of elements in the group + uint8 MaxPoints; // the maximum number of points, which can be embedded in a group + uint8 UpgradeID; // group index in the array of upgrade }; static const MeritCategoryInfo_t meritCatInfo[] = { - {2,15,0}, //MCATEGORY_HP_MP - {7,12,1}, //MCATEGORY_ATTRIBUTES - {19,32,2}, //MCATEGORY_COMBAT - {12,24,4}, //MCATEGORY_MAGIC - {5,10,5}, //MCATEGORY_OTHERS + {2,15,0}, //MCATEGORY_HP_MP + {7,12,1}, //MCATEGORY_ATTRIBUTES + {19,32,2}, //MCATEGORY_COMBAT + {12,24,4}, //MCATEGORY_MAGIC + {5,10,5}, //MCATEGORY_OTHERS - {5,10,6}, //MCATEGORY_WAR_1 - {5,10,6}, //MCATEGORY_MNK_1 - {5,10,6}, //MCATEGORY_WHM_1 - {7,10,6}, //MCATEGORY_BLM_1 - {7,10,6}, //MCATEGORY_RDM_1 - {5,10,6}, //MCATEGORY_THF_1 - {5,10,6}, //MCATEGORY_PLD_1 - {5,10,6}, //MCATEGORY_DRK_1 - {5,10,6}, //MCATEGORY_BST_1 - {5,10,6}, //MCATEGORY_BRD_1 - {5,10,6}, //MCATEGORY_RNG_1 - {5,10,6}, //MCATEGORY_SAM_1 - {7,10,6}, //MCATEGORY_NIN_1 - {5,10,6}, //MCATEGORY_DRG_1 - {5,10,6}, //MCATEGORY_SMN_1 - {5,10,6}, //MCATEGORY_BLU_1 - {5,10,6}, //MCATEGORY_COR_1 - {5,10,6}, //MCATEGORY_PUP_1 - {4,10,6}, //MCATEGORY_DNC_1 - {4,10,6}, //MCATEGORY_SCH_1 + {5,10,6}, //MCATEGORY_WAR_1 + {5,10,6}, //MCATEGORY_MNK_1 + {5,10,6}, //MCATEGORY_WHM_1 + {7,10,6}, //MCATEGORY_BLM_1 + {7,10,6}, //MCATEGORY_RDM_1 + {5,10,6}, //MCATEGORY_THF_1 + {5,10,6}, //MCATEGORY_PLD_1 + {5,10,6}, //MCATEGORY_DRK_1 + {5,10,6}, //MCATEGORY_BST_1 + {5,10,6}, //MCATEGORY_BRD_1 + {5,10,6}, //MCATEGORY_RNG_1 + {5,10,6}, //MCATEGORY_SAM_1 + {7,10,6}, //MCATEGORY_NIN_1 + {5,10,6}, //MCATEGORY_DRG_1 + {5,10,6}, //MCATEGORY_SMN_1 + {5,10,6}, //MCATEGORY_BLU_1 + {5,10,6}, //MCATEGORY_COR_1 + {5,10,6}, //MCATEGORY_PUP_1 + {4,10,6}, //MCATEGORY_DNC_1 + {4,10,6}, //MCATEGORY_SCH_1 {14,15,8}, //MCATEGORY_WS {0,0,8}, //MCATEGORY_UNK_0 26 - {0,0,8}, //MCATEGORY_UNK_1 - {0,0,8}, //MCATEGORY_UNK_2 - {0,0,8}, //MCATEGORY_UNK_3 + {0,0,8}, //MCATEGORY_UNK_1 + {0,0,8}, //MCATEGORY_UNK_2 + {0,0,8}, //MCATEGORY_UNK_3 {0,0,8}, //MCATEGORY_UNK_4 30 - {4,10,7}, //MCATEGORY_WAR_2 - {4,10,7}, //MCATEGORY_MNK_2 - {4,10,7}, //MCATEGORY_WHM_2 - {6,10,7}, //MCATEGORY_BLM_2 - {6,10,7}, //MCATEGORY_RDM_2 - {4,10,7}, //MCATEGORY_THF_2 - {4,10,7}, //MCATEGORY_PLD_2 - {4,10,7}, //MCATEGORY_DRK_2 - {4,10,7}, //MCATEGORY_BST_2 - {4,10,7}, //MCATEGORY_BRD_2 - {4,10,7}, //MCATEGORY_RNG_2 - {4,10,7}, //MCATEGORY_SAM_2 - {8,10,7}, //MCATEGORY_NIN_2 - {4,10,7}, //MCATEGORY_DRG_2 - {6,10,7}, //MCATEGORY_SMN_2 - {4,10,7}, //MCATEGORY_BLU_2 - {4,10,7}, //MCATEGORY_COR_2 - {4,10,7}, //MCATEGORY_PUP_2 - {4,10,7}, //MCATEGORY_DNC_2 - {6,10,7}, //MCATEGORY_SHC_2 + {4,10,7}, //MCATEGORY_WAR_2 + {4,10,7}, //MCATEGORY_MNK_2 + {4,10,7}, //MCATEGORY_WHM_2 + {6,10,7}, //MCATEGORY_BLM_2 + {6,10,7}, //MCATEGORY_RDM_2 + {4,10,7}, //MCATEGORY_THF_2 + {4,10,7}, //MCATEGORY_PLD_2 + {4,10,7}, //MCATEGORY_DRK_2 + {4,10,7}, //MCATEGORY_BST_2 + {4,10,7}, //MCATEGORY_BRD_2 + {4,10,7}, //MCATEGORY_RNG_2 + {4,10,7}, //MCATEGORY_SAM_2 + {8,10,7}, //MCATEGORY_NIN_2 + {4,10,7}, //MCATEGORY_DRG_2 + {6,10,7}, //MCATEGORY_SMN_2 + {4,10,7}, //MCATEGORY_BLU_2 + {4,10,7}, //MCATEGORY_COR_2 + {4,10,7}, //MCATEGORY_PUP_2 + {4,10,7}, //MCATEGORY_DNC_2 + {6,10,7}, //MCATEGORY_SHC_2 }; -#define GetMeritCategory(merit) ((merit >> 6) - 1) // получаем категорию из merit -#define GetMeritID(merit) ((merit & 0x3F) >> 1) // получаем смещение в категории из merit +#define GetMeritCategory(merit) ((merit >> 6) - 1) // obtain the category of merit +#define GetMeritID(merit) ((merit & 0x3F) >> 1) // get the offset in the category of merit /************************************************************************ * * @@ -186,7 +189,7 @@ DSP_DEBUG_BREAK_IF(sizeof(merits) != sizeof(merits::GMeritsTemplate)); memcpy(merits, merits::GMeritsTemplate, sizeof(merits)); - + for (uint8 m = 0, i = 0; i < sizeof(Categories)/sizeof(Merit_t*); ++i) { Categories[i] = &merits[m]; @@ -239,11 +242,11 @@ { if (catNumber > 25 && catNumber < 31) // point these to valid merits to prevent crash - Categories[catNumber] = &merits[163]; + Categories[catNumber] = &merits[163]; else Categories[catNumber] = &merits[i]; - - catNumber++; + + catNumber++; } merits[i].count = points[i]; @@ -297,7 +300,7 @@ /************************************************************************ * * -* Получаем текущие limit points * +* Get the current limit points * * * ************************************************************************/ @@ -308,7 +311,7 @@ /************************************************************************ * * -* Получаем текущие merit points * +* Get the current merit points * * * ************************************************************************/ @@ -320,7 +323,7 @@ /************************************************************************ * * -* Получаем указател на массив merits * +* Gets a pointer to an array of merits * * * ************************************************************************/ @@ -332,11 +335,11 @@ /************************************************************************ * * -* Добавляем персонажу limit points * +* add character limit points * * * ************************************************************************/ -// true - если merit был добавлен +// true - ???? merit ??? ???????? bool CMeritPoints::AddLimitPoints(uint16 points) { @@ -388,8 +391,8 @@ /************************************************************************ * * -* Проверяем наличие merit. Необходимо использовать лишь в случае * -* получения meritid от персонажа * +* Check the presence of merit. Should be used only in the case * +* receipt of a character meritid * * * ************************************************************************/ @@ -405,7 +408,7 @@ /************************************************************************ * * -* Получаем указатель на искомый const merit * +* Get a pointer of the desired const merit * * * ************************************************************************/ @@ -416,7 +419,7 @@ /************************************************************************ * * -* Получаем указатель на искомый const merit по индексу * +* Get a pointer of the desired const merit index * * * ************************************************************************/ @@ -430,7 +433,7 @@ /************************************************************************ * * -* Получаем указатель на искомый merit * +* Get a pointer of the desired merit * * * ************************************************************************/ @@ -489,13 +492,13 @@ /************************************************************************ * * -* Получаем текущее значение указанного merit * +* Get the current value of the specified merit * * * ************************************************************************/ int32 CMeritPoints::GetMeritValue(MERIT_TYPE merit, uint8 lvl) { - uint8 meritValue = dsp_min(GetMeritPointer(merit)->count, cap[lvl]); + uint8 meritValue = dsp_min(GetMeritPointer(merit)->count, cap[lvl]); meritValue *= GetMeritPointer(merit)->value; @@ -504,7 +507,7 @@ int32 CMeritPoints::GetMeritValue(Merit_t* merit, uint8 lvl) { - uint8 meritValue = dsp_min(merit->count, cap[lvl]); + uint8 meritValue = dsp_min(merit->count, cap[lvl]); meritValue *= merit->value; @@ -513,21 +516,21 @@ /************************************************************************ * * -* Реализация namespase для работы с Linkshells * +* Implementing namespase to work with Linkshells * * * ************************************************************************/ namespace meritNameSpace { - Merit_t GMeritsTemplate[MERITS_COUNT] = {0}; // global list of merits and their properties + Merit_t GMeritsTemplate[MERITS_COUNT] = {0}; // global list of merits and their properties int16 groupOffset[MCATEGORY_COUNT/64-1] = {0}; // the first merit offset of each catagory - /************************************************************************ - * * - * Загружаем шаблон массива merits / Load pattern array merits * - * * - ************************************************************************/ + /*********************************** + * * + * Load pattern array merits * + * * + ************************************/ void LoadMeritsList() { @@ -545,7 +548,7 @@ int8 catMeritIndex = 0; // counts number of merits in a catagory - while( Sql_NextRow(SqlHandle) == SQL_SUCCESS ) + while( Sql_NextRow(SqlHandle) == SQL_SUCCESS ) { Merit_t Merit = {0}; // creat a new merit template. @@ -554,14 +557,14 @@ Merit.jobs = Sql_GetUIntData(SqlHandle,2); Merit.upgrade = Sql_GetUIntData(SqlHandle,3); Merit.upgradeid = Sql_GetUIntData(SqlHandle,4); - Merit.catid = Sql_GetUIntData(SqlHandle,5); + Merit.catid = Sql_GetUIntData(SqlHandle,5); Merit.next = upgrade[Merit.upgradeid][0]; GMeritsTemplate[index] = Merit; // add the merit to the array previousCatIndex = Merit.catid; // previousCatIndex is set on everyloop to detect a catogory change. - + if (previousCatIndex != catIndex) // check for catagory change. { groupOffset[catIndex] = index - catMeritIndex; // set index offset, first merit of each group. @@ -575,7 +578,7 @@ catMeritIndex++; // next index within catagory. index++; // next global template index. } - + groupOffset[catIndex] = index - catMeritIndex; // add the last offset manually since loop finishes before hand. Index: src/map/merit.h =================================================================== --- src/map/merit.h (revision 2729) +++ src/map/merit.h (working copy) @@ -460,7 +460,7 @@ MERIT_STORMSURGE = MCATEGORY_SCH_2 + 0x0A, }; -#define MERITS_COUNT 305 // 5 полных пакетов по 61 элементу +#define MERITS_COUNT 305 // 5 complete package for 61 elements @@ -478,16 +478,16 @@ { struct { - uint16 id; // id мерита - uint8 next; // необходимое количество меритов для следующего усиления - uint8 count; // текущее количество усилений + uint16 id; // id Merit + uint8 next; // required number of Merits for the next increase + uint8 count; // the current number of exacerbations }; - uint32 data; // информация для отправки персонажу + uint32 data; // information to send to character }; - uint32 value; // коэффициент изменения параметра, привязанного к merit - uint8 upgrade; // максимальное количество усилений для данного merit - uint32 jobs; // маска профессий, для которых merit работает + uint32 value; // coefficient of variation of the parameter that is bound to merit + uint8 upgrade; // the maximum amount of gain for the merit + uint32 jobs; // Mask jobs for which the merit works uint8 upgradeid; // which set of upgrade values the merit will use uint8 catid; // cat which merit belongs to }; @@ -511,7 +511,7 @@ int32 GetMeritValue(Merit_t* merit, uint8 lvl); bool AddLimitPoints(uint16 points); // automatically adds merit points > 10000 - bool IsMeritExist(MERIT_TYPE merit); // проверяем существование merit + bool IsMeritExist(MERIT_TYPE merit); // check the existence of merit void RaiseMerit(MERIT_TYPE merit); // add upgrade void LowerMerit(MERIT_TYPE merit); // del upgrade Index: src/map/packet_system.cpp =================================================================== --- src/map/packet_system.cpp (revision 2729) +++ src/map/packet_system.cpp (working copy) @@ -181,10 +181,10 @@ /************************************************************************ * * -* Вход в зону * +* Log into the zone * * * -* Обновляем sessionkey и порт клиента при каждом переходе между зонами * -* Мы должны оставлять правильный ключ при переходе с сервера на сервер * +* Update sessionkey and client port at each transition between zones * +* We need to keep the correct key when moving from server to server * * * ************************************************************************/ @@ -192,7 +192,7 @@ { WBUFL(data,(0x5C)) = 0; - bool firstlogin = false; // временное решение, до появления PlayTime + bool firstlogin = false; // temporary solution until PlayTime PChar->clearPacketList(); @@ -238,8 +238,7 @@ PChar->m_ZonesList[PChar->getZone() >> 3] |= (1 << (PChar->getZone()%8)); const int8* fmtQuery = "UPDATE accounts_sessions SET targid = %u, session_key = x'%s', server_addr = %u, client_port = %u WHERE charid = %u"; - - Sql_Query(SqlHandle,fmtQuery, + Sql_Query(SqlHandle,fmtQuery, PChar->targid, session_key, PChar->loc.zone->GetIP(), @@ -1345,9 +1344,9 @@ /************************************************************************ * * -* Отправляем приветственное сообщение сервера. * -* По умолчанию появится сообщение <<< Welcome to "server name" >>> + * -* можно отправить дополнительные строки информации в размере 230 байт * +* We send a welcome message server. * +* By default, the message <<< Welcome to "server name" >>> + * +* You can send additional information line at a rate of 230 bytes * * * ************************************************************************/ @@ -1934,11 +1933,12 @@ void SmallPacket0x05A(map_session_data_t* session, CCharEntity* PChar, int8* data) { + // Refresh the amount of conquest points the player has to correctly reflect on the map. PChar->pushPacket(new CConquestPacket(PChar)); PChar->pushPacket(new CCampaingPacket(PChar,0)); PChar->pushPacket(new CCampaingPacket(PChar,1)); - // пакет не на своем месте, возможно 0x0F + // the package is not in place, may 0x0F PChar->pushPacket(new CStopDownloadingPacket(PChar)); // luautils::CheckForGearSet(PChar); // also check for gear set return; @@ -2167,7 +2167,7 @@ /************************************************************************ * * -* Завершение раскопок chocobo (chocobo gigging) * +* Завершение раскопок chocobo (chocobo digging) * * * ************************************************************************/ @@ -2711,6 +2711,40 @@ /************************************************************************ * * +* Buy an item from a guild * +* * +************************************************************************/ + +void SmallPacket0x0AA(map_session_data_t* session, CCharEntity* PChar, int8* data) +{ + uint8 quantity = RBUFB(data,(0x04)); + uint8 guildSlotID = RBUFB(data,(0x0A)); + + uint16 itemID = PChar->Container->getItemID(guildSlotID); + uint32 price = PChar->Container->getQuantity(guildSlotID); + + CItem* gil = PChar->getStorage(LOC_INVENTORY)->GetItem(0); + + if ((gil != NULL) && (gil->getType() & ITEM_CURRENCY)) + { + if (gil->getQuantity() > (price * quantity)) + { + uint8 SlotID = charutils::AddItem(PChar, LOC_INVENTORY, itemID, quantity); + + if (SlotID != ERROR_SLOTID) + { + charutils::UpdateItem(PChar, LOC_INVENTORY, 0, -(int32)(price * quantity)); + + PChar->pushPacket(new CShopBuyPacket(guildSlotID, quantity)); + PChar->pushPacket(new CInventoryFinishPacket()); + } + } + } + return; +} + +/************************************************************************ +* * * Отправляем персонажу список продаваемых гильдией предметов * * * ************************************************************************/ @@ -3781,10 +3815,9 @@ charutils::CheckEquipLogic(PChar, SCRIPT_CHANGESJOB, prevsjob); } + charutils::CheckValidEquipment(PChar); // TODO: разобраться, зачем + - charutils::RemoveAllEquipment(PChar); // TODO: разобраться, зачем - - charutils::BuildingCharSkillsTable(PChar); charutils::CalculateStats(PChar); charutils::BuildingCharTraitsTable(PChar); @@ -3815,7 +3848,7 @@ /************************************************************************ * * -* Устанавливаем активные заклинания синего мага, модифицируем автомат * +* Set the active blue mage spells, modify machine * * * ************************************************************************/ @@ -4164,7 +4197,7 @@ PacketSize[0x0A0] = 0x00; PacketParser[0x0A0] = &SmallPacket0xFFF; // not implemented PacketSize[0x0A1] = 0x00; PacketParser[0x0A1] = &SmallPacket0xFFF; // not implemented PacketSize[0x0A2] = 0x00; PacketParser[0x0A2] = &SmallPacket0x0A2; - PacketSize[0x0AA] = 0x00; PacketParser[0x0AA] = &SmallPacket0xFFF; // not implemented + PacketSize[0x0AA] = 0x00; PacketParser[0x0AA] = &SmallPacket0x0AA; PacketSize[0x0AB] = 0x00; PacketParser[0x0AB] = &SmallPacket0x0AB; PacketSize[0x0AC] = 0x00; PacketParser[0x0AC] = &SmallPacket0xFFF; // not implemented PacketSize[0x0AD] = 0x00; PacketParser[0x0AD] = &SmallPacket0x0AD; Index: src/map/packets/menu_merit.cpp =================================================================== --- src/map/packets/menu_merit.cpp (revision 2729) +++ src/map/packets/menu_merit.cpp (working copy) @@ -1,4 +1,4 @@ -/* +/* =========================================================================== Copyright (c) 2010-2012 Darkstar Dev Teams @@ -24,16 +24,19 @@ #include "../../common/socket.h" #include "menu_merit.h" +#include "char_spells.h" +#include "message_basic.h" #include "../charentity.h" #include "../charutils.h" +#include "../spell.h" -CMenuMeritPacket::CMenuMeritPacket(CCharEntity* PChar) +CMenuMeritPacket::CMenuMeritPacket(CCharEntity* PChar) { this->type = 0x63; this->size = 0x06; - + WBUFB(data,(0x04)-4) = 0x02; WBUFB(data,(0x06)-4) = 0x08; @@ -42,26 +45,248 @@ if (PChar->GetMLevel() >= 75 && charutils::hasKeyItem(PChar, 606)) // keyitem Limit Breaker { - WBUFB(data,(0x0B)-4) = PChar->MeritMode ? 0xE0 : 0x20; // режим (0xE0 limit pints, 0x20 exp points) + WBUFB(data,(0x0B)-4) = PChar->MeritMode ? 0xE0 : 0x20; // mode (0xE0 limit pints, 0x20 exp points) } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_PROTECTRA_V, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 129) == 0 && spell::CanUseSpell(PChar, 129) == 1) + { + charutils::addSpell(PChar, 129); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_SHELLRA_V, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 134) == 0 && spell::CanUseSpell(PChar, 134) == 1) + { + charutils::addSpell(PChar, 134); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_FLARE_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 205) == 0 && spell::CanUseSpell(PChar, 205) == 1) + { + charutils::addSpell(PChar, 205); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_FREEZE_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 207) == 0 && spell::CanUseSpell(PChar, 207) == 1) + { + charutils::addSpell(PChar, 207); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_TORNADO_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 209) == 0 && spell::CanUseSpell(PChar, 209) == 1) + { + charutils::addSpell(PChar, 209); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_QUAKE_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 211) == 0 && spell::CanUseSpell(PChar, 211) == 1) + { + charutils::addSpell(PChar, 211); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_BURST_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 213) == 0 && spell::CanUseSpell(PChar, 213) == 1) + { + charutils::addSpell(PChar, 213); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_FLOOD_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 215) == 0 && spell::CanUseSpell(PChar, 215) == 1) + { + charutils::addSpell(PChar, 215); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_DIA_III, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 25) == 0 && spell::CanUseSpell(PChar, 25) == 1) + { + charutils::addSpell(PChar, 25); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_SLOW_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 79) == 0 && spell::CanUseSpell(PChar, 79) == 1) + { + charutils::addSpell(PChar, 79); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_PARALYZE_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 80) == 0 && spell::CanUseSpell(PChar, 80) == 1) + { + charutils::addSpell(PChar, 80); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_PHALANX_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 107) == 0 && spell::CanUseSpell(PChar, 107) == 1) + { + charutils::addSpell(PChar, 107); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_BIO_III, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 232) == 0 && spell::CanUseSpell(PChar, 232) == 1) + { + charutils::addSpell(PChar, 232); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_BLIND_II, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 276) == 0 && spell::CanUseSpell(PChar, 276) == 1) + { + charutils::addSpell(PChar, 276); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_KATON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 322) == 0 && spell::CanUseSpell(PChar, 322) == 1) + { + charutils::addSpell(PChar, 322); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_HYOTON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 325) == 0 && spell::CanUseSpell(PChar, 325) == 1) + { + charutils::addSpell(PChar, 325); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_HUTON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 328) == 0 && spell::CanUseSpell(PChar, 328) == 1) + { + charutils::addSpell(PChar, 328); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_DOTON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 331) == 0 && spell::CanUseSpell(PChar, 331) == 1) + { + charutils::addSpell(PChar, 331); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_RAITON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 334) == 0 && spell::CanUseSpell(PChar, 334) == 1) + { + charutils::addSpell(PChar, 334); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + + if (PChar->PMeritPoints->GetMeritValue(MERIT_SUITON_SAN, PChar->GetMLevel()) > 0) + { + if (charutils::hasSpell(PChar, 337) == 0 && spell::CanUseSpell(PChar, 337) == 1) + { + charutils::addSpell(PChar, 337); + charutils::SaveSpells(PChar); + PChar->pushPacket(new CCharSpellsPacket(PChar)); + PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 23)); + } + } + PChar->pushPacket(new CBasicPacket(*this)); // ver 30121205_4 second packet this->size = 0x2E; - uint8 packet[] = + uint8 packet[] = { 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; memcpy(data+(0x04)-4, &packet, 88); + } Index: src/map/packets/merit_points_categories.cpp =================================================================== --- src/map/packets/merit_points_categories.cpp (revision 2729) +++ src/map/packets/merit_points_categories.cpp (working copy) @@ -32,33 +32,33 @@ /************************************************************************ * * -* Примечание * +* Note * * * ************************************************************************/ /* -пакет, содержащий информацию об примененных меритах и количестве, необходимом для следующего усиления -информации много, отправляется в трех пакетах. начало у всех стандартное: +package containing information about the applied MERIT and the quantity required for the following enhanced +a lot of information is sent in three packages. top of all the standard: 0x8c 0x80 0x05 0x00 0x3D 0x00 0x00 0x00 -далее идут данные в виде структур +followed by data in the form of structures struct { - unsigned sort // id мерита - unsigned char // необходимое количество меритов для следующего усиления (0 - усиление этого мерита невозможно) - unsigned char // количестов усилений, сделанных персонажем + unsigned sort // id Merit + unsigned char // required number of Merit for the next gain (0 - strengthening this Merit impossible) + unsigned char // MAX gains made ​​character }; -начало категории кратно 0x40 далее идет прибавление id значения. все id кратны двум +top categories on multiple 0x40 id is adding value. id all the multiples of two -количество необходимых меритов для следующего усиления передаются персонажу только при входе в moghouse +amount needed for the next Merit gain character transmitted only when entering moghouse */ /************************************************************************ * * -* Отправляем персонажу информацию о всех merit (5 пакетов) * +* Send character information about merit (5 Packs) * * * ************************************************************************/ @@ -82,7 +82,7 @@ /************************************************************************ * * -* Отправляем персонажу информуцию об одном merit * +* Send the character of one information merit * * * ************************************************************************/ @@ -114,7 +114,7 @@ { for (uint8 i = 0; i < MAX_MERITS_IN_PACKET; ++i) { - (*(Merit_t*)(data+(0x08)-4 + sizeof(uint32) * i)).next = 0; // обнуляем значение next у всех merit + (*(Merit_t*)(data+(0x08)-4 + sizeof(uint32) * i)).next = 0; // zero out the value of all the next merit } } } @@ -126,7 +126,7 @@ * * ************************************************************************/ -// TODO: не помню, зачем я сунул это сюда (( +// TODO: I do not remember why I put it here (( /* Index: src/map/spell.cpp =================================================================== --- src/map/spell.cpp (revision 2729) +++ src/map/spell.cpp (working copy) @@ -308,18 +308,18 @@ /************************************************************************ * * -* Реализация namespase для работы с заклинаниями * +* Implementing namespase to work with spells * * * ************************************************************************/ namespace spell { - CSpell* PSpellList[MAX_SPELL_ID]; // список заклинаний + CSpell* PSpellList[MAX_SPELL_ID]; // Spell list std::map PMobSkillToBlueSpell[256]; // maps the skill id (key) to spell id (value). /************************************************************************ * * - * Загружаем список заклинаний * + * Load the list of spells * * * ************************************************************************/