Files
2021-10-24 15:36:18 -04:00

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
--------------------------------------------------------------------------------