46 lines
1.9 KiB
Lua
Executable File
46 lines
1.9 KiB
Lua
Executable File
item_life_rune = class({})
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function item_life_rune:GetBehavior()
|
|
return DOTA_ABILITY_BEHAVIOR_IMMEDIATE
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function item_life_rune:OnSpellStart()
|
|
if IsServer() then
|
|
if self:GetCaster() ~= nil and self:GetCaster():IsRealHero() then
|
|
if self:GetCaster().nRespawnsRemaining >= AGHANIM_MAX_LIVES then
|
|
local newItem = CreateItem( "item_life_rune", nil, nil )
|
|
newItem:SetPurchaseTime( 0 )
|
|
local drop = CreateItemOnPositionSync( self:GetCaster():GetAbsOrigin(), newItem )
|
|
local dropTarget = self:GetCaster():GetAbsOrigin() + RandomVector( RandomFloat( 50, 150 ) )
|
|
newItem:LaunchLoot( false, 150, 0.75, dropTarget )
|
|
self:SpendCharge()
|
|
return
|
|
end
|
|
|
|
self:GetCaster().nRespawnsRemaining = math.min( self:GetCaster().nRespawnsRemaining + 1, AGHANIM_MAX_LIVES )
|
|
local hPlayer = self:GetCaster():GetPlayerOwner()
|
|
if hPlayer then
|
|
PlayerResource:SetCustomBuybackCooldown( hPlayer:GetPlayerID(), 0 )
|
|
PlayerResource:SetCustomBuybackCost( hPlayer:GetPlayerID(), 0 )
|
|
end
|
|
|
|
local netTable = {}
|
|
CustomGameEventManager:Send_ServerToPlayer( self:GetCaster():GetPlayerOwner(), "gained_life", netTable )
|
|
CustomNetTables:SetTableValue( "respawns_remaining", string.format( "%d", self:GetCaster():entindex() ), { respawns = self:GetCaster().nRespawnsRemaining } )
|
|
|
|
local gameEvent = {}
|
|
gameEvent["player_id"] = self:GetCaster():GetPlayerOwner():GetPlayerID()
|
|
gameEvent["team_number"] = DOTA_TEAM_GOODGUYS
|
|
gameEvent["locstring_value"] = "#DOTA_Tooltip_Ability_item_life_rune"
|
|
gameEvent["message"] = "#Dungeon_FoundLifeRune"
|
|
FireGameEvent( "dota_combat_event_message", gameEvent )
|
|
end
|
|
self:SpendCharge()
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------- |