local area = {
{1, 1, 0, 0, 0, 1, 1},
{1, 1, 1, 0, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 3, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 1, 1, 1},
{1, 1, 0, 0, 0, 1, 1}
}
function createRandomCombatArea(area, density)
local sizeX = #area
local sizeY = #area[1]
local newArea = {}
for x = 1, sizeX do
newArea[x] = {}
for y = 1, sizeY do
if area[x][y] == 3 then
newArea[x][y] = 2
elseif math.random(0, 100) < density then
newArea[x][y] = 1
else
newArea[x][y] = 0
end
end
end
return createCombatArea(newArea)
end
local density = 50 -- density value
local combatArea = createRandomCombatArea(area, density) -- create the combat area based on the density
function onCastSpell(creature, variant)
local target = creature:getTarget()
if not target or not target:isPlayer() then
return false
end
local targetPos = target:getPosition()
creature:say("Message", TALKTYPE_MONSTER_SAY)
doAreaCombatHealth(creature, 0, targetPos, combatArea, 0, 0, 57)
addEvent(function(pos)
local minDmg = 500 -- minimum damage value
local maxDmg = 1500 -- maximum damage value
local dmg = math.random(minDmg, maxDmg) -- generate a random number between min and max values
doAreaCombatHealth(creature, COMBAT_ICEDAMAGE, pos, combatArea, -dmg, -dmg, 80)
end, 3000, targetPos)
return true
end