restructure

This commit is contained in:
2021-11-10 08:48:00 -05:00
parent d3eac6b70e
commit aaa089715d
12018 changed files with 6424 additions and 135034 deletions

View File

@@ -0,0 +1,210 @@
function OnKoishi01Attack(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
if caster.__koishi_lock ~= true then
caster.__koishi_lock = true
local targets = THTD_FindUnitsInRadius(caster,caster:GetOrigin(),keys.range)
for i=1,#targets do
local unit = targets[i]
if unit~=nil and unit:IsNull()==false and unit~=target and unit:IsAlive() then
caster:PerformAttack(unit,true,false,true,false,true,false,true)
if RollPercentage(keys.chance) then
local DamageTable = {
ability = keys.ability,
victim = unit,
attacker = caster,
damage = caster:THTD_GetAbilityPowerDamage(keys.ability),
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
local effectIndex = ParticleManager:CreateParticle("particles/units/heroes/hero_dark_willow/dark_willow_bramble.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControlEnt(effectIndex , 0, unit, 5, "follow_origin", Vector(0,0,0), true)
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,1.0)
end
end
end
caster.__koishi_lock = false
end
end
function OnKoishi02AttackLanded(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
local modifer = caster:FindModifierByName("modifier_koishi_02_attack_speed") or keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_koishi_02_attack_speed", nil)
local max_count = keys.max_count
if caster:HasModifier("passive_koishi_04_attack") then
max_count = keys.count_bonus
end
if modifer:GetStackCount() < max_count then
modifer:IncrementStackCount()
end
modifer:SetDuration(keys.duration_time, false)
end
function OnKoishi03SpellStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
if target:THTD_IsTower() and target:HasModifier("modifier_koishi_03_buff") == false then
caster.thtd_last_cast_unit = target
local time = keys.duration_time
if caster:FindAbilityByName("thtd_koishi_01"):GetLevel() > 1 then
time = keys.combo_time
end
local bonus = keys.power_bonus
if target:GetUnitName() == "satori" then
if target:IsPower999() then
bonus = bonus * (keys.self_crit + 10)
else
bonus = bonus * keys.self_crit
end
elseif target:GetUnitName() == "koishi" then
bonus = bonus * keys.self_crit
end
target.koishi_03_power_bonus = bonus
keys.ability:ApplyDataDrivenModifier(caster,target,"modifier_koishi_03_buff", {Duration = time})
target:EmitSound("Hero_OgreMagi.Bloodlust.Target")
else
keys.ability:EndCooldown()
end
end
function OnCreatedKoishi03Buff(keys)
local target = keys.target
local bonus = target.koishi_03_power_bonus
target:THTD_AddBasePower(bonus, "thtd_koishi_03_bonus")
target:THTD_AddBaseAttack(bonus, "thtd_koishi_03_bonus")
end
function OnDestroyKoishi03Buff(keys)
local target = keys.target
target:THTD_AddBasePower("thtd_koishi_03_bonus")
target:THTD_AddBaseAttack("thtd_koishi_03_bonus")
end
function OnKoishi04SpellStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
if caster:HasModifier("passive_koishi_04_attack") then
keys.ability:EndCooldown()
keys.ability:StartCooldown(1.0)
caster:GiveMana(caster:GetRealManaCost(keys.ability))
return
end
local time = keys.duration_time
caster:StartGesture(ACT_DOTA_CAST_ABILITY_4)
caster:SetAttackCapability(DOTA_UNIT_CAP_MELEE_ATTACK)
keys.ability:ApplyDataDrivenModifier(caster, caster, "passive_koishi_04_attack",nil)
caster:EmitSound("Voice_Thdots_Koishi.AbilityKoishi041")
caster:EmitSound("Hero_VengefulSpirit.WaveOfTerror")
local effectIndex = ParticleManager:CreateParticle("particles/econ/events/fall_major_2015/teleport_end_fallmjr_2015_lvl2_black.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,0.8)
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
function()
if GameRules:IsGamePaused() then return 0.03 end
caster:RemoveGesture(ACT_DOTA_CAST_ABILITY_4)
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
function()
if GameRules:IsGamePaused() then return 0.1 end
caster:StartGesture(ACT_DOTA_CAST_ABILITY_4_END)
local effectIndex = ParticleManager:CreateParticle("particles/econ/events/fall_major_2015/teleport_end_fallmjr_2015_lvl2_black.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,0.25)
caster:EmitSound("Voice_Thdots_Koishi.AbilityKoishi042")
caster:EmitSound("Hero_VengefulSpirit.WaveOfTerror")
caster:SetContextThink(DoUniqueString("thtd_koishi04_buff_remove"),
function()
if GameRules:IsGamePaused() then return 0.1 end
caster:RemoveGesture(ACT_DOTA_CAST_ABILITY_4_END)
caster:SetAttackCapability(DOTA_UNIT_CAP_RANGED_ATTACK)
caster:RemoveModifierByName("passive_koishi_04_attack")
return nil
end,
0.25)
return nil
end,
time)
return nil
end,
0.8)
end
function OnKoishi04AttackStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
local count = 3
caster:SetContextThink(DoUniqueString("thtd_koishi03_buff_remove"),
function()
if GameRules:IsGamePaused() then return 0.03 end
local num = RandomInt(1,6)
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_koishi/ability_koishi_04_attack_0"..num..".vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex , 0, caster:GetOrigin() - Vector(0,0,20))
ParticleManager:SetParticleControlForward(effectIndex , 0, caster:GetForwardVector()+Vector(0,0,num/12))
ParticleManager:SetParticleControlForward(effectIndex , 1, caster:GetForwardVector())
ParticleManager:DestroyParticleSystem(effectIndex,false)
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_koishi/ability_koishi_04_attack_landed.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex , 0, target:GetOrigin() + Vector(0,0,-260))
ParticleManager:SetParticleControl(effectIndex , 1, target:GetOrigin() + Vector(0,0,0))
ParticleManager:SetParticleControl(effectIndex , 2, target:GetOrigin() + Vector(0,0,0))
ParticleManager:SetParticleControl(effectIndex , 3, target:GetOrigin() + Vector(0,0,0))
ParticleManager:DestroyParticleSystem(effectIndex,false)
if count > 0 then
count = count - 1
return 0.1
else
return nil
end
end,
0.1)
end
function OnKoishi04Kill(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.unit
local effectIndex = ParticleManager:CreateParticle("particles/heroes/moluo/ability_moluo03_explosion.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex , 0, target:GetOrigin())
ParticleManager:SetParticleControl(effectIndex , 3, target:GetOrigin())
ParticleManager:DestroyParticleSystem(effectIndex,false)
end
function OnCreatedKoishi04Buff(keys)
local target = keys.target
target:THTD_AddBasePower(keys.power_base, "thtd_koishi_04_bonus")
target:THTD_AddBaseAttack(keys.power_base, "thtd_koishi_04_bonus")
target:THTD_AddPowerPercentage(keys.power_up, "thtd_koishi_04_bonus")
target:THTD_AddAttackPercentage(keys.power_up, "thtd_koishi_04_bonus")
end
function OnDestroyKoishi04Buff(keys)
local target = keys.target
target:THTD_AddBasePower("thtd_koishi_04_bonus")
target:THTD_AddBaseAttack("thtd_koishi_04_bonus")
target:THTD_AddPowerPercentage("thtd_koishi_04_bonus")
target:THTD_AddAttackPercentage("thtd_koishi_04_bonus")
end