--[[ | This file was obtained through the combined efforts | of Madbluntz & Plymouth Antiquarian Society. | | Credits: lifestorm, Gregory Wayne Rossel JR., | Maloy, DrPepper10 @ RIP, Atle! | | Visit for more: https://plymouth.thetwilightzone.ru/ --]] /*-------------------------------------------------- *** Copyright (c) 2012-2023 by DrVrej, All rights reserved. *** No parts of this code or any of its contents may be reproduced, copied, modified or adapted, without the prior written consent of the author, unless otherwise indicated for stand-alone materials. --------------------------------------------------*/ AddCSLuaFile() if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end ENT.Base = "base_gmodentity" ENT.Type = "anim" ENT.PrintName = "Fireplace" ENT.Author = "DrVrej" ENT.Contact = "http://steamcommunity.com/groups/vrejgaming" ENT.Purpose = "Gives a warm feeling, especially in snowy maps." ENT.Instructions = "Don't change anything." ENT.Category = "VJ Base" ENT.Spawnable = true ENT.AdminOnly = false --------------------------------------------------------------------------------------------------------------------------------------------- if CLIENT then ENT.NextActivationCheckT = 0 ENT.NextFireLightT = 0 ENT.DoneFireParticles = false function ENT:Draw() self:DrawModel() end function ENT:Think() if CurTime() > self.NextActivationCheckT then if self:GetNW2Bool("VJ_FirePlace_Activated") == true then if self.DoneFireParticles == false then self.DoneFireParticles = true ParticleEffectAttach("env_fire_tiny_smoke",PATTACH_ABSORIGIN_FOLLOW,self,0) ParticleEffectAttach("env_embers_large",PATTACH_ABSORIGIN_FOLLOW,self,0) end if CurTime() > self.NextFireLightT then local FireLight1 = DynamicLight(self:EntIndex()) if (FireLight1) then FireLight1.Pos = self:GetPos() +self:GetUp() * 15 FireLight1.R = 255 FireLight1.G = 100 FireLight1.B = 0 FireLight1.Brightness = 2 FireLight1.Size = 400 FireLight1.Decay = 400 FireLight1.DieTime = CurTime() + 1 end self.NextFireLightT = CurTime() + 0.2 end else self.DoneFireParticles = false end self.NextActivationCheckT = CurTime() + 0.1 end end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ if !SERVER then return end ENT.FirePlaceOn = false --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:Initialize() self:SetNW2Bool("VJ_FirePlace_Activated", false) self:SetModel("models/vj_props/fireplace.mdl") self:PhysicsInit(SOLID_VPHYSICS) self:SetMoveType(MOVETYPE_NONE) self:SetSolid(SOLID_VPHYSICS) self:SetUseType(SIMPLE_USE) self:SetCollisionBounds(Vector(25,25,25),Vector(-25,-25,1)) end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:Think() if self.FirePlaceOn == false then VJ_STOPSOUND(self.firesd) self:StopParticles() end end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:Use(activator, caller) if self.FirePlaceOn == false then self:SetNW2Bool("VJ_FirePlace_Activated", true) self.FirePlaceOn = true self:EmitSound(Sound("ambient/fire/mtov_flame2.wav"), 60, 100) self.firesd = CreateSound(self, "ambient/fire/fire_small_loop1.wav") self.firesd:SetSoundLevel(60) self.firesd:PlayEx(1,100) activator:PrintMessage(HUD_PRINTTALK, "#vjbase.print.fireplace.activated") else self:SetNW2Bool("VJ_FirePlace_Activated", false) self.FirePlaceOn = false self:StopParticles() VJ_STOPSOUND(self.firesd) activator:PrintMessage(HUD_PRINTTALK, "#vjbase.print.fireplace.deactivated") end end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:OnTakeDamage(dmginfo) return false end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:Touch(entity) if (IsValid(entity) && entity:GetPos():Distance(self:GetPos()) <= 38 && self.FirePlaceOn == true) && (entity:IsNPC() or entity:IsPlayer()) then entity:Ignite(math.Rand(3,5)) end end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:PhysicsCollide(data, physobj) //self:EmitSound("physics/cardboard/cardboard_box_impact_soft"..math.random(1,5)..".wav") end --------------------------------------------------------------------------------------------------------------------------------------------- function ENT:OnRemove() self:StopParticles() VJ_STOPSOUND(self.firesd) end