profile
viewpoint
Karolis Karolis2011 Europe, Lithuania

PR closed Aurorastation/Aurora.3

Reviewers
Removes old record consoles, ports them to programs Awaiting Merge Changelog Required Mapping: Aurora Mapping: Exodus Merge Conflict VueUi
  • [x] Add record printing (fixes #6042)
+782 -670

8 comments

30 changed files

Karolis2011

pr closed time in 20 days

pull request commentAurorastation/Aurora.3

Removes old record consoles, ports them to programs

Real life got too busy. I don't have enough time for this till I be able to just manage fix merge conflicts fast enough to be merged.

Karolis2011

comment created time in 20 days

PR closed Aurorastation/Aurora.3

Reviewers
Add HTML chat Changelog Required VueUi WIP

I messed up Please kill me

Initial picture #7076 Also it's fine now look at this, better

picture

+1295 -372

1 comment

136 changed files

Karolis2011

pr closed time in 20 days

pull request commentAurorastation/Aurora.3

Add HTML chat

Honestly things are just too demanding and there isn't great way to have compatibility with old chat. Also there is question do we actually NEED it or is it just neat thing just for gigs.

Karolis2011

comment created time in 20 days

PR closed Aurorastation/Aurora.3

Improves z level struff WIP
  • [x] Improves mimic according to lohikar's PR Baystation12/Baystation12#26862
  • [x] Adds look up verb
  • [x] Adds cross z level talking
+293 -158

2 comments

26 changed files

Karolis2011

pr closed time in 20 days

pull request commentAurorastation/Aurora.3

Improves z level struff

Honestly this is a mess. Might reopen when I will be in the mood.

Karolis2011

comment created time in 20 days

push eventJohnWildkins/Aurora.3

Karolis

commit sha 3e855e04f794facedb7aebb5b4df1046d856bd0f

Added clamping from other side.

view details

push time in a month

push eventKarolis2011/Aurora.3

Ferner

commit sha a28eb4a75e2983794c8388ed0c817bd8a07a2fb3

Mapping and stuff

view details

Karolis

commit sha 7b2a28c8c4304f2d3579eb814afb77437859b400

Merge pull request #6 from fernerr/record_consoles_mapping Mapping adjustments for the changes with record computers

view details

push time in a month

PR merged Karolis2011/Aurora.3

Mapping adjustments for the changes with record computers

Adjusted and added some software presets, as well as added laptops with preconfigured software to some places

+567 -417

0 comment

16 changed files

fernerr

pr closed time in a month

CommitCommentEvent

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 	else if(default_part_replacement(user, O))
 		return
 	else
-
-		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+		if (contents.len>=max_n_of_items)
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
+			return 1
+		if(istype(O, /obj/item/stack))
+			var/obj/item/stack/S = O
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
+		else
+			add_item(O, user)
+			return
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
+
+/obj/machinery/microwave/AltClick()
+	if(!operating)
+		cook()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty >= 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
+
+/obj/machinery/microwave/examine(var/mob/user)
+	..()
+	if(broken > 0)
+		to_chat(user, "It's broken!")
+	else if(dirty >= 100)
+		to_chat(user, "The insides are completely filthy!")
+	else if(dirty > 75)
+		to_chat(user, "It's covered in stains.")
+	else if(dirty > 50)
+		to_chat(user, "It's pretty messy.")
+	else if(dirty > 25)
+		to_chat(user, "It's a bit dirty.")
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
+	watch_var("failed", "failed")
+	watch_var("cook_time", "cook_time")
+	watch_var("start_time", "start_time")
+
+/obj/machinery/microwave/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = data = monitordata
+
+	// init data objects if they aren't already
+	LAZYINITLIST(data["cookingobjs"])
+	LAZYINITLIST(data["cookingreas"])
+
+	// if BYOND lists are smaller than UI, then something (or everything) was removed - wipe the list
+	if(LAZYLEN(contents) < LAZYLEN(data["cookingobjs"]))
+		VUEUI_SET_CHECK(data["cookingobjs"], list(), ., data)
+	if(LAZYLEN(reagents.reagent_list) < LAZYLEN(data["cookingreas"]))
+		VUEUI_SET_CHECK(data["cookingreas"], list(), ., data)

Well, might not be a huge difference, but if it happens a lot it might become an issue. Might be fine tho. Also directly editing UI object data is not recommended, but if its only way to get things to properly update more complex structures then it's okay. Like I am sure I am editing UI data inside record computers.

JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on">+      <p>{{ cookingMessage }}</p>+      <vui-progress :value="$root.$data.wtime" :min="start_time" :max="start_time + cook_time"/>+      <vui-button class="danger danger-control" icon="exclamation-triangle" :params="{abort: 1}">Abort!</vui-button>+    </template>+    <template v-else>+      <h4>Ingredients</h4>+      <ul>+        <li v-if="!ingredientsPresent">The microwave is empty!</li>+        <li v-for="(amt, name) in cookingobjs" :key="name">+          <vui-button push-state :params="{ eject: name }"> {{ name }} • {{ amt }}

Why am I still seeing push state still set after I scolded you for using it last time?

JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 /obj/machinery/microwave/proc/cook()
 	if(stat & (NOPOWER|BROKEN))
 		return
-	start()
-	if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run
-		if (!wzhzhzh(16))
-			abort()
-			return
-		stop()
+
+	if (!reagents.reagent_list.len && !(locate(/obj) in contents)) //dry run
+		start()
 		return
 
-	var/datum/recipe/recipe = select_recipe(RECIPE_LIST(appliancetype),src)
-	var/obj/cooked
+	recipe = select_recipe(RECIPE_LIST(appliancetype),src)
+
+	if (reagents.reagent_list.len && prob(50)) // 50% chance a liquid recipe gets messy
+		dirty += Ceiling(reagents.total_volume / 10)
+
 	if (!recipe)
-		dirty += 1
-		if (prob(max(10,dirty*5)))
-			if (!wzhzhzh(16))
-				abort()
-				return
-			muck_start()
-			wzhzhzh(16)
-			muck_finish()
-			cooked = fail()
-			cooked.forceMove(src.loc)
-			return
+		failed = TRUE
+		cook_time = update_cook_time()
+		dirty += 5
+		if (prob(max(10, dirty*5)))
+			// It's dirty enough to mess up the microwave
+			cook_dirty = TRUE
 		else if (has_extra_item())
-			if (!wzhzhzh(16))
-				abort()
-				return
-			broke()
-			cooked = fail()
-			cooked.forceMove(src.loc)
-			return
-		else
-			if (!wzhzhzh(40))
-				abort()
-				return
-			stop()
-			cooked = fail()
-			cooked.forceMove(src.loc)
-			return
+			// Something's in the microwave that shouldn't be! Time to break!
+			cook_break = TRUE
 	else
-		var/halftime = round((recipe.time*4)/10/2)
-		if (!wzhzhzh(halftime))
-			abort()
-			return
-		if (!wzhzhzh(halftime))
-			abort()
-			cooked = fail()
-			cooked.forceMove(src.loc)
-			return
+		failed = FALSE
+		cook_time = update_cook_time(round(recipe.time * 2))
 
+	start()
 
-		//Making multiple copies of a recipe
-		var/result = recipe.result
-		var/valid = 1
-		var/list/cooked_items = list()
-		var/obj/temp = new /obj(src) //To prevent infinite loops, all results will be moved into a temporary location so they're not considered as inputs for other recipes
-		while(valid)
-			var/list/things = list()
-			things.Add(recipe.make_food(src))
-			cooked_items += things
-			//Move cooked things to the buffer so they're not considered as ingredients
-			for (var/atom/movable/AM in things)
-				AM.forceMove(temp)
-
-			valid = 0
-			recipe = select_recipe(RECIPE_LIST(appliancetype),src)
-			if (recipe && recipe.result == result)
-				sleep(2)
-				valid = 1
-
-		for (var/r in cooked_items)
-			var/atom/movable/R = r
-			R.forceMove(src) //Move everything from the buffer back to the container
-
-		qdel(temp)//Delete buffer object
-		temp = null
-
-		//Any leftover reagents are divided amongst the foods
-		var/total = reagents.total_volume
-		for (var/obj/item/weapon/reagent_containers/food/snacks/S in cooked_items)
-			reagents.trans_to_holder(S.reagents, total/cooked_items.len)
-
-		for (var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
-			S.cook()
-
-		dispose(0) //clear out anything left
-		stop()
+/obj/machinery/microwave/proc/update_cook_time(var/ct = 200)
+	RefreshParts()
+	return (ct / cooking_power)
+
+/obj/machinery/microwave/proc/finish_cooking()
+	var/result = recipe.result
+	var/valid = TRUE
+	var/list/cooked_items = list()
+	var/obj/temp = new /obj(src) //To prevent infinite loops, all results will be moved into a temporary location so they're not considered as inputs for other recipes
+	while(valid)
+		var/list/things = list()
+		things.Add(recipe.make_food(src))
+		cooked_items += things
+		//Move cooked things to the buffer so they're not considered as ingredients
+		for (var/atom/movable/AM in things)
+			AM.forceMove(temp)
+
+		valid = FALSE
+		recipe = select_recipe(RECIPE_LIST(appliancetype),src)
+		if (recipe && recipe.result == result)
+			sleep(2)
+			valid = TRUE
+
+	for (var/r in cooked_items)
+		var/atom/movable/R = r
+		R.forceMove(src) //Move everything from the buffer back to the container
+
+	QDEL_NULL(temp)//Delete buffer object
+
+	//Any leftover reagents are divided amongst the foods
+	var/total = reagents.total_volume
+	for (var/obj/item/weapon/reagent_containers/food/snacks/S in cooked_items)
+		reagents.trans_to_holder(S.reagents, total/cooked_items.len)
+
+	for (var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
+		S.cook()
+
+	eject(0) //clear out anything left
 
+	return
+
+/obj/machinery/microwave/process() // What you see here are the remains of proc/wzhzhzh, 2010 - 2019. RIP.
+	if (stat & (NOPOWER|BROKEN))
+		stop()
 		return
 
-/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z
-	for (var/i=1 to seconds)
-		if (stat & (NOPOWER|BROKEN))
-			return 0
-		use_power(active_power_usage)
-		sleep(10)
-	return 1
+	use_power(active_power_usage)
+
+	if(world.time > end_time)
+		stop()
+
+/obj/machinery/microwave/proc/half_time_process()
+	playsound(src, 'sound/machines/click.ogg', 20, 1)
+
+	if(failed)
+		visible_message(span("warning", "\The [src] begins to leak an acrid smoke..."))
 
 /obj/machinery/microwave/proc/has_extra_item()
 	for (var/obj/O in contents)
 		if ( \
 				!istype(O,/obj/item/weapon/reagent_containers/food) && \
 				!istype(O, /obj/item/weapon/grown) \
 			)
-			return 1
-	return 0
+			return TRUE
+	return FALSE
 
 /obj/machinery/microwave/proc/start()
-	src.visible_message("<span class='notice'>The microwave turns on.</span>", "<span class='notice'>You hear a microwave.</span>")
-	src.operating = 1
-	src.icon_state = "mw1"
-	src.updateUsrDialog()
+	start_time = world.time
+	end_time = cook_time + start_time
+	operating = TRUE
+
+	START_PROCESSING(SSprocessing, src)
+	addtimer(CALLBACK(src, .proc/half_time_process), cook_time / 2)

If microwave is broken mid cooking timer just does it's thing anyway. Better migth want to add way to stop it or handle half time events inside process()

JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 	else if(default_part_replacement(user, O))
 		return
 	else
-
-		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+		if (contents.len>=max_n_of_items)
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
+			return 1
+		if(istype(O, /obj/item/stack))
+			var/obj/item/stack/S = O
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
+		else
+			add_item(O, user)
+			return
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
+
+/obj/machinery/microwave/AltClick()
+	if(!operating)
+		cook()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty >= 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
+
+/obj/machinery/microwave/examine(var/mob/user)
+	..()
+	if(broken > 0)
+		to_chat(user, "It's broken!")
+	else if(dirty >= 100)
+		to_chat(user, "The insides are completely filthy!")
+	else if(dirty > 75)
+		to_chat(user, "It's covered in stains.")
+	else if(dirty > 50)
+		to_chat(user, "It's pretty messy.")
+	else if(dirty > 25)
+		to_chat(user, "It's a bit dirty.")
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
+	watch_var("failed", "failed")
+	watch_var("cook_time", "cook_time")
+	watch_var("start_time", "start_time")
+
+/obj/machinery/microwave/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = data = monitordata
+
+	// init data objects if they aren't already
+	LAZYINITLIST(data["cookingobjs"])
+	LAZYINITLIST(data["cookingreas"])
+
+	// if BYOND lists are smaller than UI, then something (or everything) was removed - wipe the list
+	if(LAZYLEN(contents) < LAZYLEN(data["cookingobjs"]))
+		VUEUI_SET_CHECK(data["cookingobjs"], list(), ., data)
+	if(LAZYLEN(reagents.reagent_list) < LAZYLEN(data["cookingreas"]))
+		VUEUI_SET_CHECK(data["cookingreas"], list(), ., data)

Maybe you should directly alter UI data when removing ingredients? by doing something like:

for(var/i in SSvueui.get_open_uis(src))
    var/datum/vueui/ui = i
    ui.data["cookingobjs"] -= "[rmeovedobj]"
JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 	else
 		setup_recipes()
 
+	if(component_parts)
+		component_parts.Cut()
+	else
+		component_parts = list()
+
+	for (var/type in component_types)
+		var/count = component_types[type]
+		for(var/i in 1 to count)

This runtimes. Fix it.

JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on">+      <p>{{ cookingMessage }}</p>+      <vui-progress :value="$root.$data.wtime" :min="start_time" :max="start_time + cook_time"/>

progress component does not cap value value, so you need to add cap here or at progress component. Else it migth extend past it's limits. Like how vote timer counts a bit to negative numbers.

JohnWildkins

comment created time in a month

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on">+      <p>{{ cookingMessage }}</p>

I don't like use of computed property to affect message. pastHalfTime could be replaced with $root.$data.wtime > (start_time + (cook_time / 2))

      <template v-if="pastHalfTime">
        <p v-if="!ingredientsPresent">There's nothing inside. Microwave works, though.</p>
        <p v-else-if="failed">Something doesn't look right...</p>
        <p v-else>It's cooking nicely!</p>
      </template>
      <p v-else>It's starting to cook...</p>
JohnWildkins

comment created time in a month

push eventKarolis2011/Aurora.3

Karolis

commit sha 37f6121f1bb08f2cae4a301afdc385da0ec46fb3

Update code/modules/modular_computers/file_system/programs/generic/records.dm Co-Authored-By: alsoandanswer <42310821+alsoandanswer@users.noreply.github.com>

view details

push time in a month

pull request commentAurorastation/Aurora.3

Removes old record consoles, ports them to programs

This PR needs sprites and map fixes. for now !review

Karolis2011

comment created time in a month

push eventKarolis2011/Aurora.3

Lady Fowl

commit sha abe6e4b80b1214e46107ee2fabdb7e3bf018505d

Ports Bubblegum (#7195)

view details

AuroraBuildBot

commit sha 1bf2719e0d17e2357033dca25f0b849a6125fe2c

"[ci skip] Automatic Build - 2019.10.22.07.21.04"

view details

ParadoxSpace

commit sha 603aa13d4855bcd68c47c91760082c058bad704c

Skrell Glowing Algae Fix (#7229) The 'circles' was slightly crooked. This fixes that.

view details

AuroraBuildBot

commit sha 98c2612b649c69ec65a9d23dfd7e1077b3acc8d2

"[ci skip] Automatic Build - 2019.10.22.17.06.05"

view details

Fire-and-Glory

commit sha 60abb10526399d62bb09d6201bd13fdcce6662e4

Vox sprites (#7197) Someone changed a few sec armor sprites at some point, so the old ones don't work. Added new sprites for Vox which do work based off of the new additions.

view details

AuroraBuildBot

commit sha dba3d91bc7929789530fe2b8f1aacf759769e5db

"[ci skip] Automatic Build - 2019.10.22.17.07.25"

view details

Mykhailo Bykhovtsev

commit sha 23cb82a5fd2ac5bf83f748cc67af5cff7df6b304

Adding verb to empty Bags quickly (#7140) Enabled verb for quick emptying of backpacks. Bags have a delay to empty. Which is base 0.5 second per item. Captain, Syndicate, Engineering, Wizard Bags have 0.8 second delay per item. as per suggeestion thread: https://forums.aurorastation.org/topic/12927-allow-people-to-dump-out-bags/

view details

AuroraBuildBot

commit sha b38651ef80a7cfb60f51cf68fa47af05ef8b0fb8

"[ci skip] Automatic Build - 2019.10.22.17.09.56"

view details

Matt Atlas

commit sha 0e2a116117cafbc3c366668be983dd5b27d2ecb9

Ports the neural suppressor from Bay (#7124) Neural Suppressor -> You click table with a man laying on it. The man goes to sleep. Really is that easy.

view details

AuroraBuildBot

commit sha 73610b999eafdebbd714d8cbabb374c8e74bd0df

"[ci skip] Automatic Build - 2019.10.22.17.37.05"

view details

Karolis

commit sha b7e34d55433ecdf6eb10add4c4f7c0762207d96d

Makes new player panel gap consistant (#7223)

view details

AuroraBuildBot

commit sha a59bd25fded89a84115eaa334a6a3fcb7d75f77f

"[ci skip] Automatic Build - 2019.10.23.03.35.46"

view details

JohnWildkins

commit sha ef34fd3a43de5bdcc70d40fa9ee79083f7cbba89

Heads of staff buff (clipboard QOL + fixes) (#7204) * make clipboards great again * geevies is right Co-Authored-By: Geeves <ggrobler447@gmail.com>

view details

AuroraBuildBot

commit sha 59c10f134ee1e936360fe8a59b6428c00790e2c2

"[ci skip] Automatic Build - 2019.10.23.03.37.55"

view details

Karolis

commit sha 7e9901fac450e4665d6c0da31359180972d11615

Better docs for VueUI (#7211)

view details

Geeves

commit sha 037887700eb8e5ead55aca7c90708d56d5fcc22d

Tweaks some Radio channels and Staff channels to be more visible. (#7176) Resolves #1924

view details

Mykhailo Bykhovtsev

commit sha b167f0eadea0096620062a5d636eec7b2a8f6fce

Tesla tweaks and bugfixes (#6955) Bugfix: Tesla no longer gains energy from just colliding with objects Bugfix: Fixes sprite for singularity beacon not showing up Bugfix: Tesla no longer spams admin longs when a new ball is created outside of containment Bugfix: Telsa looses energy when dropping ball which should be slightly below how much is required for new ball. tweak: Tesla dissipation rate has been buffed, it now looses energy faster tweak: Tesla dissipates every time it zaps something tweak: Tesla now melts any object or mob(but not turfs) it touches or when it zaps it while sacrificing a miniball. rscadd: Added special emergency singularity beacon that is to be used when Singulo/Telsa are on the Loose. When Tesla zaps the beacon, it will discharge all energy into it, dying and destroying beacon.

view details

AuroraBuildBot

commit sha 741bb2d5ee08be4f08dba27b7a99ae9fb0dbc74c

"[ci skip] Automatic Build - 2019.10.23.18.10.35"

view details

Karolis

commit sha a38415ed2c503e1f8b3b2c1a646eadbacbf01fb5

Added little sound. (#7215)

view details

synystersparx

commit sha 892674d7f7755dcc36a0ab62417e7357ee034ee1

Fix minor typos in cultist tome (#7218) Fix minor typos in cultist tome

view details

push time in a month

push eventKarolis2011/Aurora.3

Karolis2011

commit sha c0faf60ce717a0a8d0ee0bccdfd88d721946fbe5

Added records to presets

view details

Karolis2011

commit sha 3afe13c115d101d7476885240af54ebbb8f30c63

Huge update, I lost track.

view details

push time in a month

pull request commentAurorastation/Aurora.3

Removes old record consoles, ports them to programs

Like nothing really changed... Thoes programs so far work exactly like consoles. Even login button is there. Record refactor was being done with this being a thing.

Honestly my dream was to have records on modular computers, but things needed to have them were just too long like three major projects were to just accomplish this dream 1 - VueUi to build eveneryting on top of it, 2 - Records being refactored to be better and new UI and 3 - Modular computers supporting VueUi. And this is probably last installment in this saga.

Karolis2011

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Reviewers
Removes old record consoles, ports them to programs WIP
  • [ ] Add record printing
+60 -86

0 comment

4 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-22-Record-port-to-computers

created branch time in 2 months

pull request commentAurorastation/Aurora.3

Makes new player panel gap consistant

!review

Karolis2011

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Makes new player panel gap consistant

Adds gap like this one at round start. a

+6 -2

0 comment

2 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-22-New-playerpanel-wild-new-line

created branch time in 2 months

pull request commentAurorastation/Aurora.3

Added little sound when map capture is done.

!review

Karolis2011

comment created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-20-Audio-feedback

created branch time in 2 months

pull request commentAurorastation/Aurora.3

Better docs for VueUI

!revire

Karolis2011

comment created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-18-VueUI-doc-improvements

created branch time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 	user.set_machine(src)
 	if(broken > 0)
 		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
-	else if(dirty == 100)
+	else if(dirty >= 100)
 		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
 	else
 		ui_interact(user)
 
+/obj/machinery/microwave/examine(var/mob/user)
+	..()
+	if(broken > 0)
+		to_chat(user, "It's broken!")
+	else if(dirty >= 100)
+		to_chat(user, "The insides are completely filthy!")
+	else if(dirty > 75)
+		to_chat(user, "It's covered in stains.")
+	else if(dirty > 50)
+		to_chat(user, "It's pretty messy.")
+	else if(dirty > 25)
+		to_chat(user, "It's a bit dirty.")
+
 /*******************
 *   Microwave Menu
 ********************/
 
 VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
 	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
+	watch_var("recipe", "recipe")

You need to use too boolean transform here.

JohnWildkins

comment created time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 7a15e58d9b495d9af5797845d3c131c6b0c61c34

Change log

view details

push time in 2 months

pull request commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

Please also note, world.time and wtime is in deciseconds. Aka 20 in wtime is 2s.

Also Client side $root.$data.wtime is tracked on client side, and it means that progress bar will progress smootly.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
 	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
-/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+/obj/machinery/microwave/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
 	var/monitordata = ..()
 	if(monitordata)
-		. = newdata = monitordata
+		. = data = monitordata
+
+	// init data objects if they aren't already
+	LAZYINITLIST(data["cookingobjs"])
+	LAZYINITLIST(data["cookingreas"])
 
-	newdata["cookingobjs"] = list()
-	newdata["cookingreas"] = list()
+	// set up the progress bar vars
+	VUEUI_SET_CHECK(data["cook_start"], start_time, ., data)
+	VUEUI_SET_CHECK(data["cook_elapsed"], world.time, ., data) // needed to update progress

Just no. No. https://github.com/Aurorastation/Aurora.3/tree/master/vueui#wtime---global-world-time-since-boot-client-side-guess-of-wordtime

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on">+      <p>Cooking...</p>+      <vui-progress :value="cook_elapsed" :min="cook_start" :max="cook_duration"/>
      <vui-progress :value="$root.$data.wtime" :min="cook_start" :max="cook_start + cook_time"/>
JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 		for (var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
 			S.cook()
 
-		dispose(0) //clear out anything left
-		stop()
+		eject(0) //clear out anything left
 
 		return
 
-/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z
-	for (var/i=1 to seconds)
-		if (stat & (NOPOWER|BROKEN))
-			return 0
+/obj/machinery/microwave/proc/cook_for_time(var/failed = FALSE, var/dirt = FALSE, var/broke = FALSE) // Formerly proc/wzhzhzh, may it rest in peace
+	start_time = world.time
+	var/half_time = cook_time / 2
+	var/obj/cooked
+
+	start(dirt)
+
+	for (var/i=1 to half_time)
+		if ((stat & (NOPOWER|BROKEN)) || abort) // Safe to abort early on
+			stop(dirt, broke)
+			return FALSE
+		use_power(active_power_usage)
+		sleep(10)
+		SSvueui.check_uis_for_change(src)
+
+	playsound(src, 'sound/machines/click.ogg', 20, 1) // Mid-way through cooking 'click'
+
+	for (var/j=half_time to cook_time)
+		if ((stat & (NOPOWER|BROKEN)))
+			stop()
+			return FALSE
+		else if(abort) // Not safe to abort anymore - egads, the roast is ruined!
+			if(failed)
+				cooked = fail()
+				cooked.forceMove(loc)
+			stop(dirt, broke)
+			return FALSE
 		use_power(active_power_usage)
 		sleep(10)
-	return 1
+		SSvueui.check_uis_for_change(src)
+
+	if(failed)
+		cooked = fail()
+		cooked.forceMove(loc)
+		stop(dirt, broke)
+		return FALSE
+
+	stop(dirt, broke)
+
+	return TRUE

Maybe this should be refactored to use timers, instead of sleeping?? https://github.com/Aurorastation/Aurora.3/wiki/Timers Or maybe use process() and do checks there?

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
 	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))

Just add , instead of VUEUI_SET_CHECK(...):

watch_var("cook_time", "cook_time")
watch_var("start_time", "start_time")
JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on == true">+      <p>Cooking...</p>+      <vui-progress v-if="cook_time" :value="cur_time" :max="cook_time"/>+      <vui-button class="danger danger-control" icon="exclamation-triangle" push-state :params="{abort: 1}">Abort!</vui-button>

push-state is absolutely unnecessary here, as you do not read client side data or modify it on client side. This just adds bloat to network traffic.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on == true">+      <p>Cooking...</p>+      <vui-progress v-if="cook_time" :value="cur_time" :max="cook_time"/>+      <vui-button class="danger danger-control" icon="exclamation-triangle" push-state :params="{abort: 1}">Abort!</vui-button>+    </template>+    <template v-else>+      <h4>Ingredients</h4>+      <ul>+        <li v-if="cookingobjs.length == 0 && cookingreas.length == 0">The microwave is empty!</li>+        <li v-for="obj in cookingobjs" :key="obj.name">+          <vui-button push-state :params="{ eject: obj.name }"> {{ obj.name }} • {{ obj.qty }}+          </vui-button>+        </li>+        <li v-for="r in cookingreas" :key="r.name">+          <vui-button push-state :params="{ eject: r.name }"> {{ r.name }} • {{ r.amt }} units+          </vui-button>+        </li>+      </ul>+      <vui-button class="danger danger-control" icon="trash" push-state :params="{eject_all: 1}">Eject All</vui-button>+      <vui-button class="control" push-state :params="{cook: 1}">Cook!</vui-button>+    </template>+  </div>+</template>++<script>+export default {+  data() {+    return this.$root.$data.state; // Make data more easily accessible+  }+};+</script>++<style lang="scss" scoped>+  // I am so sorry.+  ul {+    padding: 4px 4px 10px 10px;+  }+  .danger-control {+    position: fixed;+    right: 20px;+    bottom: 20px;+  }+  .control {+    position: fixed;+    left: 20px;+    bottom: 20px;+  }+</style>

Styles are a bit iffy, but this might need a better solution in future. Will suggest how to solve this in future.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on == true">+      <p>Cooking...</p>+      <vui-progress v-if="cook_time" :value="cur_time" :max="cook_time"/>+      <vui-button class="danger danger-control" icon="exclamation-triangle" push-state :params="{abort: 1}">Abort!</vui-button>+    </template>+    <template v-else>+      <h4>Ingredients</h4>+      <ul>+        <li v-if="cookingobjs.length == 0 && cookingreas.length == 0">The microwave is empty!</li>

Might want to use computed property, but I am still not sure as this is WIP. Also migth want to make this statement not inside buletin list.

        <li v-if="!cookingobjs.length && !cookingreas.length">The microwave is empty!</li>
JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

+<template>+  <div>+    <template v-if="on == true">
    <template v-if="on">
JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 			return 1
 	return 0
 
-/obj/machinery/microwave/proc/start()
-	src.visible_message("<span class='notice'>The microwave turns on.</span>", "<span class='notice'>You hear a microwave.</span>")
-	src.operating = 1
-	src.icon_state = "mw1"
-	src.updateUsrDialog()
+/obj/machinery/microwave/proc/start(var/muck = FALSE)
+	visible_message("<span class='notice'>The microwave turns on.</span>", "<span class='notice'>You hear a microwave.</span>")
+	operating = TRUE
+	if(muck)
+		playsound(loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
+		icon_state = "mwbloody1" // Make it look dirty!!
+	else
+		icon_state = "mw1"
 	set_light(1.5)
 	soundloop.start()
 
-/obj/machinery/microwave/proc/abort()
-	after_finish_loop()
-	src.operating = 0 // Turn it off again aferwards
-	src.icon_state = "mw"
-	src.updateUsrDialog()
-
-/obj/machinery/microwave/proc/stop()
+/obj/machinery/microwave/proc/stop(var/muck = FALSE, var/broken = FALSE)
 	after_finish_loop()
-	src.operating = 0 // Turn it off again aferwards
-	src.icon_state = "mw"
-	src.updateUsrDialog()
-
-/obj/machinery/microwave/proc/dispose(var/message = 1)
-	for (var/atom/movable/A in contents)
-		A.forceMove(loc)
-	if (src.reagents.total_volume)
-		src.dirty++
-	src.reagents.clear_reagents()
-	if (message)
-		to_chat(usr, "<span class='notice'>You dispose of the microwave contents.</span>")
-	src.updateUsrDialog()
-
-/obj/machinery/microwave/proc/muck_start()
-	playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
-	src.icon_state = "mwbloody1" // Make it look dirty!!
-
-/obj/machinery/microwave/proc/muck_finish()
-	after_finish_loop()
-	src.visible_message("<span class='warning'>The microwave gets covered in muck!</span>")
-	src.dirty = 100 // Make it dirty so it can't be used util cleaned
-	src.flags = null //So you can't add condiments
-	src.icon_state = "mwbloody" // Make it look dirty too
-	src.operating = 0 // Turn it off again aferwards
-	src.updateUsrDialog()
-
-/obj/machinery/microwave/proc/broke()
-	after_finish_loop()
-	spark(src, 2, alldirs)
-	src.icon_state = "mwb" // Make it look all busted up and shit
-	src.visible_message("<span class='warning'>The microwave breaks!</span>") //Let them know they're stupid
-	src.broken = 2 // Make it broken so it can't be used util fixed
-	src.flags = null //So you can't add condiments
-	src.operating = 0 // Turn it off again aferwards
-	src.updateUsrDialog()
+	operating = FALSE // Turn it off again aferwards
+	if(muck || broken)
+		flags = null //So you can't add condiments
+		close_cooking_uis() // Can't use this anymore!

This should not be needed as VueUI code should handle things that are broken and unusable via Topic states.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 	if(standard_splash_mob(user, target))
 		return
 	if(standard_pour_into(user, target))
+		if(SSvueui.get_open_uis(target)) // blame whoever decided beakers should go in afterattack()
+			SSvueui.check_uis_for_change(target)

Remove if, just do check for change. You are just wasting time.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 		for (var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
 			S.cook()
 
-		dispose(0) //clear out anything left
-		stop()
+		eject(0) //clear out anything left
 
 		return
 
-/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z
-	for (var/i=1 to seconds)
-		if (stat & (NOPOWER|BROKEN))
-			return 0
-		use_power(active_power_usage)
-		sleep(10)
-	return 1
+/obj/machinery/microwave/proc/cook_for_time(var/cook_time = 20, var/failed = FALSE, var/dirt = FALSE, var/broke = FALSE) // Formerly proc/wzhzhzh, may it rest in peace
+	start(dirt)
+
+	var/half_time = cook_time / 2
+	var/obj/cooked
+	for (var/i=1 to half_time)
+		if ((stat & (NOPOWER|BROKEN)) || abort) // Safe to abort early on
+			stop(dirt, broke)
+			return FALSE
+		else
+			use_power(active_power_usage)
+			update_cooking_ui(cook_time, i)
+			sleep(10)
+
+	playsound(src, 'sound/machines/click.ogg', 20, 1) // Mid-way through cooking 'click'
+
+	for (var/j=half_time to cook_time)
+		if ((stat & (NOPOWER|BROKEN)))
+			stop()
+			return FALSE
+		else if(abort) // Not safe to abort anymore - egads, the roast is ruined!
+			if(failed)
+				cooked = fail()
+				cooked.forceMove(loc)
+			stop(dirt, broke)
+			return FALSE
+		else
+			use_power(active_power_usage)
+			update_cooking_ui(cook_time, j)
+			sleep(10)
+
+	if(failed)
+		cooked = fail()
+		cooked.forceMove(loc)
+		stop(dirt, broke)
+		return FALSE
+
+	stop(dirt, broke)
+
+	return TRUE
+
+/obj/machinery/microwave/proc/update_cooking_ui(var/cook_time, var/cur_time)
+	for(var/datum/vueui/ui in SSvueui.get_open_uis(src))
+		ui.data["cook_time"] = cook_time
+		ui.data["cur_time"] = cur_time
+	SSvueui.check_uis_for_change(src)

You should not directly modify in this case ui data. Use var monitors.

In this case you should just keep track of when cooking started and when it should end. Use world.time DM and wtime state variable for time tracking. For how it can be used, look at faxmachine code.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = newdata = monitordata
+
+	newdata["cookingobjs"] = list()
+	newdata["cookingreas"] = list()
+
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cook_time"], 40, ., newdata)
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cur_time"], 0, ., newdata)
+
+	if (contents && contents.len)
+		var/list/cook_count = list()
+		for (var/obj/O in contents)
+			cook_count[O.name]++
+		for (var/C in cook_count)
+			newdata["cookingobjs"] += list(list("name" = "[C]", "qty" = "[cook_count[C]]"))
+	if (reagents.reagent_list && reagents.reagent_list.len)
 		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 += {"<B>[display_name]:</B> [R.volume] unit\s<BR>"}
-
-		if (items_counts.len==0 && reagents.reagent_list.len==0)
-			dat = {"<B>The microwave is empty</B><BR>"}
-		else
-			dat = {"<b>Ingredients:</b><br>[dat]"}
-		dat += {"<HR><BR>\
-<A href='?src=\ref[src];action=cook'>Turn on!<BR>\
-<A href='?src=\ref[src];action=dispose'>Eject ingredients!<BR>\
-"}
-
-	user << browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave")
-	onclose(user, "microwave")
-	return
+			newdata["cookingreas"] += list(list("name" = "[R.name]", "amt" = "[R.volume]"))

If there are are duplicate reagents, this should be refactored to use VUEUI_SET_CHECK and maps (objects), instead of using arrays.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = newdata = monitordata
+
+	newdata["cookingobjs"] = list()
+	newdata["cookingreas"] = list()
+
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cook_time"], 40, ., newdata)
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cur_time"], 0, ., newdata)
+
+	if (contents && contents.len)
+		var/list/cook_count = list()
+		for (var/obj/O in contents)
+			cook_count[O.name]++
+		for (var/C in cook_count)
+			newdata["cookingobjs"] += list(list("name" = "[C]", "qty" = "[cook_count[C]]"))
			VUEUI_SET_CHECK(newdata["cookingobjs"][C], cook_count[C], ., newdata)

This would prevent the mess that is below.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 		for (var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
 			S.cook()
 
-		dispose(0) //clear out anything left
-		stop()
+		eject(0) //clear out anything left
 
 		return
 
-/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z
-	for (var/i=1 to seconds)
-		if (stat & (NOPOWER|BROKEN))
-			return 0
-		use_power(active_power_usage)
-		sleep(10)
-	return 1
+/obj/machinery/microwave/proc/cook_for_time(var/cook_time = 20, var/failed = FALSE, var/dirt = FALSE, var/broke = FALSE) // Formerly proc/wzhzhzh, may it rest in peace
+	start(dirt)
+
+	var/half_time = cook_time / 2
+	var/obj/cooked
+	for (var/i=1 to half_time)
+		if ((stat & (NOPOWER|BROKEN)) || abort) // Safe to abort early on
+			stop(dirt, broke)
+			return FALSE
+		else
+			use_power(active_power_usage)
+			update_cooking_ui(cook_time, i)
+			sleep(10)
+
+	playsound(src, 'sound/machines/click.ogg', 20, 1) // Mid-way through cooking 'click'
+
+	for (var/j=half_time to cook_time)
+		if ((stat & (NOPOWER|BROKEN)))
+			stop()
+			return FALSE
+		else if(abort) // Not safe to abort anymore - egads, the roast is ruined!
+			if(failed)
+				cooked = fail()
+				cooked.forceMove(loc)
+			stop(dirt, broke)
+			return FALSE
+		else
+			use_power(active_power_usage)
+			update_cooking_ui(cook_time, j)
+			sleep(10)
+
+	if(failed)
+		cooked = fail()
+		cooked.forceMove(loc)
+		stop(dirt, broke)
+		return FALSE
+
+	stop(dirt, broke)
+
+	return TRUE
+
+/obj/machinery/microwave/proc/update_cooking_ui(var/cook_time, var/cur_time)
+	for(var/datum/vueui/ui in SSvueui.get_open_uis(src))
+		ui.data["cook_time"] = cook_time
+		ui.data["cur_time"] = cur_time
+	SSvueui.check_uis_for_change(src)
+
+/obj/machinery/microwave/proc/close_cooking_uis()
+	for(var/datum/vueui/ui in SSvueui.get_open_uis(src))
+		ui.close()

There is no point to this proc. SSvueui.close_uis(obj)

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = newdata = monitordata
+
+	newdata["cookingobjs"] = list()
+	newdata["cookingreas"] = list()

Use LAZYINITLIST(list) to not override existing data.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)

newdata is kinda obsolete name for this argument as currently it's being called more often data it's name represents that data is incomming change from ui. Reminder that if ui.data == newdata then it's just check for change.

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = newdata = monitordata
+
+	newdata["cookingobjs"] = list()
+	newdata["cookingreas"] = list()
+
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cook_time"], 40, ., newdata)
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cur_time"], 0, ., newdata)
+
+	if (contents && contents.len)

LAZYLEN(contents) would look way nicer

JohnWildkins

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Microwave Overhaul, or: death to user << browse

 					"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
 					"<span class='notice'>You have cleaned the microwave.</span>" \
 				)
-				src.dirty = 0 // It's clean!
-				src.broken = 0 // just to be sure
-				src.icon_state = "mw"
-				src.flags = OPENCONTAINER | NOREACT
+				dirty = 0 // It's clean!
+				broken = 0 // just to be sure
+				icon_state = "mw"
+				flags = OPENCONTAINER | NOREACT
 		else //Otherwise bad luck!!
 			to_chat(user, "<span class='warning'>It's dirty!</span>")
 			return 1
 	else if(is_type_in_list(O,acceptable_items))
 		if (contents.len>=max_n_of_items)
-			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
+			to_chat(user, "<span class='warning'>This [src] is full of ingredients, you can't fit any more!</span>")
 			return 1
-		if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
+		if(istype(O, /obj/item/stack))
 			var/obj/item/stack/S = O
-			new O.type (src)
-			S.use(1)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
-				"<span class='notice'>You add one of [O] to \the [src].</span>")
-			return
+			if(S.get_amount() > 1)
+				new O.type (src)
+				S.use(1)
+				user.visible_message( \
+					"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
+					"<span class='notice'>You add one of [O] to \the [src].</span>")
+				SSvueui.check_uis_for_change(src)
+				return
+			else
+				add_item(O, user)
 		else
-		//	user.remove_from_mob(O)	//This just causes problems so far as I can tell. -Pete
-			user.drop_from_inventory(O,src)
-			user.visible_message( \
-				"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
-				"<span class='notice'>You add \the [O] to \the [src].</span>")
+			add_item(O, user)
 			return
-	else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
-	        istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
-		)
+	else if(is_type_in_list(O, acceptable_containers))
 		if (!O.reagents)
 			return 1
 		for (var/datum/reagent/R in O.reagents.reagent_list)
 			if (!(R.id in acceptable_reagents))
 				to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
 				return 1
-		return
+		return // Note to the future: reagents are added after this in the container's afterattack().
 	else if(istype(O,/obj/item/weapon/grab))
 		var/obj/item/weapon/grab/G = O
 		to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
 		return 1
 	else if(O.iscrowbar())
 		user.visible_message( \
-			"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
-			"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] begins [anchored ? "unsecuring" : "securing"] the microwave.</span>", \
+			"<span class='notice'>You attempt to [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
 		if (do_after(user,20/O.toolspeed))
 			user.visible_message( \
-			"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
-			"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
+			"<span class='notice'>\The [user] [anchored ? "unsecures" : "secures"] the microwave.</span>", \
+			"<span class='notice'>You [anchored ? "unsecure" : "secure"] the microwave.</span>"
 			)
-			src.anchored = !src.anchored
+			anchored = !anchored
 		else
 			to_chat(user, "<span class='notice'>You decide not to do that.</span>")
 	else
-
 		to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
+	SSvueui.check_uis_for_change(src)
 	..()
-	src.updateUsrDialog()
 
 /obj/machinery/microwave/attack_ai(mob/user as mob)
 	if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
 		attack_hand(user)
 
 /obj/machinery/microwave/attack_hand(mob/user as mob)
 	user.set_machine(src)
-	interact(user)
+	if(broken > 0)
+		to_chat(user, "<span class='warning'>\The [name] is broken! You'll need to fix it before using it.</span>")
+	else if(dirty == 100)
+		to_chat(user, "<span class='warning'>\The [name] is dirty! You'll need to clean it before using it.</span>")
+	else
+		ui_interact(user)
 
 /*******************
 *   Microwave Menu
 ********************/
 
-/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
-	var/dat = ""
-	if(src.broken > 0)
-		dat = {"<TT>Bzzzzttttt</TT>"}
-	else if(src.operating)
-		dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
-	else if(src.dirty==100)
-		dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
-	else
-		var/list/items_counts = new
-		var/list/items_measures = new
-		var/list/items_measures_p = new
-		for (var/obj/O in contents)
-			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 += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
-			else
-				if (N==1)
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
-				else
-					dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
+VUEUI_MONITOR_VARS(/obj/machinery/microwave, microwavemonitor)
+	watch_var("operating", "on", CALLBACK(null, .proc/transform_to_boolean, FALSE))
 
+/obj/machinery/microwave/vueui_data_change(var/list/newdata, var/mob/user, var/datum/vueui/ui)
+	var/monitordata = ..()
+	if(monitordata)
+		. = newdata = monitordata
+
+	newdata["cookingobjs"] = list()
+	newdata["cookingreas"] = list()
+
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cook_time"], 40, ., newdata)
+	VUEUI_SET_CHECK_IFNOTSET(newdata["cur_time"], 0, ., newdata)
+
+	if (contents && contents.len)
+		var/list/cook_count = list()
+		for (var/obj/O in contents)
+			cook_count[O.name]++
+		for (var/C in cook_count)
+			newdata["cookingobjs"] += list(list("name" = "[C]", "qty" = "[cook_count[C]]"))
+	if (reagents.reagent_list && reagents.reagent_list.len)
 		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 += {"<B>[display_name]:</B> [R.volume] unit\s<BR>"}
-
-		if (items_counts.len==0 && reagents.reagent_list.len==0)
-			dat = {"<B>The microwave is empty</B><BR>"}
-		else
-			dat = {"<b>Ingredients:</b><br>[dat]"}
-		dat += {"<HR><BR>\
-<A href='?src=\ref[src];action=cook'>Turn on!<BR>\
-<A href='?src=\ref[src];action=dispose'>Eject ingredients!<BR>\
-"}
-
-	user << browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave")
-	onclose(user, "microwave")
-	return
+			newdata["cookingreas"] += list(list("name" = "[R.name]", "amt" = "[R.volume]"))
 
+	if(newdata["cookingobjs"] && contents && newdata["cookingobjs"].len != contents.len)
+		. = newdata
+	if(newdata["cookingreas"] && reagents.reagent_list && newdata["cookingreas"].len != reagents.reagent_list.len)
+		. = newdata

What is this mess?

JohnWildkins

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Improves z level struff
  • [x] Improves mimic according to lohikar's PR Baystation12/Baystation12#26862
  • [x] Adds look up verb
  • [x] Adds cross z level talking
+288 -158

0 comment

25 changed files

pr created time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha a9f23a7090d861d77e5e21049dc15938eee6fb82

Ops wrong plane

view details

push time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-13-zmmimick-port

created branch time in 2 months

pull request commentAurorastation/Aurora.3

Added white background to carachter preview.

!review

Karolis2011

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Reviewers
Added white background to carachter preview. Bugfix
+5 -1

0 comment

2 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-08-chat-setup-preview

created branch time in 2 months

startedhyperium/tonic

started time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 92a2cef45f4ef429d14f89cae4a38eae7ffd658b

.

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 9ad1a2dff51377df905b16a84765d33311093163

Arrow pointed out issues

view details

Karolis2011

commit sha 38f79525cc47bc7110e9470af9081fcc0f6d46be

I am dumb

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha c725647120020a423432665b8e23035ce5f25999

Change log

view details

push time in 2 months

pull request commentAurorastation/Aurora.3

Makes VueUI uis update again

!review

Karolis2011

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Makes VueUI uis update again Bugfix High Priority
+9 -7

0 comment

2 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-03-vueui-fix

created branch time in 2 months

issue closedAurorastation/Aurora.3

Record consoles cannot print

The new interface does allow them to have a print option nor are able to update photos. The "new record" option at the bottom also does not work.

closed time in 2 months

Keinto

issue commentAurorastation/Aurora.3

Record consoles cannot print

Duplicate of #6789

Keinto

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Mechanically enforces minimum age requirements for jobs

 		else if (ban_reason) 			dat += "<del>[rank]</del></td><td><b> \[<a href='?src=\ref[user.client];view_jobban=\ref[rank];'>BANNED</a>]</b></td></tr>" 			continue+		else if((character_age < job.minimum_character_age) && species.respects_age_requirements)+			dat += "<del>[rank]</del></td><td> \[MIN CHAR AGE: [job.minimum_character_age]]</td></tr>"
			dat += "<del>[rank]</del></td><td> \[MINIMUM AGE: [job.minimum_character_age]]</td></tr>"
NonQueueingMatt

comment created time in 2 months

Pull request review commentAurorastation/Aurora.3

Mechanically enforces minimum age requirements for jobs

 		else if (ban_reason) 			dat += "<del>[rank]</del></td><td><b> \[<a href='?src=\ref[user.client];view_jobban=\ref[rank];'>BANNED</a>]</b></td></tr>" 			continue+		else if((character_age < job.minimum_character_age) && species.respects_age_requirements)
		else if(species.respects_age_requirements && (character_age < job.minimum_character_age))
NonQueueingMatt

comment created time in 2 months

pull request commentAurorastation/Aurora.3

More themed uis

!review

Karolis2011

comment created time in 2 months

PR opened Aurorastation/Aurora.3

Reviewers
More themed uis

Thoes uis are:

  • Manifest on new player screen
  • Join menu
  • Species selection menu
  • Player poll
  • Newscasters
  • Secure safe / briefcase
  • Keycard auth terminal
  • ATMs
  • Suit Cyclers
+39 -26

0 comment

11 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-10-01-More-Theming

created branch time in 2 months

PR closed Aurorastation/Aurora.3

Adds Sol language and citizenship to dionea. Changelog Required Do Not Merge

This is done on behalf of Yonnimer.

+2 -1

2 comments

1 changed file

Karolis2011

pr closed time in 2 months

pull request commentAurorastation/Aurora.3

Adds Sol language and citizenship to dionea.

Closed due to request.

Karolis2011

comment created time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 703080042ec4ce0bb194089208a97b5eed0ec440

Auto link detection. Auto ping.

view details

Karolis2011

commit sha 9995b46766bf27ee0e3bebcdb065b7e1f71a750f

Preparations for another test.

view details

push time in 2 months

push eventAurorastation/Aurora.3

Karolis2011

commit sha 62abdb813cb5ad1d563ee8ffe7addddb5852637c

Zooming

view details

Karolis

commit sha e26585d6cc1babc2b71e6be13f121d180f236a44

Adds contribution guidelines to VueUI (#6915) This needs to be added, because documentation.

view details

Geeves

commit sha 6f409d937be4d3fc4bd5659ebe41d8a1855631b4

CRYO VISION OH SHIT BOI (#7070) Examining a cryopod allows you to see who's in it, if there's someone in it.

view details

AuroraBuildBot

commit sha 468fa225f0e1147d591dc89fbb365375bfe2ba43

"[ci skip] Automatic Build - 2019.09.29.10.31.07"

view details

Alberyk

commit sha 392bbbaa1ed0e8cc24c8316816703c2b82e1a4a0

Changes how vaurca phoron leaking works (#7047) -vaurca phoron tanks will only leak when damaged -removed the breeder commanding power -removes the vaurca monkey exhaling phoron

view details

AuroraBuildBot

commit sha 994c99b93cfdc4f10066967bf53cdb19ada1c589

"[ci skip] Automatic Build - 2019.09.29.10.32.37"

view details

Geeves

commit sha 0de575cfcec0f87a2c6272689ce29e2fc1f8c504

Unbraced drills no longer explode (#7066)

view details

AuroraBuildBot

commit sha 2ec65be2510348a3fc6429ffb3683f32d575a905

"[ci skip] Automatic Build - 2019.09.29.10.33.46"

view details

Joshie

commit sha 7e720b6b70566af34bca77d2ea4131cbbac40d74

Research Crematorium (#7073) Added two crematoriums to the research sublevel so that people can dispose of dead monkeys without people yelling "OMG ANIMAL CRUELTY" over radio when they go into the compactor. Also can be used to dispose of hazardous research materials or stuff like that.

view details

AuroraBuildBot

commit sha 7dd68f4055bf532d05d5b969743aff45db3efa4f

"[ci skip] Automatic Build - 2019.09.29.11.37.05"

view details

Karolis2011

commit sha 703080042ec4ce0bb194089208a97b5eed0ec440

Auto link detection. Auto ping.

view details

Karolis2011

commit sha 9995b46766bf27ee0e3bebcdb065b7e1f71a750f

Preparations for another test.

view details

Karolis2011

commit sha 736820dc45ee8aabfc14ac6a48f86b8006c3eb8a

Merges

view details

Karolis2011

commit sha dcc36012fa2c4a6884b8996c1f00748e9e394247

Compiles shit

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 62abdb813cb5ad1d563ee8ffe7addddb5852637c

Zooming

view details

push time in 2 months

push eventAurorastation/Aurora.3

OneOneThreeEight

commit sha 617ea81020e53d645258ce47c1ed4980f50df07c

Unapologetic Noobkiller Nerfs (#7003)

view details

AuroraBuildBot

commit sha e475a508197079368b3411b7cec7409ad788c2cb

"[ci skip] Automatic Build - 2019.09.24.09.18.39"

view details

fernerr

commit sha dcc8cd5256636b14ae3776d2b9a23dc7a8fdc3db

Fixes nonexistant path on a derelict that's causing travis errors. (#7056)

view details

Geeves

commit sha c0a90fe202c31dc8e579770baa98a2c460ae14a6

removes shocker circuit (#7059)

view details

AuroraBuildBot

commit sha 4602d8c527d4df85a9329dcd124b968c8f6e8aa3

"[ci skip] Automatic Build - 2019.09.24.17.03.28"

view details

Alberyk

commit sha bdfe3d5c19e3b87328cc69825659cc9be5ccd032

Adds access requirements to the cloning computer (#7040) * Adds access to the cloning computer. * Adds changelog too.

view details

AuroraBuildBot

commit sha 21924766c2172c2eaeff5130802aed27edc5c109

"[ci skip] Automatic Build - 2019.09.25.17.26.29"

view details

Haldreithen

commit sha c608b7cd637b4642689b76f81ea5486cfabd6527

Fix issue #7004 (#7062) Tacticool Turtleneck's side sprites were lowered by a couple a pixels

view details

Karolis

commit sha 60fae57b80881c11b5ca4e34f56ad63ea46590ae

Fixes horrible oversigth in things. (#7069) Thanks granpa skull!

view details

Geeves

commit sha ba063632a4f967b39bad9a8cf7a15550fe9fed3e

Fixes Emergency Shield Generators (#7067) Fixes E-Shield Generators to actually generate shields. Adds a few turfs that E-Shields would get used for. E-Shields check in an area two tiles around them, then deploy shields on places it thinks you want it to be. It looks sort of like this.

view details

AuroraBuildBot

commit sha 7b7f52db865e26d621c69bc7ddc7617b620be134

"[ci skip] Automatic Build - 2019.09.26.20.09.01"

view details

fernerr

commit sha 298927561b38485da3333a3f3838df1227d9df8b

Makes the surgery tray inventory open when clicked. (#7043) Made it so clicking a surgery tray opens its inventory, use click/drag instead to pick the tray up. Also made the tray spill if you hit someone or throw it.

view details

AuroraBuildBot

commit sha f032abc1cd1fba32381a244129dfe74323301f6e

"[ci skip] Automatic Build - 2019.09.26.20.09.51"

view details

Geeves

commit sha ce511f00638137b7ff197092bc53e9ee6cade7cb

adds autoinhaler and autoinjector to autolathe (#7058) Adds autoinhaler and autoinjector to autolathe. Gives autoinhaler and autoinjector material values (i'm open to suggestions to tweak 'em) This allows medical to come to cargo to print more of these and hand them out to crew. Good stuff. If anyone has any other ideas to add more (reasonable!) stuff to autolathes, you know where to contact me.

view details

AuroraBuildBot

commit sha 80052b3a5e98148273798b1b29252f4ab9d9654f

"[ci skip] Automatic Build - 2019.09.28.11.49.34"

view details

Karolis

commit sha c540d9d021524a2dd7db1b13b5a799a80fc1517a

dark skin for reals (#7084) This passed review with (#7035) let's get this.

view details

AuroraBuildBot

commit sha 66a6e32ca9ba535b56446120e461c3be26dee437

"[ci skip] Automatic Build - 2019.09.28.20.09.35"

view details

Karolis2011

commit sha bf724053910c07c9dded4b5e5851ec2c55446260

Adds buid target for chat

view details

Karolis2011

commit sha 5734869bdff018f7c119ab1af1a20555df17a4d5

Start of html chat

view details

Karolis2011

commit sha 1c726d09ba8127cbdfcffb4fc6497a84e0c08cba

Breaks everything

view details

push time in 2 months

PR opened Aurorastation/Aurora.3

Reviewers
Add HTML chat

I messed up Please kill me

Initial picture #7076 Also it's fine now look at this, better

picture

+930 -370

0 comment

135 changed files

pr created time in 2 months

push eventKarolis2011/Aurora.3

OneOneThreeEight

commit sha 617ea81020e53d645258ce47c1ed4980f50df07c

Unapologetic Noobkiller Nerfs (#7003)

view details

AuroraBuildBot

commit sha e475a508197079368b3411b7cec7409ad788c2cb

"[ci skip] Automatic Build - 2019.09.24.09.18.39"

view details

fernerr

commit sha dcc8cd5256636b14ae3776d2b9a23dc7a8fdc3db

Fixes nonexistant path on a derelict that's causing travis errors. (#7056)

view details

Geeves

commit sha c0a90fe202c31dc8e579770baa98a2c460ae14a6

removes shocker circuit (#7059)

view details

AuroraBuildBot

commit sha 4602d8c527d4df85a9329dcd124b968c8f6e8aa3

"[ci skip] Automatic Build - 2019.09.24.17.03.28"

view details

Alberyk

commit sha bdfe3d5c19e3b87328cc69825659cc9be5ccd032

Adds access requirements to the cloning computer (#7040) * Adds access to the cloning computer. * Adds changelog too.

view details

AuroraBuildBot

commit sha 21924766c2172c2eaeff5130802aed27edc5c109

"[ci skip] Automatic Build - 2019.09.25.17.26.29"

view details

Haldreithen

commit sha c608b7cd637b4642689b76f81ea5486cfabd6527

Fix issue #7004 (#7062) Tacticool Turtleneck's side sprites were lowered by a couple a pixels

view details

Karolis

commit sha 60fae57b80881c11b5ca4e34f56ad63ea46590ae

Fixes horrible oversigth in things. (#7069) Thanks granpa skull!

view details

Geeves

commit sha ba063632a4f967b39bad9a8cf7a15550fe9fed3e

Fixes Emergency Shield Generators (#7067) Fixes E-Shield Generators to actually generate shields. Adds a few turfs that E-Shields would get used for. E-Shields check in an area two tiles around them, then deploy shields on places it thinks you want it to be. It looks sort of like this.

view details

AuroraBuildBot

commit sha 7b7f52db865e26d621c69bc7ddc7617b620be134

"[ci skip] Automatic Build - 2019.09.26.20.09.01"

view details

fernerr

commit sha 298927561b38485da3333a3f3838df1227d9df8b

Makes the surgery tray inventory open when clicked. (#7043) Made it so clicking a surgery tray opens its inventory, use click/drag instead to pick the tray up. Also made the tray spill if you hit someone or throw it.

view details

AuroraBuildBot

commit sha f032abc1cd1fba32381a244129dfe74323301f6e

"[ci skip] Automatic Build - 2019.09.26.20.09.51"

view details

Geeves

commit sha ce511f00638137b7ff197092bc53e9ee6cade7cb

adds autoinhaler and autoinjector to autolathe (#7058) Adds autoinhaler and autoinjector to autolathe. Gives autoinhaler and autoinjector material values (i'm open to suggestions to tweak 'em) This allows medical to come to cargo to print more of these and hand them out to crew. Good stuff. If anyone has any other ideas to add more (reasonable!) stuff to autolathes, you know where to contact me.

view details

AuroraBuildBot

commit sha 80052b3a5e98148273798b1b29252f4ab9d9654f

"[ci skip] Automatic Build - 2019.09.28.11.49.34"

view details

Karolis

commit sha c540d9d021524a2dd7db1b13b5a799a80fc1517a

dark skin for reals (#7084) This passed review with (#7035) let's get this.

view details

AuroraBuildBot

commit sha 66a6e32ca9ba535b56446120e461c3be26dee437

"[ci skip] Automatic Build - 2019.09.28.20.09.35"

view details

Karolis2011

commit sha bf724053910c07c9dded4b5e5851ec2c55446260

Adds buid target for chat

view details

Karolis2011

commit sha 5734869bdff018f7c119ab1af1a20555df17a4d5

Start of html chat

view details

Karolis2011

commit sha 1c726d09ba8127cbdfcffb4fc6497a84e0c08cba

Breaks everything

view details

push time in 2 months

push eventKarolis2011/Aurora.3

OneOneThreeEight

commit sha 617ea81020e53d645258ce47c1ed4980f50df07c

Unapologetic Noobkiller Nerfs (#7003)

view details

AuroraBuildBot

commit sha e475a508197079368b3411b7cec7409ad788c2cb

"[ci skip] Automatic Build - 2019.09.24.09.18.39"

view details

fernerr

commit sha dcc8cd5256636b14ae3776d2b9a23dc7a8fdc3db

Fixes nonexistant path on a derelict that's causing travis errors. (#7056)

view details

Geeves

commit sha c0a90fe202c31dc8e579770baa98a2c460ae14a6

removes shocker circuit (#7059)

view details

AuroraBuildBot

commit sha 4602d8c527d4df85a9329dcd124b968c8f6e8aa3

"[ci skip] Automatic Build - 2019.09.24.17.03.28"

view details

Alberyk

commit sha bdfe3d5c19e3b87328cc69825659cc9be5ccd032

Adds access requirements to the cloning computer (#7040) * Adds access to the cloning computer. * Adds changelog too.

view details

AuroraBuildBot

commit sha 21924766c2172c2eaeff5130802aed27edc5c109

"[ci skip] Automatic Build - 2019.09.25.17.26.29"

view details

Haldreithen

commit sha c608b7cd637b4642689b76f81ea5486cfabd6527

Fix issue #7004 (#7062) Tacticool Turtleneck's side sprites were lowered by a couple a pixels

view details

Karolis

commit sha 60fae57b80881c11b5ca4e34f56ad63ea46590ae

Fixes horrible oversigth in things. (#7069) Thanks granpa skull!

view details

Geeves

commit sha ba063632a4f967b39bad9a8cf7a15550fe9fed3e

Fixes Emergency Shield Generators (#7067) Fixes E-Shield Generators to actually generate shields. Adds a few turfs that E-Shields would get used for. E-Shields check in an area two tiles around them, then deploy shields on places it thinks you want it to be. It looks sort of like this.

view details

AuroraBuildBot

commit sha 7b7f52db865e26d621c69bc7ddc7617b620be134

"[ci skip] Automatic Build - 2019.09.26.20.09.01"

view details

fernerr

commit sha 298927561b38485da3333a3f3838df1227d9df8b

Makes the surgery tray inventory open when clicked. (#7043) Made it so clicking a surgery tray opens its inventory, use click/drag instead to pick the tray up. Also made the tray spill if you hit someone or throw it.

view details

AuroraBuildBot

commit sha f032abc1cd1fba32381a244129dfe74323301f6e

"[ci skip] Automatic Build - 2019.09.26.20.09.51"

view details

Geeves

commit sha ce511f00638137b7ff197092bc53e9ee6cade7cb

adds autoinhaler and autoinjector to autolathe (#7058) Adds autoinhaler and autoinjector to autolathe. Gives autoinhaler and autoinjector material values (i'm open to suggestions to tweak 'em) This allows medical to come to cargo to print more of these and hand them out to crew. Good stuff. If anyone has any other ideas to add more (reasonable!) stuff to autolathes, you know where to contact me.

view details

AuroraBuildBot

commit sha 80052b3a5e98148273798b1b29252f4ab9d9654f

"[ci skip] Automatic Build - 2019.09.28.11.49.34"

view details

Karolis

commit sha c540d9d021524a2dd7db1b13b5a799a80fc1517a

dark skin for reals (#7084) This passed review with (#7035) let's get this.

view details

AuroraBuildBot

commit sha 66a6e32ca9ba535b56446120e461c3be26dee437

"[ci skip] Automatic Build - 2019.09.28.20.09.35"

view details

Karolis2011

commit sha c85295146397fe666c86cd4118add2a90548cb3a

CHANGELOG!

view details

push time in 2 months

PR closed Aurorastation/Aurora.3

Reviewers
Add HTML chat Changelog Required Do Not Merge VueUi

Please kill me

paveikslas

+930 -370

0 comment

135 changed files

Karolis2011

pr closed time in 2 months

delete branch Aurorastation/Aurora.3

delete branch : dark-theme-staging

delete time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 50889c90970d88fc6ec2256d9e1a17747d4c606e

CHANGELOG!

view details

push time in 2 months

PR opened Aurorastation/Aurora.3

Reviewers
dark skin for reals Awaiting Merge

This passed review with (#7035) let's get this.

+1659 -78

0 comment

12 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-09-28-dark-skin-for-reals

created branch time in 2 months

create barnchAurorastation/Aurora.3

branch : 19-09-26-HTML-chat-meme

created branch time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha e8eaa9e763daa8a8f1364ff2f465aa597ac1e325

Adds auto scroll

view details

Karolis2011

commit sha b75bda9cadf4f3de45e96a31a4b59b6594fb80a3

Preparing for memes

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 69fc630bf0f2f95fb722229050f9e291d6fec5ef

Optimization

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 8e7c974e70134dd7ca0fa2f30bdb22e43a1fe65f

Little bit of to_chat abuse fixed.

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha d54b106937ecba0c00ecb5dc981e7bc55a745db2

Work?

view details

Karolis2011

commit sha fe62df18f7f0e16998f4921025b530909d9ea3f2

Touch ups

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha 4ac406f727340906d8613a8581265b3662adf673

Fixes icon problems

view details

Karolis2011

commit sha 2f60c321a5eee1abc1a9db7b5b5802f37ef97571

Fixes up warnings

view details

Karolis2011

commit sha 2f2bce5577b17731210c3003069399192124897b

Bye browse_rsc

view details

Karolis2011

commit sha 74b04f8f15261caf98778b8ce78dc2787cdc95fb

Last warning

view details

push time in 2 months

push eventKarolis2011/Aurora.3

Karolis2011

commit sha d1b8d941b293a590de6ba9500a74a87896d5c833

Fixes bot being angry

view details

push time in 2 months

PR opened Aurorastation/Aurora.3

Add HTML chat

Please kill me

paveikslas

+452 -30

0 comment

24 changed files

pr created time in 2 months

create barnchKarolis2011/Aurora.3

branch : 19-09-26-HTML-chat

created branch time in 2 months

push eventKarolis2011/bot32

Karolis

commit sha c14c25d6f0f97c53b635e2b7b1821c031d9c8194

Less logs

view details

Karolis

commit sha 96e5deba2bd5bd2063d59af2205f4cad2121cad8

Merge remote-tracking branch 'origin/discord-dev' into discord-dev

view details

push time in 2 months

more