游戏版本 | 0.8 |
---|---|
技能 | 单位目标 |
影响 | 敌方单位 |
伤害类型 | 物理 |
无视技能免疫 | 否 |
能否驱散 | 无 |
技能描述 | 潮汐猎人重拾在海里游泳的技能,对敌方目标单位施加额外的锚击攻击力降低效果并以仰泳的姿势向其冲去,对主目标快速攻击并造成眩晕,同时对主目标425周围的其他目标造成减额伤害。 |
阿哈利姆神杖升级 | 无 |
汪汪神杖升级 | 无 |
冷却时间 | 20.0/15.0/10.0/5.0 |
魔法消耗 | 75/50/25/0 |
技能效果词条 | 冲刺额外伤害:200/350/500/600 主目标眩晕时间:1.4 次目标伤害:75% 主目标攻击力降低:48%/54%/60%/66% 攻击力降低持续时间:6.0 |
vscripts/abilities/custom/alt/tidehunter_alt_backstroke.lua |
---|
-- Project Name: Siltbreaker Hard Mode -- Author: BroFrank -- SteamAccountID: 144490770 tidehunter_alt_backstroke = class({}) LinkLuaModifier( "tidehunter_alt_backstroke_modifier", "abilities/custom/alt/tidehunter_alt_backstroke_modifier", LUA_MODIFIER_MOTION_NONE ) -------------------------------------------------------------------------------- function tidehunter_alt_backstroke:ProcsMagicStick() return true end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke:OnAbilityPhaseStart() --[[if IsServer() then self.nPreviewFX = ParticleManager:CreateParticle( "particles/darkmoon_creep_warning.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetCaster() ) ParticleManager:SetParticleControlEnt( self.nPreviewFX, 0, self:GetCaster(), PATTACH_ABSORIGIN_FOLLOW, nil, self:GetCaster():GetOrigin(), true ) ParticleManager:SetParticleControl( self.nPreviewFX, 1, Vector( 150, 150, 150 ) ) ParticleManager:SetParticleControl( self.nPreviewFX, 15, Vector( 176, 224, 230 ) ) end]]-- return true end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke:OnAbilityPhaseInterrupted() self:GetCaster():RemoveModifierByName("tidehunter_alt_backstroke_modifier") self:GetCaster():RemoveModifierByName("modifier_phased") end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke:GetPlaybackRateOverride() return 1 end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke:OnSpellStart() if IsServer() then self.damage_reduction = self:GetSpecialValueFor( "damage_reduction" ) self.reduction_duration = self:GetSpecialValueFor( "reduction_duration" ) local vPos = nil local Target = self:GetCursorTarget() if Target and Target ~= self:GetCaster() then ParticleManager:CreateParticle( "particles/new_custom/tidehunter_alt_backstroke/tidehunter_alt_backstroke_target_effect.vpcf", PATTACH_ABSORIGIN, Target ) self:GetCaster():MoveToTargetToAttack(Target) self:GetCaster():AddNewModifier(self:GetCaster(),self,"tidehunter_alt_backstroke_modifier",{duration = 2.0}) self:GetCaster():AddNewModifier(self:GetCaster(),self,"modifier_phased",{duration = 2.0}) EmitSoundOn( "Hero_Ursa.Earthshock", hEnemy ); end end end |
vscripts/abilities/custom/alt/tidehunter_alt_backstroke_modifier.lua |
---|
-- Project Name: Siltbreaker Hard Mode -- Author: BroFrank -- SteamAccountID: 144490770 --Max Level Abilitiy MODIFIER --Version 1 tidehunter_alt_backstroke_modifier = class({}) ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:IsHidden() return false end ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:IsPurgable() return false end ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:IsDebuff() return false end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetPriority() return MODIFIER_PRIORITY_ULTRA end ------------------------------------------------------------------------------ function tidehunter_alt_backstroke_modifier:GetEffectName() if self:GetCaster() == self:GetParent() then return "particles/units/heroes/hero_ursa/ursa_earthshock_energy.vpcf" end end ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:OnCreated( kv ) self.stun_duration = self:GetAbility():GetSpecialValueFor( "stun_duration" ) self.bonus_damage = self:GetAbility():GetSpecialValueFor( "bonus_damage" ) self.radius_damage_reduction = self:GetAbility():GetSpecialValueFor( "radius_damage_reduction" ) self.radius = self:GetAbility():GetSpecialValueFor( "radius" ) self.reduction_duration = self:GetAbility():GetSpecialValueFor( "reduction_duration" ) self:StartIntervalThink( 1.5 ) end ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:DeclareFunctions() local funcs = { MODIFIER_PROPERTY_OVERRIDE_ANIMATION, MODIFIER_EVENT_ON_ATTACKED, MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE, MODIFIER_PROPERTY_MOVESPEED_MAX, MODIFIER_PROPERTY_ATTACK_POINT_CONSTANT, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT, MODIFIER_EVENT_ON_ATTACK_LANDED, } return funcs end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetOverrideAnimation( params ) if self:GetCaster() == self:GetParent() then return ACT_DOTA_TAUNT end end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetModifierPreAttack_BonusDamage() return self.bonus_damage end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetModifierMoveSpeed_Absolute() return 1000 end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetModifierMoveSpeed_Max() return 1000 end -------------------------------------------------------------------------------- --function tidehunter_alt_backstroke_modifier:GetModifierBaseAttackTimeConstant() -- return 0.01 --end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:GetModifierAttackSpeedBonus_Constant() return 1000 end -------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:OnAttackLanded(params) local Attacker = params.attacker local Target = params.target if Target ~= nil and Target ~= self:GetCaster() and Attacker == self:GetCaster() then local OriginalDamage = params.original_damage Target:AddNewModifier(Attacker,self:GetAbility(),"modifier_stunned",{duration=self.stun_duration}) Target:AddNewModifier(Attacker,self:GetAbility(),"modifier_tidehunter_anchor_smash",{duration=self.reduction_duration, damage_reduction=self.damage_reduction}) local enemies = FindUnitsInRadius( Attacker:GetTeamNumber(), Target:GetOrigin(), Attacker, self.radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES, 0, false ) for _,enemy in pairs( enemies ) do if enemy ~= nil and enemy:IsInvulnerable() == false then if enemy ~= Target then local damageInfo = { victim = enemy, attacker = Attacker, damage = OriginalDamage * self.radius_damage_reduction / 100, damage_type = DAMAGE_TYPE_PHYSICAL, ability = self:GetAbility(), } ApplyDamage( damageInfo ) end end end self:GetCaster():RemoveModifierByName("tidehunter_alt_backstroke_modifier") self:GetCaster():AddNewModifier(self:GetCaster(),self,"modifier_phased",{duration = 0.5}) end end ----------------------------------------------------------------------------------------- function tidehunter_alt_backstroke_modifier:OnIntervalThink() self:GetCaster():RemoveModifierByName("tidehunter_alt_backstroke_modifier") self:GetCaster():RemoveModifierByName("modifier_phased") self:StartIntervalThink(-1) end |