----------------------------------- -- Area: inSomeZone -- NPC: bahamut ----------------------------------- require("scripts/globals/titles"); require("scripts/globals/status"); require("scripts/globals/magic"); require("scripts/globals/utils"); ----------------------------------- -- onMobInibahamutlize Action ----------------------------------- function onMobInibahamutlize(mob) mob:addMod(MOD_DMGMAGIC, 40); mob:addMod(MOD_DMGRANGE, 40); mob:setMobMod(MOBMOD_MAIN_2HOUR, 1); mob:setMobMod(MOBMOD_DRAW_IN, 2); mob:setMobMod(MOBMOD_ADD_EFFECT,mob:getShortID()); mob:setMobMod(MOBMOD_MAGIC_COOL, 25); end; ----------------------------------- -- onMobSpawn Action ----------------------------------- function onMobSpawn(mob) -- setMod mob:setMod(MOD_REGEN, 300); mob:setMod(MOD_REFRESH, 250); mob:setMod(MOD_REGAIN, 10); mob:setMod(MOD_HASTE_ABILITY, 20); mob:setMod(MOD_UFASTCAST, 55); mob:setMod(MOD_MACC,2500); mob:setMod(MOD_ACC,2500); mob:setMod(MOD_MATT,115); mob:setMod(MOD_DOUBLE_ATTACK, 20); mob:setMod(MOD_FIRE_AFFINITY,5); mob:setMod(MOD_WIND_AFFINITY,5); mob:setMod(MOD_EARTH_AFFINITY,5); mob:setMod(MOD_SLEEPRES,100); mob:setMod(MOD_SILENCERES,100); mob:setMod(MOD_STUNRES,25); mob:setMod(MOD_PARALYZERES,30); mob:setMod(MOD_HUMANOID_KILLER, 5); mob:setMod(MOD_TERRORRES, 100); end; ----------------------------------- -- onMobEngage Action ----------------------------------- function onMobEngage(mob, target) mob:delStatusEffect(EFFECT_RAGE); end; ----------------------------------- -- onMobFight Action ----------------------------------- function onMobFight(mob,target) local bahamut_2hr = mob:getLocalVar("bahamut_2hr"); if (mob:getBattleTime() > 5400 and mob:getLocalVar("RAGED") == 0) then mob:addStatusEffectEx(EFFECT_RAGE,0,1,0,0); mob:setLocalVar("RAGED", 1); end if (mob:getHPP() <= 10 and bahamut_2hr == 8) then mob:useMobAbility(1297); -- Teraflare mob:useMobAbility(438); -- Invinceible mob:setLocalVar("bahamut_2hr", 9); elseif (mob:getHPP() <= 20 and bahamut_2hr == 7) then mob:useMobAbility(1297); -- Gigaflare mob:useMobAbility(436); -- Chainspell mob:setLocalVar("bahamut_2hr", 8); elseif (mob:getHPP() <= 30 and bahamut_2hr == 6) then mob:useMobAbility(1297); -- Gigaflare mob:useMobAbility(438); -- Invinceible mob:setLocalVar("bahamut_2hr", 7); elseif (mob:getHPP() <= 40 and bahamut_2hr == 5) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(3009); -- Elemental_Sforzo mob:setLocalVar("bahamut_2hr", 6); elseif (mob:getHPP() <= 50 and bahamut_2hr == 4) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(438); -- Invinceible mob:setLocalVar("bahamut_2hr", 5); elseif (mob:getHPP() <= 60 and bahamut_2hr == 3) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(436); -- Chainspell mob:setLocalVar("bahamut_2hr", 4); elseif (mob:getHPP() <= 70 and bahamut_2hr == 2) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(438); -- Invinceible mob:setLocalVar("bahamut_2hr", 3); elseif (mob:getHPP() <= 80 and bahamut_2hr == 1) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(436); -- Elemental_Sforzo mob:setLocalVar("bahamut_2hr", 2); elseif (mob:getHPP() <= 90 and bahamut_2hr == 0) then mob:useMobAbility(1296); -- Gigaflare mob:useMobAbility(438); -- Invinceible mob:setLocalVar("bahamut_2hr", 1); end end; ----------------------------------- -- onSpellPrecast ----------------------------------- function onSpellPrecast(mob, spell) if (spell:getID() == 218) then -- AoE Meteor spell:setAoE(SPELLAOE_RADIAL); spell:setFlag(SPELLFLAG_HIT_ALL); spell:setRadius(30); spell:setAnimation(280); spell:setMPCost(1); elseif (spell:getID() == 496) then -- AoE Impact spell:setAoE(SPELLAOE_RADIAL); spell:setFlag(SPELLFLAG_HIT_ALL); spell:setRadius(30); spell:setAnimation(280); spell:setMPCost(1); end end; ----------------------------------- -- onAdditionalEffect Action ----------------------------------- function onAdditionalEffect(mob,target,damage) if ((math.random(1,10) ~= 3) or (target:hasStatusEffect(EFFECT_CURSE_I) == true)) then return 0,0,0; else local duration = 10; target:addStatusEffect(EFFECT_CURSE_I,40,0,duration); return SUBEFFECT_CURSE,163,EFFECT_CURSE_I; end end; ----------------------------------- -- onMobDrawIn ----------------------------------- function onMobDrawIn(mob, target) -- Bind / Wing on Draw In target:addStatusEffect(EFFECT_BIND, 1, 0, 3); mob:useMobAbility(1287); mob:addTP(100); end; ----------------------------------- -- onMobDeath ----------------------------------- function onMobDeath(mob, killer) -- killer:addTitle(WYRM_ASTONISHER); end;