Files
2HUCardTDGame/game/scripts/vscripts/abilities/abilitymomiji.lua
2021-11-10 08:48:00 -05:00

140 lines
4.3 KiB
Lua
Executable File

function OnMomiji01Spawn(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
if caster.ability_momiji01_Spawn_unit == nil then
caster.ability_momiji01_Spawn_unit = {}
end
count = keys.max_count
for i=1,count do
local unit = CreateUnitByName(
"momiji_wolf"
,caster:GetOrigin() + ( caster:GetForwardVector() + Vector(math.cos((i-1.5)*math.pi/3),math.sin((i-1.5)*math.pi/3),0) ) * 100
,false
,caster:GetOwner()
,caster:GetOwner()
,caster:GetTeam()
)
if unit == nil then return end
unit:SetControllableByPlayer(caster:GetPlayerOwnerID(), false)
unit:SetBaseDamageMax(caster:THTD_GetStarDamage() * keys.wolf_attack)
unit:SetBaseDamageMin(caster:THTD_GetStarDamage() * keys.wolf_attack)
unit.thtd_spawn_unit_owner = caster
keys.ability:ApplyDataDrivenModifier(caster, unit, "modifier_momiji_01_buff", nil)
local hero = caster:GetOwner()
if GameRules.player_bb_buff[hero.thtd_player_id]["item_3016"] > 0 then
unit.bb_buff_3016 = GameRules.player_bb_buff[hero.thtd_player_id]["item_3016"]
unit:AddNewModifier(unit, nil, "modifier_bb_buff_3016_effect", nil):SetStackCount(GameRules.player_bb_buff[hero.thtd_player_id]["item_3016"])
end
local oldSwpanUnit = caster.ability_momiji01_Spawn_unit[i]
if oldSwpanUnit ~=nil and oldSwpanUnit:IsNull() == false then
oldSwpanUnit:ForceKill(false)
end
caster.ability_momiji01_Spawn_unit[i] = unit
local duration = keys.ability:GetCooldownTime()
unit:SetContextThink(DoUniqueString("thtd_momiji_01"),
function()
if GameRules:IsGamePaused() then return 0.03 end
if GetDistanceBetweenTwoVec2D(caster:GetOrigin(), unit:GetOrigin()) > keys.range then
local forward = (unit:GetAbsOrigin() - caster:GetAbsOrigin()):Normalized()
unit:MoveToPosition(caster:GetOrigin() + forward * keys.range)
end
if duration > 0 then
duration = duration - 0.5
else
unit:AddNoDraw()
unit:ForceKill(false)
return nil
end
if not THTD_IsValid(caster) then
unit:AddNoDraw()
unit:ForceKill(false)
return nil
end
return 0.5
end,
0.5)
end
end
function OnMomiji02SpellStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
if target:GetPlayerOwnerID() ~= caster:GetPlayerOwnerID() then return end
if caster.ability_momiji_02_target == target then return end
if caster == target then return end
keys.ability:ApplyDataDrivenModifier(caster, target, "modifier_momiji_02", nil)
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_momiji/ability_momiji_02.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControlEnt(effectIndex , 0, target, 5, "follow_origin", Vector(0,0,0), true)
caster.ability_momiji_02_target = target
local count = 0
caster:SetContextThink(DoUniqueString("modifier_momiji_02"),
function()
if GameRules:IsGamePaused() then return 0.03 end
if caster.ability_momiji_02_target ~= target then
if target~=nil and target:IsNull()==false and target:HasModifier("modifier_momiji_02") then
target:RemoveModifierByName("modifier_momiji_02")
end
ParticleManager:DestroyParticleSystem(effectIndex,true)
return nil
end
return 0.1
end,
0.1)
caster:SetContextThink("modifier_momiji_02_remove",
function()
if GameRules:IsGamePaused() then return 0.03 end
if caster:THTD_IsHidden() or keys.ability:GetLevel()<1 then
caster.ability_momiji_02_target = nil
return nil
end
return 0.1
end,
0.1)
end
function OnCreatedMomiji02Buff(keys)
local target = keys.target
local bonus = 0
if target:GetUnitName() == "aya" then
bonus = keys.aya_damage_up
else
bonus = keys.damage_up
end
target:AddDamageOutgoingPhysical(bonus, "thtd_momiji_02_damage_up")
end
function OnUpgradeMomiji02Buff(keys)
local caster = keys.caster
local targets = {}
if caster.ability_momiji_02_target ~= nil then
table.insert(targets, caster.ability_momiji_02_target)
end
for _,target in pairs(targets) do
local bonus = 0
if target:GetUnitName() == "aya" then
bonus = keys.aya_damage_up
else
bonus = keys.damage_up
end
target:AddDamageOutgoingPhysical(bonus, "thtd_momiji_02_damage_up")
end
targets = {}
end
function OnDestroyMomiji02Buff(keys)
keys.target:AddDamageOutgoingPhysical("thtd_momiji_02_damage_up")
end