• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Lua Spell Question

  • Thread starter Deleted member 49793
  • Start date
D

Deleted member 49793

Guest
Can someone make this spell only effect the one using it?
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
 
AREA_CIRCLE = {
	{0, 1, 1, 1, 0},
	{1, 1, 1, 1, 1},
	{1, 1, 2, 1, 1},
	{1, 1, 1, 1, 1},
	{0, 1, 1, 1, 0}
}
 
local area = createCombatArea(AREA_CIRCLE)
setCombatArea(combat, area)
 
local condition = {}
for i = 1, 4 do
	condition[i] = createConditionObject(CONDITION_ATTRIBUTES)
	setConditionParam(condition[i], CONDITION_PARAM_TICKS, 10000)
	setConditionParam(condition[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 50)
end
	setConditionParam(condition[1], CONDITION_PARAM_STAT_MAGICLEVEL, 5)
	setConditionParam(condition[2], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 150)
	setConditionParam(condition[3], CONDITION_PARAM_SKILL_MELEEPERCENT, 150)
 
function onTargetCreature(cid, target) 
	if(isSorcerer(target) or isDruid(target)) then
		return doTargetCombatCondition(cid, target, condition[1], CONST_ME_MAGIC_BLUE), true
	elseif(isPaladin(target)) then
		return doTargetCombatCondition(cid, target, condition[2], CONST_ME_MAGIC_GREEN), true
	elseif(isKnight(target)) then
		return doTargetCombatCondition(cid, target, condition[3], CONST_ME_MAGIC_RED), true
	end
	return true
end
 
setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
 
function onCastSpell(cid, var)
	local tribute = getCreatureMaxHealth(cid) * 1.3 - getCreatureMaxHealth(cid)
 
	if getCreatureHealth(cid) <= tribute then
        doPlayerSendCancel(cid, "You need more health points.")
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        return LUA_ERROR
	else
		doCreatureAddHealth(cid, -tribute)
		return doCombat(cid, combat, var)
	end
end
 
but you still want the big area affect to appear??
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)

local AREA_CIRCLE = {
	{0, 1, 1, 1, 0},
	{1, 1, 1, 1, 1},
	{1, 1, 2, 1, 1},
	{1, 1, 1, 1, 1},
	{0, 1, 1, 1, 0}
}

setCombatArea(combat, createCombatArea(AREA_CIRCLE))

local condition = {}
for i = 1, 3 do
	condition[i] = createConditionObject(CONDITION_ATTRIBUTES)
	setConditionParam(condition[i], CONDITION_PARAM_TICKS, 10000)
	setConditionParam(condition[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 50)
end
setConditionParam(condition[1], CONDITION_PARAM_STAT_MAGICLEVEL, 5)
setConditionParam(condition[2], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 150)
setConditionParam(condition[3], CONDITION_PARAM_SKILL_MELEEPERCENT, 150)

function onCastSpell(cid, var)
	local tribute = getCreatureMaxHealth(cid) / (10 / 3)

	if getCreatureHealth(cid) <= tribute then
		doPlayerSendCancel(cid, "You need more health points.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
		return false
	else
		doCreatureAddHealth(cid, -tribute)
		doTargetCombatCondition(0, cid, condition[1], CONST_ME_MAGIC_BLUE)
		if isSorcerer(cid) or isDruid(cid) then
			doTargetCombatCondition(0, cid, condition[1], CONST_ME_MAGIC_BLUE)
		elseif isPaladin(cid) then
			doTargetCombatCondition(0, cid, condition[2], CONST_ME_MAGIC_GREEN)
		elseif isKnight(cid) then
			doTargetCombatCondition(0, cid, condition[3], CONST_ME_MAGIC_RED)
		end
		return doCombat(cid, combat, var)
	end
end
 
Last edited:
Back
Top