diff --git a/baystation12.dme b/baystation12.dme index fb23119bd3..c5e45a2729 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1044,6 +1044,7 @@ #include "code\modules\mining\machine_unloading.dm" #include "code\modules\mining\mine_items.dm" #include "code\modules\mining\mine_turfs.dm" +#include "code\modules\mining\mineral_effect.dm" #include "code\modules\mining\minerals.dm" #include "code\modules\mining\mint.dm" #include "code\modules\mining\money_bag.dm" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 1bc058ef6d..d5757cadae 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -239,7 +239,7 @@ // zone.RemoveTurf(src) // if(!zone.CheckStatus()) // zone.SetStatus(ZONE_ACTIVE) - + var/old_opacity = opacity var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) //W.Assimilate_Air() @@ -264,6 +264,11 @@ S.update_starlight() W.levelupdate() + + // Testing if this fixes bugs with lighting not updating. + if(old_opacity != W.opacity) + W.UpdateAffectingLights() + return W else diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index f616d57ac4..f50b6ca286 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -1,12 +1,3 @@ -/**********************Light************************/ - -//this item is intended to give the effect of entering the mine, so that light gradually fades -/obj/effect/light_emitter - name = "Light-emtter" - anchored = 1 - unacidable = 1 - luminosity = 8 - /**********************Miner Lockers**************************/ /obj/structure/closet/secure_closet/miner @@ -35,8 +26,66 @@ new /obj/item/device/flashlight/lantern(src) new /obj/item/weapon/shovel(src) new /obj/item/weapon/pickaxe(src) - new /obj/item/clothing/glasses/meson(src) + new /obj/item/clothing/glasses/orescanner(src) +/******************************Goggles*******************************/ + +/obj/item/clothing/glasses/orescanner + name = "resonance scanners" + desc = "A set of goggles geared towards detecting different concentrations of minerals." + icon_state = "meson" + item_state = "glasses" + icon_action_button = "action_meson" + toggleable = 1 + active = 0 + + var/mob/living/carbon/human/wearer + var/list/ore_nodes = list() + +/obj/item/clothing/glasses/orescanner/New() + ..() + processing_objects |= src + +/obj/item/clothing/glasses/orescanner/Del() + processing_objects -= src + ..() + +/obj/item/clothing/glasses/orescanner/equipped(var/mob/living/carbon/human/M) + ..() + remove_ore_images() + wearer = null + if(istype(M) && M.glasses == src) + wearer = M + +/obj/item/clothing/glasses/orescanner/dropped() + ..() + remove_ore_images() + wearer = null + +/obj/item/clothing/glasses/orescanner/process() + remove_ore_images() + if(active) + if(!wearer || wearer.glasses != src) + return + for(var/obj/effect/mineral/M in range(wearer,6)) + // Maybe make a cache for this so multiple miners aren't spawning copies. + ore_nodes += image(M.icon, loc = get_turf(M), icon_state = M.icon_state) + if(ore_nodes.len && wearer.client && wearer.client.images) + wearer.client.images |= ore_nodes + +/obj/item/clothing/glasses/orescanner/proc/remove_ore_images() + if(!ore_nodes) + ore_nodes = list() + if(ore_nodes.len) + if(wearer && wearer.client && wearer.client.images) + for(var/image/I in ore_nodes) + wearer.client.images -= I + del(I) + ore_nodes.Cut() + +/obj/item/clothing/glasses/orescanner/dropped() + remove_ore_images() + wearer = null /******************************Lantern*******************************/ diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index c56bcde642..b4b8472e9e 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -95,13 +95,13 @@ /turf/simulated/mineral/proc/UpdateMineral() + clear_ore_effects() if(!mineral) name = "\improper Rock" icon_state = "rock" return name = "\improper [mineral.display_name] deposit" - overlays.Cut() - overlays += "rock_[mineral.name]" + new /obj/effect/mineral(src, mineral) //Not even going to touch this pile of spaghetti /turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -234,10 +234,15 @@ else return attack_hand(user) +/turf/simulated/mineral/proc/clear_ore_effects() + for(var/obj/effect/mineral/M in contents) + del(M) + /turf/simulated/mineral/proc/DropMineral() if(!mineral) return + clear_ore_effects() var/obj/item/weapon/ore/O = new mineral.ore (src) if(istype(O)) geologic_data.UpdateNearbyArtifactInfo(src) @@ -274,6 +279,7 @@ var/list/step_overlays = list("n" = NORTH, "s" = SOUTH, "e" = EAST, "w" = WEST) //Add some rubble, you did just clear out a big chunk of rock. + var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid) N.overlay_detail = "asteroid[rand(0,9)]" diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm new file mode 100644 index 0000000000..040280028e --- /dev/null +++ b/code/modules/mining/mineral_effect.dm @@ -0,0 +1,14 @@ +/obj/effect/mineral + name = "mineral vein" + icon = 'icons/obj/mining.dmi' + desc = "Shiny." + mouse_opacity = 0 + density = 0 + anchored = 1 + +/obj/effect/mineral/New(var/newloc, var/mineral/M) + ..(newloc) + name = "[M.display_name] deposit" + icon_state = "rock_[M.name]" + var/turf/T = get_turf(src) + layer = T.layer+0.1 \ No newline at end of file diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index b51f8106a9..98689c2032 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index bc3b9e68fc..d0fdf5256d 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ