102 lines
3.2 KiB
Lua
Executable File
102 lines
3.2 KiB
Lua
Executable File
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 |