Ir para conteúdo

[Encerrado] Duvida Pda By Slicer.


Session Start

Posts Recomendados

Da esse erro... Mas não tenho á minima ideia de como arrumar.

 

 

 

[09/10/2012 11:51:50] In a timer event called from:

[09/10/2012 11:51:50] data/spells/scripts/ps/Mud Bomb.lua:onCastSpell

[09/10/2012 11:51:50] Description:

[09/10/2012 11:51:50] data/lib/032-position.lua:211: attempt to index local 'pos' (a boolean value)

[09/10/2012 11:51:50] stack traceback:

[09/10/2012 11:51:50] data/lib/032-position.lua:211: in function 'getPosfromArea'

[09/10/2012 11:51:50] data/lib/newStatusSyst.lua:804: in function <data/lib/newStatusSyst.lua:801>

 

 

 

32 position,lua..

 

 

 

function getCreatureInRange(type, fromPos, toPos)

--alterado v1.7

local types = {

["player"] = isPlayer,

["monster"] = ehMonstro,

["npc"] = ehNPC,

["creature"] = isCreature

}

local tmp = {}

 

local type = types[type]

if(not type) then

print('[getCreatureInRange]>> Unknow type')

return false

end

 

local thing = nil

for x = fromPos.x, toPos.x do

for y = fromPos.y, toPos.y do

for z = fromPos.z, toPos.z do

for s = 1, 253 do

local position = {x = x, y = y, z = z, stackpos = s}

thing = getTileThingByPos(position)

if(type(thing.uid) == true) then

table.insert(tmp, thing.uid)

end

end

end

end

end

return tmp

end

---------------------------------------------------------------------------------------

function doRemoveItemFromPos(position, itemid, count)

local item = getTileItemById(position, itemid)

if(item.uid ~= 0)then

return doRemoveItem(item.uid, count or -1)

end

return false

end

 

function isInRange(position, fromPosition, toPosition)

return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)

end

 

function getDistanceBetween(fromPosition, toPosition)

local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y)

local diff = math.max(x, y)

if(fromPosition.z ~= toPosition.z) then

diff = diff + 9 + 6

end

 

return diff

end

 

function getDirectionTo(pos1, pos2)

local dir = NORTH

if(pos1.x > pos2.x) then

dir = WEST

if(pos1.y > pos2.y) then

dir = NORTHWEST

elseif(pos1.y < pos2.y) then

dir = SOUTHWEST

end

elseif(pos1.x < pos2.x) then

dir = EAST

if(pos1.y > pos2.y) then

dir = NORTHEAST

elseif(pos1.y < pos2.y) then

dir = SOUTHEAST

end

else

if(pos1.y > pos2.y) then

dir = NORTH

elseif(pos1.y < pos2.y) then

dir = SOUTH

end

end

 

return dir

end

 

function getCreatureLookPosition(cid)

return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))

end

 

function getPositionByDirection(pos, direction, size)

local n = size or 1

local position = {}

position.x = pos.x

position.y = pos.y

position.z = pos.z

if pos.stackpos then

position.stackpos = pos.stackpos

end

if(direction == NORTH) then

position.y = position.y - n

elseif(direction == SOUTH) then

position.y = position.y + n

elseif(direction == WEST) then

position.x = position.x - n

elseif(direction == EAST) then

position.x = position.x + n

elseif(direction == NORTHWEST) then

position.y = position.y - n

position.x = position.x - n

elseif(direction == NORTHEAST) then

position.y = position.y - n

position.x = position.x + n

elseif(direction == SOUTHWEST) then

position.y = position.y + n

position.x = position.x - n

elseif(direction == SOUTHEAST) then

position.y = position.y + n

position.x = position.x + n

end

 

return position

end

 

function doComparePositions(position, positionEx)

return position.x == positionEx.x and position.y == positionEx.y and position.z == positionEx.z

end

 

function getArea(position, x, y)

local t = {}

for i = (position.x - x), (position.x + x) do

for j = (position.y - y), (position.y + y) do

table.insert(t, {x = i, y = j, z = position.z})

end

end

 

return t

end

 

function checkAreaUid(pos, area, showP, showM) -- By Wantedzin(Perdigs)

local creaturesList = {}

local center = {}

center.y = math.floor(#area/2)+1

for y = 1, #area do

for x = 1, #area[y] do

local number = area[y][x]

if number > 0 then

center.x = math.floor(table.getn(area[y])/2)+1

local pos = getTopCreature {x = pos.x + x - center.x, y = pos.y + y - center.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE}

if (pos.type == 1 and showP == 1) or (pos.type == 2 and showM == 1) then

table.insert(creaturesList, pos.uid)

end

end

end

end

return creaturesList

end

 

------------------ Function getPosfromArea(cid,area) by Dokmos ------------------

function getPosfromArea(cid,area)

icenter = math.floor(table.getn(area)/2)+1

jcenter = math.floor(table.getn(area[1])/2)+1

center = area[icenter]

ivar = table.getn(area)

jvar = table.getn(area[1])

i = table.getn(area)^2

j = table.getn(area[1])^2

 

local mydir = isCreature(getMasterTarget(cid)) and getCreatureDirectionToTarget(cid, getMasterTarget(cid)) or getCreatureLookDir(cid)

setPlayerStorageValue(cid, 21101, -1) --alterado v1.6

 

if center[jcenter] == 3 then

if mydir == 0 then

signal = {-1,1,1,2}

elseif mydir == 1 then

signal = {1,-1,2,1}

elseif mydir == 2 then

signal = {1,-1,1,2}

elseif mydir == 3 then

signal = {-1,1,2,1}

end

else

signal = {-1,1,1,2}

end

 

POSITIONS = {}

P = 0

 

repeat

pvar = {0,0}

I = area[ivar]

J = I[jvar]

i = i-1

j = j-1

if J == 1 then

if jvar < jcenter then

pvar[signal[3]] = signal[1]*math.abs((jcenter-jvar))

elseif jvar > jcenter then

pvar[signal[3]] = signal[2]*math.abs((jcenter-jvar))

end

 

if ivar < icenter then

pvar[signal[4]] = signal[1]*math.abs((icenter-ivar))

elseif ivar > icenter then

pvar[signal[4]] = signal[2]*math.abs((icenter-ivar))

end

end

if jvar > 1 then

jvar = (jvar-1)

elseif ivar > 1 then

jvar = table.getn(area[1])

ivar = (ivar-1)

end

local pos = getThingPos(cid)

local areapos = {x=pos.x+(pvar[1]),y=pos.y+(pvar[2]),z=pos.z}

 

if pos.x ~= areapos.x or pos.y ~= areapos.y then

P = P+1

POSITIONS[P] = areapos

end

 

until i <= 0 and j <= 0

 

return POSITIONS

end

 

 

 

 

NewStatusSystem.lua

 

 

 

 

conds = {

["Slow"] = 3890,

["Confusion"] = 3891,

["Burn"] = 3892,

["Poison"] = 3893,

["Fear"] = 3894,

["Stun"] = 3895,

["Paralyze"] = 3896, --alterado v1.6 \/ peguem o script todo!

["Leech"] = 3897,

["Buff1"] = 3898,

["Buff2"] = 3899,

["Buff3"] = 3900,

["Miss"] = 32659,

["Silence"] = 32698,

["Sleep"] = 98271,

}

 

injuries2 = {

[1] = {n = "slow", m = 3890},

[2] = {n = "confuse", m = 3891},

[3] = {n = "burn", m = 3892},

[4] = {n = "poison", m = 3893},

[5] = {n = "fear", m = 3894},

[6] = {n = "stun", m = 3895},

[7] = {n = "paralyze", m = 3896},

[8] = {n = "leech", m = 3897},

[9] = {n = "Buff1", m = 3898},

[10] = {n = "Buff2", m = 3899},

[11] = {n = "Buff3", m = 3900},

[12] = {n = "miss", m = 32659},

[13] = {n = "silence", m = 32698},

[14] = {n = "sleep", m = 98271},

}

 

Buffs = {

[1] = {"Buff1", 3898},

[2] = {"Buff2", 3899},

[3] = {"Buff3", 3900},

}

 

paralizeArea2 = createConditionObject(CONDITION_PARALYZE)

setConditionParam(paralizeArea2, CONDITION_PARAM_TICKS, 50000)

setConditionFormula(paralizeArea2, -0.63, -0.63, -0.63, -0.63)

 

local roardirections = {

[NORTH] = {SOUTH},

[sOUTH] = {NORTH},

[WEST] = {EAST}, --edited sistema de roar

[EAST] = {WEST}}

 

function doSendSleepEffect(cid)

if not isCreature(cid) or not isSleeping(cid) then return true end

doSendMagicEffect(getThingPos(cid), 32)

addEvent(doSendSleepEffect, 1500, cid)

end

 

local outFurys = {

["Shiny Charizard"] = {outFury = 1073},

["Shiny Blastoise"] = {outFury = 1074},

}

 

local outImune = {

["Camouflage"] = 1445,

["Acid Armor"] = 1453,

["Iron Defense"] = 1401,

["Minimize"] = 1455,

["Future Sight"] = 1446,

}

 

local function transBack(cid)

if isCreature(cid) then

if getPlayerStorageValue(cid, 974848) >= 1 then

setPlayerStorageValue(cid, 974848, 0)

doRemoveCondition(cid, CONDITION_OUTFIT)

end

end

end

 

function doCondition2(ret)

--

function doMiss2(cid, cd, eff, check, spell)

local stg = conds["Miss"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, 21100) >= 1 and getPlayerStorageValue(cid, stg) <= -1 then return true end --alterado v1.6 reflect

if not canDoMiss(cid, spell) then return true end

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "miss", a)

doItemSetAttribute(item.uid, "missEff", eff)

doItemSetAttribute(item.uid, "missSpell", spell)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doMiss2, 1000, cid, -1, eff, a, spell)

end

 

function doSilence2(cid, cd, eff, check)

local stg = conds["Silence"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "silence", a)

doItemSetAttribute(item.uid, "silenceEff", eff)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doSilence2, 1000, cid, -1, eff, a)

end

 

function doSlow2(cid, cd, eff, check, first)

local stg = conds["Slow"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "slow", a)

doItemSetAttribute(item.uid, "slowEff", eff)

end

 

if a <= -1 then

doRemoveCondition(cid, CONDITION_PARALYZE)

if not isSleeping(cid) and not isParalyze(cid) then

addEvent(doRegainSpeed, 50, cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if first then

doAddCondition(cid, paralizeArea2)

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doSlow2, 1000, cid, -1, eff, a)

end

 

function doConfusion2(cid, cd, check)

local stg = conds["Confusion"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "confuse", a)

end

 

if a <= -1 then

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) and not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if math.random(1, 6) >= 4 then

doSendMagicEffect(getThingPos(cid), 31)

end

 

local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)

if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v1.6

doChangeSpeed(cid, -getCreatureSpeed(cid))

doChangeSpeed(cid, 100)

doPushCreature(cid, math.random(0, 3), 1, 0) --alterado v1.6

doChangeSpeed(cid, -100)

end

 

local pos = getThingPos(cid)

addEvent(doSendMagicEffect, math.random(0, 450), pos, 31)

 

addEvent(doConfusion2, 1000, cid, -1, a)

end

 

function doBurn2(cid, cd, check, damage)

local stg = conds["Burn"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "burn", a)

doItemSetAttribute(item.uid, "burndmg", damage)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doCreatureAddHealth(cid, -damage, 15, COLOR_BURN)

addEvent(doBurn2, 3500, cid, -1, a, damage)

end

 

function doPoison2(cid, cd, check, damage)

local stg = conds["Poison"]

if not isCreature(cid) then return true end --is creature?

----------

if isSummon(cid) or ehMonstro(cid) and pokes[getCreatureName(cid)] then --alterado v1.6

local type = pokes[getCreatureName(cid)].type

local type2 = pokes[getCreatureName(cid)].type2

if isInArray({"poison", "steel"}, type) or isInArray({"poison", "steel"}, type2) then

return true

end

end

---------

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "poison", a)

doItemSetAttribute(item.uid, "poisondmg", damage)

end

 

if a <= -1 or getCreatureHealth(cid) == 1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

local dano = getCreatureHealth(cid)-damage <= 0 and getCreatureHealth(cid)-1 or damage

doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS)

 

addEvent(doPoison2, 1500, cid, -1, a, damage)

end

 

function doFear2(cid, cd, check, skill)

local stg = conds["Fear"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "fear", a)

doItemSetAttribute(item.uid, "fearSkill", skill)

end

 

if a <= -1 then

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) and not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if skill == "Roar" then

eff = 244

else --edited Roar

eff = 139

end

 

if math.random(1, 6) >= 4 then

doSendMagicEffect(getThingPos(cid), eff)

end

 

local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)

if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v1.6

local dir = getCreatureDirectionToTarget(cid, isTarget)

doChangeSpeed(cid, -getCreatureSpeed(cid))

doChangeSpeed(cid, 100)

doPushCreature(cid, roardirections[dir][1], 1, 0) --alterado v1.6

doChangeSpeed(cid, -100)

end

 

local pos = getThingPos(cid)

addEvent(doSendMagicEffect, math.random(0, 450), pos, eff)

 

addEvent(doFear2, 1000, cid, -1, a, skill)

end

 

function doStun2(cid, cd, eff, check, spell)

local stg = conds["Stun"]

if not isCreature(cid) then return true end --is creature?

if not canDoMiss(cid, spell) then return true end

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "stun", a)

doItemSetAttribute(item.uid, "stunEff", eff)

doItemSetAttribute(item.uid, "stunSpell", spell)

end

 

if a <= -1 then

doRemoveCondition(cid, CONDITION_PARALYZE)

if not isSleeping(cid) and not isParalyze(cid) then

addEvent(doRegainSpeed, 50, cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if getCreatureCondition(cid, CONDITION_PARALYZE) == false then

doAddCondition(cid, paralizeArea2)

end

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doStun2, 1000, cid, -1, eff, a, spell)

end

 

function doParalyze2(cid, cd, eff, check, first)

local stg = conds["Paralyze"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "paralyze", a)

doItemSetAttribute(item.uid, "paralyzeEff", eff)

end

 

if a <= -1 then

if isPlayer(cid) then

if not isSleeping(cid) then --alterado

mayNotMove(cid, false)

end

else

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) then

doRegainSpeed(cid) --alterado

end

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if isPlayer(cid) then

mayNotMove(cid, true)

else --alterado v1.6

doChangeSpeed(cid, -2000)

end

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doParalyze2, 1000, cid, -1, eff, a, false)

end

 

function doSleep2(cid, cd, check, first)

local stg = conds["Sleep"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not isSleeping(cid) then

addEvent(doSendSleepEffect, 500, cid)

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "sleep", a)

end

 

if a <= -1 then

if not isPlayer(cid) then

local dittoStg = getPlayerStorageValue(cid, 1010)

if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then

doSetCreatureOutfit(cid, {lookType = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transOutfit")}, -1)

else

doRemoveCondition(cid, CONDITION_OUTFIT)

end

if getPlayerStorageValue(cid, 625877) ~= -1 then

doSetCreatureOutfit(cid, {lookType = getPlayerStorageValue(cid, 625877)}, -1) --alterado v1.6

end

end

if isPlayer(cid) then

if not isParalyze(cid) then

mayNotMove(cid, false) --alterado

end

else

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if first then

if getCreatureName(cid) == "Ursaring" and getCreatureCondition(cid, CONDITION_OUTFIT) == true then

 

elseif not isPlayer(cid) then

if isInArray({604, 605, 1015, 1016, 1183, 1184}, getCreatureOutfit(cid).lookType) then

Info = 0 --alterado v1.6

else

Info = getMonsterInfo(getCreatureName(cid)).lookCorpse

end

local look = getCreatureOutfit(cid)

---------

local dittoStg = getPlayerStorageValue(cid, 1010)

if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then

local InfoDitto = getMonsterInfo(tostring(dittoStg)).lookCorpse

if InfoDitto ~= 0 and look.lookType ~= 0 then

doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(tostring(dittoStg)).lookCorpse}, -1)

end

else

if getCreatureName(cid) == "Shiny Golem" and getCreatureOutfit(cid).lookType == 1403 then

doRemoveCondition(cid, CONDITION_OUTFIT)

elseif Info ~= 0 and look.lookType ~= 0 then

doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)

end

end

end

end

--alterado v1.6

if isPlayer(cid) then

mayNotMove(cid, true)

else

doChangeSpeed(cid, -getCreatureSpeed(cid))

end

addEvent(doSleep2, 1000, cid, -1, a, false)

end

 

function doLeech2(cid, attacker, cd, check, damage)

local stg = conds["Leech"]

if not isCreature(cid) then return true end --is creature?

if attacker ~= 0 and not isCreature(attacker) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "leech", a)

doItemSetAttribute(item.uid, "leechdmg", damage)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

local life = getCreatureHealth(cid)

------

doCreatureAddHealth(cid, -damage)

doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144)

doSendMagicEffect(getThingPos(cid), 45)

------

local newlife = life - getCreatureHealth(cid)

if newlife >= 1 and attacker ~= 0 then

doSendMagicEffect(getThingPos(attacker), 14)

doCreatureAddHealth(attacker, newlife)

doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32)

end

addEvent(doLeech2, 2000, cid, attacker, -1, a, damage)

end

 

function doBuff2(cid, cd, eff, check, buff, first, attr)

if not isCreature(cid) then return true end --is creature?

---------------------

local atributo = attr and attr or ""

if first and atributo == "" then

for i = 1, 3 do

if getPlayerStorageValue(cid, Buffs[2]) <= 0 then

atributo = Buffs[1]

break

end

end

end

if atributo == "" then return true end

if ehMonstro(cid) then atributo = "Buff1" end

----------------------

local stg = conds[atributo]

 

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, atributo, a)

doItemSetAttribute(item.uid, atributo.."eff", eff)

doItemSetAttribute(item.uid, atributo.."skill", buff)

end

 

if a <= -1 then --alterado v1.6

if isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize", "Bug Fighter", "Ancient Fury"}, buff) then

if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then

if isSummon(cid) then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.6.1

end

elseif not isSleeping(cid) then

doRemoveCondition(cid, CONDITION_OUTFIT)

end

setPlayerStorageValue(cid, 9658783, -1)

setPlayerStorageValue(cid, 625877, -1) --alterado v1.6

end

if isInArray({"Strafe", "Agility", "Ancient Fury", "War Dog", "Fighter Spirit", "Furious Legs", "Ultimate Champion", "Bug Fighter"}, buff) then

setPlayerStorageValue(cid, 374896, -1) --alterado v1.6

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

 

if first then

if buff == "Strafe" or buff == "Agility" then

setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v1.6

doRaiseStatus(cid, 0, 0, 100, a)

elseif buff == "Tailwind" then

doRaiseStatus(cid, 0, 0, 200, a)

elseif buff == "Rage" then

doRaiseStatus(cid, 2, 0, 0, a)

elseif buff == "Harden" then

doRaiseStatus(cid, 0, 2, 0, a)

elseif buff == "Calm Mind" then

doRaiseStatus(cid, 0, 2, 0, a)

elseif buff == "Ancient Fury" then

doSetCreatureOutfit(cid, {lookType = outFurys[getCreatureName(cid)].outFury}, a*1000)

setPlayerStorageValue(cid, 374896, 1) --velo atk

if getCreatureName(cid) == "Shiny Charizard" then

doRaiseStatus(cid, 2, 0, 0, a) --atk melee --alterado v1.6

else

doRaiseStatus(cid, 0, 2, 0, a) --def

end

setPlayerStorageValue(cid, 625877, outFurys[getCreatureName(cid)].outFury) --alterado v1.6

elseif buff == "War Dog" then

doRaiseStatus(cid, 1.5, 1.5, 0, a)

setPlayerStorageValue(cid, 374896, 1) --velo atk

elseif buff == "Rest" then

doSleep2(cid, cd, getPlayerStorageValue(cid, conds["Sleep"]), true)

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

elseif isInArray({"Fighter Spirit", "Furious Legs", "Ultimate Champion"}, buff) then

doRaiseStatus(cid, 1.5, 0, 0, a) --atk melee --alterado v1.6

setPlayerStorageValue(cid, 374896, 1) --velo atk

addEvent(setPlayerStorageValue, a*1000, cid, 465987, -1)

elseif isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then

doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1)

setPlayerStorageValue(cid, 9658783, 1)

setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v1.6

elseif buff == "Bug Fighter" then

setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v1.6

doRaiseStatus(cid, 1.5, 1.5, 100, a)

doSetCreatureOutfit(cid, {lookType = 1448}, a*1000)

setPlayerStorageValue(cid, 625877, 1448) --alterado v1.6

end

end

addEvent(doBuff2, 1000, cid, -1, eff, a, buff, false, atributo)

end

 

if ret.buff and ret.buff ~= "" then

doBuff2(ret.id, ret.cd, ret.eff, ret.check, ret.buff, ret.first, (ret.attr and ret.attr or false))

end

 

if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost"

if ret.cond and not isInArray({"Poison", "Burn", "Leech", "Fear"}, ret.cond) then --alterado v1.6

doSendMagicEffect(getThingPosWithDebug(ret.id), 114)

return true

end

end

 

if ret.cond and ret.cond == "Miss" then

doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)

elseif ret.cond and ret.cond == "Silence" then

doSilence2(ret.id, ret.cd, ret.eff, ret.check)

elseif ret.cond and ret.cond == "Slow" then

doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)

elseif ret.cond and ret.cond == "Confusion" then

doConfusion2(ret.id, ret.cd, ret.check)

elseif ret.cond and ret.cond == "Burn" then

doBurn2(ret.id, ret.cd, ret.check, ret.damage)

elseif ret.cond and ret.cond == "Poison" then

doPoison2(ret.id, ret.cd, ret.check, ret.damage)

elseif ret.cond and ret.cond == "Fear" then

doFear2(ret.id, ret.cd, ret.check, ret.skill)

elseif ret.cond and ret.cond == "Stun" then

doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)

elseif ret.cond and ret.cond == "Paralyze" then

doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)

elseif ret.cond and ret.cond == "Sleep" then

doSleep2(ret.id, ret.cd, ret.check, ret.first)

elseif ret.cond and ret.cond == "Leech" then

doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)

end

end

 

--------------------------------

function cleanBuffs2(item)

if item ~= 0 then

for i = 1, 3 do

doItemEraseAttribute(item, Buffs[1])

doItemEraseAttribute(item, Buffs[1].."eff")

doItemEraseAttribute(item, Buffs[1].."skill")

end

end

end

--------------------------------

function doCureStatus(cid, type, playerballs)

if not isCreature(cid) then return true end

if playerballs and isPlayer(cid) then

local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)

local mb = getPlayerSlotItem(cid, 8)

if isPokeball(mb.itemid) then

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(mb.uid, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(mb.uid, ""..type.."", -1)

end

end

for bname, balls in pairs (pokeballs) do

for times = 1,3 do

local items = getItemsInContainerById(bp.uid, balls.all[times])

for _, uid in pairs(items) do

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(uid, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(uid, ""..type.."", -1)

end

end

end

end

end

if type == "all" then

for a = 1, #injuries2 do

setPlayerStorageValue(cid, injuries2[a].m, -1)

end

return true

end

for a, b in pairs (injuries2) do

if b.n == type then

setPlayerStorageValue(cid, b.m, -1)

end

end

end

---------------------------------

function isWithCondition(cid)

for i = 1, #injuries2 do

if getPlayerStorageValue(cid, injuries2.m) >= 1 then

return true

end

end

return false

end

---------------------------------

function doCureBallStatus(item, type)

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(item, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(item, ""..type.."", -1)

end

end

---------------------------------

function isBurning(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Burn"]) >= 0 then return true end

return false

end

 

function isPoisoned(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Poison"]) >= 0 then return true end

return false

end

 

function isSilence(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Silence"]) >= 0 then return true end

return false

end

 

function isParalyze(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Paralyze"]) >= 0 then return true end

return false

end

 

function isSleeping(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Sleep"]) >= 0 then return true end

return false

end

 

function isWithFear(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Fear"]) >= 0 then return true end

return false

end

-----------------------------------

function doMoveInArea2(cid, eff, area, element, min, max, spell, ret)

if not isCreature(cid) then return true end

if spell and spell == "Mud Bomb" then

pos = getPosfromArea(getMasterTarget(cid), area)

else

pos = getPosfromArea(cid, area)

end

setPlayerStorageValue(cid, 21101, -1) --alterado v1.6

 

local skills = {"Skull Bash", "Gust", "Water Pulse", "Stick Throw", "Overheat", "Toxic", "Take Down", "Gyro Ball"} --alterado v1.7

local n = 0

local l = 0

 

while n < #pos do

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

 

n = n+1

thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}

local pid = getThingFromPosWithProtect(thing)

----

if pid ~= cid then

if spell and isInArray(skills, spell) then

if spell == "Stick Throw" then

addEvent(sendEffWithProtect, l*300, cid, pos[n], eff)

addEvent(sendMoveBack, 1200, cid, pos, eff, min, max)

addEvent(doMoveDano2, l*300, cid, pid, element, min, max, ret, spell) --alterado v1.6

elseif spell and spell == "Gyro Ball" then --alterado v1.7

pos[n].x = pos[n].x+1

addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)

addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell)

else

addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)

addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell) --alterado v1.6

end

elseif spell and spell == "Epicenter" then

local random = math.random(50, 500)

addEvent(sendEffWithProtect, random, cid, pos[n], eff)

addEvent(doDanoWithProtect, random, cid, GROUNDDAMAGE, pos[n], crusher, -min, -max, 255)

elseif spell and spell == "Shadowave" then

posi = {x=pos[n].x, y=pos[n].y+1, z=pos[n].z}

sendEffWithProtect(cid, posi, eff)

doMoveDano2(cid, pid, element, min, max, ret, spell) --alterado v1.6

elseif spell and spell == "Surf" then

addEvent(sendEffWithProtect, math.random(50, 500), cid, pos[n], eff)

addEvent(doMoveDano2, 400, cid, pid, element, min, max, ret, spell) --alterado v1.6

elseif spell and spell == "Sand Attack" then

addEvent(sendEffWithProtect, n*200, cid, pos[n], eff)

addEvent(doMoveDano2, n*200, cid, pid, element, min, max, ret, spell) --alterado v1.6

elseif spell and (spell == "Muddy Water" or spell == "Venom Motion") then

local arr = {

[1] = 0, [2] = 0, [3] = 0, [4] = 200, [5] = 200, [6] = 200, [7] = 400, [8] = 400, [9] = 400, [10] = 600, [11] = 600,

[12] = 600, [13] = 800, [14] = 800, [15] = 800

}

 

local time = {0, 200, 400, 600, 800}

 

addEvent(sendEffWithProtect, arr[n], cid, pos[n], eff)

addEvent(doMoveDano2, arr[n], cid, pid, element, min, max, ret, spell)

elseif spell and (spell == "Inferno" or spell == "Fissure") then

addEvent(sendEffWithProtect, math.random(0, 500), cid, pos[n], eff)

addEvent(doMoveDano2, math.random(0, 500), cid, pid, element, min, max, ret, spell)

else

sendEffWithProtect(cid, pos[n], eff)

doMoveDano2(cid, pid, element, min, max, ret, spell)

end

end

l = l+1

end

end

-------------------------------------------

function doMoveDano2(cid, pid, element, min, max, ret, spell)

if isCreature(pid) and isCreature(cid) and cid ~= pid then

if isNpcSummon(pid) and getCreatureTarget(pid) ~= cid then

return true --alterado v1.6

end

if ehNPC(pid) then return true end

---

local canAtk = true --alterado v1.6

if getPlayerStorageValue(pid, 21099) >= 1 then

doSendMagicEffect(getThingPosWithDebug(pid), 135)

doSendAnimatedText(getThingPosWithDebug(pid), "REFLECT", COLOR_GRASS)

addEvent(docastspell, 100, pid, spell)

if getCreatureName(pid) == "Wobbuffet" then

doRemoveCondition(pid, CONDITION_OUTFIT)

end

canAtk = false

setPlayerStorageValue(pid, 21099, -1)

setPlayerStorageValue(pid, 21100, 1)

setPlayerStorageValue(pid, 21101, cid)

setPlayerStorageValue(pid, 21103, getTableMove(cid, getPlayerStorageValue(cid, 21102)).f)

end

---

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isSummon(cid) and (ehMonstro(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can" and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

if canAtk then --alterado v1.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v1.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

if canAtk then --alterado v1.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v1.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

elseif isPlayer(cid) and ehMonstro(pid) and pid ~= cid then

if canAtk then --alterado v1.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v1.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

end

end

end

--------------------------------------------------------------------------------

function sendEffWithProtect(cid, pos, eff) --Manda algum magic effect com proteçoes

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

local checkpos = pos

checkpos.stackpos = 0

if not hasTile(checkpos) then

return true

end

if not canWalkOnPos2(pos, false, true, false, true, false) then --alterado v1.6

return true

end

 

doSendMagicEffect(pos, eff)

end

---------------------------------------------------------------------------------

function getThingPosWithDebug(what)

if not isCreature(what) or getCreatureHealth(what) <= 0 then

return {x = 1, y = 1, z = 10}

end

return getThingPos(what)

end

---------------------------------------------------------------------------------

function doDanoWithProtect(cid, element, pos, area, min, max, eff) --Da dano com proteçoes

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

doAreaCombatHealth(cid, element, pos, area, -(math.abs(min)), -(math.abs(max)), eff)

end

---------------------------------------------------------------------------------

function doDanoWithProtectWithDelay(cid, target, element, min, max, eff, area)

const_distance_delay = 56

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if target ~= 0 and isCreature(target) and not area then

delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay

addEvent(doDanoWithProtect, delay, cid, element, getThingPosWithDebug(target), 0, min, max, eff)

return true

end

addEvent(doDanoWithProtect, 200, cid, element, getThingPosWithDebug(target), area, min, max, eff)

end

--------------------------------------------------------------------------------

function sendDistanceShootWithProtect(cid, frompos, topos, eff) --Manda um efeito de distancia com proteçoes

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

doSendDistanceShoot(frompos, topos, eff)

end

---------------------------------------------------------------------------------

function sendMoveBack(cid, pos, eff, min, max) --Manda o Atk do farfetchd de volta...

local m = #pos+1

for i = 1, #pos do

if not isCreature(cid) then return true end

---

m = m-1

thing = {x=pos[m].x,y=pos[m].y,z=pos[m].z,stackpos=253}

local pid = getThingFromPosWithProtect(thing)

addEvent(doMoveDano2, i*200, cid, pid, FLYINGDAMAGE, min/4, max/4)

addEvent(sendEffWithProtect, i*200, cid, pos[m], eff) --alterado v1.3

--

end

end

---------------------------------------------------------------------------------

function upEffect(cid, effDis)

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

pos = getThingPos(cid)

frompos = {x = pos.x+1, y = pos.y, z = pos.z}

frompos.x = pos.x - math.random(4, 7)

frompos.y = pos.y - math.random(5, 8)

doSendDistanceShoot(getThingPos(cid), frompos, effDis)

end

---------------------------------------------------------------------------------

function fall(cid, master, element, effDis, effArea) --Function pra jogar efeitos pra cima e cair depois... tpw falling rocks e blizzard

if isCreature(cid) then

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

pos = getThingPos(cid)

pos.x = pos.x + math.random(-4,4)

pos.y = pos.y + math.random(-4,4)

if isMonster(cid) or isPlayer(cid) then

frompos = {x = pos.x+1, y = pos.y, z = pos.z}

elseif isSummon(cid) then

frompos = getThingPos(master)

end

frompos.x = pos.x - 7

frompos.y = pos.y - 6

if effDis ~= -1 then --alterado!

doSendDistanceShoot(frompos, pos, effDis)

end

doAreaCombatHealth(cid, element, pos, 0, 0, 0, effArea)

end

end

---------------------------------------------------------------------------------

function canDoMiss(cid, nameAtk) --alterado v1.5

local atkTerra = {"Sand Attack", "Mud Shot", "Mud Bomb", "Stomp", "Crusher Stomp", "Mud Slap", "Sand Tomb"} --alterado v1.7

local atkElectric = {"Electric Storm", "Thunder Wave", "Thunder", "Electricity", "Wild Charge"} --alterado v1.7

if not isCreature(cid) then return false end

if isPlayer(cid) then return true end

if not pokes[getCreatureName(cid)] then return true end

 

if isInArray(atkTerra, nameAtk) then

if (pokes[getCreatureName(cid)].type == "flying") or (pokes[getCreatureName(cid)].type2 == "flying") or isInArray(specialabilities["levitate"], getCreatureName(cid)) then

return false

end

elseif isInArray(atkElectric, nameAtk) then

if (pokes[getCreatureName(cid)].type == "ground") or (pokes[getCreatureName(cid)].type2 == "ground") then

return false

end

end

 

return true

end

---------------------------------------------------------------------------------

function doMoveInAreaMulti(cid, effDis, effMagic, areaEff, areaDano, element, min, max, ret) --alterado v1.7

if not isCreature(cid) then return true end

local pos = getPosfromArea(cid, areaEff)

local pos2 = getPosfromArea(cid, areaDano)

local n = 0

 

while n < #pos2 do

if not isCreature(cid) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

 

n = n+1

thing = {x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=253}

if n < #pos then

addEvent(sendDistanceShootWithProtect, 50, cid, getThingPos(cid), pos[n], effDis) --39

addEvent(sendEffWithProtect, 100, cid, pos[n], effMagic) -- 112

--- --alterado v1.6.1

if math.random(1, 2) == 2 then

addEvent(sendDistanceShootWithProtect, 450, cid, getThingPos(cid), pos[n], effDis) --550

addEvent(sendEffWithProtect, 550, cid, pos[n], effMagic) -- 650

end

end

local pid = getThingFromPosWithProtect(thing)

if isCreature(pid) then

if not ret then ret = {} end --alterado v1.7

doMoveDano2(cid, pid, element, min, max, ret, getPlayerStorageValue(cid, 21102))

end

end

end

---------------------------------------------------------------------------------------

function doDoubleHit(cid, pid, valor, races) --alterado v1.6

if isCreature(cid) and isCreature(pid) then

if getPlayerStorageValue(cid, 374896) >= 1 then

if getMasterTarget(cid) == pid then

if isInArray({"Kadabra", "Alakazam", "Mew", "Shiny Abra", "Shiny Alakazam"}, getCreatureName(cid)) then

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(pid), 39)

end

if isSummon(cid) then

doTargetCombatHealth(getCreatureMaster(cid), pid, PHYSICALDAMAGE, -math.abs(valor), -math.abs(valor), 255)

else

doCreatureAddHealth(pid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(pid)).race].cor)

end

end

end

end

end

----------------------------------------------------------------------------------------

function doDanoInTarget(cid, target, combat, min, max, eff) --alterado v1.7

if not isCreature(cid) or not isCreature(target) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

doTargetCombatHealth(cid, target, combat, -math.abs(min), -math.abs(max), eff)

end

-----------------------------------------------------------------------------------------

function doDanoInTargetWithDelay(cid, target, combat, min, max, eff) --alterado v1.7

const_distance_delay = 56

if not isCreature(cid) or not isCreature(target) then return true end

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

local delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay

addEvent(doDanoInTarget, delay, cid, target, combat, min, max, eff)

end

 

 

D:

Editado por Cleberadm
Link para o comentário
Compartilhar em outros sites

Ó esse ta dentro do pokemoves...

 

 

 

elseif spell == "Mud Shot" or spell == "Mud Slap" then

 

local contudion = spell == "Mud Shot" and "Miss" or "Stun"

local ret = {}

ret.id = target

ret.cd = 9

ret.eff = 34

ret.check = getPlayerStorageValue(target, conds[contudion])

ret.spell = spell

ret.cond = contudion

 

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)

addEvent(doMoveDano2, 100, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)

 

 

 

 

e esse ta no spells/ps/...

 

 

 

 

function onCastSpell(cid, var)

 

if isSummon(cid) then return true end

 

docastspell(cid, "Mud Shot")

 

return true

end

 

 

Link para o comentário
Compartilhar em outros sites

Va Em Data/Lib/pokemon moves.LUA

E Substitua Sua Spell Mud Shot Que Esta Junta Com Mud Slap Por

elseif spell == "Mud Shot" then

local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 34
ret.check = getPlayerStorageValue(target, conds["Miss"])
ret.spell = spell
ret.cond = "Miss"
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
doSendMagicEffect(getThingPosWithDebug(target), 116)
addEvent(doMoveDano2, 00, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)

elseif spell == "Mud Slap" then

local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 34
ret.check = getPlayerStorageValue(target, conds["Miss"])
ret.spell = spell
ret.cond = "Miss" and "Stun"
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
doSendMagicEffect(getThingPosWithDebug(target), 116)
addEvent(doMoveDano2, 00, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)

E É Isso =D

Qualquer Coisa Posta Ae

 

ABRASS

Editado por Fagundes14
Link para o comentário
Compartilhar em outros sites

  • 5 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...