Кастомная пассивка сларка

  • Автор темы Автор темы ArrLow
  • Дата начала Дата начала

ArrLow

Пользователь
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
 
Т.е. функционально скрипт работает, а визуально не отображает какие либо параметры?
Если так, то тебе в папке resource в addon_English или addon_Russian в зависимости от локализации вписать надо твои модификаторы и описания ссылаясь на твой lua
 
Т.е. функционально скрипт работает, а визуально не отображает какие либо параметры?
Если так, то тебе в папке resource в addon_English или addon_Russian в зависимости от локализации вписать надо твои модификаторы и описания ссылаясь на твой lua
не, он и функционально не работает
 
Ну тогда мне надо ссылкой откуда взял код ибо ломать голову почему один Lua модификатор не работает без исходника я не собираюсь
 
Реклама: