• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

[Request] Some creative spells

Glecko

Veteran OT User
Joined
Aug 21, 2007
Messages
1,054
Reaction score
270
Location
Spain
Here are some spells I'd need, if someone has the knowledge and the time to do them, I'd be very grateful.
The ideas are for spells that would use your soulpoints instead of your mana.

1.Blood Thirst: When you use this spell, during 1 minute (x time) you heal yourself for 25% of the damage you deal to opponents. (100 Soul)

2.Shield Wall: When you use this spell, attacks against you only do 50% of the damage during 10 seconds (150 Soul)

3.Steel Skin: When you use this spell on a player his maximum health points are raised by 5% during 10 minutes. Can only be used 1 time on every player (not a stackable spell) (50 Soul)

4.Pray: Heals a player to 100% of his health (200 soul)

5.Sleep: Sleeps a creature during 25 seconds. The creature won't move or attack during this time. If you attack the creature (or it is harmed by area attacks) it wakes up. (100 Soul)

6.Soulrage: When you use this spell on a creature, it will get hit 3 times, with 5 seconds between every hit. Every hit makes damage of your ML*5. Doesn't affect players (100 Soul)

7.Brilliance: Area spell, increases the damage of all the players in it by 5% during 15 minutes. (75 Soul)

8.Hurry: Area spell, increases the speed of all the players in it by 10 levels during 15 minutes. (75 Soul)

9.Rapid Fire: When you use this spell you can't move during 10 seconds. During this time it fires a normal attack (arrow/bolt/assassin star) every second. Doesn't affect players (75 Soul)

Thanks in advance :)
 
I really like your ideas, the names could use a change but as I cannot come up with anything better I cannot buy say that you're kind of brilliant.
 
I really like your ideas, the names could use a change but as I cannot come up with anything better I cannot buy say that you're kind of brilliant.

Some games already have this spells, but thanks. The names were just improvised so anyone helping could refer to them instead by numbers. I'm free to accept better names xD
 
Pray.lua

LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

function getCombatFormulas(cid, lv, maglv)
	local formula_min = ((lv*120 + maglv*15) * 1.0)
	local formula_max = ((lv*120 + maglv*15) * 1.0)

	if(formula_max < formula_min) then
		local tmp = formula_max
		formula_max = formula_min
		formula_min = tmp
	end
	return formula_min, formula_max
end


setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas")


function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

this will heal all health.

LUA:
<instant name="pray" words="utamo gran" lvl="10" mana="0" soul="200" prem="1" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="healing/pray.lua">
		<vocation id="4"/>
		<vocation id="8"/>
	</instant>
 
Last edited:
this one conjures full mana
LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

function getCombatFormulas(cid, lv, maglv)
	local formula_min = ((lv*120 + maglv*11) * 1.0)
	local formula_max = ((lv*120 + maglv*11) * 1.4)

	if(formula_max < formula_min) then
		local tmp = formula_max
		formula_max = formula_min
		formula_min = tmp
	end
	return formula_min, formula_max
end


setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas")


function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end



LUA:
<instant name="Conjure Mana" words="utamo res" lvl="10" mana="0" soul="200" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/conjure mana.lua">
		<vocation id="1"/>
		<vocation id="2"/>
		<vocation id="5"/>
		<vocation id="6"/>
	</instant>
 
Last edited:
steel skin

LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatParam(combat, COMBAT_PARAM_TARGETPLAYERSORSUMMONS, true)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 105)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)

-- remove unnecessary conditions

function onCastSpell(cid, var)
-- removed if/else condition
          return doCombat(cid, combat, var)
end
if you want to also give 5% mana add this under "MAXHEALTHPERCENT"
Code:
setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANAPERCENT, 105)


LUA:
<instant name="steel skin" words="exevo mas buff" lvl="100" manapercent="0" soul="50" prem="1" aggressive="0" needtarget="0" params="0" exhaustion="2000" needlearn="0" script="party/steelskin.lua">
		<vocation id="6"/>
	</instant>
 
Last edited:
7.Brilliance: Area spell, increases the damage of all the players in it by 5% during 15 minutes. (75 Soul)

i didnt make it 5% but i worked on an average if player has 100 skill it will give him 5 extra atk / def so this will work

brilliance.lua
LUA:
local combat = createCombatObject()
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 15 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 5)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 5)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 5)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 5)

local config = {
	baseMana = 60,
	pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}

function onCastSpell(cid, var)
	local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)
	if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	local affectedList = {}
	for _, pid in ipairs(membersList) do
		if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
			table.insert(affectedList, pid)
		end
	end

	local tmp = table.maxn(affectedList)
	if(tmp <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
	if(getCreatureMana(cid) < mana) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	if(not doCombat(cid, combat, var)) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end

	doCreatureAddMana(cid, -(mana - config.baseMana), false)
	if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
		doPlayerAddSpentMana(cid, (mana - config.baseMana))
	end

	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
	end

	return true
end

LUA:
  <instant name="brilliance" words="exevo mas train" lvl="100" manapercent="0" soul="75"  prem="1" aggressive="0"  needtarget="0" params="0"  exhaustion="2000" needlearn="0" script="party/brilliance.lua">
                <vocation id="5"/>
                <vocation id="6"/>
                <vocation id="7"/>
                <vocation id="8"/>
        </instant>
 
8.Hurry: Area spell, increases the speed of all the players in it by 10 levels during 15 minutes. (75 Soul)

try this.

LUA:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_TARGETPLAYERSORSUMMONS, true)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 15*60*1000)
setConditionFormula(condition, 0.3, -24, 0.3, -24)
setCombatCondition(combat, condition)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end
 
Back
Top