游戏版本 | 0.8 |
---|---|
技能 | 点目标 |
影响 | 敌方单位 |
伤害类型 | 魔法 |
无视技能免疫 | 否 |
能否驱散 | 无 |
技能描述 | 莱瑞蕾释放一道狂风,对路径上的所有敌方单位造成击退和眩晕,然后造成致盲。 |
阿哈利姆神杖升级 | 无 |
汪汪神杖升级 | 升级后狂风击将会向周围发出共计8道狂风。 |
冷却时间 | 11.0/9.5/8.0/6.5 |
魔法消耗 | 85/95/105/115 |
技能效果词条 | 伤害:95/165/235/305 眩晕时间:0.5/0.9/1.3/1.7 致盲时间:2.0 |
其他词条 | 所有狂风只能造成一次伤害。 击退距离:80 击退高度:245 击退时间:0.9 |
npc_abilities_custom.txt |
---|
//==================== // 风行者 宝物技能 狂风击 //==================== "windrunner_alt_windstrike" { // General //---------- //"AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "BaseClass" "ability_lua" "AbilityTextureName" "custom/abilities/alt/windrunner/windrunner_alt_windstrike" "ScriptFile" "abilities/custom/alt/windrunner_alt_windstrike" //"MaxLevel" "3" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "IsOnCastBar" "1" // Casting //---------- "AbilityCastRange" "1200" "AbilityCastPoint" "0.6" // started at 0.25 // Time //---------- "AbilityCooldown" "11.0 9.5 8.0 6.5" // Cost //---------- "AbilityManaCost" "85 95 105 115" // Special //---------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "blind_duration" "2.0" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "0.5 0.9 1.3 1.7" } "03" { "var_type" "FIELD_INTEGER" "damage" "95 165 235 305" } "04" { "var_type" "FIELD_INTEGER" "knockback_distance" "80" } "05" { "var_type" "FIELD_INTEGER" "knockback_height" "245" } "06" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.9" } } } |
vscripts/abilities/custom/alt/windrunner_alt_windstrike.lua |
---|
-- Project Name: Siltbreaker Hard Mode -- Author: BroFrank -- SteamAccountID: 144490770 windrunner_alt_windstrike = class({}) -------------------------------------------------------------------------------- function windrunner_alt_windstrike:ProcsMagicStick() return true end -------------------------------------------------------------------------------- function windrunner_alt_windstrike:GetCastAnimation() return ACT_DOTA_CAST_ABILITY_1 end -------------------------------------------------------------------------------- function windrunner_alt_windstrike: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 windrunner_alt_windstrike:OnAbilityPhaseInterrupted() --[[if IsServer() then ParticleManager:DestroyParticle( self.nPreviewFX, false ) end]]-- end -------------------------------------------------------------------------------- function windrunner_alt_windstrike:GetPlaybackRateOverride() return 1 end -------------------------------------------------------------------- function windrunner_alt_windstrike:OnSpellStart() if IsServer() then self.hHitEntities = {} --ParticleManager:DestroyParticle( self.nPreviewFX, false ) --EmitSoundOn( "Hero_Invoker.Tornado", self:GetCaster() ) self.damage = self:GetSpecialValueFor( "damage" ) self.stun_duration = self:GetSpecialValueFor( "stun_duration" ) self.blind_duration = self:GetSpecialValueFor( "blind_duration" ) self.knockback_duration = self:GetSpecialValueFor( "knockback_duration" ) self.knockback_distance = self:GetSpecialValueFor( "knockback_distance" ) self.knockback_height = self:GetSpecialValueFor( "knockback_height" ) local vPos = nil if self:GetCursorTarget() then vPos = self:GetCursorTarget():GetOrigin() else vPos = self:GetCursorPosition() end local vDirection = vPos - self:GetCaster():GetOrigin() vDirection.z = 0.0 vDirection = vDirection:Normalized() local nAttachmentID = self:GetCaster():ScriptLookupAttachment( "attach_attack1" ) local info = { EffectName = "particles/new_custom/windrunner_windstrike/windrunner_windstrike.vpcf", Ability = self, vSpawnOrigin = self:GetCaster():GetAttachmentOrigin( nAttachmentID ), fStartRadius = 170, fEndRadius = 170, bDodgeable = false, bProvidesVision = true, vVelocity = vDirection * 750, fDistance = 1200,--self.burst_distance, Source = self:GetCaster(), iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY, iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, bDeleteOnHit = false, iVisionRadius = 400, iVisionTeamNumber = self:GetCaster():GetTeamNumber(), } if self:GetCaster():HasModifier("modifier_item_plus_scepter") or self:GetCaster():HasModifier("modifier_item_plus_scepter_icon") then local angle = QAngle( 0, 0, 0 ) for i=1,8 do info.vVelocity = ( RotatePosition( Vector( 0, 0, 0 ), angle, Vector( 1, 0, 0 ) ) ) * 750 ProjectileManager:CreateLinearProjectile( info ) self.last_y = angle.y angle.y = self.last_y + ( 360 / 8 ) end else self.nInitialProjHandle = ProjectileManager:CreateLinearProjectile( info ) end end end -------------------------------------------------------------------------------- function windrunner_alt_windstrike:OnProjectileHitHandle( hTarget, vLocation, nProjectileHandle ) if IsServer() then if hTarget ~= nil and hTarget ~= self:GetCaster() then local projectile_radius = 170 local hEnemies = FindUnitsInRadius( self:GetCaster():GetTeamNumber(), hTarget:GetOrigin(), self:GetCaster(), projectile_radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES, 0, false ) for _, hEnemy in pairs( hEnemies ) do if hEnemy ~= nil and hEnemy:IsInvulnerable() == false and hEnemy:IsMagicImmune() == false and not TableContainsValue( self.hHitEntities, hEnemy ) then table.insert( self.hHitEntities, hEnemy ) local kv = { center_x = vLocation.x, center_y = vLocation.y, center_z = vLocation.z, should_stun = true, duration = self.stun_duration, knockback_duration = self.knockback_duration, knockback_distance = self.knockback_distance, knockback_height = self.knockback_height, } hEnemy:AddNewModifier( self:GetCaster(), self, "modifier_knockback", kv ) hEnemy:AddNewModifier( self:GetCaster(), self, "modifier_blind", {duration = self.stun_duration + self.blind_duration} ) local damageInfo = { victim = hEnemy, attacker = self:GetCaster(), damage = self.damage, damage_type = self:GetAbilityDamageType(), ability = self, } ApplyDamage( damageInfo ) end end EmitSoundOn( "Hero_Windrunner.ShackleshotCast", hTarget ) end --[[local projectile = nil for _, proj in pairs( self.Projectiles ) do if proj ~= nil and proj.handle == nProjectileHandle then projectile = proj end end]]-- end return false end -------------------------------------------------------------------------------- |