diff --git a/code/modules/mob/living/simple_animal/hostile/goose_vr.dm b/code/modules/mob/living/simple_animal/hostile/goose_vr.dm
new file mode 100644
index 00000000000..080c6fac924
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/goose_vr.dm
@@ -0,0 +1,11 @@
+/mob/living/simple_animal/hostile/goose
+ //Space geese aren't affected by atmos.
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm
index fb3aa0bac8b..3a4e7305c6b 100644
--- a/code/modules/rogueminer_vr/controller.dm
+++ b/code/modules/rogueminer_vr/controller.dm
@@ -147,14 +147,15 @@ var/datum/controller/rogue/rm_controller = new()
ZM_target = pick(clean_zones)
if(ZM_target)
+ world.log << "RM(stats): SCORING [ready_zones.len] zones (if unscored)." //DEBUG code for playtest stats gathering.
for(var/datum/rogue/zonemaster/ZM_toscore in ready_zones) //Score all the zones first.
- if(!ZM_target.scored)
- ZM_toscore.score_zone()
+ if(ZM_toscore.scored) continue
+ ZM_toscore.score_zone()
ZM_target.prepare_zone()
else
rm_controller.dbg("RMC(pnz): I was asked for a new zone but there's no space.")
- if(clean_zones.len <= 0) //Need to clean the oldest one, too.
+ if(clean_zones.len <= 1) //Need to clean the oldest one, too.
rm_controller.dbg("RMC(pnz): Cleaning up oldest zone.")
spawn(0) //Detatch it so we can return the new zone for now.
var/datum/rogue/zonemaster/ZM_oldest = get_oldest_zone()
diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm
index 8e3aecefee4..2073f92452f 100644
--- a/code/modules/rogueminer_vr/zone_console.dm
+++ b/code/modules/rogueminer_vr/zone_console.dm
@@ -144,7 +144,7 @@
if (shuttle_control.z != BELT_Z)
return // Usable only when shuttle is away
if(rm_controller.current_zone && rm_controller.current_zone.is_occupied())
- return // Not usable if shuttle is in occupied zone
+ return // Not usable if shuttle is in occupied zone
// Okay do it
var/datum/shuttle/ferry/S = shuttle_controller.shuttles["Belter"]
S.launch(usr)
@@ -158,3 +158,17 @@
#undef OUTPOST_Z
#undef TRANSIT_Z
#undef BELT_Z
+
+/obj/item/weapon/paper/rogueminer
+ name = "R-38 Scanner Console Guide"
+ info = {"
Getting Started
+ Congratulations, your station has purchased the R-38 industrial asteroid belt scanner!
+ Using the R-38 is almost as simple as brain surgery! Simply press the scan button to scan for a new mineral-rich asteroid belt location!
+ That's all there is to it!
+ Notice, scan may cause extreme brain damage to those present in asteroid belt, so scanning will be disabled in that case.
+ Existing minerals and living creatures interfere with the scans, so the more minerals extracted and creatures 'removed'/made-not-living in the belt, the more accurate future scans will be.
+ Traveling to the belt
+ When a new zone has been scanned, your station's shuttle destination will be updated to direct it to the newly discovered area automatically.
+ You can then travel to the new area to mine in that location.
+
+ This technology produced under license from Thinktronic Systems, LTD."}
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm
index e7a12681eae..0f3b39b37a4 100644
--- a/code/modules/rogueminer_vr/zonemaster.dm
+++ b/code/modules/rogueminer_vr/zonemaster.dm
@@ -329,11 +329,9 @@
///////////////////////////////
///// Zone Cleaning ///////////
///////////////////////////////
-/datum/rogue/zonemaster/proc/score_zone(var/bonus = 0)
- if(clean || !ready)
- return
-
+/datum/rogue/zonemaster/proc/score_zone(var/bonus = 10)
rm_controller.dbg("ZM(sz): Scoring zone with area [myarea].")
+ scored = 1
var/tally = bonus
//Ore-bearing rocks that were mined
@@ -369,8 +367,14 @@
//Overall 'destroy' proc (marks as unready)
/datum/rogue/zonemaster/proc/clean_zone(var/delay = 1)
rm_controller.dbg("ZM(cz): Cleaning zone with area [myarea].")
+ world.log << "RM(stats): CLEAN start [myarea] at [world.time] prepared at [prepared_at]." //DEBUG code for playtest stats gathering.
rm_controller.unmark_ready(src)
+ //Cut these lists so qdel can dereference the things properly
+ mineral_rocks.Cut()
+ spawned_mobs.Cut()
+ rockspawns.Cut()
+ mobspawns.Cut()
var/ignored = list(
/obj/asteroid_spawner,
@@ -380,8 +384,6 @@
/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,
/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom)
- var/deleted = 0
-
for(var/atom/I in myarea.contents)
if(I.type == /turf/space)
I.overlays.Cut()
@@ -389,33 +391,23 @@
else if(I.type in ignored)
continue
qdel(I)
- deleted++
- if(delay)
- sleep(delay)
+ sleep(delay)
//A deletion so nice that I give it twice
for(var/atom/I in myarea.contents)
if(I.type in ignored)
continue
qdel(I)
- deleted++
- if(delay)
- sleep(delay)
-
- rm_controller.dbg("ZM(cz): Deleted [deleted] atoms in [myarea].")
-
- mineral_rocks.Cut()
- spawned_mobs.Cut()
- rockspawns.Cut()
- mobspawns.Cut()
- rm_controller.dbg("ZM(cz): Cleaned up lists.")
-
- world.log << "RM(stats): CLEAN [myarea] at [world.time] prepared at [prepared_at]." //DEBUG code for playtest stats gathering.
+ sleep(delay)
+ //Clean up vars
scored = 0
original_mobs = 0
prepared_at = 0
- rm_controller.dbg("ZM(cz): Finished cleaning up zone.")
+
+ world.log << "RM(stats): CLEAN done [myarea] at [world.time]." //DEBUG code for playtest stats gathering.
+
+ rm_controller.dbg("ZM(cz): Finished cleaning up zone area [myarea].")
rm_controller.mark_clean(src)
return myarea
diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi
index c7465c7b786..4a996eedb53 100644
Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ
diff --git a/maps/virgo-5.dmm b/maps/virgo-5.dmm
index 40064b2b2f0..706e322e36e 100644
--- a/maps/virgo-5.dmm
+++ b/maps/virgo-5.dmm
@@ -1539,7 +1539,7 @@
"DE" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"DF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"DG" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly)
-"DH" = (/obj/machinery/computer/roguezones,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored)
+"DH" = (/obj/machinery/computer/roguezones,/obj/item/weapon/paper/rogueminer,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored)
"DI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/north_hall)
"DJ" = (/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"DK" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
@@ -1928,7 +1928,7 @@
"Ld" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
"Le" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-5"; icon_state = "5"},/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
"Lf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/light{dir = 1},/obj/machinery/airlock_sensor{frequency = 1390; id_tag = "belter_sensor"; master_tag = "belter_airlock"; pixel_y = 25},/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
-"Lg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
+"Lg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/structure/table/standard,/obj/item/device/binoculars,/obj/item/weapon/gun/energy/particle,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
"Lh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
"Li" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
"Lj" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/structure/table/standard,/obj/machinery/recharger{pixel_x = 4; pixel_y = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
diff --git a/vorestation.dme b/vorestation.dme
index 48e69f5f858..3abdb2418d2 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1791,6 +1791,7 @@
#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm"
#include "code\modules\mob\living\simple_animal\hostile\goose.dm"
+#include "code\modules\mob\living\simple_animal\hostile\goose_vr.dm"
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"