- 20 Июн 2023
- 32
- 0
- Проект
- Farming Simulator
Видно только сколько забирает статов, но не кол-во ловкости и длина действия.
Lua:
modifier_slark_essence_shift = class({})
--------------------------------------------------------------------------------
-- Classifications
function modifier_slark_essence_shift:IsHidden()
return false
end
function modifier_slark_essence_shift:IsDebuff()
return false
end
function modifier_slark_essence_shift:IsPurgable()
return false
end
--------------------------------------------------------------------------------
-- Initializations
function modifier_slark_essence_shift:OnCreated( kv )
-- references
self.agi_gain = self:GetAbility():GetSpecialValueFor( "agi_gain" )
self.duration = self:GetAbility():GetSpecialValueFor( "duration" )
end
function modifier_slark_essence_shift:OnRefresh( kv )
-- references
self.agi_gain = self:GetAbility():GetSpecialValueFor( "agi_gain" )
self.duration = self:GetAbility():GetSpecialValueFor( "duration" )
end
function modifier_slark_essence_shift:OnDestroy( kv )
end
--------------------------------------------------------------------------------
-- Modifier Effects
function modifier_slark_essence_shift:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_PROCATTACK_FEEDBACK,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
}
return funcs
end
function modifier_slark_essence_shift:GetModifierProcAttack_Feedback( params )
if IsServer() and (not self:GetParent():PassivesDisabled()) then
if target:IsIllusion() or (not target:IsHero()) or (not target:IsCreep()) then
-- Apply debuff to enemy
local debuff = params.target:AddNewModifier(
self:GetParent(),
self:GetAbility(),
"modifier_slark_essence_shift_debuff",
{
stack_duration = self.duration,
}
)
end
-- Apply buff to self
self:AddStack( duration )
-- Play effects
self:PlayEffects( params.target )
end
end
function modifier_slark_essence_shift:GetModifierBonusStats_Agility()
return self:GetStackCount() * self.agi_gain
end
--------------------------------------------------------------------------------
-- Helper
function modifier_slark_essence_shift:AddStack( duration )
-- Add counter
local mod = self:GetParent():AddNewModifier(
self:GetParent(),
self:GetAbility(),
"modifier_slark_essence_shift_stack",
{
duration = self.duration,
}
)
mod.modifier = self
-- Add stack
self:IncrementStackCount()
end
function modifier_slark_essence_shift:RemoveStack()
self:DecrementStackCount()
end
--------------------------------------------------------------------------------
-- Graphics & Animations
function modifier_slark_essence_shift:PlayEffects( target )
local particle_cast = "particles/units/heroes/hero_slark/slark_essence_shift.vpcf"
local effect_cast = ParticleManager:CreateParticle( particle_cast, PATTACH_ABSORIGIN_FOLLOW, target )
ParticleManager:SetParticleControl( effect_cast, 1, self:GetParent():GetOrigin() + Vector( 0, 0, 64 ) )
ParticleManager:ReleaseParticleIndex( effect_cast )
end
modifier_slark_essence_shift_debuff = class({})
--------------------------------------------------------------------------------
-- Classifications
function modifier_slark_essence_shift_debuff:IsHidden()
return false
end
function modifier_slark_essence_shift_debuff:IsDebuff()
return true
end
function modifier_slark_essence_shift_debuff:IsPurgable()
return false
end
--------------------------------------------------------------------------------
-- Initializations
function modifier_slark_essence_shift_debuff:OnCreated( kv )
-- references
self.stat_loss = self:GetAbility():GetSpecialValueFor( "stat_loss" )
self.duration = kv.stack_duration
if IsServer() then
self:AddStack( self.duration )
end
end
function modifier_slark_essence_shift_debuff:OnRefresh( kv )
-- references
self.stat_loss = self:GetAbility():GetSpecialValueFor( "stat_loss" )
self.duration = kv.stack_duration
if IsServer() then
self:AddStack( self.duration )
end
end
function modifier_slark_essence_shift_debuff:OnDestroy( kv )
end
--------------------------------------------------------------------------------
-- Modifier Effects
function modifier_slark_essence_shift_debuff:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
}
return funcs
end
function modifier_slark_essence_shift_debuff:GetModifierBonusStats_Strength()
return self:GetStackCount() * -self.stat_loss
end
function modifier_slark_essence_shift_debuff:GetModifierBonusStats_Agility()
return self:GetStackCount() * -self.stat_loss
end
function modifier_slark_essence_shift_debuff:GetModifierBonusStats_Intellect()
return self:GetStackCount() * -self.stat_loss
end
--------------------------------------------------------------------------------
-- Helper
function modifier_slark_essence_shift_debuff:AddStack( duration )
-- Add modifier
local mod = self:GetParent():AddNewModifier(
self:GetParent(),
self:GetAbility(),
"modifier_slark_essence_shift_stack",
{
duration = self.duration,
}
)
mod.modifier = self
-- Add stack
self:IncrementStackCount()
end
function modifier_slark_essence_shift_debuff:RemoveStack()
self:DecrementStackCount()
if self:GetStackCount()<=0 then
self:Destroy()
end
end
modifier_slark_essence_shift_stack = class({})
--------------------------------------------------------------------------------
-- Classifications
function modifier_slark_essence_shift_stack:IsHidden()
return true
end
function modifier_slark_essence_shift_stack:IsPurgable()
return false
end
function modifier_slark_essence_shift_stack:GetAttributes()
return MODIFIER_ATTRIBUTE_MULTIPLE
end
--------------------------------------------------------------------------------
-- Initializations
function modifier_slark_essence_shift_stack:OnCreated( kv )
end
function modifier_slark_essence_shift_stack:OnRemoved()
if IsServer() then
self.modifier:RemoveStack()
end
end
slark_essence_shift = class({})
LinkLuaModifier( "modifier_slark_essence_shift", "lua_abilities/slark_essence_shift/modifier_slark_essence_shift", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_slark_essence_shift_debuff", "lua_abilities/slark_essence_shift/modifier_slark_essence_shift_debuff", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_slark_essence_shift_stack", "lua_abilities/slark_essence_shift/modifier_slark_essence_shift_stack", LUA_MODIFIER_MOTION_NONE )
--------------------------------------------------------------------------------
-- Passive Modifier
function slark_essence_shift:GetIntrinsicModifierName()
return "modifier_slark_essence_shift"
end