Self replicating entity doesn't replicate

Hello! I would please like some help with some code of mine:
I am making a gas that duplicates itself but the problem is it does it only once and I can’t seem to find a reason why.
For now I only have it going on one direction, but later on it will also check if it can move, on all four directions and all of that stuff, but I can’t seem to get it to work.
Here’s the code:



AddCSLuaFile()

DEFINE_BASECLASS( "base_anim" )

ENT.PrintName = "SCP-008 Gas1"
ENT.Author = "ubre"
ENT.Category = "SCP-RP"

ENT.Spawnable = true
ENT.AdminOnly = true

local Speed = 5 //Seconds

function ENT:Initialize()

     self:SetModel("models/hunter/blocks/cube025x025x025.mdl")
     self:SetColor(Color(0,0,0,0))

end

function ENT:Draw()

     return

end

local Emitter

if (CLIENT) then

	Emitter = ParticleEmitter(vector_origin)

end

ENT.Created = false
ENT.Make = CurTime() + Speed

function ENT:Think()

     if(SERVER) then

          if(self.Created == false) then

               if(self.Make <= CurTime()) then

                    self.Created = true

                    local Clone = ents.Create("scp008gas1")
                    Clone:SetPos(self:GetPos() + Vector(100,0,0))

               end

          end

     end

end

if(SERVER) then

     return

end

//CLIENT

ENT.NextFX = 0

local Fx = "particle/smokesprites_0004"

function ENT:Think()

     if(Emitter) then

          local Smoke = Emitter:Add(Fx,  self:GetPos())

          if(self.NextFX <= CurTime()) then

               if (Smoke) then

               	Smoke:SetVelocity(Vector(math.random(-10,10), math.random(-10,10), math.random(20,70)))
               	Smoke:SetLifeTime(0)
               	Smoke:SetDieTime(4)
               	Smoke:SetStartAlpha(150)
               	Smoke:SetEndAlpha(0)
               	Smoke:SetStartSize(80)
               	Smoke:SetEndSize(30)
               	Smoke:SetAngleVelocity(Angle(3,0,0))
               	Smoke:SetColor(255,30,90,255)
               	Smoke:SetCollide(true)

                    self.NextFX = CurTime() + 0.75

               end

          end

     end

end


Now, if you guys also help me out with a question of mine I would be super grateful, I was also wondering why sometimes it looks like when I spawn a new cloud, it uses the same local variables of the ones I already spawned, so for example instead of waiting 5 seconds to spawn a new cloud, it will do it instantly, why does it do that?


local Clone = ents.Create("scp008gas1")
         Clone:SetPos(self:GetPos() + Vector(100,0,0))


I believe you need to call


Clone:Spawn()

to actually create it. As for your question with the variable, I believe setting ENT.Make = CurTime() + speed in ENT:Initialize() should solve that issue.

Oops, I copy and pasted an older version after I went on a CTRL+Z rampage, I did add Clone:Spawn(), as for the other one I’ll try it out!

[editline]12th August 2017[/editline]

YOU’RE THE GOD.

Solved!