This spell is a trap for those players who target you to attack, won't work with area attack by spells or runes. When you cast it, if someone targets you to attack, you will be sent to a safe place nearby and the attacker will be damaged by a trap. Scripted in TFS 0.3.5pl1
YOUTUBE: YouTube - kawarimi.wmv
Option A) MOD:
Option B) LUA:
add to creaturescripts.xml
add to login.lua
create kawarimi.lua @creaturescripts/scripts:
add to spells/xml:
create kawarimi.lua @ spells/scripts:
YOUTUBE: YouTube - kawarimi.wmv
Option A) MOD:
Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Kawarimi" version="1.0" author="Cybermaster" contact="otland.net" enabled="yes">
<event type="login" name="Kawarimi" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "kawarimi")
return true
end]]></event>
<event type="attack" name="kawarimi" event="script"><![CDATA[
function onAttack(cid, target)
if (isPlayer(target)) and getPlayerStorageValue(target, 14680) == 1 then
doSendMagicEffect(getCreaturePosition(cid), 54)
doCreatureAddHealth(cid, -getPlayerLevel(target))
pos = getPlayerPosition(target)
doSendMagicEffect(pos, 67)
doSendAnimatedText(pos, "Kawarimi!", math.random(1,255))
local safe = {
{x=math.random(pos.x+2,pos.x+2), y=math.random(pos.y+2,pos.y+2), z=pos.z},
{x=math.random(pos.x-2,pos.x-2), y=math.random(pos.y-2,pos.y-2), z=pos.z},
{x=math.random(pos.x+2,pos.x+2), y=math.random(pos.y-2,pos.y-2), z=pos.z},
{x=math.random(pos.x-2,pos.x-2), y=math.random(pos.y+2,pos.y+2), z=pos.z}
}
for i = 1, #safe do
rand = math.random(1, #safe)
if(queryTileAddThing(target, safe[rand]) == RETURNVALUE_NOERROR) then
doTeleportThing(target, safe[rand], true)
end
end
doSendDistanceShoot(pos, getPlayerPosition(target), 35)
setPlayerStorageValue(target, 14680, 0)
doSendMagicEffect(getCreaturePosition(target), 10)
return true
end
end]]></event>
<instant name="Kawarimi no Jutsu" words="kawarimi" lvl="30" mana="200" needlearn="0" event="script"><![CDATA[
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 14680) ~= 1 then
setPlayerStorageValue(cid, 14680, 1)
doPlayerSendCancel(cid,"Kawarimi no Jutsu casted.")
return true
else
doPlayerSendCancel(cid,"You have already casted Kawarimi no Jutsu on you.")
return false
end
end]]></instant>
</mod>
Option B) LUA:
add to creaturescripts.xml
Lua:
<event type="attack" name="kawarimi" event="script" value="kawarimi.lua"/>
Lua:
registerCreatureEvent(cid, "kawarimi")
Lua:
function onAttack(cid, target)
if (isPlayer(target)) and getPlayerStorageValue(target, 14680) == 1 then
doSendMagicEffect(getCreaturePosition(cid), 54)
doCreatureAddHealth(cid, -getPlayerLevel(target))
pos = getPlayerPosition(target)
doSendMagicEffect(pos, 67)
doSendAnimatedText(pos, "Kawarimi!", math.random(1,255))
local safe = {
{x=math.random(pos.x+2,pos.x+2), y=math.random(pos.y+2,pos.y+2), z=pos.z},
{x=math.random(pos.x-2,pos.x-2), y=math.random(pos.y-2,pos.y-2), z=pos.z},
{x=math.random(pos.x+2,pos.x+2), y=math.random(pos.y-2,pos.y-2), z=pos.z},
{x=math.random(pos.x-2,pos.x-2), y=math.random(pos.y+2,pos.y+2), z=pos.z}
}
for i = 1, #safe do
rand = math.random(1, #safe)
if(queryTileAddThing(target, safe[rand]) == RETURNVALUE_NOERROR) then
doTeleportThing(target, safe[rand], true)
end
end
doSendDistanceShoot(pos, getPlayerPosition(target), 35)
setPlayerStorageValue(target, 14680, 0)
doSendMagicEffect(getCreaturePosition(target), 10)
return true
end
end
add to spells/xml:
Lua:
<instant name="Kawarimi no Jutsu" words="kawarimi" lvl="40" mana="200" prem="1" exhaustion="0" needlearn="0" blockwalls="1" enabled="1" event="script" value="kawarimi.lua">
<vocation id="3"/>
<vocation id="7"/>
</instant>
create kawarimi.lua @ spells/scripts:
Lua:
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 14680) ~= 1 then
setPlayerStorageValue(cid, 14680, 1)
doPlayerSendCancel(cid,"Kawarimi no Jutsu casted.")
return true
else
doPlayerSendCancel(cid,"You have already casted Kawarimi no Jutsu on you.")
return false
end
end
Last edited: