restructure
This commit is contained in:
76
game/scripts/vscripts/modifiers/bosses/modifier_bosses_alice.lua
Executable file
76
game/scripts/vscripts/modifiers/bosses/modifier_bosses_alice.lua
Executable file
@@ -0,0 +1,76 @@
|
||||
modifier_bosses_alice = class({})
|
||||
|
||||
local public = modifier_bosses_alice
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- 分裂效果造成游戏卡顿崩溃,改为免死符
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
if caster.left_death_count == nil then
|
||||
caster.left_death_count = 3
|
||||
end
|
||||
if caster.effect_index == nil then
|
||||
local effectName = "particles/units/heroes/hero_monkey_king/monkey_king_quad_tap_stack.vpcf"
|
||||
local effectIndex = ParticleManager:CreateParticle(effectName, PATTACH_OVERHEAD_FOLLOW, caster)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex , 0, caster, PATTACH_OVERHEAD_FOLLOW, "attach_hitloc", Vector(0, 0, 0), true)
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, Vector(0, caster.left_death_count, 0))
|
||||
caster.effect_index = effectIndex
|
||||
else
|
||||
ParticleManager:SetParticleControl(caster.effect_index, 1, Vector(0, caster.left_death_count, 1))
|
||||
end
|
||||
self:SetStackCount(caster.left_death_count)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
if caster.diseble_buff == true then return end
|
||||
|
||||
caster.thtd_damage_lock = true
|
||||
|
||||
local health = caster:GetMaxHealth()
|
||||
if caster.left_death_count == 3 then
|
||||
health = health * 0.33
|
||||
end
|
||||
caster:SetBaseMaxHealth(health)
|
||||
caster:SetMaxHealth(health)
|
||||
caster:SetHealth(health)
|
||||
caster:SetModelScale(caster:GetModelScale() * 0.9)
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/econ/events/ti6/hero_levelup_ti6_godray.vpcf", PATTACH_CUSTOMORIGIN_FOLLOW, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
||||
ParticleManager:DestroyParticleSystem(effectIndex, false)
|
||||
|
||||
caster.left_death_count = caster.left_death_count - 1
|
||||
if caster.left_death_count <= 0 then
|
||||
ParticleManager:DestroyParticleSystem(caster.effect_index, true)
|
||||
else
|
||||
caster:AddNewModifier(caster, nil, "modifier_bosses_alice", {})
|
||||
end
|
||||
|
||||
caster.thtd_damage_lock = nil
|
||||
end
|
||||
end
|
||||
21
game/scripts/vscripts/modifiers/bosses/modifier_bosses_aya.lua
Executable file
21
game/scripts/vscripts/modifiers/bosses/modifier_bosses_aya.lua
Executable file
@@ -0,0 +1,21 @@
|
||||
modifier_bosses_aya = class({})
|
||||
|
||||
local public = modifier_bosses_aya
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
59
game/scripts/vscripts/modifiers/bosses/modifier_bosses_hina.lua
Executable file
59
game/scripts/vscripts/modifiers/bosses/modifier_bosses_hina.lua
Executable file
@@ -0,0 +1,59 @@
|
||||
modifier_bosses_hina = class({})
|
||||
|
||||
local public = modifier_bosses_hina
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_hina_aura_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_ENEMY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 1500
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
37
game/scripts/vscripts/modifiers/bosses/modifier_bosses_hina_aura_effect.lua
Executable file
37
game/scripts/vscripts/modifiers/bosses/modifier_bosses_hina_aura_effect.lua
Executable file
@@ -0,0 +1,37 @@
|
||||
modifier_bosses_hina_aura_effect = class({})
|
||||
|
||||
local public = modifier_bosses_hina_aura_effect
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
self:GetParent():AddExtraStarDamagePercentage(4505000, "modifier_bosses_hina_aura_effect")
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
self:GetParent():AddExtraStarDamagePercentage("modifier_bosses_hina_aura_effect")
|
||||
end
|
||||
end
|
||||
60
game/scripts/vscripts/modifiers/bosses/modifier_bosses_kaguya.lua
Executable file
60
game/scripts/vscripts/modifiers/bosses/modifier_bosses_kaguya.lua
Executable file
@@ -0,0 +1,60 @@
|
||||
modifier_bosses_kaguya = class({})
|
||||
|
||||
local public = modifier_bosses_kaguya
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
if caster.diseble_buff == true then return end
|
||||
|
||||
caster:AddNewModifier(caster,nil,"modifier_touhoutd_pause",{})
|
||||
caster:StartGesture(ACT_DOTA_DIE)
|
||||
caster.thtd_damage_lock = true
|
||||
caster:SetContextThink(DoUniqueString("thtd_modifier_kaguya_renew"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.1 end
|
||||
if caster == nil or caster:IsNull() or caster:IsAlive() == false or caster.diseble_buff == true then
|
||||
return nil
|
||||
end
|
||||
if caster:GetHealth() >= caster:GetMaxHealth() then
|
||||
caster.thtd_damage_lock = false
|
||||
caster:RemoveGesture(ACT_DOTA_DIE)
|
||||
caster:RemoveModifierByName("modifier_touhoutd_pause")
|
||||
return nil
|
||||
end
|
||||
caster:SetHealth(caster:GetHealth()+caster:GetMaxHealth()*0.04)
|
||||
return 0.04
|
||||
end,
|
||||
0)
|
||||
|
||||
end
|
||||
end
|
||||
68
game/scripts/vscripts/modifiers/bosses/modifier_bosses_keine.lua
Executable file
68
game/scripts/vscripts/modifiers/bosses/modifier_bosses_keine.lua
Executable file
@@ -0,0 +1,68 @@
|
||||
modifier_bosses_keine = class({})
|
||||
|
||||
local public = modifier_bosses_keine
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local max_health = caster:GetMaxHealth()
|
||||
caster:SetContextThink(DoUniqueString("thtd_bosses_keine_buff"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.1 end
|
||||
if caster==nil or caster:IsNull() or caster:IsAlive()==false then return nil end
|
||||
if caster:GetHealth() < max_health * 0.7 then
|
||||
local count = 50
|
||||
caster:SetContextThink(DoUniqueString("thtd_bosses_keine_back_buff"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.1 end
|
||||
if caster==nil or caster:IsNull() or caster:IsAlive()==false then return nil end
|
||||
|
||||
count = count - 1
|
||||
if count > 0 then return 0.1 end
|
||||
|
||||
caster:SetHealth(max_health * 0.7)
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/bosses/thtd_keine/ability_bosses_keine.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, caster:GetOrigin())
|
||||
ParticleManager:SetParticleControl(effectIndex, 2, caster:GetOrigin())
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
||||
return nil
|
||||
end,
|
||||
0.1)
|
||||
|
||||
return nil
|
||||
end
|
||||
return 0.1
|
||||
end,
|
||||
0.1)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
|
||||
end
|
||||
end
|
||||
29
game/scripts/vscripts/modifiers/bosses/modifier_bosses_kisume.lua
Executable file
29
game/scripts/vscripts/modifiers/bosses/modifier_bosses_kisume.lua
Executable file
@@ -0,0 +1,29 @@
|
||||
modifier_bosses_kisume = class({})
|
||||
|
||||
local public = modifier_bosses_kisume
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
self:GetParent():AddDamageBlockAll(600, "bosses_kisume_block_damage")
|
||||
end
|
||||
end
|
||||
75
game/scripts/vscripts/modifiers/bosses/modifier_bosses_marisa.lua
Executable file
75
game/scripts/vscripts/modifiers/bosses/modifier_bosses_marisa.lua
Executable file
@@ -0,0 +1,75 @@
|
||||
modifier_bosses_marisa = class({})
|
||||
|
||||
local public = modifier_bosses_marisa
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/marisa/marisa_01_rocket_a.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex , 0, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
ParticleManager:SetParticleControlForward(effectIndex,0,caster:GetForwardVector())
|
||||
ParticleManager:SetParticleControl(effectIndex, 15, Vector(0,60,255))
|
||||
local count = 5
|
||||
if caster.first_delay == nil then
|
||||
caster.first_delay = 0.3
|
||||
else
|
||||
caster.first_delay = 0
|
||||
end
|
||||
caster:SetContextThink(DoUniqueString("thtd_marisa_delay"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if count <= 0 then
|
||||
caster:RemoveModifierByName("modifier_bosses_marisa")
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,true)
|
||||
if caster~=nil and caster:IsNull()==false and caster:IsAlive() then
|
||||
FindClearSpaceForUnit(caster, caster:GetOrigin(), false)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
if caster:IsStunned() == false and caster:IsRooted() == false then
|
||||
caster:SetAbsOrigin(caster:GetOrigin() + caster:GetForwardVector() * 50)
|
||||
end
|
||||
count = count - 1
|
||||
return 0.06
|
||||
end,
|
||||
caster.first_delay)
|
||||
end
|
||||
end
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local count = 27
|
||||
caster:SetContextThink(DoUniqueString("thtd_marisa_delay"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if caster==nil or caster:IsNull() or caster:IsAlive()==false then return nil end
|
||||
count = count - 1
|
||||
if count > 0 then return 0.1 end
|
||||
caster:AddNewModifier(caster,caster,"modifier_bosses_marisa",nil)
|
||||
return nil
|
||||
end,
|
||||
0.1)
|
||||
|
||||
end
|
||||
end
|
||||
58
game/scripts/vscripts/modifiers/bosses/modifier_bosses_minoriko.lua
Executable file
58
game/scripts/vscripts/modifiers/bosses/modifier_bosses_minoriko.lua
Executable file
@@ -0,0 +1,58 @@
|
||||
modifier_bosses_minoriko = class({})
|
||||
|
||||
local public = modifier_bosses_minoriko
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local count = 100
|
||||
local max_health = caster:GetMaxHealth()
|
||||
caster:SetContextThink(DoUniqueString("thtd_bosses_minoriko_buff"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if caster==nil or caster:IsNull() or caster:IsAlive()==false then return nil end
|
||||
|
||||
count = count - 1
|
||||
if count == 0 then
|
||||
caster:SetHealth(math.min(caster:GetHealth() + max_health * 0.3, max_health))
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/minoriko/ability_minoriko_04.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
||||
count = 100
|
||||
end
|
||||
|
||||
return 0.1
|
||||
end,
|
||||
0.1)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
|
||||
end
|
||||
end
|
||||
59
game/scripts/vscripts/modifiers/bosses/modifier_bosses_mokou.lua
Executable file
59
game/scripts/vscripts/modifiers/bosses/modifier_bosses_mokou.lua
Executable file
@@ -0,0 +1,59 @@
|
||||
modifier_bosses_mokou = class({})
|
||||
|
||||
local public = modifier_bosses_mokou
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_mokou_aura_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_ENEMY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 1500
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
37
game/scripts/vscripts/modifiers/bosses/modifier_bosses_mokou_aura_effect.lua
Executable file
37
game/scripts/vscripts/modifiers/bosses/modifier_bosses_mokou_aura_effect.lua
Executable file
@@ -0,0 +1,37 @@
|
||||
modifier_bosses_mokou_aura_effect = class({})
|
||||
|
||||
local public = modifier_bosses_mokou_aura_effect
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
self:GetParent():THTD_AddCritChance(-85, "modifier_bosses_mokou_aura_effect")
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
self:GetParent():THTD_AddCritChance("modifier_bosses_mokou_aura_effect")
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,63 @@
|
||||
modifier_bosses_random_attack_speed_aura = class({})
|
||||
|
||||
local public = modifier_bosses_random_attack_speed_aura
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_random_attack_speed_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_ENEMY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 1200
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_attack_speed"
|
||||
end
|
||||
@@ -0,0 +1,42 @@
|
||||
modifier_bosses_random_attack_speed_effect = class({})
|
||||
|
||||
local public = modifier_bosses_random_attack_speed_effect
|
||||
|
||||
local m_modifier_funcs=
|
||||
{
|
||||
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
|
||||
}
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_attack_speed"
|
||||
end
|
||||
|
||||
function public:DeclareFunctions()
|
||||
return m_modifier_funcs
|
||||
end
|
||||
|
||||
function public:GetModifierAttackSpeedBonus_Constant()
|
||||
return -self:GetStackCount()
|
||||
end
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local playerid = caster:GetPlayerOwnerID()
|
||||
if GameRules.player_bb_buff[playerid]["item_3013"] > 0 then
|
||||
self:SetStackCount(math.floor(GameRules.player_bb_buff[playerid]["item_3013"] * 50))
|
||||
end
|
||||
end
|
||||
end
|
||||
64
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_aura_dark.lua
Executable file
64
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_aura_dark.lua
Executable file
@@ -0,0 +1,64 @@
|
||||
|
||||
modifier_bosses_random_aura_dark = class({})
|
||||
|
||||
local public = modifier_bosses_random_aura_dark
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_random_aura_dark_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_ENEMY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 1200
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "touhoutd/thtd_suika_02"
|
||||
end
|
||||
@@ -0,0 +1,55 @@
|
||||
|
||||
modifier_bosses_random_aura_dark_effect = class({})
|
||||
|
||||
local public = modifier_bosses_random_aura_dark_effect
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsDebuff()
|
||||
return true
|
||||
end
|
||||
|
||||
function public:IsPurgable()
|
||||
return true
|
||||
end
|
||||
|
||||
function public:GetEffectName()
|
||||
return "particles/units/towers/aura_dark.vpcf"
|
||||
end
|
||||
|
||||
function public:GetEffectAttachType()
|
||||
return PATTACH_ABSORIGIN_FOLLOW
|
||||
end
|
||||
|
||||
function public:GetTexture()
|
||||
return "touhoutd/thtd_suika_02"
|
||||
end
|
||||
|
||||
function public:OnCreated( kv )
|
||||
if not IsServer() then
|
||||
return
|
||||
end
|
||||
|
||||
local target = self:GetParent()
|
||||
local bonus = -25
|
||||
target:THTD_AddPowerPercentage(bonus, "thtd_boss_random_dark_aura")
|
||||
target:THTD_AddAttackPercentage(bonus, "thtd_boss_random_dark_aura")
|
||||
target:THTD_AddCritDamage(bonus, "thtd_boss_random_dark_aura")
|
||||
target:THTD_AddCritChance(bonus, "thtd_boss_random_dark_aura")
|
||||
end
|
||||
|
||||
function public:OnDestroy()
|
||||
if not IsServer() then
|
||||
return
|
||||
end
|
||||
|
||||
local target = self:GetParent()
|
||||
target:THTD_AddPowerPercentage("thtd_boss_random_dark_aura")
|
||||
target:THTD_AddAttackPercentage("thtd_boss_random_dark_aura")
|
||||
target:THTD_AddCritDamage("thtd_boss_random_dark_aura")
|
||||
target:THTD_AddCritChance("thtd_boss_random_dark_aura")
|
||||
end
|
||||
58
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_dead_heal.lua
Executable file
58
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_dead_heal.lua
Executable file
@@ -0,0 +1,58 @@
|
||||
modifier_bosses_random_dead_heal = class({})
|
||||
|
||||
local public = modifier_bosses_random_dead_heal
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local point = caster:GetOrigin()
|
||||
local hero = GameRules.HeroList[caster.thtd_player_index]
|
||||
local time = 5
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_suwako/ability_suwako_02.vpcf", PATTACH_CUSTOMORIGIN, hero)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, point)
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, Vector(200,1,1))
|
||||
ParticleManager:DestroyParticleSystemTime(effectIndex,5.0)
|
||||
|
||||
hero:SetContextThink(DoUniqueString("random_boss_buff_dead_heal"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.3 end
|
||||
if time <= 0 then return nil end
|
||||
local targets = THTD_FindUnitsInRadius(hero,point,300)
|
||||
for k,v in pairs(targets) do
|
||||
if v ~= nil and v:IsNull() == false and v:IsAlive() then
|
||||
v:SetHealth(math.min(v:GetMaxHealth(), v:GetHealth() + v:GetMaxHealth() * 0.05))
|
||||
end
|
||||
end
|
||||
time = time - 1
|
||||
return 1
|
||||
end,
|
||||
1)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_dead_heal"
|
||||
end
|
||||
@@ -0,0 +1,63 @@
|
||||
modifier_bosses_random_health_aura = class({})
|
||||
|
||||
local public = modifier_bosses_random_health_aura
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_random_health_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 500
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_health"
|
||||
end
|
||||
@@ -0,0 +1,55 @@
|
||||
modifier_bosses_random_health_effect = class({})
|
||||
|
||||
local public = modifier_bosses_random_health_effect
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
if caster.random_boss_health_buff ~= true then
|
||||
caster.random_boss_health_buff = true
|
||||
local health = math.min(MAX_HEALTH, caster:GetMaxHealth()*1.25)
|
||||
caster.random_health_factor = health/caster:GetMaxHealth()
|
||||
caster:SetBaseMaxHealth(health)
|
||||
caster:SetMaxHealth(health)
|
||||
caster:SetHealth(caster:GetHealth()*caster.random_health_factor)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function public:OnDestroy(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
if caster.random_boss_health_buff == true and caster.random_health_factor ~= nil then
|
||||
local health = caster:GetMaxHealth()/caster.random_health_factor
|
||||
caster:SetBaseMaxHealth(health)
|
||||
caster:SetMaxHealth(health)
|
||||
caster:SetHealth(caster:GetHealth()/caster.random_health_factor)
|
||||
caster.random_boss_health_buff = false
|
||||
end
|
||||
end
|
||||
end
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_health"
|
||||
end
|
||||
63
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_move_aura.lua
Executable file
63
game/scripts/vscripts/modifiers/bosses/modifier_bosses_random_move_aura.lua
Executable file
@@ -0,0 +1,63 @@
|
||||
modifier_bosses_random_move_aura = class({})
|
||||
|
||||
local public = modifier_bosses_random_move_aura
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_random_move_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 500
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_move_speed"
|
||||
end
|
||||
@@ -0,0 +1,32 @@
|
||||
modifier_bosses_random_move_effect = class({})
|
||||
|
||||
local public = modifier_bosses_random_move_effect
|
||||
|
||||
local m_modifier_funcs=
|
||||
{
|
||||
MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE,
|
||||
}
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:DeclareFunctions()
|
||||
return m_modifier_funcs
|
||||
end
|
||||
|
||||
function public:GetModifierMoveSpeedBonus_Percentage()
|
||||
return 25
|
||||
end
|
||||
|
||||
function public:GetTexture()
|
||||
return "random_boss_buff_move_speed"
|
||||
end
|
||||
@@ -0,0 +1,63 @@
|
||||
modifier_bosses_random_resist_aura = class({})
|
||||
|
||||
local public = modifier_bosses_random_resist_aura
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsAura()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetModifierAura()
|
||||
return "modifier_bosses_random_resist_effect"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchTeam()
|
||||
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchType()
|
||||
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraSearchFlags()
|
||||
return DOTA_UNIT_TARGET_FLAG_NONE
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetAuraRadius()
|
||||
return 500
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:GetTexture()
|
||||
return "touhoutd/thtd_suika_02"
|
||||
end
|
||||
@@ -0,0 +1,32 @@
|
||||
modifier_bosses_random_resist_effect = class({})
|
||||
-- 实际对自定义的控制不起作用
|
||||
local public = modifier_bosses_random_resist_effect
|
||||
|
||||
local m_modifier_funcs=
|
||||
{
|
||||
MODIFIER_PROPERTY_STATUS_RESISTANCE,
|
||||
}
|
||||
|
||||
function public:IsHidden()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:DeclareFunctions()
|
||||
return m_modifier_funcs
|
||||
end
|
||||
|
||||
function public:GetModifierStatusResistance()
|
||||
return 25
|
||||
end
|
||||
|
||||
function public:GetTexture()
|
||||
return "touhoutd/thtd_hatate_01"
|
||||
end
|
||||
44
game/scripts/vscripts/modifiers/bosses/modifier_bosses_rumia.lua
Executable file
44
game/scripts/vscripts/modifiers/bosses/modifier_bosses_rumia.lua
Executable file
@@ -0,0 +1,44 @@
|
||||
modifier_bosses_rumia = class({})
|
||||
|
||||
local public = modifier_bosses_rumia
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
function public:OnCreated(kv)
|
||||
if IsServer() then
|
||||
local caster = self:GetParent()
|
||||
local count = 40
|
||||
caster:SetContextThink(DoUniqueString("thtd_rumia_think"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if caster==nil or caster:IsNull() or caster:IsAlive()==false then return nil end
|
||||
|
||||
count = count - 1
|
||||
|
||||
if count > 10 then
|
||||
caster.thtd_damage_lock = false
|
||||
elseif count == 10 then
|
||||
caster.thtd_damage_lock = true
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/thd2/heroes/rumia/ability_rumia01_effect.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex , 0, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
ParticleManager:DestroyParticleSystemTime(effectIndex,1.0)
|
||||
elseif count == 0 then
|
||||
count = 40
|
||||
end
|
||||
|
||||
return 0.1
|
||||
end,
|
||||
0.1)
|
||||
|
||||
end
|
||||
end
|
||||
21
game/scripts/vscripts/modifiers/bosses/modifier_bosses_yuugi.lua
Executable file
21
game/scripts/vscripts/modifiers/bosses/modifier_bosses_yuugi.lua
Executable file
@@ -0,0 +1,21 @@
|
||||
modifier_bosses_yuugi = class({})
|
||||
|
||||
local public = modifier_bosses_yuugi
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsDebuff()
|
||||
return false
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function public:IsPurgable()
|
||||
return false
|
||||
end
|
||||
Reference in New Issue
Block a user