All pastes #835220 Raw Edit

Untitled

public text v1 · immutable
#835220 ·published 2007-12-28 19:21 UTC
rendered paste body
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )
util.PrecacheSound( "Airboat_engine_idle" )
util.PrecacheSound( "Airboat_engine_stop" )
util.PrecacheSound( "apc_engine_start" )

include('shared.lua')

local Ground = 1 + 0 + 2 + 8 + 32
local Juice_Increment = 80
local Energy_Increment = 10

function ENT:Initialize()
	self.BaseClass.Initialize(self)
	self.Active = 0
	self.overdrive = 0
	self.damaged = 0
	self.lastused = 0
	LS_RegisterEnt(self.Entity, "Generator")
	if not (WireAddon == nil) then
		self.WireDebugName = self.PrintName
		self.Inputs = Wire_CreateInputs(self.Entity, { "On", "Overdrive" })
		self.Outputs = Wire_CreateOutputs(self.Entity, {"On", "Overdrive" })
	end
end

function ENT:TurnOn()
	self.Entity:EmitSound( "Airboat_engine_idle" )
	self.Active = 1
	if not (WireAddon == nil) then Wire_TriggerOutput(self.Entity, "On", self.Active) end
	if ( self.overdrive == 1 ) then
		self:TurnOnOverdrive()
	else
		self:SetOOO(1)
	end
end

function ENT:TurnOff()
	self.Entity:StopSound( "Airboat_engine_idle" )
	self.Entity:EmitSound( "Airboat_engine_stop" )
	self.Entity:StopSound( "apc_engine_start" )
	self.Active = 0
	self.overdrive = 0
	if not (WireAddon == nil) then Wire_TriggerOutput(self.Entity, "On", self.Active) end
	self:SetOOO(0)
end

function ENT:TurnOnOverdrive()
	if ( self.Active == 1 ) then
		self.Entity:StopSound( "Airboat_engine_idle" )
		self.Entity:EmitSound( "Airboat_engine_idle" )
		self.Entity:EmitSound( "apc_engine_start" )
		self:SetOOO(2)
	end
	self.overdrive = 1
	if not (WireAddon == nil) then Wire_TriggerOutput(self.Entity, "Overdrive", self.overdrive) end
end

function ENT:TurnOffOverdrive()
	if ( self.Active == 1 ) then
		self.Entity:StopSound( "Airboat_engine_idle" )
		self.Entity:EmitSound( "Airboat_engine_idle" )
		self.Entity:StopSound( "apc_engine_start" )
		self:SetOOO(1)
	end
	self.overdrive = 0
	if not (WireAddon == nil) then Wire_TriggerOutput(self.Entity, "Overdrive", self.overdrive) end
end

function ENT:SetActive( value )
	if (value) then
		if (value != 0 and self.Active == 0 ) then
			self:TurnOn()
		elseif (value == 0 and self.Active == 1 ) then
			self:TurnOff()
		end
	else
		if ( self.Active == 0 ) then
			self.lastused = CurTime()
			self:TurnOn()
		else
			if ((( CurTime() - self.lastused) < 2 ) and ( self.overdrive == 0 )) then
				self:TurnOnOverdrive()
			else
				self.overdrive = 0
				self:TurnOff()
			end
		end
	end
end

function ENT:TriggerInput(iname, value)
	if (iname == "On") then
		self:SetActive(value)
	elseif (iname == "Overdrive") then
		if (value ~= 0) then
			self:TurnOnOverdrive()
		else
			self:TurnOffOverdrive()
		end
	end
end

function ENT:Damage()
	if (self.damaged == 0) then
		self.damaged = 1
	end
	if ((self.Active == 1) and (math.random(1, 10) <= 4)) then
		self:TurnOff()
	end
end

function ENT:Repair()
	self.Entity:SetColor(255, 255, 255, 255)
	self.health = self.maxhealth
	self.damaged = 0
end

function ENT:Destruct()
	LS_Destruct( self.Entity, true )
end

function ENT:OnRemove()
	self.BaseClass.OnRemove(self)
	self.Entity:StopSound( "Airboat_engine_idle" )
end

function ENT:Pump_Terrajuice()
	local energy = RD_GetResourceAmount(self, "energy")
	local water = RD_GetResourceAmount(self, "water")
	local rtc = RD_GetResourceAmount(self, "redterracrystal")
	local gtc = RD_GetResourceAmount(self, "greenterracrystal")
	local coolant = RD_GetResourceAmount(self, "coolant")
	
	local einc = Energy_Increment + (self.overdrive*Energy_Increment*3)
	
		local inc = Juice_Increment
		if ( self.overdrive == 1 ) then
			inc = inc * 3
			DamageLS(self, math.random(2, 3))
		end
		RD_ConsumeResource(self, "energy", einc)
		RD_ConsumeResource(self, "coolant", einc/2)
		RD_ConsumeResource(self, "water", 5)
		
		
		RD_SupplyResource(self, "terrajuice", inc)

end

function ENT:Think()
	self.BaseClass.Think(self)
	
	if ( self.Active == 1 ) then self:Pump_Terrajuice() end
	
	self.Entity:NextThink( CurTime() + 1 )
	return true
end