--[[ | 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/ --]] local lava = StormFox2.Weather.Add( "Lava", "Cloud" ) lava:Set("fogDistance", 2000) lava:Set("fogIndoorDistance", 3000) lava:Set("mapDayLight",0) local s = 10 lava:SetSunStamp("bottomColor",Color(50, 2.5, 2.5), SF_SKY_DAY) lava:SetSunStamp("bottomColor",Color(2.25, .225,.225),SF_SKY_NIGHT) if CLIENT then function lava:GetName(nTime, nTemp, nWind, bThunder, nFraction ) return language.GetPhrase('sf_weather.lava') end else function lava:GetName(nTime, nTemp, nWind, bThunder, nFraction ) return "Lava", "Lava" end end local m_def = Material("stormfox2/hud/w_lava.png") function lava.GetSymbol( nTime ) -- What the menu should show return m_def end function lava.GetIcon( nTime, nTemp, nWind, bThunder, nFraction) -- What symbol the weather should show return m_def end -- Terrain local t_lava = StormFox2.Terrain.Create("lava") local a = function() local P = StormFox2.Weather.GetPercent() return P > 0.5 and t_lava end lava:SetTerrain( a ) t_lava:SetGroundTexture("stormfox2/effects/terrain/lava_ground", true) -- Downfall & Snd if CLIENT then local lava_snd = StormFox2.Ambience.CreateAmbienceSnd( "stormfox2/amb/lava.ogg", SF_AMB_OUTSIDE, 0.4 ) local m_lava = Material("stormfox2/effects/lava_particle") lava:AddAmbience( lava_snd ) local p_d = Material("stormfox2/effects/lava_particle2") local lava_particles = StormFox2.DownFall.CreateTemplate(p_d, true) lava_particles:SetFadeIn( true ) lava_particles:SetRandomAngle(0.1) function lava:Think() local P = StormFox2.Weather.GetPercent() lava_snd:SetVolume( P * .4 ) local l = math.min(255, StormFox2.Weather.GetLuminance() * 7) lava_particles:SetColor(Color(l,l,l)) lava_particles:SetSpeed(.3) -- Makes the start position local dis = math.random(100,1500) for _,v in ipairs( StormFox2.DownFall.SmartTemplate( lava_particles, 200, dis, P * 800, 5, vNorm ) or {} ) do local s = math.Rand(10,200) v:SetSize( s, s ) v:SetSpeed( math.Rand(.05, .15) ) if math.random(1,2) == 1 then v:SetMaterial(m_lava) end end end -- Render water debri local debri = Material("stormfox2/effects/terrain/lava_water") local function renderD( a, b) render.SetMaterial(debri) StormFox2.Environment.DrawWaterOverlay( b ) end lava.PreDrawTranslucentRenderables = renderD end -- Burn if SERVER then t_lava:MakeFootprints( false, nil, nil, function(ent, foot, SoundName, sTex, bReplace) if not ent or not IsValid(ent) then return end if not bReplace then return end if ent.Health and ent:Health() <= 1 then return end if not StormFox2.Setting.Get("weather_damage", true) then return end if math.random(1, 10) <= 9 then local burn = DamageInfo() burn:SetDamage( math.random(5, 10) ) burn:SetDamageType(DMG_BURN) burn:SetInflictor(game.GetWorld()) burn:SetAttacker(game.GetWorld()) burn:SetDamagePosition( ent:GetPos() ) ent:TakeDamageInfo( burn ) else ent:Ignite(1, 0) end end) end