mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Converts some borg equipment to radial menus (#20044)
* Borg stuff radial menus; I hate borg hypos * sneaky * borghypo can be it's own thing * forgot ya * ryan's review
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
/*
|
||||
CONTAINS:
|
||||
RSF
|
||||
*/
|
||||
#define POWER_NONE 0
|
||||
#define POWER_LOW 50
|
||||
#define POWER_HIGH 4000
|
||||
|
||||
/obj/item/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
@@ -12,85 +11,83 @@ RSF
|
||||
opacity = FALSE
|
||||
density = FALSE
|
||||
anchored = FALSE
|
||||
var/matter = 0
|
||||
var/mode = 1
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/list/configured_items = list()
|
||||
var/atom/currently_dispensing
|
||||
var/power_mode = POWER_NONE
|
||||
|
||||
/obj/item/rsf/New()
|
||||
..()
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
// configured_items[ID_NUMBER] = list("Human-readable name", price in energy, /type/path)
|
||||
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/reagent_containers/food/drinks/drinkingglass)
|
||||
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/paper)
|
||||
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/pen)
|
||||
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/storage/pill_bottle/dice)
|
||||
configured_items[++configured_items.len] = list("Cigarette", 50, /obj/item/clothing/mask/cigarette)
|
||||
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/reagent_containers/food/snacks/chinese/newdles)
|
||||
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/reagent_containers/food/snacks/donut)
|
||||
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/reagent_containers/food/drinks/chicken_soup)
|
||||
configured_items[++configured_items.len] = list("Snack - Tofu Burger", 4000, /obj/item/reagent_containers/food/snacks/tofuburger)
|
||||
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/item/rsf/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/rcd_ammo))
|
||||
if((matter + 10) > 30)
|
||||
to_chat(user, "The RSF can't hold any more matter.")
|
||||
return
|
||||
qdel(W)
|
||||
matter += 10
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
return
|
||||
|
||||
/obj/item/rsf/attack_self(mob/user as mob)
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
if(mode == configured_items.len)
|
||||
mode = 1
|
||||
/obj/item/rsf/attack_self(mob/user)
|
||||
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
if(!currently_dispensing)
|
||||
to_chat(user, "<span class='notice'>Choose an item to dispense!</span>")
|
||||
else
|
||||
mode++
|
||||
to_chat(user, "Changed dispensing mode to '" + configured_items[mode][1] + "'")
|
||||
|
||||
|
||||
/obj/item/rsf/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(!(istype(A, /obj/structure/table) || isfloorturf(A)))
|
||||
to_chat(user, "<span class='notice'>You are currently dispensing a [initial(currently_dispensing.name)].</span>")
|
||||
var/static/list/rsf_items = list("Drinking Glass" = /obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
"Paper" = /obj/item/paper,
|
||||
"Pen" = /obj/item/pen,
|
||||
"Dice Pack" = /obj/item/storage/pill_bottle/dice,
|
||||
"Cigarette" = /obj/item/clothing/mask/cigarette,
|
||||
"Newdles" = /obj/item/reagent_containers/food/snacks/chinese/newdles,
|
||||
"Donut" = /obj/item/reagent_containers/food/snacks/donut,
|
||||
"Chicken Soup" = /obj/item/reagent_containers/food/drinks/chicken_soup,
|
||||
"Tofu Burger" = /obj/item/reagent_containers/food/snacks/tofuburger)
|
||||
var/static/list/rsf_icons = list("Drinking Glass" = image(icon = 'icons/obj/drinks.dmi', icon_state = "glass_empty"),
|
||||
"Paper" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "paper"),
|
||||
"Pen" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "pen"),
|
||||
"Dice Pack" = image(icon = 'icons/obj/dice.dmi', icon_state = "dicebag"),
|
||||
"Cigarette" = image(icon = 'icons/obj/clothing/masks.dmi', icon_state = "cigon"),
|
||||
"Newdles" = image(icon = 'icons/obj/food/food.dmi', icon_state = "chinese3"),
|
||||
"Donut" = image(icon = 'icons/obj/food/food.dmi', icon_state = "donut1"),
|
||||
"Chicken Soup" = image(icon = 'icons/obj/drinks.dmi', icon_state = "soupcan"),
|
||||
"Tofu Burger" = image(icon = 'icons/obj/food/food.dmi', icon_state = "tofuburger"))
|
||||
var/rsf_radial_choice = show_radial_menu(user, src, rsf_icons)
|
||||
if(user.stat || !in_range(user, src))
|
||||
return
|
||||
var/spawn_location
|
||||
var/turf/T = get_turf(A)
|
||||
if(istype(T) && !T.density)
|
||||
spawn_location = T
|
||||
else
|
||||
to_chat(user, "The RSF can only create service items on tables, or floors.")
|
||||
currently_dispensing = rsf_items[rsf_radial_choice]
|
||||
switch(rsf_radial_choice)
|
||||
if("Drinking Glass")
|
||||
power_mode = POWER_LOW
|
||||
if("Paper")
|
||||
power_mode = POWER_LOW
|
||||
if("Pen")
|
||||
power_mode = POWER_LOW
|
||||
if("Dice Pack")
|
||||
power_mode = POWER_LOW
|
||||
if("Cigarette")
|
||||
power_mode = POWER_LOW
|
||||
if("Newdles")
|
||||
power_mode = POWER_HIGH
|
||||
if("Donut")
|
||||
power_mode = POWER_HIGH
|
||||
if("Chicken Soup")
|
||||
power_mode = POWER_HIGH
|
||||
if("Tofu Burger")
|
||||
power_mode = POWER_HIGH
|
||||
if(currently_dispensing)
|
||||
to_chat(user, "<span class='notice'>Your RSF has been configured to now dispense a [initial(currently_dispensing.name)]!</span>")
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/rsf/afterattack(atom/A, mob/user, proximity)
|
||||
if(!currently_dispensing)
|
||||
return
|
||||
if(!proximity)
|
||||
return
|
||||
if(!istype(A, /obj/structure/table) && !isfloorturf(A))
|
||||
return
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
if(!engy.cell.use(configured_items[mode][2]))
|
||||
var/mob/living/silicon/robot/energy_check = user
|
||||
if(!energy_check.cell.use(power_mode))
|
||||
to_chat(user, "<span class='warning'>Insufficient energy.</span>")
|
||||
flick("[icon_state]_empty", src)
|
||||
return
|
||||
else
|
||||
if(!matter)
|
||||
to_chat(user, "<span class='warning'>Insufficient matter.</span>")
|
||||
flick("[icon_state]_empty", src)
|
||||
return
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
|
||||
to_chat(user, "Dispensing " + configured_items[mode][1] + "...")
|
||||
var/turf/T = get_turf(A)
|
||||
if(!istype(T) || T.density)
|
||||
to_chat(user, "The RSF can only create service items on tables, or floors.")
|
||||
return
|
||||
playsound(loc, 'sound/machines/click.ogg', 10, 1)
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
var/type_path = configured_items[mode][3]
|
||||
new type_path(spawn_location)
|
||||
new currently_dispensing(T)
|
||||
|
||||
/obj/item/rsf/update_overlays()
|
||||
..()
|
||||
var/ratio = CEILING((matter / 30) * 10, 1)
|
||||
cut_overlays()
|
||||
add_overlay("[icon_state]_charge[ratio]")
|
||||
#undef POWER_NONE
|
||||
#undef POWER_LOW
|
||||
#undef POWER_HIGH
|
||||
|
||||
Reference in New Issue
Block a user