initial commit

This commit is contained in:
2021-10-24 15:36:18 -04:00
commit b9a5a8fe23
11982 changed files with 220468 additions and 0 deletions

View File

@@ -0,0 +1,242 @@
function OnTenshi01SpellStart(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
caster:EmitSound("Sound_THTD.thtd_tenshi_01")
local targets = THTD_FindUnitsInRadius(caster,target:GetOrigin(),keys.range)
local powerBonus = #targets * keys.bonus_attack_power
if powerBonus > 0 then
caster:THTD_AddBasePower(powerBonus)
caster:THTD_AddBaseAttack(powerBonus)
caster:SetContextThink(DoUniqueString("dota_timer"),
function()
if GameRules:IsGamePaused() then return 0.1 end
caster:THTD_AddBasePower(-powerBonus)
caster:THTD_AddBaseAttack(-powerBonus)
return nil
end,
keys.duration_time)
end
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability)
for k,v in pairs(targets) do
local DamageTable_aoe = {
ability = keys.ability,
victim = v,
attacker = caster,
damage = damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable_aoe)
end
local effectIndex = ParticleManager:CreateParticle("particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_echoslam_start_fallback_low_egset.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, target:GetOrigin())
ParticleManager:SetParticleControl(effectIndex, 1, target:GetOrigin())
ParticleManager:DestroyParticleSystem(effectIndex,false)
end
function OnTenshi02AttackLanded(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
local targets = THTD_FindUnitsInRadius(caster,target:GetOrigin(),keys.range)
local damage = caster:THTD_GetAttack()
for k,v in pairs(targets) do
local DamageTable_aoe = {
ability = keys.ability,
victim = v,
attacker = caster,
damage = damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable_aoe)
end
if caster.thtd_attack_time == nil then
caster.thtd_attack_time = GameRules:GetGameTime() - 10
end
if caster.thtd_attack_time < GameRules:GetGameTime() - 1 then
caster.thtd_attack_time = GameRules:GetGameTime()
local effectIndex = ParticleManager:CreateParticle("particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_echoslam_start_fallback_low_egset.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, target:GetOrigin())
ParticleManager:SetParticleControl(effectIndex, 1, target:GetOrigin())
ParticleManager:DestroyParticleSystem(effectIndex,false)
end
end
-- 被动modifier会在所有自定变量前生效造成不起作用不要用Passive
function OnThinkTenshi02Buff(keys)
local caster = keys.caster
local powerChance = 0
local pv = caster:GetAbilityPowerValue("thtd_tenshi_02")
if pv ~= nil then
powerChance = pv[1]
end
local bonus = keys.chance + powerChance
local add = bonus - (caster.thtd_tenshi_02_crit_chance or 0)
if add ~= 0 then
caster:THTD_AddCritChance(add)
caster.thtd_tenshi_02_crit_chance = bonus
end
local bonus = keys.crit
if caster:IsPower999() then
bonus = bonus * 2
end
local add = bonus - (caster.thtd_tenshi_02_crit_damage or 0)
if add ~= 0 then
caster:THTD_AddCritDamage(add)
caster.thtd_tenshi_02_crit_damage = bonus
end
end
function OnDestroyTenshi02Buff(keys)
local caster = keys.caster
if caster.thtd_tenshi_02_crit_chance ~= nil then
caster:THTD_AddCritChance(-caster.thtd_tenshi_02_crit_chance)
caster.thtd_tenshi_02_crit_chance = nil
end
if caster.thtd_tenshi_02_crit_damage ~= nil then
caster:THTD_AddCritDamage(-caster.thtd_tenshi_02_crit_damage)
caster.thtd_tenshi_02_crit_damage = nil
end
end
function OnTenshi03AttackLanded(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
if keys.ability:GetLevel() < 1 then return end
if caster.thtd_tenshi_03_attack_count == nil then
caster.thtd_tenshi_03_attack_count = 0
end
caster.thtd_tenshi_03_attack_count = caster.thtd_tenshi_03_attack_count + 1
if caster.thtd_tenshi_03_attack_count >= keys.max_count then
caster.thtd_tenshi_03_attack_count = 0
local powerDamage = 0
local pv = caster:GetAbilityPowerValue("thtd_tenshi_03")
if pv ~= nil then
powerDamage = pv[1]
end
caster.thtd_tenshi_03_damage = caster:THTD_GetAbilityPowerDamage(keys.ability) + powerDamage * caster:THTD_GetStarDamage()
caster:EmitSound("Hero_Magnataur.ShockWave.Particle")
local info =
{
Ability = keys.ability,
EffectName = "particles/heroes/tenshi/ability_tenshi_03.vpcf",
vSpawnOrigin = caster:GetAbsOrigin(),
fDistance = 1500,
fStartRadius = 380,
fEndRadius = 380,
Source = caster,
bHasFrontalCone = false,
bReplaceExisting = false,
iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY,
iUnitTargetFlags = DOTA_UNIT_TARGET_FLAG_NONE,
iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
fExpireTime = GameRules:GetGameTime() + 10.0,
bDeleteOnHit = false,
vVelocity = caster:GetForwardVector() * 1800,
bProvidesVision = true,
iVisionRadius = 1000,
iVisionTeamNumber = caster:GetTeamNumber()
}
local projectile = ProjectileManager:CreateLinearProjectile(info)
ParticleManager:DestroyLinearProjectileSystem(projectile,false)
end
if caster:IsPower666() then
if caster.thtd_tenshi_power666_cast ~= true then
caster.thtd_tenshi_power666_cast = true
local time = 1.5
local forward = caster:GetForwardVector()
local effectIndex = ParticleManager:CreateParticle("particles/units/heroes/hero_elder_titan/elder_titan_earth_splitter.vpcf", PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())
ParticleManager:SetParticleControl(effectIndex, 1, forward * 900) --方向
ParticleManager:SetParticleControl(effectIndex, 3, Vector(0, time, 0)) --时间
ParticleManager:DestroyParticleSystem(effectIndex,false)
caster:SetContextThink(DoUniqueString("thtd_suwako_03_unit_up"),
function()
caster:EmitSound("Hero_ElderTitan.EarthSplitter.Cast")
local targets = FindUnitsInLine(
caster:GetTeamNumber(),
caster:GetOrigin(),
caster:GetOrigin() + forward * 1000,
nil,
300,
keys.ability:GetAbilityTargetTeam(),
keys.ability:GetAbilityTargetType(),
keys.ability:GetAbilityTargetFlags()
)
local damage = 666 * caster:THTD_GetStarDamage()
for k,v in pairs(targets) do
local DamageTable = {
ability = keys.ability,
victim = v,
attacker = caster,
damage = damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
end
caster.thtd_tenshi_power666_cast = false
return nil
end,
time)
end
end
end
function OnTenshiProjectileHit(keys)
local caster = EntIndexToHScript(keys.caster_entindex)
local target = keys.target
local DamageTable = {
ability = keys.ability,
victim = target,
attacker = caster,
damage = caster.thtd_tenshi_03_damage,
damage_type = keys.ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
end
function OnThinkTenshi03Buff(keys)
local target = keys.target
local targets = THTD_FindFriendlyUnitsInRadius(target,target:GetAbsOrigin(),keys.radius)
for k,v in pairs(targets) do
local modifier = v:FindModifierByName("modifier_tenshi_03_attack_speed_buff")
-- 持续时间比think大一点
if modifier == nil then
keys.ability:ApplyDataDrivenModifier(target, v, "modifier_tenshi_03_attack_speed_buff", {Duration = 0.3})
else
modifier:SetDuration(0.3, false)
end
end
end
function OnCreatedTenshi03Buff(keys)
keys.target:THTD_AddAttackSpeed(keys.attack_speed, "thtd_tenshi_03_bonus")
end
function OnDestroyTenshi03Buff(keys)
keys.target:THTD_AddAttackSpeed("thtd_tenshi_03_bonus")
end