diff --git a/baystation12.dme b/baystation12.dme index 1f8ba207fd..713dccd71f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -167,6 +167,7 @@ #define FILE_DIR "code/WorkInProgress/animusstation" #define FILE_DIR "code/WorkInProgress/Apples" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/BirdMan" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Tajara" diff --git a/code/WorkInProgress/Cael_Aislinn/sculpture.dm b/code/WorkInProgress/Cael_Aislinn/sculpture.dm index 9dde8b37dd..a20ed600b0 100644 --- a/code/WorkInProgress/Cael_Aislinn/sculpture.dm +++ b/code/WorkInProgress/Cael_Aislinn/sculpture.dm @@ -130,7 +130,7 @@ //account for darkness var/turf/T = get_turf(src) var/in_darkness = 0 - if(T.sd_lumcount == 0 && !istype(T, /turf/simulated)) + if(max(T.ul_GetRed(), T.ul_GetGreen(), T.ul_GetBlue()) == 0 && !istype(T, /turf/simulated)) in_darkness = 1 //see if we're able to do stuff diff --git a/code/WorkInProgress/SkyMarshal/Ultralight.dm b/code/WorkInProgress/SkyMarshal/Ultralight.dm index 1e3a0aebed..41014ee177 100644 --- a/code/WorkInProgress/SkyMarshal/Ultralight.dm +++ b/code/WorkInProgress/SkyMarshal/Ultralight.dm @@ -7,9 +7,11 @@ #define UL_I_LIT 0 #define UL_I_EXTINGUISHED 1 #define UL_I_ONZERO 2 + var ul_LightingEnabled = 1 ul_LightingResolution = 1 + ul_LightingResolutionSqrt = sqrt(ul_LightingResolution) ul_Steps = 7 ul_FalloffStyle = UL_I_FALLOFF_ROUND // Sets the lighting falloff to be either squared or circular. ul_TopLuminosity = 0 @@ -20,26 +22,15 @@ var 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7) -var/list/light_to_instantiate = list() -var/UL_setup = 0 - -proc/setup_UL() - UL_setup = 1 - world << "\red Setting up UltraLight..." - for(var/atom/A in light_to_instantiate) - if(A.ul_IsLuminous()) - A.ul_Illuminate() proc/ul_Clamp(var/Value) return min(max(Value, 0), ul_Steps) -atom - var - LuminosityRed = 0 - LuminosityGreen = 0 - LuminosityBlue = 0 +atom/var/LuminosityRed = 0 +atom/var/LuminosityGreen = 0 +atom/var/LuminosityBlue = 0 - ul_Extinguished = UL_I_ONZERO +atom/var/ul_Extinguished = UL_I_ONZERO atom/proc/ul_SetLuminosity(var/Red, var/Green = Red, var/Blue = Red) @@ -76,22 +67,38 @@ atom/proc/ul_Illuminate() ul_UpdateTopLuminosity() luminosity = ul_Luminosity() - for(var/turf/Affected in view(ul_Luminosity(), src)) + for(var/turf/Affected in view(luminosity, src)) var/Falloff = src.ul_FalloffAmount(Affected) var/DeltaRed = LuminosityRed - Falloff var/DeltaGreen = LuminosityGreen - Falloff var/DeltaBlue = LuminosityBlue - Falloff - if(ul_IsLuminous(DeltaRed, DeltaGreen, DeltaBlue)) + if(DeltaRed > 0 || DeltaGreen > 0 || DeltaBlue > 0) - Affected.LightLevelRed += max(DeltaRed, 0) - Affected.LightLevelGreen += max(DeltaGreen, 0) - Affected.LightLevelBlue += max(DeltaBlue, 0) + if(DeltaRed > 0) + if(!Affected.MaxRed) + Affected.MaxRed = list() + if("[DeltaRed]" in Affected.MaxRed) + Affected.MaxRed["[DeltaRed]"]++ + else + Affected.MaxRed["[DeltaRed]"] = 1 - Affected.MaxRed += LuminosityRed - Affected.MaxGreen += LuminosityGreen - Affected.MaxBlue += LuminosityBlue + if(DeltaGreen > 0) + if(!Affected.MaxGreen) + Affected.MaxGreen = list() + if("[DeltaGreen]" in Affected.MaxGreen) + Affected.MaxGreen["[DeltaGreen]"]++ + else + Affected.MaxGreen["[DeltaGreen]"] = 1 + + if(DeltaBlue > 0) + if(!Affected.MaxBlue) + Affected.MaxBlue = list() + if("[DeltaBlue]" in Affected.MaxBlue) + Affected.MaxBlue["[DeltaBlue]"]++ + else + Affected.MaxBlue["[DeltaBlue]"] = 1 Affected.ul_UpdateLight() @@ -117,15 +124,34 @@ atom/proc/ul_Extinguish() var/DeltaGreen = LuminosityGreen - Falloff var/DeltaBlue = LuminosityBlue - Falloff - if(ul_IsLuminous(DeltaRed, DeltaGreen, DeltaBlue)) + if(DeltaRed > 0 || DeltaGreen > 0 || DeltaBlue > 0) - Affected.LightLevelRed -= max(DeltaRed, 0) - Affected.LightLevelGreen -= max(DeltaGreen, 0) - Affected.LightLevelBlue -= max(DeltaBlue, 0) + if(DeltaRed > 0) + if(Affected.MaxRed) + if(Affected.MaxRed["[DeltaRed]"] > 1) + Affected.MaxRed["[DeltaRed]"]-- + else + Affected.MaxRed.Remove("[DeltaRed]") + if(!Affected.MaxRed.len) + del Affected.MaxRed - Affected.MaxRed -= LuminosityRed - Affected.MaxGreen -= LuminosityGreen - Affected.MaxBlue -= LuminosityBlue + if(DeltaGreen > 0) + if(Affected.MaxGreen) + if(Affected.MaxGreen["[DeltaGreen]"] > 1) + Affected.MaxGreen["[DeltaGreen]"]-- + else + Affected.MaxGreen.Remove("[DeltaGreen]") + if(!Affected.MaxGreen.len) + del Affected.MaxGreen + + if(DeltaBlue > 0) + if(Affected.MaxBlue) + if(Affected.MaxBlue["[DeltaBlue]"] > 1) + Affected.MaxBlue["[DeltaBlue]"]-- + else + Affected.MaxBlue.Remove("[DeltaBlue]") + if(!Affected.MaxBlue.len) + del Affected.MaxBlue Affected.ul_UpdateLight() @@ -151,10 +177,17 @@ atom/proc/ul_FalloffAmount(var/atom/ref) if (ul_FalloffStyle == UL_I_FALLOFF_ROUND) var/x = (ref.x - src.x) var/y = (ref.y - src.y) - if ((x*x + y*y) > ul_FastRoot.len) - for(var/i = ul_FastRoot.len, i <= x*x+y*y, i++) - ul_FastRoot += round(sqrt(x*x+y*y)) - return round(ul_LightingResolution * ul_FastRoot[x*x + y*y + 1], 1) + if(ul_LightingResolution != 1) + if (round((x*x + y*y)*ul_LightingResolutionSqrt,1) > ul_FastRoot.len) + for(var/i = ul_FastRoot.len, i <= round(x*x+y*y*ul_LightingResolutionSqrt,1), i++) + ul_FastRoot += round(sqrt(i)) + return ul_FastRoot[round((x*x + y*y)*ul_LightingResolutionSqrt, 1) + 1]/ul_LightingResolution + + else + if ((x*x + y*y) > ul_FastRoot.len) + for(var/i = ul_FastRoot.len, i <= x*x+y*y, i++) + ul_FastRoot += round(sqrt(i)) + return ul_FastRoot[x*x + y*y + 1]/ul_LightingResolution else if (ul_FalloffStyle == UL_I_FALLOFF_SQUARE) return get_dist(src, ref) @@ -165,17 +198,9 @@ atom/proc/ul_SetOpacity(var/NewOpacity) if(opacity != NewOpacity) var/list/Blanked = ul_BlankLocal() - var/atom/T = src - while(T && !isturf(T)) - T = T.loc opacity = NewOpacity - if(T) - T:LightLevelRed = 0 - T:LightLevelGreen = 0 - T:LightLevelBlue = 0 - ul_UnblankLocal(Blanked) return @@ -222,49 +247,43 @@ atom/proc/ul_LightLevelChanged() atom/New() ..() - if(UL_setup) - if(ul_IsLuminous()) + if(ul_IsLuminous()) + spawn(1) ul_Illuminate() - else - light_to_instantiate |= src + return atom/Del() if(ul_IsLuminous()) ul_Extinguish() - ..() - return - -// formerly atom/proc/movable/Move(), this now overwrites other shit causing random inexplicable problems. -// need to find a way to plug it in to the root without overriding, might just do the snowflake treatment -/*atom/proc/Move() - ul_Extinguish() - ..() - ul_Illuminate() - return*/ - -turf - var - LightLevelRed = 0 - LightLevelGreen = 0 - LightLevelBlue = 0 - - list/MaxRed = list( ) - list/MaxGreen = list( ) - list/MaxBlue = list( ) +atom/movable/Move() + if(ul_IsLuminous()) + ul_Extinguish() + ..() + ul_Illuminate() + else + ..() +turf/var/list/MaxRed +turf/var/list/MaxGreen +turf/var/list/MaxBlue turf/proc/ul_GetRed() - return ul_Clamp(min(LightLevelRed, max(MaxRed))) + if(MaxRed) + return ul_Clamp(text2num(max(MaxRed))) + return 0 turf/proc/ul_GetGreen() - return ul_Clamp(min(LightLevelGreen, max(MaxGreen))) + if(MaxGreen) + return ul_Clamp(text2num(max(MaxGreen))) + return 0 turf/proc/ul_GetBlue() - return ul_Clamp(min(LightLevelBlue, max(MaxBlue))) + if(MaxBlue) + return ul_Clamp(text2num(max(MaxBlue))) + return 0 turf/proc/ul_UpdateLight() - var/area/CurrentArea = loc if(!isarea(CurrentArea) || !CurrentArea.ul_Lighting) @@ -298,25 +317,19 @@ turf/proc/ul_Recalculate() var/list/Lights = ul_BlankLocal() - LightLevelRed = 0 - LightLevelGreen = 0 - LightLevelBlue = 0 - ul_UnblankLocal(Lights) ul_SuppressLightLevelChanges-- return -area - var - ul_Overlay = null - ul_Lighting = 1 - - LightLevelRed = 0 - LightLevelGreen = 0 - LightLevelBlue = 0 +area/var/ul_Overlay = null +area/var/ul_Lighting = 1 +area/var/LightLevelRed = 0 +area/var/LightLevelGreen = 0 +area/var/LightLevelBlue = 0 +area/var/list/LightLevels area/proc/ul_Light(var/Red = LightLevelRed, var/Green = LightLevelGreen, var/Blue = LightLevelBlue) @@ -324,6 +337,13 @@ area/proc/ul_Light(var/Red = LightLevelRed, var/Green = LightLevelGreen, var/Blu return overlays -= ul_Overlay + if(LightLevels) + if(Red < LightLevels["Red"]) + Red = LightLevels["Red"] + if(Green < LightLevels["Green"]) + Green = LightLevels["Green"] + if(Blue < LightLevels["Blue"]) + Blue = LightLevels["Blue"] LightLevelRed = Red LightLevelGreen = Green diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index be430d58e2..5b2f48cdd3 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -124,11 +124,18 @@ obj if(flow.oxygen > 0.3 && (flow.toxins || fuel || liquid)) //Change icon depending on the fuel, and thus temperature. - icon_state = "1" - if(firelevel > 2.5) - icon_state = "2" if(firelevel > 6) icon_state = "3" + if(LuminosityRed != 7) + ul_SetLuminosity(7,5,0) + else if(firelevel > 2.5) + icon_state = "2" + if(LuminosityRed != 5) + ul_SetLuminosity(5,4,0) + else + icon_state = "1" + if(LuminosityRed != 3) + ul_SetLuminosity(3,2,0) //Ensure flow temperature is higher than minimum fire temperatures. flow.temperature = max(PLASMA_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature) @@ -157,7 +164,7 @@ obj New(newLoc,fl) ..() dir = pick(cardinal) - ul_SetLuminosity(3) + ul_SetLuminosity(3,2,0) firelevel = fl for(var/mob/living/carbon/human/M in loc) M.FireBurn(min(max(0.1,firelevel / 20),10)) //Burn the humans! @@ -187,7 +194,6 @@ obj/liquid_fuel other.amount += src.amount spawn other.Spread() del src - return Spread() . = ..() @@ -201,8 +207,9 @@ obj/liquid_fuel if(S.air_check_directions & d) if(rand(25)) var/turf/simulated/O = get_step(src,d) - new/obj/liquid_fuel(O,amount*0.25) - amount *= 0.75 + if(!locate(/obj/liquid_fuel) in O) + new/obj/liquid_fuel(O,amount*0.25) + amount *= 0.75 flamethrower_fuel icon_state = "mustard" diff --git a/code/defines/area/Space Station 13 areas.dm b/code/defines/area/Space Station 13 areas.dm index 03517f2807..d142c42a21 100755 --- a/code/defines/area/Space Station 13 areas.dm +++ b/code/defines/area/Space Station 13 areas.dm @@ -957,6 +957,7 @@ proc/process_ghost_teleport_locs() //Solars /area/solar + LightLevels = list("Red" = 2, "Green" = 2, "Blue" = 3) requires_power = 0 auxport diff --git a/code/defines/atom.dm b/code/defines/atom.dm index 2deb510cea..1a1a79b94f 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -47,14 +47,6 @@ return flags & INSERT_CONTAINER */ - Del() - var/F = file("del_log.txt") - var/coords = "" - if(src) - coords = "[src.x],[src.y],[src.z]" - F << "[time2text(world.timeofday, "hh:mm.ss")]: [src] - [src.loc] [coords] - [usr]" - ..() - obj assume_air(datum/gas_mixture/giver) if(loc) diff --git a/code/defines/turf.dm b/code/defines/turf.dm index 84ee94551e..0c30c4dac1 100644 --- a/code/defines/turf.dm +++ b/code/defines/turf.dm @@ -45,8 +45,6 @@ thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT heat_capacity = 700000 - LightLevelBlue = 5 - transit var/pushdirection // push things that get caught in the transit tile this direction @@ -127,7 +125,6 @@ /turf/space/New() -// icon = 'space.dmi' if(!istype(src, /turf/space/transit)) ..() icon_state = "[rand(1,25)]" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 03330d9fbd..c24ac9e2f7 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -27,21 +27,23 @@ if(name == "Space") // override defaults for space requires_power = 1 always_unpowered = 1 - ul_SetLuminosity(1) + LightLevels = list("Red" = 2, "Green" = 2, "Blue" = 3) power_light = 0 power_equip = 0 power_environ = 0 //has_gravity = 0 // Space has gravity. Because.. because. - if(!requires_power) + else if(!requires_power) power_light = 0//rastaf0 power_equip = 0//rastaf0 power_environ = 0//rastaf0 - luminosity = 1 - ul_Lighting = 0 // *DAL* + if(!ul_Lighting) + luminosity = 1 else luminosity = 0 - area_lights_luminosity = rand(6,9) + area_lights_luminosity = rand(5,7) + if(LightLevels) + ul_Light() //ul_SetLuminosity(0) // *DAL* @@ -401,7 +403,7 @@ other_related -= other_master var/list/total_contents = list() for(var/area/RA in other_related) - RA.sd_lighting = 0 +// RA.ul_lighting = 0 total_contents |= RA.contents del RA.contents del RA.related diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm index 76882780fe..00736c3b67 100644 --- a/code/game/master_controller.dm +++ b/code/game/master_controller.dm @@ -55,12 +55,10 @@ datum/controller/game_controller // Now that the game is world is fully initialized, pause server until a user connects. world.sleep_offline = 1 - setupgenetics() - - setupdooralarms() - setup_objects() + setupgenetics() + // for(var/i = 0, i < max_secret_rooms, i++) // make_mining_asteroid_secret() // Because energy cutlasses, facehuggers, and empty rooms are silly. FOR NOW. - Erthilo @@ -104,7 +102,7 @@ datum/controller/game_controller new /obj/structure/closet/emcloset(loc) emclosetcount-- - setup_UL() + setupdooralarms() world << "\red \b Initializations complete." diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 6975e37730..357956b92d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -83,7 +83,7 @@ var/area/A = src.loc.loc brightness = A.area_lights_luminosity else - brightness = rand(6,9) + brightness = rand(5,7) if(prob(10)) broken(1) if("bulb") @@ -123,7 +123,7 @@ var/oldlum = luminosity //luminosity = on * brightness - ul_SetLuminosity(on * brightness, on * brightness, ( fitting == "tube" ? on * brightness : 0 ) ) // *DAL* + ul_SetLuminosity(on * brightness, on * brightness, ( fitting != "bulb" ? on * brightness : on ) ) // *DAL* // if the state changed, inc the switching counter if(oldlum != luminosity) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 39bbf9e3cb..348ea33a7f 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ