modifier_nazrin_01 = class({}) local public = modifier_nazrin_01 -------------------------------------------------------------------------------- function public:IsDebuff() return false end -------------------------------------------------------------------------------- function public:IsHidden() return true end -------------------------------------------------------------------------------- function public:IsPurgable() return false end function public:GetTexture() return "touhoutd/thtd_nazrin_01" end -------------------------------------------------------------------------------- function public:DeclareFunctions() local funcs = { MODIFIER_EVENT_ON_ATTACK_LANDED, } return funcs end function public:OnAttackLanded( params ) if IsServer() then -- 必须加下下面判断,否则会对所有单位攻击都有效,因lua这个是按事件处理,和KV的不同,只要是攻击这个行为就会触发事件,所以尽量不要使用lua的OnXXX事件方式 if params.attacker ~= self:GetParent() or self:GetParent():IsIllusion() then return end if self:GetParent():PassivesDisabled() then return end -- PrintTable(params) -- [VScript] attacker: -- [VScript] basher_tested: false -- [VScript] cost: 0 -- [VScript] damage: 4 -- [VScript] damage_category: 1 -- [VScript] damage_flags: 0 -- [VScript] damage_type: 1 -- [VScript] diffusal_applied: false -- [VScript] distance: 0 -- [VScript] do_not_consume: false -- [VScript] fail_type: 0 -- [VScript] gain: 0 -- [VScript] heart_regen_applied: false -- [VScript] ignore_invis: false -- [VScript] issuer_player_index: 0 -- [VScript] mkb_tested: false -- [VScript] new_pos: Vector 0000000003530FA8 [0.000000 0.000000 0.000000] -- [VScript] no_attack_cooldown: false -- [VScript] order_type: 0 -- [VScript] original_damage: 4 -- [VScript] process_procs: true -- [VScript] ranged_attack: true -- [VScript] record: 1 -- [VScript] reincarnate: false -- [VScript] stout_tested: false -- [VScript] target: local caster = params.attacker local target = params.target local ability = self:GetAbility() if SpawnSystem.IsUnLimited then if caster:HasModifier("modifier_byakuren_03_buff") then local targets = THTD_FindUnitsInRadius(caster,target:GetOrigin(),400) local damage = caster:GetGold()*caster:THTD_GetStar()*caster.thtd_byakuren_buff_nazrin for k,v in pairs(targets) do local DamageTable = { ability = ability, victim = v, attacker = caster, damage = damage, damage_type = DAMAGE_TYPE_PHYSICAL, damage_flags = DOTA_DAMAGE_FLAG_NONE } UnitDamageTarget(DamageTable) end end return end if GameRules:GetCustomGameDifficulty() >= FUNNY_MODE then return end if RollPercentage(ability:GetSpecialValueFor("bonus_chance")) then local gold = math.floor(caster:THTD_GetPower() * ability:GetSpecialValueFor("power_percent")/100 + ability:GetSpecialValueFor("bonus_gold")) THTD_ModifyGoldEx(caster:GetPlayerOwnerID(), gold , true, DOTA_ModifyGold_CreepKill) SendOverheadEventMessage(caster:GetPlayerOwner(), OVERHEAD_ALERT_GOLD, target, gold, caster:GetPlayerOwner() ) caster:EmitSound("Sound_THTD.thtd_nazrin_01") end end end