Добавлен nazarpunk,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Lua
Тип:
Способность
Версия Warcraft:
Reforged
» MUI: нет
» Импорт: иконка, эффекты
» Утечки: нет
» Требования: нет
» Благодарности: KaneThaumaturge за реколор иконки.
» Импорт: иконка, эффекты
» Утечки: нет
» Требования: нет
» Благодарности: KaneThaumaturge за реколор иконки.
Герой открывает портал в небо и призывает оттуда молнию, которая наносит урон наземным юнитам в размере : Базовый урон героя * уровень способности.
Скриншот
Технические подробности
Перенос в свою карту
Триггеры
- RandomLightning
Способности
- 'SRaL'
Импорт
- Effect\Spell\RandomLightningBlue.mdx
- Effect\Spell\RandomLightningNature.mdx
- Effect\Spell\RandomLightningOrange.mdx
- Effect\Spell\RandomLightningRed.mdx
- Effect\Spell\RandomLightningVoid.mdx
- ReplaceableTextures\CommandButtons\BTNSpellRandomLightningBlue.blp
- ReplaceableTextures\CommandButtons\BTNSpellRandomLightningNature.blp
- ReplaceableTextures\CommandButtons\BTNSpellRandomLightningOrange.blp
- ReplaceableTextures\CommandButtons\BTNSpellRandomLightningRed.blp
- ReplaceableTextures\CommandButtons\BTNSpellRandomLightningVoid.blp
- ReplaceableTextures\CommandButtonsDisabled\DISBTNSpellRandomLightningBlue.blp
- ReplaceableTextures\CommandButtonsDisabled\DISBTNSpellRandomLightningNature.blp
- ReplaceableTextures\CommandButtonsDisabled\DISBTNSpellRandomLightningOrange.blp
- ReplaceableTextures\CommandButtonsDisabled\DISBTNSpellRandomLightningRed.blp
- ReplaceableTextures\CommandButtonsDisabled\DISBTNSpellRandomLightningVoid.blp
Настройка
local ABILITY_ID = AbilityId('SRaL')
local RANGE = 200
local DELAY = 1
local COLOR = {'Blue','Nature','Orange','Red','Void'}
Код
---@author https://xgm.guru/p/wc3/random-lightning
do
local InitGlobalOrigin = InitGlobals
function InitGlobals()
InitGlobalOrigin()
-- Настройки
local ABILITY_ID = FourCC('SRaL')
local RANGE = 200
local DELAY = 1
local COLOR = { 'Blue', 'Nature', 'Orange', 'Red', 'Void' }
local ICON_PATH = 'ReplaceableTextures/CommandButtons/BTNSpellRandomLightning'
-- Заклинание
local GROUP_ENUM_ONCE = CreateGroup()
local COLOR_CURRENT = COLOR[math.random(1, #COLOR)]
BlzSetAbilityIcon(ABILITY_ID, ICON_PATH .. COLOR_CURRENT .. '.blp')
local trigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
TriggerRegisterPlayerUnitEvent(trigger, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT)
end
TriggerAddAction(trigger, function()
if GetSpellAbilityId() ~= ABILITY_ID then return end
local caster = GetTriggerUnit()
local damage = BlzGetUnitBaseDamage(caster, 1) * GetUnitAbilityLevel(caster, ABILITY_ID)
local x, y = GetSpellTargetX(), GetSpellTargetY()
local effect = AddSpecialEffect('Abilities/Spells/Human/MassTeleport/MassTeleportCaster.mdl', x, y)
TimerStart(CreateTimer(), DELAY, false, function()
DestroyEffect(effect)
DestroyEffect(AddSpecialEffect('Effect/Spell/RandomLightning' .. COLOR_CURRENT .. '.mdx', x, y))
GroupEnumUnitsInRange(GROUP_ENUM_ONCE, x, y, RANGE)
while true do
local target = FirstOfGroup(GROUP_ENUM_ONCE)
if target == nil then break end
if UnitAlive(target) and
IsPlayerEnemy(GetOwningPlayer(caster), GetOwningPlayer(target)) and
not IsUnitType(target, UNIT_TYPE_MAGIC_IMMUNE) and
not IsUnitType(target, UNIT_TYPE_FLYING)
then
UnitDamageTarget(caster, target, damage, false, true, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
end
GroupRemoveUnit(GROUP_ENUM_ONCE, target)
end
COLOR_CURRENT = COLOR[math.random(1, #COLOR)]
BlzSetAbilityIcon(ABILITY_ID, ICON_PATH .. COLOR_CURRENT .. '.blp')
DestroyTimer(GetExpiredTimer())
end)
end)
end
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован nazarpunk
GetLocalPlayer:
Отредактирован Феникс
Отредактирован nazarpunk
Отредактирован prog
По идее имеются ввиду локальные и глобальные переменные, когда для глобальной переменной, которая будет переписываться с каждым срабатыванием триггера, создают локальную, которая будет сохранять значение переменной до конца выполнения триггера, что требуется, когда выполнение растянуто по времени. Но в другом контексте может быть что угодно.