Porting smartfridge improvements.

This commit is contained in:
Ghommie
2019-06-19 04:28:36 +02:00
parent 6c54c21d9c
commit 8764d781a3
2 changed files with 69 additions and 44 deletions
@@ -15,6 +15,7 @@
var/max_n_of_items = 1500
var/allow_ai_retrieve = FALSE
var/list/initial_contents
var/visible_contents = TRUE
/obj/machinery/smartfridge/Initialize()
. = ..()
@@ -37,11 +38,21 @@
update_icon()
/obj/machinery/smartfridge/update_icon()
var/startstate = initial(icon_state)
if(!stat)
icon_state = startstate
if(visible_contents)
switch(contents.len)
if(0)
icon_state = "[initial(icon_state)]"
if(1 to 25)
icon_state = "[initial(icon_state)]1"
if(26 to 75)
icon_state = "[initial(icon_state)]2"
if(76 to INFINITY)
icon_state = "[initial(icon_state)]3"
else
icon_state = "[initial(icon_state)]"
else
icon_state = "[startstate]-off"
icon_state = "[initial(icon_state)]-off"
@@ -50,7 +61,11 @@
********************/
/obj/machinery/smartfridge/attackby(obj/item/O, mob/user, params)
if(default_deconstruction_screwdriver(user, "smartfridge_open", "smartfridge", O))
if(default_deconstruction_screwdriver(user, icon_state, icon_state, O))
cut_overlays()
if(panel_open)
add_overlay("[initial(icon_state)]-panel")
updateUsrDialog()
return
if(default_pry_open(O))
@@ -64,49 +79,53 @@
updateUsrDialog()
return
if(!stat)
if(user.a_intent == INTENT_HARM)
return ..()
if(contents.len >= max_n_of_items)
to_chat(user, "<span class='warning'>\The [src] is full!</span>")
return FALSE
if(accept_check(O))
load(O)
user.visible_message("[user] has added \the [O] to \the [src].", "<span class='notice'>You add \the [O] to \the [src].</span>")
updateUsrDialog()
return TRUE
if(istype(O, /obj/item/storage/bag))
var/obj/item/storage/P = O
var/loaded = 0
for(var/obj/G in P.contents)
if(contents.len >= max_n_of_items)
break
if(accept_check(G))
load(G)
loaded++
updateUsrDialog()
if(loaded)
if(contents.len >= max_n_of_items)
user.visible_message("[user] loads \the [src] with \the [O].", \
"<span class='notice'>You fill \the [src] with \the [O].</span>")
else
user.visible_message("[user] loads \the [src] with \the [O].", \
"<span class='notice'>You load \the [src] with \the [O].</span>")
if(O.contents.len > 0)
to_chat(user, "<span class='warning'>Some items are refused.</span>")
return TRUE
else
to_chat(user, "<span class='warning'>There is nothing in [O] to put in [src]!</span>")
return FALSE
if(user.a_intent != INTENT_HARM)
to_chat(user, "<span class='warning'>\The [src] smartly refuses [O].</span>")
if(stat)
updateUsrDialog()
return FALSE
else
return ..()
if(contents.len >= max_n_of_items)
to_chat(user, "<span class='warning'>\The [src] is full!</span>")
return FALSE
if(accept_check(O))
load(O)
user.visible_message("[user] has added \the [O] to \the [src].", "<span class='notice'>You add \the [O] to \the [src].</span>")
updateUsrDialog()
if (visible_contents)
update_icon()
return TRUE
if(istype(O, /obj/item/storage/bag))
var/obj/item/storage/P = O
var/loaded = 0
for(var/obj/G in P.contents)
if(contents.len >= max_n_of_items)
break
if(accept_check(G))
load(G)
loaded++
updateUsrDialog()
if(loaded)
if(contents.len >= max_n_of_items)
user.visible_message("[user] loads \the [src] with \the [O].", \
"<span class='notice'>You fill \the [src] with \the [O].</span>")
else
user.visible_message("[user] loads \the [src] with \the [O].", \
"<span class='notice'>You load \the [src] with \the [O].</span>")
if(O.contents.len > 0)
to_chat(user, "<span class='warning'>Some items are refused.</span>")
return TRUE
else
to_chat(user, "<span class='warning'>There is nothing in [O] to put in [src]!</span>")
return FALSE
to_chat(user, "<span class='warning'>\The [src] smartly refuses [O].</span>")
updateUsrDialog()
return FALSE
@@ -186,6 +205,8 @@
O.forceMove(drop_location())
adjust_item_drop_location(O)
break
if (visible_contents)
update_icon()
return TRUE
for(var/obj/item/O in src)
@@ -195,6 +216,8 @@
O.forceMove(drop_location())
adjust_item_drop_location(O)
desired--
if (visible_contents)
update_icon()
return TRUE
return FALSE
@@ -210,6 +233,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 200
visible_contents = FALSE
var/drying = FALSE
/obj/machinery/smartfridge/drying_rack/Initialize()
@@ -414,6 +438,7 @@
name = "disk compartmentalizer"
desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)."
icon_state = "disktoaster"
visible_contents = FALSE
pass_flags = PASSTABLE
/obj/machinery/smartfridge/disks/accept_check(obj/item/O)