initial commit
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
|
||||
modifier_sled_penguin_passive = class({})
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:IsHidden()
|
||||
return true
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:IsPurgable()
|
||||
return false
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:OnCreated( kv )
|
||||
if IsServer() then
|
||||
self.hPlayerEnt = nil
|
||||
self.bRideComplete = false
|
||||
self.bRideStarted = false
|
||||
end
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:DeclareFunctions()
|
||||
local funcs =
|
||||
{
|
||||
MODIFIER_EVENT_ON_ORDER,
|
||||
}
|
||||
|
||||
return funcs
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:CheckState()
|
||||
local state =
|
||||
{
|
||||
[MODIFIER_STATE_NO_HEALTH_BAR] = true,
|
||||
}
|
||||
return state
|
||||
end
|
||||
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:OnOrder( params )
|
||||
if IsServer() then
|
||||
local hOrderedUnit = params.unit
|
||||
local hTargetUnit = params.target
|
||||
local nOrderType = params.order_type
|
||||
if nOrderType ~= DOTA_UNIT_ORDER_MOVE_TO_TARGET then
|
||||
return
|
||||
end
|
||||
|
||||
if hTargetUnit == nil or hTargetUnit ~= self:GetParent() then
|
||||
return
|
||||
end
|
||||
|
||||
if hOrderedUnit ~= nil and hOrderedUnit:IsRealHero() and hOrderedUnit:GetTeamNumber() == DOTA_TEAM_GOODGUYS and hTargetUnit:GetOwnerEntity() == hOrderedUnit then
|
||||
self.hPlayerEnt = hOrderedUnit
|
||||
self:StartIntervalThink( 0.25 )
|
||||
return
|
||||
end
|
||||
|
||||
self:StartIntervalThink( -1 )
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:OnDestroy()
|
||||
if IsServer() then
|
||||
if self.hPlayerEnt ~= nil and self.hPlayerEnt:IsNull() == false then
|
||||
self.hPlayerEnt:RemoveModifierByName( "modifier_sled_penguin_movement" )
|
||||
end
|
||||
|
||||
UTIL_Remove( self:GetParent() )
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
function modifier_sled_penguin_passive:OnIntervalThink()
|
||||
if IsServer() then
|
||||
if self.hPlayerEnt ~= nil then
|
||||
local flTalkDistance = 250.0
|
||||
if flTalkDistance >= ( self.hPlayerEnt:GetOrigin() - self:GetParent():GetOrigin() ):Length2D() then
|
||||
if GameRules.Aghanim ~= nil and self.bRideStarted == false then
|
||||
self.hPlayerEnt:Interrupt()
|
||||
|
||||
self:StartIntervalThink( -1 )
|
||||
self.bRideStarted = true
|
||||
|
||||
EmitSoundOn( "SledPenguin.PlayerHopOn", self:GetParent() )
|
||||
|
||||
self:GetParent():AddNewModifier( self:GetParent(), self:GetAbility(), "modifier_sled_penguin_movement", {} )
|
||||
self.hPlayerEnt:AddNewModifier( self:GetParent(), self:GetAbility(), "modifier_sled_penguin_movement", {} )
|
||||
|
||||
if self:GetParent().Encounter ~= nil then
|
||||
self:GetParent().Encounter:OnPlayerRidePenguin( self.hPlayerEnt:GetPlayerOwnerID(), self:GetParent() )
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user