if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
function Precache( context )
--[[
Precache things we know we'll use. Possible file types include (but not limited to):
PrecacheResource( "model", "*.vmdl", context )
PrecacheResource( "soundfile", "*.vsndevts", context )
PrecacheResource( "particle", "*.vpcf", context )
PrecacheResource( "particle_folder", "particles/folder", context )
]]
end
-- Create the game mode when we activate
function Activate()
GameRules.AddonTemplate = CAddonTemplateGameMode()
GameRules.AddonTemplate:InitGameMode()
GameRules.DropTable = LoadKeyValues("scripts/kv/item_drops.kv")
end
-- Begins processing script for the custom game mode. This "template_example" contains a main OnThink function.
function CAddonTemplateGameMode:InitGameMode()
print( "The story of one knight loaded." )
end
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 3 )
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 0 )
function GameMode:OnEntityKilled( keys )
local killedUnit = EntIndexToHScript( keys.entindex_killed )
if killedUnit:IsCreature() then
RollDrops(killedUnit)
end
end
function Activate ()
ListenToGameEvent('entity_killed', Dynamic_Wrap(GameMode, 'OnEntityKilled'), self)
end
function RollDrops(unit)
local DropInfo = GameRules.DropTable[unit:GetUnitName()]
if DropInfo then
for item_name,chance in pairs(DropInfo) do
if RollPercentage(chance) then
-- Create the item
local item = CreateItem(item_name, nil, nil)
local pos = unit:GetAbsOrigin()
local drop = CreateItemOnPositionSync( pos, item )
local pos_launch = pos+RandomVector(RandomFloat(150,200))
item:LaunchLoot(false, 200, 0.75, pos_launch)
end
end
end
end
function CAddonTemplateGameMode:InitGameMode()
print( "Template addon is loaded." )
GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
end
-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
--print( "Template addon script is running." )
elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
return nil
end
return 1
end