diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm
index 26b1d2d44a..017c92c922 100644
--- a/code/__defines/dcs/signals.dm
+++ b/code/__defines/dcs/signals.dm
@@ -80,6 +80,8 @@
#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon"
///from base of atom/Entered(): (atom/movable/entering, /atom)
#define COMSIG_ATOM_ENTERED "atom_entered"
+/// Sent from the atom that just Entered src. From base of atom/Entered(): (/atom/entered_atom, /atom/oldLoc)
+#define COMSIG_ATOM_ENTERING "atom_entering"
///from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
#define COMSIG_ATOM_EXIT "atom_exit"
#define COMPONENT_ATOM_BLOCK_EXIT (1<<0)
diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm
index 75e48a3bb9..eb1272c2c7 100644
--- a/code/__defines/misc_vr.dm
+++ b/code/__defines/misc_vr.dm
@@ -67,6 +67,11 @@
#define MAT_PLASTITANIUMGLASS "plastitanium glass"
#define MAT_GOLDHULL "gold hull"
+#define RESIZE_MINIMUM 0.25
+#define RESIZE_MAXIMUM 2
+#define RESIZE_MINIMUM_DORMS 0.01
+#define RESIZE_MAXIMUM_DORMS 6
+
#define RESIZE_HUGE 2
#define RESIZE_BIG 1.5
#define RESIZE_NORMAL 1
diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm
index 0602ffc8dc..a0d5fe5be4 100644
--- a/code/__defines/sound.dm
+++ b/code/__defines/sound.dm
@@ -233,4 +233,3 @@
'sound/ambience/engineering/engineering3.ogg',\
'sound/ambience/atmospherics/atmospherics1.ogg'\
)
-
diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm
index 801d11a4d7..326ae19397 100644
--- a/code/__defines/subsystems.dm
+++ b/code/__defines/subsystems.dm
@@ -58,7 +58,8 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_SKYBOX 30
#define INIT_ORDER_MAPPING 25
#define INIT_ORDER_DECALS 20
-#define INIT_ORDER_PLANTS 18 // Must initialize before atoms.
+#define INIT_ORDER_PLANTS 19 // Must initialize before atoms.
+#define INIT_ORDER_PLANETS 18
#define INIT_ORDER_JOB 17
#define INIT_ORDER_ALARM 16 // Must initialize before atoms.
#define INIT_ORDER_ATOMS 15
@@ -69,7 +70,6 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_ASSETS -3
-#define INIT_ORDER_PLANETS -4
#define INIT_ORDER_HOLOMAPS -5
#define INIT_ORDER_NIGHTSHIFT -6
#define INIT_ORDER_OVERLAY -7
diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm
index 5d1325bba5..4cf7222186 100644
--- a/code/controllers/subsystems/planets.dm
+++ b/code/controllers/subsystems/planets.dm
@@ -6,9 +6,6 @@ SUBSYSTEM_DEF(planets)
flags = SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
- var/static/list/new_outdoor_turfs = list()
- var/static/list/new_outdoor_walls = list()
-
var/static/list/planets = list()
var/static/list/z_to_planet = list()
@@ -20,7 +17,6 @@ SUBSYSTEM_DEF(planets)
/datum/controller/subsystem/planets/Initialize(timeofday)
admin_notice("Initializing planetary weather.", R_DEBUG)
createPlanets()
- allocateTurfs(TRUE)
..()
/datum/controller/subsystem/planets/proc/createPlanets()
@@ -36,64 +32,36 @@ SUBSYSTEM_DEF(planets)
continue
z_to_planet[Z] = NP
-/datum/controller/subsystem/planets/proc/addTurf(var/turf/T,var/is_edge)
- if(is_edge)
- new_outdoor_walls |= T
- else
- new_outdoor_turfs |= T
+// DO NOT CALL THIS DIRECTLY UNLESS IT'S IN INITIALIZE,
+// USE turf/simulated/proc/make_indoors() and\
+// tyrf/simulated/proc/make_outdoors()
+/datum/controller/subsystem/planets/proc/addTurf(var/turf/T)
+ if(z_to_planet.len >= T.z && z_to_planet[T.z])
+ var/datum/planet/P = z_to_planet[T.z]
+ if(!istype(P))
+ return
+ if(istype(T, /turf/unsimulated/wall/planetary))
+ P.planet_walls += T
+ else if(istype(T, /turf/simulated) && T.outdoors)
+ P.planet_floors += T
+ T.vis_contents |= P.weather_holder.visuals
+ T.vis_contents |= P.weather_holder.special_visuals
+
/datum/controller/subsystem/planets/proc/removeTurf(var/turf/T,var/is_edge)
- if(is_edge)
- new_outdoor_walls -= T
- else
- new_outdoor_turfs -= T
-
if(z_to_planet.len >= T.z)
var/datum/planet/P = z_to_planet[T.z]
if(!P)
return
- if(is_edge)
- P.planet_floors -= T
- else
+ if(istype(T, /turf/unsimulated/wall/planetary))
P.planet_walls -= T
- T.vis_contents -= P.weather_holder.visuals
- T.vis_contents -= P.weather_holder.special_visuals
-
-/datum/controller/subsystem/planets/proc/allocateTurfs(var/initial = FALSE)
- var/list/currentlist = new_outdoor_turfs
- while(currentlist.len)
- var/turf/simulated/OT = currentlist[currentlist.len]
- currentlist.len--
- if(istype(OT) && OT.outdoors && z_to_planet.len >= OT.z && z_to_planet[OT.z])
- var/datum/planet/P = z_to_planet[OT.z]
- P.planet_floors |= OT
- OT.vis_contents |= P.weather_holder.visuals
- OT.vis_contents |= P.weather_holder.special_visuals
- if(!initial && MC_TICK_CHECK)
- return
-
- currentlist = new_outdoor_walls
- while(currentlist.len)
- var/turf/unsimulated/wall/planetary/PW = currentlist[currentlist.len]
- currentlist.len--
- if(istype(PW) && z_to_planet.len >= PW.z && z_to_planet[PW.z])
- var/datum/planet/P = z_to_planet[PW.z]
- P.planet_walls |= PW
- if(!initial && MC_TICK_CHECK)
- return
-
-/datum/controller/subsystem/planets/proc/unallocateTurf(var/turf/simulated/T)
- if(istype(T) && z_to_planet[T.z])
- var/datum/planet/P = z_to_planet[T.z]
- P.planet_floors -= T
- T.vis_contents -= P.weather_holder.visuals
- T.vis_contents -= P.weather_holder.special_visuals
+ else
+ P.planet_floors -= T
+ T.vis_contents -= P.weather_holder.visuals
+ T.vis_contents -= P.weather_holder.special_visuals
/datum/controller/subsystem/planets/fire(resumed = 0)
- if(new_outdoor_turfs.len || new_outdoor_walls.len)
- allocateTurfs()
-
if(!resumed)
src.currentrun = planets.Copy()
@@ -153,8 +121,7 @@ SUBSYSTEM_DEF(planets)
var/lum_g = new_brightness * GetGreenPart(new_color) / 255
var/lum_b = new_brightness * GetBluePart (new_color) / 255
var/static/update_gen = -1 // Used to prevent double-processing corners. Otherwise would happen when looping over adjacent turfs.
- for(var/I in P.planet_floors)
- var/turf/simulated/T = I
+ for(var/turf/simulated/T as anything in P.planet_floors)
if(!T.lighting_corners_initialised)
T.generate_missing_corners()
for(var/C in T.get_corners())
diff --git a/code/datums/autolathe/autolathe.dm b/code/datums/autolathe/autolathe.dm
index 03d1ca0fdd..bf36f2bfab 100644
--- a/code/datums/autolathe/autolathe.dm
+++ b/code/datums/autolathe/autolathe.dm
@@ -5,7 +5,7 @@
I = new path()
if(!I) // Something has gone horribly wrong, or right.
- log_debug("[name] created an Autolathe design without an assigned path. This is expected for only the Material Sheet generation.")
+ log_debug("[name] created an Autolathe design without an assigned path.")
return
if(I.matter && !resources)
@@ -80,22 +80,12 @@
if(istype(M, /datum/material/alienalloy))
continue
- var/obj/item/stack/material/Mat = new M.stack_type()
-
- if(Mat.name in items_by_name)
- qdel(Mat)
+ var/obj/item/stack/material/S = M.stack_type
+ if(initial(S.name) in items_by_name)
continue
- var/datum/category_item/autolathe/materials/WorkDat = new(src)
+ var/datum/category_item/autolathe/materials/WorkDat = new(src, M)
- WorkDat.name = "[Mat.name]"
- WorkDat.resources = Mat.matter.Copy()
- WorkDat.is_stack = TRUE
- WorkDat.no_scale = TRUE
- WorkDat.max_stack = Mat.max_amount
- WorkDat.path = M.stack_type
-
- qdel(Mat)
items |= WorkDat
items_by_name[WorkDat.name] = WorkDat
diff --git a/code/datums/autolathe/materials.dm b/code/datums/autolathe/materials.dm
index 653fca8222..6deeb09be2 100644
--- a/code/datums/autolathe/materials.dm
+++ b/code/datums/autolathe/materials.dm
@@ -1,38 +1,23 @@
-
-/datum/category_item/autolathe/materials/metal
- name = "steel sheets"
- path =/obj/item/stack/material/steel
+/datum/category_item/autolathe/materials
is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
+ no_scale = TRUE //Prevents material duplication exploits
-/datum/category_item/autolathe/materials/glass
- name = "glass sheets"
- path =/obj/item/stack/material/glass
- is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
+/datum/category_item/autolathe/materials/New(var/loc, var/mat)
+ if(istype(mat, /obj/item/stack/material))
+ var/obj/item/stack/material/M = mat
+ name = M.name
+ resources = M.matter.Copy()
+ max_stack = M.max_amount
+ path = M.type
+ else if(istype(mat, /datum/material))
+ var/datum/material/M = mat
+ var/obj/item/stack/material/S = M.stack_type
+ name = initial(S.name)
+ resources = M.get_matter()
+ max_stack = initial(S.max_amount)
+ path = S
+ . = ..()
-/datum/category_item/autolathe/materials/rglass
- name = "reinforced glass sheets"
- path =/obj/item/stack/material/glass/reinforced
- is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
-
-/datum/category_item/autolathe/materials/rods
+/datum/category_item/autolathe/materials/rods //Not strictly a material, so they need their own define
name = "metal rods"
path =/obj/item/stack/rods
- is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
-
-/datum/category_item/autolathe/materials/plasteel
- name = "plasteel sheets"
- path =/obj/item/stack/material/plasteel
- is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
- resources = list(MAT_PLASTEEL = 2000)
-
-/datum/category_item/autolathe/materials/plastic
- name = "plastic sheets"
- path =/obj/item/stack/material/plastic
- is_stack = TRUE
- no_scale = TRUE //prevents material duplication exploits
- resources = list(MAT_PLASTIC = 2000)
diff --git a/code/datums/components/resize_guard.dm b/code/datums/components/resize_guard.dm
new file mode 100644
index 0000000000..724d252443
--- /dev/null
+++ b/code/datums/components/resize_guard.dm
@@ -0,0 +1,19 @@
+/datum/component/resize_guard
+
+/datum/component/resize_guard/Initialize()
+ if(!isliving(parent))
+ return COMPONENT_INCOMPATIBLE
+
+/datum/component/resize_guard/RegisterWithParent()
+ // When our parent mob enters any atom, we check resize
+ RegisterSignal(parent, COMSIG_ATOM_ENTERING, .proc/check_resize)
+
+/datum/component/resize_guard/UnregisterFromParent()
+ UnregisterSignal(parent, COMSIG_ATOM_ENTERING)
+
+/datum/component/resize_guard/proc/check_resize()
+ var/area/A = get_area(parent)
+ if(A?.limit_mob_size)
+ var/mob/living/L = parent
+ L.resize(L.size_multiplier)
+ qdel(src)
\ No newline at end of file
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index c20c29be7b..e4ad20f5d4 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -638,6 +638,7 @@
. = ..()
GLOB.moved_event.raise_event(AM, old_loc, AM.loc)
SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, old_loc)
+ SEND_SIGNAL(AM, COMSIG_ATOM_ENTERING, src, old_loc)
/atom/Exit(atom/movable/AM, atom/new_loc)
. = ..()
diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm
index 9fc924dae8..e94befcd8b 100644
--- a/code/game/dna/dna2_helpers.dm
+++ b/code/game/dna/dna2_helpers.dm
@@ -222,7 +222,7 @@
// Playerscale
var/size = dna.GetUIValueRange(DNA_UI_PLAYERSCALE, player_sizes_list.len)
if((0 < size) && (size <= player_sizes_list.len))
- H.resize(player_sizes_list[player_sizes_list[size]], TRUE)
+ H.resize(player_sizes_list[player_sizes_list[size]], TRUE, ignore_prefs = TRUE)
// Tail/Taur Color
H.r_tail = dna.GetUIValueRange(DNA_UI_TAIL_R, 255)
@@ -243,7 +243,7 @@
H.custom_exclaim = dna.custom_exclaim
H.species.blood_color = dna.blood_color
var/datum/species/S = H.species
- S.produceCopy(dna.base_species,dna.species_traits,src)
+ S.produceCopy(dna.species_traits,src)
// VOREStation Edit End
H.force_update_organs() //VOREStation Add - Gotta do this too
diff --git a/code/game/gamemodes/events/holidays/Holidays.dm b/code/game/gamemodes/events/holidays/Holidays.dm
index 49780638d8..4955aa2559 100644
--- a/code/game/gamemodes/events/holidays/Holidays.dm
+++ b/code/game/gamemodes/events/holidays/Holidays.dm
@@ -126,9 +126,9 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(8) //Aug
switch(DD)
-/* if(10)
- Holiday["S'randarr's Day"] = "A Tajaran holiday that occurs on the longest day of the year in summer,
- on Ahdomai. It is named after the Tajaran deity of Light, and huge celebrations are common." */
+// if(10)
+// Holiday["S'randarr's Day"] = "A Tajaran holiday that occurs on the longest day of the year in summer,
+// on Ahdomai. It is named after the Tajaran deity of Light, and huge celebrations are common."
//VOREStation Add - Of course we need this.
if(8)
Holiday["Vore Day"] = "A holiday representing the innate desire in all/most/some/a few of us to devour each other or be devoured. \
@@ -167,10 +167,10 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Holiday["Kindness Day"] = "Kindness Day is an unofficial holiday to highlight good deeds in the \
community, focusing on the positive power and the common thread of kindness which binds humanity and \
friends together."
-/* if(28) //Space thanksgiving.
+ if(28) //Space thanksgiving.
Holiday["Appreciation Day"] = "Originally an old holiday from Earth, Appreciation Day follows many of the \
traditions that its predecessor did, such as having a large feast (turkey often included), gathering with family, and being thankful \
- for what one has in life." */
+ for what one has in life."
if(28 > DD > 20)
if(time2text(world.timeofday, "Day") == "Thursday")
Holiday["Thanksgiving"] = "Originally an old holiday from Earth, Thanksgiving follows many of the \
diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm
index 7d00e82ecc..fe0488d1b9 100644
--- a/code/game/gamemodes/technomancer/core_obj.dm
+++ b/code/game/gamemodes/technomancer/core_obj.dm
@@ -30,8 +30,8 @@
"wizard's cloak" = "wizard_cloak"
)
- /* Some spell-specific variables go here, since spells themselves are temporary. Cores are more long term and more accessable than
- mind datums. It may also allow creative players to try to pull off a 'soul jar' scenario. */
+ // Some spell-specific variables go here, since spells themselves are temporary. Cores are more long term and more accessable than
+ // mind datums. It may also allow creative players to try to pull off a 'soul jar' scenario.
var/list/summoned_mobs = list() // Maintained horribly with maintain_summon_list().
var/list/wards_in_use = list() // Wards don't count against the cap for other summons.
var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps.
@@ -365,4 +365,4 @@
instability_modifier = 0.3
spell_power_modifier = 0.7
universal = TRUE
-//VOREStation Add End
\ No newline at end of file
+//VOREStation Add End
diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm
index 5f438f698f..8ca1659d1b 100644
--- a/code/game/turfs/simulated/outdoors/outdoors.dm
+++ b/code/game/turfs/simulated/outdoors/outdoors.dm
@@ -31,10 +31,14 @@ var/list/turf_edge_cache = list()
return ..()
/turf/simulated/proc/make_outdoors()
+ if(outdoors)
+ return
outdoors = TRUE
SSplanets.addTurf(src)
/turf/simulated/proc/make_indoors()
+ if(!outdoors)
+ return
outdoors = FALSE
SSplanets.removeTurf(src)
diff --git a/code/modules/admin/verbs/resize.dm b/code/modules/admin/verbs/resize.dm
index dddaeb9ec1..661eea5fca 100644
--- a/code/modules/admin/verbs/resize.dm
+++ b/code/modules/admin/verbs/resize.dm
@@ -4,13 +4,21 @@
set category = "Fun"
if(!check_rights(R_ADMIN, R_FUN))
return
-
- var/size_multiplier = input(usr, "Input size multiplier.", "Resize", 1)
- L.resize(size_multiplier, TRUE, TRUE)
- if(size_multiplier >= RESIZE_TINY && size_multiplier <= RESIZE_HUGE)
- L.size_uncapped = FALSE
- else
- L.size_uncapped = TRUE
+
+ var/size_multiplier = input(usr, "Input size multiplier.", "Resize", 1) as num|null
+ if(!size_multiplier)
+ return //cancelled
+
+ size_multiplier = clamp(size_multiplier, 0.01, 1000)
+ var/can_be_big = L.has_large_resize_bounds()
+ var/very_big = is_extreme_size(size_multiplier)
+
+ if(very_big && can_be_big) // made an extreme size in an area that allows it, don't assume adminbuse
+ to_chat(src,"[L] will lose this size upon moving into an area where this size is not allowed.")
+ else if(very_big) // made an extreme size in an area that doesn't allow it, assume adminbuse
+ to_chat(src,"[L] will retain this normally unallowed size outside this area.")
+
+ L.resize(size_multiplier, animate = TRUE, uncapped = TRUE, ignore_prefs = TRUE)
log_and_message_admins("has changed [key_name(L)]'s size multiplier to [size_multiplier].")
feedback_add_details("admin_verb","RESIZE")
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/vore/02_size.dm b/code/modules/client/preference_setup/vore/02_size.dm
index a1149821d2..5af5db28b2 100644
--- a/code/modules/client/preference_setup/vore/02_size.dm
+++ b/code/modules/client/preference_setup/vore/02_size.dm
@@ -45,7 +45,7 @@
character.weight_gain = pref.weight_gain
character.weight_loss = pref.weight_loss
character.fuzzy = pref.fuzzy
- character.resize(pref.size_multiplier, animate = FALSE)
+ character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE)
/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
. += "
"
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 17147acb27..fdac138e4f 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -114,12 +114,7 @@
pref.dirty_synth = 0
var/datum/species/S = character.species
- var/SB
- if(S.selects_bodytype)
- SB = pref.custom_base ? pref.custom_base : "Human"
- else
- SB = S.name
- var/datum/species/new_S = S.produceCopy(SB, pref.pos_traits + pref.neu_traits + pref.neg_traits, character)
+ var/datum/species/new_S = S.produceCopy(pref.pos_traits + pref.neu_traits + pref.neg_traits, character, pref.custom_base)
//Any additional non-trait settings can be applied here
new_S.blood_color = pref.blood_color
diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm
index 075b3daece..4c581d728b 100644
--- a/code/modules/clothing/under/miscellaneous_vr.dm
+++ b/code/modules/clothing/under/miscellaneous_vr.dm
@@ -79,6 +79,8 @@
return
var/new_size = input("Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", 200) as num|null
+ if(!new_size)
+ return //cancelled
//Check AGAIN because we accepted user input which is blocking.
if (src != H.w_uniform)
@@ -88,9 +90,9 @@
if (H.stat || H.restrained())
return
- if (isnull(H.size_multiplier))
+ if (isnull(H.size_multiplier)) // Why would this ever be the case?
to_chat(H,"The uniform panics and corrects your apparently microscopic size.")
- H.resize(RESIZE_NORMAL)
+ H.resize(RESIZE_NORMAL, ignore_prefs = TRUE)
H.update_icons() //Just want the matrix transform
return
@@ -102,7 +104,7 @@
if(new_size != H.size_multiplier)
if(!original_size)
original_size = H.size_multiplier
- H.resize(new_size/100)
+ H.resize(new_size/100, ignore_prefs = TRUE) // Ignores prefs because you can only resize yourself
H.visible_message("The space around [H] distorts as they change size!","The space around you distorts as you change size!")
else //They chose their current size.
return
@@ -111,7 +113,7 @@
. = ..()
if(. && ishuman(M) && original_size)
var/mob/living/carbon/human/H = M
- H.resize(original_size)
+ H.resize(original_size, ignore_prefs = TRUE)
original_size = null
H.visible_message("The space around [H] distorts as they return to their original size!","The space around you distorts as you return to your original size!")
diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm
index 125dc69773..eff20ca2a3 100644
--- a/code/modules/events/infestation.dm
+++ b/code/modules/events/infestation.dm
@@ -89,8 +89,8 @@
vermstring = "lizards"
if(VERM_SPIDERS)
spawn_types = list(/obj/effect/spider/spiderling)
- min_number = 6 //CHOMP Add
- max_number = 12 //CHOMP edit
+ min_number = 4 //CHOMP Add
+ max_number = 8 //CHOMP edit
vermstring = "spiders"
spawn(0)
diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm
index 8a99178923..1168d2e643 100644
--- a/code/modules/events/spider_infestation.dm
+++ b/code/modules/events/spider_infestation.dm
@@ -7,7 +7,7 @@
/datum/event/spider_infestation/setup()
announceWhen = rand(announceWhen, announceWhen + 60)
- spawncount = rand(12 * severity, 18 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: Tripled amount spawned
+ spawncount = rand(6 * severity, 12 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: Tripled amount spawned
sent_spiders_to_station = 0
/datum/event/spider_infestation/announce()
diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm
index 6b866d23ba..a92e17c6da 100644
--- a/code/modules/food/kitchen/microwave.dm
+++ b/code/modules/food/kitchen/microwave.dm
@@ -27,7 +27,7 @@
var/datum/looping_sound/microwave/soundloop
-// see code/modules/food/recipes_microwave.dm for recipes
+//see code/modules/food/recipes_microwave.dm for recipes
/*******************
* Initialising
@@ -283,68 +283,69 @@
if("dispose")
dispose()
return TRUE
-
-// /obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-// var/dat = ""
-// if(src.broken > 0)
-// dat = {"Bzzzzttttt"}
-// else if(src.operating)
-// dat = {"Microwaving in progress!
Please wait...!"}
-// else if(src.dirty==100)
-// dat = {"This microwave is dirty!
Please clean it before use!"}
-// else
-// var/list/items_counts = new
-// var/list/items_measures = new
-// var/list/items_measures_p = new
-// for (var/obj/O in ((contents - component_parts) - circuit))
-// var/display_name = O.name
-// if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
-// items_measures[display_name] = "egg"
-// items_measures_p[display_name] = "eggs"
-// if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu))
-// items_measures[display_name] = "tofu chunk"
-// items_measures_p[display_name] = "tofu chunks"
-// if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat
-// items_measures[display_name] = "slab of meat"
-// items_measures_p[display_name] = "slabs of meat"
-// if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket))
-// display_name = "Turnovers"
-// items_measures[display_name] = "turnover"
-// items_measures_p[display_name] = "turnovers"
-// if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat))
-// items_measures[display_name] = "fillet of meat"
-// items_measures_p[display_name] = "fillets of meat"
-// items_counts[display_name]++
-// for (var/O in items_counts)
-// var/N = items_counts[O]
-// if (!(O in items_measures))
-// dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"}
-// else
-// if (N==1)
-// dat += {"[capitalize(O)]: [N] [items_measures[O]]
"}
-// else
-// dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"}
+/*
+/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
+ var/dat = ""
+ if(src.broken > 0)
+ dat = {"Bzzzzttttt"}
+ else if(src.operating)
+ dat = {"Microwaving in progress!
Please wait...!"}
+ else if(src.dirty==100)
+ dat = {"This microwave is dirty!
Please clean it before use!"}
+ else
+ var/list/items_counts = new
+ var/list/items_measures = new
+ var/list/items_measures_p = new
+ for (var/obj/O in ((contents - component_parts) - circuit))
+ var/display_name = O.name
+ if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
+ items_measures[display_name] = "egg"
+ items_measures_p[display_name] = "eggs"
+ if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu))
+ items_measures[display_name] = "tofu chunk"
+ items_measures_p[display_name] = "tofu chunks"
+ if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat
+ items_measures[display_name] = "slab of meat"
+ items_measures_p[display_name] = "slabs of meat"
+ if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket))
+ display_name = "Turnovers"
+ items_measures[display_name] = "turnover"
+ items_measures_p[display_name] = "turnovers"
+ if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat))
+ items_measures[display_name] = "fillet of meat"
+ items_measures_p[display_name] = "fillets of meat"
+ items_counts[display_name]++
+ for (var/O in items_counts)
+ var/N = items_counts[O]
+ if (!(O in items_measures))
+ dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"}
+ else
+ if (N==1)
+ dat += {"[capitalize(O)]: [N] [items_measures[O]]
"}
+ else
+ dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"}
-// for (var/datum/reagent/R in reagents.reagent_list)
-// var/display_name = R.name
-// if (R.id == "capsaicin")
-// display_name = "Hotsauce"
-// if (R.id == "frostoil")
-// display_name = "Coldsauce"
-// dat += {"[display_name]: [R.volume] unit\s
"}
+ for (var/datum/reagent/R in reagents.reagent_list)
+ var/display_name = R.name
+ if (R.id == "capsaicin")
+ display_name = "Hotsauce"
+ if (R.id == "frostoil")
+ display_name = "Coldsauce"
+ dat += {"[display_name]: [R.volume] unit\s
"}
-// if (items_counts.len==0 && reagents.reagent_list.len==0)
-// dat = {"The microwave is empty
"}
-// else
-// dat = {"Ingredients:
[dat]"}
-// dat += {"