Нужна помощь со скиллом-атакой

  • Автор темы Автор темы Slavko
  • Дата начала Дата начала
А почему орбы нельзя поместить в пассивные модификаторы?
Мне кажется что проблема именно в этом
 
У меня есть вот такой скилл на луа, вполне может помочь:
Код:
 	"bh_crush"
 	{
 		"BaseClass"       		"ability_lua"
 		"ScriptFile"					"heroes/bh/crush.lua"
 		"AbilityTextureName"			"bh_crush"
 		"MaxLevel" 						"7"
 		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
 		"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_ENEMY"
 		"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO"
 		"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
 		"AbilityUnitDamageType"			"DAMAGE_TYPE_PHYSICAL"
 		"AbilityCooldown"				"6 5 4 3 2 1 0"
 		"AbilitySpecial"
 		{
 			"01"
 			{
 				"var_type"				"FIELD_INTEGER"
 				"damage"				"10 20 30 40 50 60 70"
 			}
 			"02"
 			{
 				"var_type"				"FIELD_FLOAT"
 				"bash"					"0.1 0.15 0.2 0.25 0.3 0.35 0.4"
 			}
 		}
 	}
Код:
if bh_crush == nil then
	bh_crush = class({})
end
LinkLuaModifier( "modifier_bh_crush","heroes/bh/crush",LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier( "modifier_crush_bush","heroes/bh/crush",LUA_MODIFIER_MOTION_NONE)
function bh_crush:GetIntrinsicModifierName()
	return "modifier_bh_crush"
end
function bh_crush:IsRefreshable()
	return false
end

if modifier_bh_crush == nil then
	modifier_bh_crush = class({})
end
function modifier_bh_crush:IsHidden()
	return true
end
function modifier_bh_crush:OnCreated( kv )
	self.bash = self:GetAbility():GetSpecialValueFor( "bash" )
	self.damage = self:GetAbility():GetSpecialValueFor( "damage" )
	self.level = self:GetAbility():GetLevel()
	self.cooldown = self:GetAbility():GetCooldown(self.level)
end
function modifier_bh_crush:OnRefresh( kv )
	self.bash = self:GetAbility():GetSpecialValueFor( "bash" )
	self.damage = self:GetAbility():GetSpecialValueFor( "damage" )
	self.level = self:GetAbility():GetLevel()
	self.cooldown = self:GetAbility():GetCooldown(self.level)
end
function modifier_bh_crush:DeclareFunctions()
	local funcs = {
		MODIFIER_EVENT_ON_ATTACK_LANDED,
	}

	return funcs
end
function modifier_bh_crush:OnAttackLanded( params )
	if IsServer() then
		if params.attacker == self:GetParent() and ( not self:GetParent():IsIllusion() ) then
			if self:GetParent():PassivesDisabled() then
				return 0
			end
			local target = params.target
			local damageTable = {
				victim = params.target,
				attacker = params.attacker,
				damage = self.damage,
				damage_type = DAMAGE_TYPE_PHYSICAL,
			}
			if target:IsMagicImmune() then
				return 0
			else
				if self:GetAbility():IsCooldownReady() then
					if target ~= nil and target:GetTeamNumber() ~= self:GetParent():GetTeamNumber() and target:HasModifier("modifier_markenemy") then
						ApplyDamage(damageTable)
						target:AddNewModifier(params.attacker,self,"modifier_crush_bush",{duration = self.bash})
						self:GetAbility():StartCooldown(self.cooldown)
					end
				end
			end
		end
	end
	return 0
end

if modifier_crush_bush == nil then
	modifier_crush_bush = class({})
end
function modifier_crush_bush:IsDebuff()
	return true
end
function modifier_crush_bush:IsStunDebuff()
	return true
end
function modifier_crush_bush:GetEffectName()
	return "particles/generic_gameplay/generic_stunned.vpcf"
end
function modifier_crush_bush:GetEffectAttachType()
	return PATTACH_OVERHEAD_FOLLOW
end
function modifier_crush_bush:DeclareFunctions()
	local funcs = {
		MODIFIER_PROPERTY_OVERRIDE_ANIMATION,
	}
 
	return funcs
end
function modifier_crush_bush:GetOverrideAnimation( params )
	return ACT_DOTA_DISABLED
end
function modifier_crush_bush:CheckState()
	local state = {
	[MODIFIER_STATE_STUNNED] = true,
	}
 
	return state
end
 
Последнее редактирование модератором:
I_GRIN_I, спасибо конечно, но я в ability lua не особо разбираюсь, пока не приходилось сталкиваться )
 
[quote author=Slavko link=topic=994.msg5335#msg5335 date=1468870332]
I_GRIN_I, спасибо конечно, но я в ability lua не особо разбираюсь, пока не приходилось сталкиваться )
[/quote]
И очень зря
 
Реклама: