Full Distribution

This commit is contained in:
rasanpedromujica
2019-01-16 17:16:38 -05:00
commit 009a571331
1258 changed files with 185603 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
local humanBodies = {
4240, 4241, 4247, 4248
}
function onCastSpell(creature, variant)
local position = Variant.getPosition(variant)
local tile = Tile(position)
if tile then
local corpse = tile:getTopDownItem()
if corpse then
local itemType = corpse:getType()
if not table.contains(humanBodies, itemType:getId()) then
if itemType:isCorpse() and itemType:isMovable() then
local monster = Game.createMonster("Skeleton", position)
if monster then
corpse:remove()
monster:setMaster(creature)
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
return true
end
end
end
end
end
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
return false
end

View File

@@ -0,0 +1,8 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,29 @@
local fieldIds = {
2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125,
2126, 2127, 2131, 2132, 2133, 2134, 2135
}
function onCastSpell(creature, variant, isHotkey)
local position = Variant.getPosition(variant)
local tile = Tile(position)
local field = tile and tile:getItemByType(ITEM_TYPE_MAGICFIELD)
if field and table.contains(fieldIds, field:getId()) then
field:remove()
position:sendMagicEffect(CONST_ME_POFF)
return true
end
for _, id in ipairs(fieldIds) do
field = tile and tile:getItemById(id)
if field then
field:remove()
position:sendMagicEffect(CONST_ME_POFF)
return true
end
end
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
end

View File

@@ -0,0 +1,26 @@
local dead_human = {
4240, 4241, 4242, 4247, 4248
}
local removalLimit = 10
function onCastSpell(creature, variant)
local position = variant:getPosition()
local tile = Tile(position)
if tile then
local items = tile:getItems()
if items then
for i, item in ipairs(items) do
if item:getType():isMovable() and item:getActionId() == 0 and not table.contains(dead_human, item:getId()) then
item:remove()
end
if i == removalLimit then
break
end
end
end
end
position:sendMagicEffect(CONST_ME_POFF)
return true
end

View File

@@ -0,0 +1,9 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
combat:setArea(createCombatArea(AREA_SQUARE1X1))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,18 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYPOISON)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
function onTargetCreature(creature, target)
local player = Player(creature)
local condition = Condition(CONDITION_POISON)
condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 70, 20))
target:addCondition(condition)
end
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,23 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat:setArea(createCombatArea(AREA_CROSS1X1))
function onGetFormulaValues(player, level, maglevel)
local base = 60
local variation = 40
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,9 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,22 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setArea(createCombatArea(AREA_CIRCLE2X2))
function onGetFormulaValues(player, level, maglevel)
local base = 20
local variation = 5
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
combat:setArea(createCombatArea(AREA_SQUARE1X1))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,22 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))
function onGetFormulaValues(player, level, maglevel)
local base = 50
local variation = 15
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,21 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
function onGetFormulaValues(player, level, maglevel)
local base = 30
local variation = 10
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,22 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
function onGetFormulaValues(player, level, maglevel)
local base = 70
local variation = 30
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return min, max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,21 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
function onGetFormulaValues(player, level, maglevel)
local base = 15
local variation = 5
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,7 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2128)
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,16 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
local condition = Condition(CONDITION_PARALYZE)
condition:setParameter(CONDITION_PARAM_TICKS, 10000)
condition:setSpeedDelta(-101)
combat:setCondition(condition)
function onCastSpell(creature, variant, isHotkey)
if not combat:execute(creature, variant) then
return false
end
creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
return true
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
combat:setArea(createCombatArea(AREA_SQUARE1X1))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,9 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,10 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,18 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
function onTargetCreature(creature, target)
local player = Player(creature)
local condition = Condition(CONDITION_FIRE)
condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 120, 20))
target:addCondition(condition)
end
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,21 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
function onGetFormulaValues(player, level, maglevel)
local base = 150
local variation = 20
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,23 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
combat:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
function onGetFormulaValues(player, level, maglevel)
local base = 250
local variation = 0
local formula = 3 * maglevel + (2 * level)
local min = (formula * (base - variation)) / 100
local max = (formula * (base + variation)) / 100
return min, max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end

View File

@@ -0,0 +1,7 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2130)
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end