summaryrefslogtreecommitdiff
path: root/gamemode/init.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-04-16 12:18:37 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-04-16 12:18:37 -0400
commitb24ba036889a644bb9505f61e3feeda370299c98 (patch)
tree69fd172a06e334cc7d3e9c8a117276c201bdda4d /gamemode/init.lua
parent7f35e4b7a2a7922dae8366f67ef8530f4a809c9f (diff)
downloadgmstranded-b24ba036889a644bb9505f61e3feeda370299c98.tar.gz
gmstranded-b24ba036889a644bb9505f61e3feeda370299c98.tar.bz2
gmstranded-b24ba036889a644bb9505f61e3feeda370299c98.zip
Moved entity function from init.lua to it's own file
Diffstat (limited to 'gamemode/init.lua')
-rw-r--r--gamemode/init.lua291
1 files changed, 1 insertions, 290 deletions
diff --git a/gamemode/init.lua b/gamemode/init.lua
index de31a00..339c2ab 100644
--- a/gamemode/init.lua
+++ b/gamemode/init.lua
@@ -206,296 +206,7 @@ end
Entity Functions
---------------------------------------------------------------------------------------------------- */
-function EntityMeta:SetResourceDropInfo( strType, int )
- timer.Simple( 0.5, function() self:SetResourceDropInfoInstant( strType, int ) end )
-end
-
-function EntityMeta:SetResourceDropInfoInstant( strType, int )
- for k, v in pairs( player.GetAll() ) do
- local strType = strType or "Error"
- umsg.Start( "gms_SetResourceDropInfo", v )
- umsg.String( self:EntIndex() )
- umsg.String( string.gsub( strType, "_", " " ) )
- umsg.Short( self.Amount )
- umsg.End()
- end
-end
-
-function EntityMeta:SetResPackInfo( strType, int )
- for k, v in pairs( player.GetAll() ) do
- local strType = strType or "Error"
- umsg.Start( "gms_SetResPackInfo", v )
- umsg.String( self:EntIndex() )
- umsg.String( string.gsub( strType, "_", " " ) )
- umsg.Short( int )
- umsg.End()
- end
-end
-
-
-function EntityMeta:SetFoodInfo( strType )
- timer.Simple( 0.5, function() self:SetFoodInfoInstant( strType ) end )
-end
-
-function EntityMeta:SetFoodInfoInstant( strType )
- for k, v in pairs( player.GetAll() ) do
- local strType = strType or "Error"
- umsg.Start( "gms_SetFoodDropInfo", v )
- umsg.String( self:EntIndex() )
- umsg.String( string.gsub( strType, "_", " " ) )
- umsg.End()
- end
-end
-
-function EntityMeta:DropToGround()
- local trace = {}
- trace.start = self:GetPos()
- trace.endpos = trace.start + Vector( 0, 0, -100000 )
- trace.mask = MASK_SOLID_BRUSHONLY
- trace.filter = self
-
- local tr = util.TraceLine( trace )
-
- self:SetPos( tr.HitPos )
-end
-
-function GM.ReproduceTrees()
- local GM = GAMEMODE
- if ( GetConVarNumber( "gms_ReproduceTrees" ) == 1 ) then
- local trees = {}
- for k, v in pairs( ents.GetAll() ) do
- if ( v:IsTreeModel() ) then
- table.insert( trees, v )
- end
- end
-
- if ( #trees < GetConVarNumber( "gms_MaxReproducedTrees" ) ) then
- for k, ent in pairs( trees ) do
- local num = math.random( 1, 3 )
-
- if ( num == 1 ) then
- local nearby = {}
- for k, v in pairs( ents.FindInSphere( ent:GetPos(), 50 ) ) do
- if ( v:GetClass() == "gms_seed" or v:IsProp() ) then
- table.insert( nearby, v )
- end
- end
-
- if ( #nearby < 3 ) then
- local pos = ent:GetPos() + Vector( math.random( -500, 500 ), math.random( -500, 500 ), 0 )
- local retries = 50
-
- while ( ( pos:Distance( ent:GetPos() ) < 200 or GMS.ClassIsNearby( pos, "prop_physics", 100 ) ) and retries > 0 ) do
- pos = ent:GetPos() + Vector( math.random( -300, 300 ),math.random( -300, 300 ), 0 )
- retries = retries - 1
- end
-
- local pos = pos + Vector( 0, 0, 500 )
-
- local seed = ents.Create( "gms_seed" )
- seed:SetPos( pos )
- seed:DropToGround()
- seed:Setup( "tree", 180 )
- seed:SetNetworkedString( "Owner", "World" )
- seed:Spawn()
- end
- end
- end
- end
- if ( #trees == 0 ) then
- local info = {}
- for i = 1, 20 do
- info.pos = Vector( math.random( -10000, 10000 ), math.random( -10000, 10000 ), 1000 )
- info.Retries = 50
-
- --Find pos in world
- while ( util.IsInWorld( info.pos ) == false and info.Retries > 0 ) do
- info.pos = Vector( math.random( -10000, 10000 ),math.random( -10000, 10000 ), 1000 )
- info.Retries = info.Retries - 1
- end
-
- --Find ground
- local trace = {}
- trace.start = info.pos
- trace.endpos = trace.start + Vector( 0, 0, -100000 )
- trace.mask = MASK_SOLID_BRUSHONLY
-
- local groundtrace = util.TraceLine( trace )
-
- --Assure space
- local nearby = ents.FindInSphere( groundtrace.HitPos, 200 )
- info.HasSpace = true
-
- for k, v in pairs( nearby ) do
- if ( v:IsProp() ) then
- info.HasSpace = false
- end
- end
-
- --Find sky
- local trace = {}
- trace.start = groundtrace.HitPos
- trace.endpos = trace.start + Vector( 0, 0, 100000 )
-
- local skytrace = util.TraceLine( trace )
-
- --Find water?
- local trace = {}
- trace.start = groundtrace.HitPos
- trace.endpos = trace.start + Vector( 0, 0, 1 )
- trace.mask = MASK_WATER
-
- local watertrace = util.TraceLine( trace )
-
- --All a go, make entity
- if ( info.HasSpace and skytrace.HitSky and !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then
- local seed = ents.Create( "gms_seed" )
- seed:SetPos( groundtrace.HitPos )
- seed:DropToGround()
- seed:Setup( "tree", 180 + math.random( -20, 20 ) )
- seed:SetNetworkedString( "Owner", "World" )
- seed:Spawn()
- end
- end
- end
- end
-
- timer.Simple( math.random( 1, 3 ) * 60, function() GM.ReproduceTrees() end )
-end
-timer.Simple( 60, function() GAMEMODE.ReproduceTrees() end )
-
-GMS.LootableNPCs = { "npc_antlion", "npc_antlionguard", "npc_crow", "npc_seagull", "npc_pigeon", "npc_zombie" }
-
-function EntityMeta:IsLootableNPC()
- return table.HasValue( GMS.LootableNPCs, self:GetClass() )
-end
-
-function EntityMeta:MakeCampfire()
- if ( GetConVarNumber( "gms_campfire" ) <= 0 ) then return end
-
- local min, max = self:OBBMins(), self:OBBMaxs()
- local vol = math.abs( max.x - min.x ) * math.abs( max.y - min.y ) * math.abs( max.z - min.z )
- local mul = math.min( math.sqrt( vol ) / 200, 1 )
-
- if ( !self.CampFire ) then self:SetHealth( 1337 ) end
- self.CampFire = true
-
- timer.Create( "gms_removecampfire_" .. self:EntIndex(), 480 * mul, 1, function() if ( IsValid( self ) ) then self:Fadeout() end end )
-
- if ( GetConVarNumber( "gms_SpreadFire" ) >= 1 ) then
- self:Ignite( 360, ( self:OBBMins() - self:OBBMaxs() ):Length() + 10 )
- else
- self:Ignite( 360, 0.001 )
- end
-end
-
-/* ----------------------------------------------------------------------------------------------------
- Entity Fading
----------------------------------------------------------------------------------------------------- */
-
-GMS.FadingOutProps = {}
-GMS.FadingInProps = {}
-
-function EntityMeta:Fadeout( speed )
- if ( !IsValid( self ) ) then return end
- local speed = speed or 1
-
- for k, v in pairs( player.GetAll() ) do
- umsg.Start( "gms_CreateFadingProp", v )
- umsg.String( self:GetModel() )
- umsg.Vector( self:GetPos() )
- local ang = self:GetAngles()
- umsg.Vector( Vector( ang.p, ang.y, ang.r ) )
- local col = self:GetColor()
- umsg.Vector( Vector( col.r, col.g, col.b ) )
- umsg.Short( math.Round( speed ) )
- umsg.End()
- end
-
- self:Remove()
-end
-
---Fadein is serverside
-function EntityMeta:Fadein( speed )
- self.AlphaFade = 0
- self:SetRenderMode( RENDERMODE_TRANSALPHA )
- self:SetColor( Color( 255, 255, 255, 0 ) )
- self.FadeInSpeed = speed or 4
- table.insert( GMS.FadingInProps, self )
-end
-
-hook.Add( "Think", "gms_FadePropsThink", function()
- for k, ent in pairs( GMS.FadingInProps ) do
- if ( !ent or ent == NULL ) then
- table.remove( GMS.FadingInProps, k )
- elseif ( !IsValid( ent ) ) then
- table.remove( GMS.FadingInProps, k )
- elseif ( ent.AlphaFade >= 255 ) then
- table.remove( GMS.FadingInProps, k )
- else
- ent.AlphaFade = ent.AlphaFade + ent.FadeInSpeed
- ent:SetColor( Color( 255, 255, 255, ent.AlphaFade ) )
- end
- end
-end )
-
-/* ----------------------------------------------------------------------------------------------------
- Entity rising / lowering ( Used by gms_seed )
----------------------------------------------------------------------------------------------------- */
-
-GM.RisingProps = {}
-GM.SinkingProps = {}
-
-function EntityMeta:RiseFromGround( speed, altmax )
- local speed = speed or 1
- local max;
-
- if ( !altmax ) then
- min, max = self:WorldSpaceAABB()
- max = max.z
- else
- max = altmax
- end
-
- local tbl = {}
- tbl.Origin = self:GetPos().z
- tbl.Speed = speed
- tbl.Entity = self
-
- self:SetPos( self:GetPos() + Vector( 0, 0, -max + 10 ) )
- table.insert( GAMEMODE.RisingProps, tbl )
-end
-
-function EntityMeta:SinkIntoGround( speed )
- local speed = speed or 1
-
- local tbl = {}
- tbl.Origin = self:GetPos().z
- tbl.Speed = speed
- tbl.Entity = self
- tbl.Height = max
-
- table.insert( GAMEMODE.SinkingProps, tbl )
-end
-
-hook.Add( "Think", "gms_RiseAndSinkPropsHook", function()
- for k, tbl in pairs( GAMEMODE.RisingProps ) do
- if ( !IsValid( tbl.Entity ) || tbl.Entity:GetPos().z >= tbl.Origin ) then
- table.remove( GAMEMODE.RisingProps, k )
- else
- tbl.Entity:SetPos( tbl.Entity:GetPos() + Vector( 0, 0, 1 * tbl.Speed ) )
- end
- end
-
- for k, tbl in pairs( GAMEMODE.SinkingProps ) do
- if ( !IsValid( tbl.Entity ) || tbl.Entity:GetPos().z <= tbl.Origin - tbl.Height ) then
- table.remove( GAMEMODE.SinkingProps, k )
- tbl.Entity:Remove()
- else
- tbl.Entity:SetPos( tbl.Entity:GetPos() + Vector( 0, 0, -1 * tbl.Speed ) )
- end
- end
-end )
+//Moved to entity_functions.lua
/* ----------------------------------------------------------------------------------------------------
Admin commands