游戏版本 | 0.8 |
---|---|
技能 | 点目标 |
影响 | 敌方单位 |
伤害类型 | 魔法 |
无视技能免疫 | 是 |
能否驱散 | 无 |
技能描述 | 水晶室女在经过0.5秒的施法后,向前放出一个冰球。冰球在撞击第一个目标后或者达到冰球的最大射程,将会破碎并向四周放出12/16/20道冰片。冰片将造成200/300/400的伤害,同时附带3.5秒的减速效果。 |
阿哈利姆神杖升级 | 升级后增加冰片数量至16/20/24。 |
汪汪神杖升级 | 升级后冰片在到达最大射程前不会消失。 |
冷却时间 | 28.0 |
魔法消耗 | 125 |
技能效果词条 | 冰片数量:12/16/20 神杖升级冰片数量:16/20/24 冰片伤害:200/300/400 冰片破碎速度:425/575/725 冰片破碎距离:425/525/625 冰球移动速度:700 冰球最大射程:1000 冰球大小:300 减速持续时间:3.5 减速效果:-500% |
其他词条 | 每个冰片造成一次伤害。 |
npc_abilities_custom.txt |
---|
//========== // 冰封禁制 新技能 凛风冰破 //Copied from ice_boss_shatter_projectile //========== "crystal_maiden_frostbite_2018" { // 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_YES" "FightRecapLevel" "1" "AbilitySound" "Hero_Tusk.IceShards" "BaseClass" "ability_lua" "AbilityTextureName" "custom/abilities/crystal_maiden/crystal_maiden_frostbite_2018" "ScriptFile" "abilities/custom/crystal_maiden_frostbite_2018" "MaxLevel" "3" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "HasScepterUpgrade" "1" "IsOnCastBar" "1" // Casting //---------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.5" // started at 0.25 // Time //---------- "AbilityCooldown" "28.0" // Cost //---------- "AbilityManaCost" "125" // Special //---------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "initial_projectile_speed" "700" } "02" { "var_type" "FIELD_INTEGER" "initial_projectile_radius" "300" } "03" { "var_type" "FIELD_INTEGER" "burst_distance" "1000" } "04" { "var_type" "FIELD_INTEGER" "shatter_damage" "200 300 400" } "05" { "var_type" "FIELD_INTEGER" "shatter_num_projectiles" "12 16 20" } "06" { "var_type" "FIELD_INTEGER" "shatter_speed" "425 575 725" } "07" { "var_type" "FIELD_INTEGER" "shatter_distance" "425 525 625" } "08" { "var_type" "FIELD_FLOAT" "slow_duration" "3.5" } "09" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "-500" } "10" { "var_type" "FIELD_INTEGER" "scepter_shatter_num_projectiles" "16 20 24" } } } |
vscripts/abilities/custom/crystal_maiden_frostbite_2018.lua |
---|
-- Project Name: Siltbreaker Hard Mode -- Author: BroFrank -- SteamAccountID: 144490770 crystal_maiden_frostbite_2018 = class({}) -------------------------------------------------------------------------------- function crystal_maiden_frostbite_2018:ProcsMagicStick() return true end -------------------------------------------------------------------------------- function crystal_maiden_frostbite_2018:GetCastAnimation() return ACT_DOTA_CAST_ABILITY_1 end -------------------------------------------------------------------------------- function crystal_maiden_frostbite_2018: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 crystal_maiden_frostbite_2018:OnAbilityPhaseInterrupted() --[[if IsServer() then ParticleManager:DestroyParticle( self.nPreviewFX, false ) end]]-- end -------------------------------------------------------------------------------- function crystal_maiden_frostbite_2018:GetPlaybackRateOverride() return 1 end -------------------------------------------------------------------- function crystal_maiden_frostbite_2018:OnSpellStart() if IsServer() then --ParticleManager:DestroyParticle( self.nPreviewFX, false ) EmitSoundOn( "Hero_Tusk.IceShards", self:GetCaster() ) self.initial_projectile_speed = self:GetSpecialValueFor( "initial_projectile_speed" ) self.initial_projectile_radius = self:GetSpecialValueFor( "initial_projectile_radius" ) self.burst_distance = self:GetSpecialValueFor( "burst_distance" ) self.shatter_damage = self:GetSpecialValueFor( "shatter_damage" ) self.shatter_num_projectiles = self:GetSpecialValueFor( "shatter_num_projectiles" ) if self:GetCaster():HasScepter() then self.shatter_num_projectiles = self:GetSpecialValueFor( "scepter_shatter_num_projectiles" ) end self.shatter_speed = self:GetSpecialValueFor( "shatter_speed" ) self.shatter_distance = self:GetSpecialValueFor( "shatter_distance" ) self.slow_duration = self:GetSpecialValueFor( "slow_duration" ) 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/units/heroes/hero_puck/puck_illusory_orb.vpcf", Ability = self, vSpawnOrigin = self:GetCaster():GetAttachmentOrigin( nAttachmentID ), fStartRadius = self.initial_projectile_radius, fEndRadius = self.initial_projectile_radius, bDodgeable = false, vVelocity = vDirection * self.initial_projectile_speed, fDistance = self.burst_distance, Source = self:GetCaster(), iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY, iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, bDeleteOnHit = true, } if self:GetCaster():HasModifier("modifier_item_plus_scepter") or self:GetCaster():HasModifier("modifier_item_plus_scepter_icon") then info.bDeleteOnHit = true end self.nInitialProjHandle = ProjectileManager:CreateLinearProjectile( info ) end end -------------------------------------------------------------------------------- function crystal_maiden_frostbite_2018:OnProjectileHitHandle( hTarget, vLocation, nProjectileHandle ) if IsServer() then if nProjectileHandle == self.nInitialProjHandle then local angle = QAngle( 0, 0, 0 ) for i=1,self.shatter_num_projectiles do local info = { EffectName = "particles/units/heroes/hero_tusk/tusk_ice_shards_projectile.vpcf", Ability = self, vSpawnOrigin = vLocation, fDistance = self.shatter_distance, fStartRadius = 100, fEndRadius = 100, bDodgeable = false, Source = self:GetCaster(), iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY, iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, bDeleteOnHit = true, } if self:GetCaster():HasModifier("modifier_item_plus_scepter") or self:GetCaster():HasModifier("modifier_item_plus_scepter_icon") then info.bDeleteOnHit = false end info.vVelocity = ( RotatePosition( Vector( 0, 0, 0 ), angle, Vector( 1, 0, 0 ) ) ) * self.shatter_speed ProjectileManager:CreateLinearProjectile( info ) self.last_y = angle.y angle.y = self.last_y + ( 360 / self.shatter_num_projectiles ) end EmitSoundOnLocationWithCaster( vLocation, "Hero_Tusk.IceShards", self:GetCaster() ) else if hTarget ~= nil and hTarget:IsMagicImmune() == false and hTarget:IsInvulnerable() == false then local damageInfo = { victim = hTarget, attacker = self:GetCaster(), damage = self:GetSpecialValueFor( "shatter_damage" ), damage_type = DAMAGE_TYPE_MAGICAL, ability = self, } ApplyDamage( damageInfo ) hTarget:AddNewModifier( self:GetCaster(), self, "modifier_winter_wyvern_splinter_blast_slow", { duration = self.slow_duration }) EmitSoundOn( "Hero_Tusk.IceShards", hTarget ) end return not ( self:GetCaster():HasModifier("modifier_item_plus_scepter") or self:GetCaster():HasModifier("modifier_item_plus_scepter_icon") ) end return true end end -------------------------------------------------------------------------------- |