82 lines
2.6 KiB
Lua
Executable File
82 lines
2.6 KiB
Lua
Executable File
|
|
modifier_breakable_container = class({})
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:IsHidden()
|
|
return true
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:CanParentBeAutoAttacked()
|
|
return false
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:OnCreated( kv )
|
|
if IsServer() then
|
|
if self:GetParent():GetUnitName() == "npc_dota_crate" then
|
|
self:GetParent():SetModelScale( RandomFloat( 0.6, 0.9 ) )
|
|
elseif self:GetParent():GetUnitName() == "npc_dota_vase" then
|
|
self:GetParent():SetModelScale( RandomFloat( 0.4, 0.6 ) )
|
|
end
|
|
--self:GetParent():AddNewModifier( nil, nil, "modifier_aghsfort_disable_aggro", { duration = -1 } )
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:CheckState()
|
|
local state = {}
|
|
if IsServer() then
|
|
state[MODIFIER_STATE_ROOTED] = true
|
|
state[MODIFIER_STATE_NO_HEALTH_BAR] = true
|
|
state[MODIFIER_STATE_BLIND] = true
|
|
state[MODIFIER_STATE_NOT_ON_MINIMAP] = true
|
|
state[MODIFIER_STATE_LOW_ATTACK_PRIORITY] = true
|
|
end
|
|
|
|
return state
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:DeclareFunctions()
|
|
local funcs = {
|
|
MODIFIER_EVENT_ON_DEATH,
|
|
MODIFIER_PROPERTY_PROVIDES_FOW_POSITION,
|
|
}
|
|
return funcs
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:GetModifierProvidesFOWVision( params )
|
|
return 1
|
|
end
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
function modifier_breakable_container:OnDeath( params )
|
|
if IsServer() then
|
|
if ( params.unit == self:GetParent() ) then
|
|
--print( string.format( "Breakable container \"%s\" destroyed by \"%s\"", self:GetParent():GetUnitName() or "Unknown Attacker", self.hAttacker:GetUnitName() ) )
|
|
if self:GetParent():GetUnitName() == "npc_dota_crate" then
|
|
if RandomInt( 0, 1 ) >= 1 then
|
|
EmitSoundOn( "Dungeon.SmashCrateShort", self:GetParent() )
|
|
else
|
|
EmitSoundOn( "Dungeon.SmashCrateLong", self:GetParent() )
|
|
end
|
|
elseif self:GetParent():GetUnitName() == "npc_dota_vase" then
|
|
EmitSoundOn( "Dungeon.VaseBreak", self:GetParent() )
|
|
end
|
|
GameRules.Aghanim:ChooseBreakableSurprise( params.attacker, self:GetParent() )
|
|
end
|
|
end
|
|
end
|
|
|
|
-----------------------------------------------------------------------
|
|
|