mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-25 21:19:44 +01:00
Microwave Start
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
clickvol = "30"
|
||||
flags = OPENCONTAINER | NOREACT
|
||||
circuit = /obj/item/weapon/circuitboard/microwave
|
||||
var/obj/item/device/paicard/paicard = null
|
||||
var/operating = 0 // Is it on?
|
||||
var/dirty = 0 // = {0..100} Does it need cleaning?
|
||||
var/broken = 0 // ={0,1,2} How broken is it???
|
||||
@@ -22,7 +23,7 @@
|
||||
var/global/list/acceptable_items // List of the items you can put in
|
||||
var/global/list/available_recipes // List of the recipes you can use
|
||||
var/global/list/acceptable_reagents // List of the reagents you can put in
|
||||
|
||||
|
||||
var/global/max_n_of_items = 20
|
||||
var/appliancetype = MICROWAVE
|
||||
var/datum/looping_sound/microwave/soundloop
|
||||
@@ -36,7 +37,7 @@
|
||||
|
||||
/obj/machinery/microwave/Initialize()
|
||||
. = ..()
|
||||
|
||||
|
||||
reagents = new/datum/reagents(100)
|
||||
reagents.my_atom = src
|
||||
|
||||
@@ -47,7 +48,7 @@
|
||||
for(var/datum/recipe/typepath as anything in subtypesof(/datum/recipe))
|
||||
if((initial(typepath.appliance) & appliancetype))
|
||||
available_recipes += new typepath
|
||||
|
||||
|
||||
acceptable_items = new
|
||||
acceptable_reagents = new
|
||||
for (var/datum/recipe/recipe in available_recipes)
|
||||
@@ -180,6 +181,9 @@
|
||||
to_chat(user, "<span class='notice'>You decide not to do that.</span>")
|
||||
else if(default_part_replacement(user, O))
|
||||
return
|
||||
else if(istype(O, /obj/item/device/paicard))
|
||||
if(!paicard)
|
||||
insertpai(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
|
||||
..()
|
||||
@@ -192,6 +196,10 @@
|
||||
attack_hand(user)
|
||||
|
||||
/obj/machinery/microwave/attack_hand(mob/user as mob)
|
||||
if(user.a_intent == I_GRAB)
|
||||
if(paicard)
|
||||
ejectpai(user)
|
||||
return
|
||||
user.set_machine(src)
|
||||
tgui_interact(user)
|
||||
|
||||
@@ -211,7 +219,7 @@
|
||||
data["operating"] = operating
|
||||
data["dirty"] = dirty == 100
|
||||
data["items"] = get_items_list()
|
||||
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/microwave/proc/get_items_list()
|
||||
@@ -220,6 +228,11 @@
|
||||
var/list/items_counts = list()
|
||||
var/list/items_measures = list()
|
||||
var/list/items_measures_p = list()
|
||||
var/list/working_list = contents
|
||||
working_list -= component_parts
|
||||
working_list -= circuit
|
||||
if(paicard)
|
||||
working_list -= paicard
|
||||
for(var/obj/O in ((contents - component_parts) - circuit))
|
||||
var/display_name = O.name
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
|
||||
@@ -283,7 +296,7 @@
|
||||
if("dispose")
|
||||
dispose()
|
||||
return TRUE
|
||||
/*
|
||||
/*
|
||||
/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
|
||||
var/dat = ""
|
||||
if(src.broken > 0)
|
||||
@@ -390,7 +403,7 @@
|
||||
cooked = fail()
|
||||
cooked.forceMove(src.loc)
|
||||
return
|
||||
|
||||
|
||||
//Making multiple copies of a recipe
|
||||
var/halftime = round(recipe.time*4/10/2) // VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was round(recipe.time/20/2))
|
||||
if(!wzhzhzh(halftime))
|
||||
@@ -483,7 +496,7 @@
|
||||
icon_state = "mw"
|
||||
SStgui.update_uis(src)
|
||||
soundloop.stop()
|
||||
|
||||
|
||||
/obj/machinery/microwave/proc/stop()
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
operating = FALSE // Turn it off again aferwards
|
||||
@@ -558,7 +571,7 @@
|
||||
|
||||
if(!do_after(usr, 1 SECONDS, target = src))
|
||||
return
|
||||
|
||||
|
||||
if(operating)
|
||||
to_chat(usr, "<span class='warning'>You can't do that, [src] door is locked!</span>")
|
||||
return
|
||||
@@ -594,7 +607,7 @@
|
||||
/obj/item/weapon/holder
|
||||
)
|
||||
result = /obj/effect/decal/cleanable/blood/gibs
|
||||
|
||||
|
||||
/datum/recipe/splat/before_cook(obj/container)
|
||||
if(istype(container, /obj/machinery/microwave))
|
||||
var/obj/machinery/microwave/M = container
|
||||
@@ -617,3 +630,34 @@
|
||||
var/obj/machinery/microwave/M = container
|
||||
M.muck_finish()
|
||||
. = ..()
|
||||
|
||||
//VoreEdit, Living Microwave. Living Microwave.
|
||||
/obj/machinery/microwave/proc/insertpai(mob/user, obj/item/device/paicard/card)
|
||||
//var/obj/item/paicard/card = I
|
||||
var/mob/living/silicon/pai/AI = card.pai
|
||||
if(paicard)
|
||||
to_chat(user, span_notice("This bot is already under PAI Control!"))
|
||||
return
|
||||
if(!istype(card)) // TODO: Add sleevecard support.
|
||||
return
|
||||
if(!card.pai)
|
||||
to_chat(user, span_notice("This card does not currently have a personality!"))
|
||||
return
|
||||
paicard = card
|
||||
user.unEquip(card)
|
||||
card.forceMove(src)
|
||||
//src.ckey = AI.ckey
|
||||
name = AI.name
|
||||
//ooc_notes = AI.ooc_notes
|
||||
to_chat(src, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)]."))
|
||||
|
||||
/obj/machinery/microwave/proc/ejectpai(mob/user)
|
||||
if(paicard)
|
||||
var/mob/living/silicon/pai/AI = paicard.pai
|
||||
//AI.ckey = src.ckey
|
||||
paicard.forceMove(src.loc)
|
||||
paicard = null
|
||||
name = initial(src.name)
|
||||
to_chat(AI, span_notice("You feel a tad claustrophobic as your mind closes back into your card, ejecting from \the [initial(src.name)]."))
|
||||
if(user)
|
||||
to_chat(user, span_notice("You eject the card from \the [initial(src.name)]."))
|
||||
@@ -76,6 +76,23 @@
|
||||
spawn(0)
|
||||
handleAI()
|
||||
|
||||
/mob/living/bot/examine(mob/user)
|
||||
. = ..()
|
||||
if(health < maxHealth)
|
||||
if(health > maxHealth/3)
|
||||
. += "[src]'s parts look loose."
|
||||
else
|
||||
. += "[src]'s parts look very loose!"
|
||||
else
|
||||
. += "[src] is in pristine condition."
|
||||
. += span_notice("Its maintenance panel is [open ? "open" : "closed"].")
|
||||
. += span_info("You can use a <b>screwdriver</b> to [open ? "close" : "open"] it."))
|
||||
. += span_notice("Its control panel is [locked ? "locked" : "unlocked"].")
|
||||
if(paicard)
|
||||
. += span_notice("It has a pAI device installed.")
|
||||
if(open)
|
||||
. += span_info("You can use a <b>crowbar</b> to remove it."))
|
||||
|
||||
/mob/living/bot/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
health = getMaxHealth()
|
||||
@@ -144,6 +161,9 @@
|
||||
to_chat(user, span_notice("You slot the card into \the [initial(src.name)]."))
|
||||
else
|
||||
to_chat(user, span_notice("You must open the panel first!"))
|
||||
else if(O.is_crowbar())
|
||||
if(open)
|
||||
ejectpai(user)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -209,6 +229,12 @@
|
||||
if(LAZYLEN(can_go))
|
||||
if(step_towards(src, pick(can_go)))
|
||||
return
|
||||
if((locate(/mob/living/bot) in loc) && !pulledby) // Same as above, but we also don't want to have bots ontop of bots. Cleanbots shouldn't stack >:(
|
||||
var/turf/my_turf = get_turf(src)
|
||||
var/list/can_go = my_turf.CardinalTurfsWithAccess(botcard)
|
||||
if(LAZYLEN(can_go))
|
||||
if(step_towards(src, pick(can_go)))
|
||||
return
|
||||
handleIdle()
|
||||
|
||||
/mob/living/bot/proc/handleRegular()
|
||||
@@ -489,18 +515,6 @@
|
||||
if(user)
|
||||
to_chat(user, span_notice("You eject the card from \the [initial(src.name)]."))
|
||||
|
||||
/mob/living/bot/verb/eject()
|
||||
set name = "Eject pAI"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat) return
|
||||
|
||||
if(open)
|
||||
ejectpai(usr)
|
||||
else
|
||||
to_chat(usr, span_notice("You must open the panel first!"))
|
||||
|
||||
/mob/living/bot/verb/bot_nom(var/mob/living/T in oview(1))
|
||||
set name = "Bot Nom"
|
||||
set category = "Bot Commands"
|
||||
@@ -515,4 +529,8 @@
|
||||
set category = "Bot Commands"
|
||||
set desc = "Eject your card, return to smole."
|
||||
|
||||
return ejectpai()
|
||||
return ejectpai()
|
||||
|
||||
/mob/living/bot/Login()
|
||||
no_vore = FALSE // ROBOT VORE
|
||||
init_vore() // ROBOT VORE
|
||||
Reference in New Issue
Block a user