function onCastSpell(cid, var)
local target = getThingfromPos(getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1))
if isNpc(target.uid) or not isCreature(target.uid) then
doPlayerSendCancel(cid, 'There\'s nobody to repel.')
doSendMagicEffect(getCreaturePosition(cid), 2)
return false
end
if doTileQueryAdd(target.uid, getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 2)) == RETURNVALUE_NOTPOSSIBLE then
doPlayerSendCancel(cid, 'There\'s something in the road that avoids you from repelling.')
doSendMagicEffect(getCreaturePosition(cid), 2)
return false
end
if getTileInfo(getCreaturePosition(target.uid)).protection or getTileInfo(getCreaturePosition(target.uid)).nopvp then
doSendMagicEffect(getCreaturePosition(cid), 2)
return false
end
doRepelCreature(cid, target.uid, getPlayerAccess(cid) == 1 and getRepelTiles(cid) or 99)
return true
end
function getRepelTiles(cid)
local tile = {{20, 3},{40, 4},{60, 5},{80, 6},{100, 7},{120, 8}}
table.sort(tile, function(a, b) return a[1] > b[1] end)
for _, t in ipairs(tile) do
if(getPlayerLevel(cid) >= t[1]) then
return t[2]
end
end
return tile[1][2]
end
--[[function getNextPos(cid, tiles)
p = getCreaturePosition(cid)
x,y,z = p.x,p.y,p.z
local places = {
[0] = {x=x, y=(y-tiles), z=z, stackpos = 253},
[1] = {x=(x+tiles), y=y, z=z, stackpos = 253},
[2] = {x=x, y=(y+tiles), z=z, stackpos = 253},
[3] = {x=(x-tiles), y=y, z=z, stackpos = 253}}
return places[getPlayerLookDir(cid)]
end]]--
function doRepelCreature(cid, target, tiles)
if doTileQueryAdd(target, getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 2)) ~= RETURNVALUE_NOTPOSSIBLE then
doCreatureSetLookDirection(target, getCreatureLookDirection(cid))
repeat
doTeleportThing(target, getPosByDir(getCreaturePosition(target), getCreatureLookDirection(target), 1), true)
doSendMagicEffect(getCreaturePosition(target), CONST_ME_GROUNDSHAKER)
tiles = tiles - 1
until tiles == 0 or doTileQueryAdd(target, getPosByDir(getCreaturePosition(target), getCreatureLookDirection(target), 1)) == RETURNVALUE_NOTPOSSIBLE
end
end