initial commit
This commit is contained in:
83
scripts/vscripts/abilities/ability_lua/lily.lua
Executable file
83
scripts/vscripts/abilities/ability_lua/lily.lua
Executable file
@@ -0,0 +1,83 @@
|
||||
thtd_lily_01 = class({})
|
||||
|
||||
LinkLuaModifier("modifier_lily_01_effect_think", "abilities/ability_lua/modifier_lily_01_effect_think", LUA_MODIFIER_MOTION_NONE)
|
||||
|
||||
function thtd_lily_01:GetIntrinsicModifierName()
|
||||
return "modifier_lily_01_effect_think"
|
||||
end
|
||||
|
||||
function thtd_lily_01:GetAOERadius()
|
||||
return self:GetSpecialValueFor("radius")
|
||||
end
|
||||
|
||||
function thtd_lily_01:OnSpellStart()
|
||||
if SpawnSystem.IsUnLimited then return end
|
||||
if GameRules:GetCustomGameDifficulty() >= FUNNY_MODE then return end
|
||||
local caster = self:GetCaster()
|
||||
local ability = self
|
||||
local targetPoint = self:GetCursorPosition()
|
||||
|
||||
local targets =
|
||||
FindUnitsInRadius(
|
||||
caster:GetTeamNumber(),
|
||||
targetPoint,
|
||||
nil,
|
||||
ability:GetSpecialValueFor("radius"),
|
||||
ability:GetAbilityTargetTeam(),
|
||||
ability:GetAbilityTargetType(),
|
||||
ability:GetAbilityTargetFlags(),
|
||||
FIND_CLOSEST,
|
||||
false
|
||||
)
|
||||
|
||||
local exp = 1000 + caster:THTD_GetPower() * ability:GetSpecialValueFor("power_factor")
|
||||
|
||||
for k,v in pairs(targets) do
|
||||
if v ~= nil and v:IsNull() == false and v:THTD_IsTower() and v ~= caster and v:GetOwner() == caster:GetOwner() and v:THTD_GetLevel() < THTD_MAX_LEVEL then
|
||||
v:THTD_AddExp(exp)
|
||||
end
|
||||
end
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/lily/ability_lily_01_a.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, targetPoint)
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
||||
end
|
||||
|
||||
|
||||
thtd_lily_02 = class({})
|
||||
|
||||
LinkLuaModifier("modifier_lily_02_buff", "abilities/ability_lua/modifier_lily_02_buff", LUA_MODIFIER_MOTION_NONE)
|
||||
|
||||
function thtd_lily_02:OnSpellStart()
|
||||
local caster = self:GetCaster()
|
||||
|
||||
caster:EmitSound("Sound_THTD.thtd_lily_02")
|
||||
|
||||
self.radius = self:GetSpecialValueFor("radius")
|
||||
self.duration = self:GetSpecialValueFor("duration")
|
||||
self.damage_up = self:GetSpecialValueFor("damage_up")
|
||||
|
||||
local targets =
|
||||
FindUnitsInRadius(
|
||||
caster:GetTeamNumber(),
|
||||
caster:GetOrigin(),
|
||||
nil,
|
||||
self.radius,
|
||||
self:GetAbilityTargetTeam(),
|
||||
self:GetAbilityTargetType(),
|
||||
self:GetAbilityTargetFlags(),
|
||||
FIND_CLOSEST,
|
||||
false
|
||||
)
|
||||
|
||||
for k,v in pairs(targets) do
|
||||
if not v:HasModifier("modifier_lily_02_buff") then
|
||||
v:AddNewModifier(caster, self, "modifier_lily_02_buff", {Duration = self.duration})
|
||||
end
|
||||
end
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/lily/ability_lily_02.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, Vector(self.radius,self.radius,self.radius))
|
||||
ParticleManager:DestroyParticleSystemTime(effectIndex,self.duration)
|
||||
end
|
||||
Reference in New Issue
Block a user