From 0791ad93337f4b72ce80be6fba28acc0205dad44 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 17:22:59 -0400 Subject: [PATCH 01/17] making sleevecards children of PAI Cards. because why the heck were they not already --- code/datums/autolathe/devices_vr.dm | 2 +- code/modules/resleeving/machines.dm | 6 +-- code/modules/resleeving/sleevecard_new.dm | 58 +++++++++++++++++++++++ vorestation.dme | 6 +-- 4 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 code/modules/resleeving/sleevecard_new.dm diff --git a/code/datums/autolathe/devices_vr.dm b/code/datums/autolathe/devices_vr.dm index 9d92132caa4..65af7b630cc 100644 --- a/code/datums/autolathe/devices_vr.dm +++ b/code/datums/autolathe/devices_vr.dm @@ -1,3 +1,3 @@ /datum/category_item/autolathe/devices/sleevecard name = "sleevecard" - path =/obj/item/device/sleevecard + path =/obj/item/device/paicard/sleevecard diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index bb17833e351..10930eac1b7 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -509,8 +509,8 @@ qdel(G) src.updateUsrDialog() return //Don't call up else we'll get attack messsages - if(istype(W, /obj/item/device/sleevecard)) - var/obj/item/device/sleevecard/C = W + if(istype(W, /obj/item/device/paicard/sleevecard)) + var/obj/item/device/paicard/sleevecard/C = W user.unEquip(C) C.removePersonality() qdel(C) @@ -556,7 +556,7 @@ return 0 if(mode == 2 && sleevecards) //Card sleeving - var/obj/item/device/sleevecard/card = new /obj/item/device/sleevecard(get_turf(src)) + var/obj/item/device/paicard/sleevecard/card = new /obj/item/device/paicard/sleevecard(get_turf(src)) card.sleeveInto(MR, db_key = db_key) sleevecards-- return 1 diff --git a/code/modules/resleeving/sleevecard_new.dm b/code/modules/resleeving/sleevecard_new.dm new file mode 100644 index 00000000000..04b1b773c22 --- /dev/null +++ b/code/modules/resleeving/sleevecard_new.dm @@ -0,0 +1,58 @@ +mob/living/silicon/pai/infomorph + name = "sleevecard" //Has the same name as the card for consistency, but this is the MOB in the card. + //icon = 'icons/mob/pai_vr.dmi' //Changed to the virgo icon, giving more sprite options. + //icon_state = "pai-repairbot" + + emote_type = 2 // pAIs emotes are heard, not seen, so they can be seen through a container (eg. person) + pass_flags = 1 + mob_size = MOB_SMALL + + can_pull_size = ITEMSIZE_SMALL + can_pull_mobs = MOB_PULL_SMALLER + + idcard_type = /obj/item/weapon/card/id + +/mob/living/silicon/pai/infomorph/New(var/obj/item/device/paicard/sleevecard/paicard) + . = ..() + +/obj/item/device/paicard/sleevecard + name = "sleevecard" + desc = "This KHI-upgraded pAI module has enough capacity to run a whole mind of human-level intelligence." + catalogue_data = list(/datum/category_item/catalogue/information/organization/khi, + /datum/category_item/catalogue/technology/resleeving) + + icon = 'icons/obj/pda.dmi' + icon_state = "pai" + item_state = "electronic" + + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_BELT + origin_tech = list(TECH_DATA = 2) + show_messages = 0 + /* + var/obj/item/device/radio/sleevecard/radio + var/mob/living/silicon/infomorph/infomorph + var/current_emotion = 1 + */ + matter = list(MAT_STEEL = 4000, MAT_GLASS = 4000) + +/obj/item/device/paicard/sleevecard/proc/sleeveInto(var/datum/transhuman/mind_record/MR, var/db_key) + pai = new(src,MR.mindname,db_key=db_key) + + for(var/datum/language/L in MR.languages) + pai.add_language(L.name) + MR.mind_ref.active = 1 //Well, it's about to be. + MR.mind_ref.transfer_to(pai) //Does mind+ckey+client. + pai.ooc_notes = MR.mind_oocnotes + pai.apply_vore_prefs() //Cheap hack for now to give them SOME bellies. + + //Don't set 'real_name' because then we get a nice (as sleevecard) thing. + pai.name = "[initial(pai.name)] ([MR.mindname])" + name = "[initial(name)] ([MR.mindname])" + var/emoname = pai_emotions[1] + setEmotion(pai_emotions[emoname]) + + if(pai.client) + return 1 + + return 0 \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index f6e5be44844..fd6c4310042 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3746,12 +3746,10 @@ #include "code\modules\resleeving\documents.dm" #include "code\modules\resleeving\implant.dm" #include "code\modules\resleeving\infocore_records.dm" -#include "code\modules\resleeving\infomorph.dm" -#include "code\modules\resleeving\infomorph_software.dm" #include "code\modules\resleeving\machine_subtypes.dm" #include "code\modules\resleeving\machines.dm" #include "code\modules\resleeving\resleeving_sickness.dm" -#include "code\modules\resleeving\sleevecard.dm" +#include "code\modules\resleeving\sleevecard_new.dm" #include "code\modules\rogueminer_vr\asteroid.dm" #include "code\modules\rogueminer_vr\controller.dm" #include "code\modules\rogueminer_vr\debug.dm" @@ -4124,7 +4122,6 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" -#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" @@ -4141,6 +4138,7 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" +#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" #include "maps\~map_system\maps_vr.dm" // END_INCLUDE From 7bab1f8a5088e59a03888eb0657c164f6eed8aae Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 17:41:24 -0400 Subject: [PATCH 02/17] Revert "making sleevecards children of PAI Cards." This reverts commit 0791ad93337f4b72ce80be6fba28acc0205dad44. --- code/datums/autolathe/devices_vr.dm | 2 +- code/modules/resleeving/machines.dm | 6 +-- code/modules/resleeving/sleevecard_new.dm | 58 ----------------------- vorestation.dme | 6 ++- 4 files changed, 8 insertions(+), 64 deletions(-) delete mode 100644 code/modules/resleeving/sleevecard_new.dm diff --git a/code/datums/autolathe/devices_vr.dm b/code/datums/autolathe/devices_vr.dm index 65af7b630cc..9d92132caa4 100644 --- a/code/datums/autolathe/devices_vr.dm +++ b/code/datums/autolathe/devices_vr.dm @@ -1,3 +1,3 @@ /datum/category_item/autolathe/devices/sleevecard name = "sleevecard" - path =/obj/item/device/paicard/sleevecard + path =/obj/item/device/sleevecard diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 10930eac1b7..bb17833e351 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -509,8 +509,8 @@ qdel(G) src.updateUsrDialog() return //Don't call up else we'll get attack messsages - if(istype(W, /obj/item/device/paicard/sleevecard)) - var/obj/item/device/paicard/sleevecard/C = W + if(istype(W, /obj/item/device/sleevecard)) + var/obj/item/device/sleevecard/C = W user.unEquip(C) C.removePersonality() qdel(C) @@ -556,7 +556,7 @@ return 0 if(mode == 2 && sleevecards) //Card sleeving - var/obj/item/device/paicard/sleevecard/card = new /obj/item/device/paicard/sleevecard(get_turf(src)) + var/obj/item/device/sleevecard/card = new /obj/item/device/sleevecard(get_turf(src)) card.sleeveInto(MR, db_key = db_key) sleevecards-- return 1 diff --git a/code/modules/resleeving/sleevecard_new.dm b/code/modules/resleeving/sleevecard_new.dm deleted file mode 100644 index 04b1b773c22..00000000000 --- a/code/modules/resleeving/sleevecard_new.dm +++ /dev/null @@ -1,58 +0,0 @@ -mob/living/silicon/pai/infomorph - name = "sleevecard" //Has the same name as the card for consistency, but this is the MOB in the card. - //icon = 'icons/mob/pai_vr.dmi' //Changed to the virgo icon, giving more sprite options. - //icon_state = "pai-repairbot" - - emote_type = 2 // pAIs emotes are heard, not seen, so they can be seen through a container (eg. person) - pass_flags = 1 - mob_size = MOB_SMALL - - can_pull_size = ITEMSIZE_SMALL - can_pull_mobs = MOB_PULL_SMALLER - - idcard_type = /obj/item/weapon/card/id - -/mob/living/silicon/pai/infomorph/New(var/obj/item/device/paicard/sleevecard/paicard) - . = ..() - -/obj/item/device/paicard/sleevecard - name = "sleevecard" - desc = "This KHI-upgraded pAI module has enough capacity to run a whole mind of human-level intelligence." - catalogue_data = list(/datum/category_item/catalogue/information/organization/khi, - /datum/category_item/catalogue/technology/resleeving) - - icon = 'icons/obj/pda.dmi' - icon_state = "pai" - item_state = "electronic" - - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - origin_tech = list(TECH_DATA = 2) - show_messages = 0 - /* - var/obj/item/device/radio/sleevecard/radio - var/mob/living/silicon/infomorph/infomorph - var/current_emotion = 1 - */ - matter = list(MAT_STEEL = 4000, MAT_GLASS = 4000) - -/obj/item/device/paicard/sleevecard/proc/sleeveInto(var/datum/transhuman/mind_record/MR, var/db_key) - pai = new(src,MR.mindname,db_key=db_key) - - for(var/datum/language/L in MR.languages) - pai.add_language(L.name) - MR.mind_ref.active = 1 //Well, it's about to be. - MR.mind_ref.transfer_to(pai) //Does mind+ckey+client. - pai.ooc_notes = MR.mind_oocnotes - pai.apply_vore_prefs() //Cheap hack for now to give them SOME bellies. - - //Don't set 'real_name' because then we get a nice (as sleevecard) thing. - pai.name = "[initial(pai.name)] ([MR.mindname])" - name = "[initial(name)] ([MR.mindname])" - var/emoname = pai_emotions[1] - setEmotion(pai_emotions[emoname]) - - if(pai.client) - return 1 - - return 0 \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index fd6c4310042..f6e5be44844 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3746,10 +3746,12 @@ #include "code\modules\resleeving\documents.dm" #include "code\modules\resleeving\implant.dm" #include "code\modules\resleeving\infocore_records.dm" +#include "code\modules\resleeving\infomorph.dm" +#include "code\modules\resleeving\infomorph_software.dm" #include "code\modules\resleeving\machine_subtypes.dm" #include "code\modules\resleeving\machines.dm" #include "code\modules\resleeving\resleeving_sickness.dm" -#include "code\modules\resleeving\sleevecard_new.dm" +#include "code\modules\resleeving\sleevecard.dm" #include "code\modules\rogueminer_vr\asteroid.dm" #include "code\modules\rogueminer_vr\controller.dm" #include "code\modules\rogueminer_vr\debug.dm" @@ -4122,6 +4124,7 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" +#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" @@ -4138,7 +4141,6 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" #include "maps\~map_system\maps_vr.dm" // END_INCLUDE From 42cdd6607beda66ad21883e7d90618d5465207ae Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 20:19:41 -0400 Subject: [PATCH 03/17] Adding PAI support to bots --- code/modules/mob/living/bot/bot.dm | 77 +++++++++++++++++++++++++++++- vorestation.dme | 2 +- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 2bc63f1bfea..c804811edf1 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -17,7 +17,7 @@ var/emagged = 0 var/light_strength = 3 var/busy = 0 - + var/obj/item/device/paicard/paicard = null var/obj/access_scanner = null var/list/req_access = list() var/list/req_one_access = list() @@ -72,7 +72,7 @@ SetStunned(0) SetParalysis(0) - if(on && !client && !busy) + if(on && !client && !busy && !paicard) spawn(0) handleAI() @@ -138,6 +138,12 @@ qdel(O) else to_chat(user, "Unable to repair with the maintenance panel closed.") + else if(istype(O, /obj/item/device/paicard)) + if(open) + insertpai(user, O) + 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 ..() @@ -354,6 +360,8 @@ qdel(src) /mob/living/bot/is_sentient() + if(paicard) + return TRUE return FALSE /******************************************************************/ @@ -443,3 +451,68 @@ /mob/living/bot/isSynthetic() //Robots are synthetic, no? return 1 + +/mob/living/bot/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(client) + to_chat(user, span_notice("Higher levels of processing are already present!")) + return + if(!card.pai) + to_chat(user, span_notice("This card does not currently have a personality!")) + return + paicard = 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)].")) + if(AI.idcard.access) + botcard.access |= AI.idcard.access + +/mob/living/bot/proc/ejectpai(mob/user) + if(paicard) + var/mob/living/silicon/pai/AI = paicard.pai + AI.ckey = src.ckey + AI.ooc_notes = ooc_notes + paicard.forceMove(loc) + paicard = null + botcard.access = botcard_access.Copy() + 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)].")) + +/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" + set desc = "Allows you to eat someone. Yum." + + if (stat != CONSCIOUS) + return + return feed_grabbed_to_self(src,T) + +/mob/living/bot/verb/ejectself(var/mob/living/T in oview(1)) + set name = "Eject pAI" + set category = "Bot Commands" + set desc = "Eject your card, return to smole." + + if (stat != CONSCIOUS) + return + return ejectpai() \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index f6e5be44844..538ca2c105e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4124,7 +4124,6 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" -#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" @@ -4141,6 +4140,7 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" +#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" #include "maps\~map_system\maps_vr.dm" // END_INCLUDE From 64c8ac10d0cb22143ef774d7f2410abbbadae3c5 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 20:57:09 -0400 Subject: [PATCH 04/17] Update bot.dm Resetting bot name, unequiping the card when inserting. --- code/modules/mob/living/bot/bot.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index c804811edf1..3b4c0230eb4 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -467,6 +467,7 @@ 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 @@ -480,8 +481,9 @@ var/mob/living/silicon/pai/AI = paicard.pai AI.ckey = src.ckey AI.ooc_notes = ooc_notes - paicard.forceMove(loc) + paicard.forceMove(src.loc) paicard = null + name = initial(name) botcard.access = botcard_access.Copy() 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) @@ -513,6 +515,4 @@ set category = "Bot Commands" set desc = "Eject your card, return to smole." - if (stat != CONSCIOUS) - return return ejectpai() \ No newline at end of file From 709d5ca02db464a84c77badc86fc4efa7a952d5f Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 21:53:48 -0400 Subject: [PATCH 05/17] Microwave Start --- code/modules/food/kitchen/microwave.dm | 62 ++++++++++++++++++++++---- code/modules/mob/living/bot/bot.dm | 44 ++++++++++++------ 2 files changed, 84 insertions(+), 22 deletions(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index bab265f004b..a46a73c08c8 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -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, "You decide not to do that.") else if(default_part_replacement(user, O)) return + else if(istype(O, /obj/item/device/paicard)) + if(!paicard) + insertpai(user) else to_chat(user, "You have no idea what you can cook with this [O].") ..() @@ -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, "You can't do that, [src] door is locked!") 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)].")) \ No newline at end of file diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 3b4c0230eb4..77fcb8efbd7 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -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 screwdriver 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 crowbar 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() \ No newline at end of file + return ejectpai() + +/mob/living/bot/Login() + no_vore = FALSE // ROBOT VORE + init_vore() // ROBOT VORE \ No newline at end of file From 6864fa29221e75c2a9fbc22748c44965b28b4475 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 22:37:36 -0400 Subject: [PATCH 06/17] microwave refinements --- code/modules/food/kitchen/microwave.dm | 6 ++++-- code/modules/mob/living/bot/bot.dm | 21 +++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index a46a73c08c8..12609083a20 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -183,7 +183,7 @@ return else if(istype(O, /obj/item/device/paicard)) if(!paicard) - insertpai(user) + insertpai(user, O) else to_chat(user, "You have no idea what you can cook with this [O].") ..() @@ -646,6 +646,7 @@ paicard = card user.unEquip(card) card.forceMove(src) + AI.client.eye = src //src.ckey = AI.ckey name = AI.name //ooc_notes = AI.ooc_notes @@ -656,8 +657,9 @@ var/mob/living/silicon/pai/AI = paicard.pai //AI.ckey = src.ckey paicard.forceMove(src.loc) + AI.client.eye = AI 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)].")) + 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)].")) \ No newline at end of file diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 77fcb8efbd7..caad7112250 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -75,7 +75,7 @@ if(on && !client && !busy && !paicard) spawn(0) handleAI() - +/* /mob/living/bot/examine(mob/user) . = ..() if(health < maxHealth) @@ -86,13 +86,13 @@ else . += "[src] is in pristine condition." . += span_notice("Its maintenance panel is [open ? "open" : "closed"].") - . += span_info("You can use a screwdriver to [open ? "close" : "open"] it.")) + . += span_info("You can use a screwdriver 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 crowbar to remove it.")) - + . += span_info("You can use a crowbar to remove it.") +*/ /mob/living/bot/updatehealth() if(status_flags & GODMODE) health = getMaxHealth() @@ -229,12 +229,13 @@ 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 + for(var/mob in loc) + if(istype(mob, /mob/living/bot) && mob != src) // 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() From 42b3b043881749ba2443915a888745ecd6bf6dcc Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sun, 1 May 2022 23:02:08 -0400 Subject: [PATCH 07/17] Update microwave.dm --- code/modules/food/kitchen/microwave.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 12609083a20..63a3c4bd1df 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -540,6 +540,7 @@ src.operating = 0 // Turn it off again aferwards SStgui.update_uis(src) soundloop.stop() + src.ejectpai() // If it broke, time to yeet the PAI. /obj/machinery/microwave/proc/fail() var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) @@ -648,9 +649,11 @@ card.forceMove(src) AI.client.eye = src //src.ckey = AI.ckey + get_items_list() + to_chat(AI, span_notice("Your location is [AI.loc].")) 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)].")) + to_chat(AI, 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) From 068709a11673bc501a37443374333d17940d6b4c Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 12:14:30 -0400 Subject: [PATCH 08/17] Reworking procs Making eject and insert pai procs machine agnostic, so any machine can be coded to support pAIs. --- code/game/objects/items/devices/paicard.dm | 37 +++++++++++++ code/modules/food/kitchen/microwave.dm | 63 ++++++---------------- code/modules/mob/living/silicon/pai/pai.dm | 5 +- 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index f110251a17c..23df9d8ab1a 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -360,3 +360,40 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard) var/rendered = "[msg]" pai.show_message(rendered, type) ..() + + +// VoreEdit: Living Machine Stuff after this. +// This adds a var and proc for all machines to take a pAI. (The pAI can't control anything, it's just for RP.) +// You need to add usage of the proc to each machine to actually add support. For an example of this, see code\modules\food\kitchen\microwave.dm +/obj/machinery + var/obj/item/device/paicard/paicard = null + +/obj/machinery/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) + AI.client.eye = src + to_chat(AI, span_notice("Your location is [card.loc].")) // DEBUG. TODO: Make unfolding the chassis trigger an eject. + name = AI.name + to_chat(AI, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)].")) + +/obj/machinery/proc/ejectpai(mob/user) + if(paicard) + var/mob/living/silicon/pai/AI = paicard.pai + paicard.forceMove(src.loc) + AI.client.eye = AI + 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)].")) \ No newline at end of file diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 63a3c4bd1df..1c9d1460853 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -14,7 +14,6 @@ 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??? @@ -126,7 +125,7 @@ to_chat(user, "It's dirty!") return 1 else if(is_type_in_list(O,acceptable_items)) - if(contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. + if(cookingContents().len>=(max_n_of_items + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. to_chat(user, "This [src] is full of ingredients, you cannot put more.") 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 @@ -228,12 +227,8 @@ 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)) + //for(var/obj/O in ((contents - component_parts) - circuit)) + for(var/obj/O in cookingContents()) var/display_name = O.name if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) items_measures[display_name] = "egg" @@ -368,7 +363,7 @@ if(stat & (NOPOWER|BROKEN)) return start() - if(reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run + if(reagents.total_volume==0 && !(locate(/obj) in cookingContents())) //dry run if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 5) abort() return @@ -464,7 +459,7 @@ /obj/machinery/microwave/proc/has_extra_item() //- coded to have different microwaves be able to handle different items if(item_level == 0) - for (var/obj/O in ((contents - component_parts) - circuit)) + for (var/obj/O in cookingContents()) if ( \ !istype(O,/obj/item/weapon/reagent_containers/food) && \ !istype(O, /obj/item/weapon/grown) \ @@ -472,7 +467,7 @@ return 1 return 0 if(item_level == 1) - for (var/obj/O in ((contents - component_parts) - circuit)) + for (var/obj/O in cookingContents()) if ( \ !istype(O, /obj/item/weapon/reagent_containers/food) && \ !istype(O, /obj/item/weapon/grown) && \ @@ -506,7 +501,7 @@ soundloop.stop() /obj/machinery/microwave/proc/dispose(var/message = 1) - for (var/atom/movable/A in ((contents-component_parts)-circuit)) + for (var/atom/movable/A in cookingContents()) A.forceMove(loc) if (src.reagents.total_volume) src.dirty++ @@ -545,7 +540,7 @@ /obj/machinery/microwave/proc/fail() var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) var/amount = 0 - for (var/obj/O in (((contents - ffuu) - component_parts) - circuit)) + for (var/obj/O in cookingContents()) amount++ if(O.reagents) var/id = O.reagents.get_master_reagent_id() @@ -578,8 +573,8 @@ return usr.visible_message( - "[usr] opened [src] and has taken out [english_list(((contents-component_parts)-circuit))]." , - "You have opened [src] and taken out [english_list(((contents-component_parts)-circuit))]." + "[usr] opened [src] and has taken out [english_list(cookingContents())]." , + "You have opened [src] and taken out [english_list(cookingContents())]." ) dispose() @@ -632,37 +627,11 @@ 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 +/obj/machinery/microwave/proc/cookingContents() //VOREEdit, this is a better way to deal with the contents of a microwave, since the previous method is stupid. + var/list/workingList = contents.Copy() // Using the copy proc because otherwise the two lists seem to become soul bonded. + workingList -= component_parts + workingList -= circuit 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) - AI.client.eye = src - //src.ckey = AI.ckey - get_items_list() - to_chat(AI, span_notice("Your location is [AI.loc].")) - name = AI.name - //ooc_notes = AI.ooc_notes - to_chat(AI, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)].")) + workingList -= paicard + return workingList -/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) - AI.client.eye = AI - 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)].")) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7df66eaff46..a1764fbcd26 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -127,7 +127,7 @@ pda.ownjob = "Personal Assistant" pda.owner = text("[]", src) pda.name = pda.owner + " (" + pda.ownjob + ")" - + var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger) if(M) M.toff = TRUE @@ -247,6 +247,9 @@ last_special = world.time + 100 + if(istype(card.loc, /obj/machinery)) // VOREStation edit, this statement allows pAIs stuck in a machine to eject themselves. + var/obj/machinery/M = card.loc + M.ejectpai() //I'm not sure how much of this is necessary, but I would rather avoid issues. if(istype(card.loc,/obj/item/rig_module)) to_chat(src, "There is no room to unfold inside this rig module. You're good and stuck.") From f3658fe87feaba9cdd078e1dd2f5d4b205e20367 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 13:33:01 -0400 Subject: [PATCH 09/17] Attempt to fix microwave circuit This bug angers me. Also added a timer for removing a pAI from a bot. --- code/modules/food/kitchen/microwave.dm | 6 ++++-- code/modules/mob/living/bot/bot.dm | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 1c9d1460853..80164dacbec 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -633,5 +633,7 @@ workingList -= circuit if(paicard) workingList -= paicard - return workingList - + for(var/M in workingList) + if(istype(M, circuit)) // I know not why we need this check, all I know is if we don't circuits will be added to microwave components after construction. + workingList -= M + return workingList \ No newline at end of file diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index caad7112250..e96f855670f 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -162,8 +162,10 @@ else to_chat(user, span_notice("You must open the panel first!")) else if(O.is_crowbar()) - if(open) - ejectpai(user) + if(open && paicard) + to_chat(user, span_notice("You are attempting to remove the pAI..")) + if(do_after(user,10 * O.toolspeed)) + ejectpai(user) else ..() From b108c20637c032d81b4ea5a561265573fe21e033 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 13:52:33 -0400 Subject: [PATCH 10/17] Preventing qdel Ejecting pAIs from their machine/bot on death/delete to avoid qdel'ing them. --- code/modules/food/kitchen/microwave.dm | 4 +++- code/modules/mob/living/bot/bot.dm | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 80164dacbec..28355bd7a4e 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -66,6 +66,8 @@ soundloop = new(list(src), FALSE) /obj/machinery/microwave/Destroy() + if(paicard) + ejectpai() // Lets not delete the pAI. QDEL_NULL(soundloop) return ..() @@ -634,6 +636,6 @@ if(paicard) workingList -= paicard for(var/M in workingList) - if(istype(M, circuit)) // I know not why we need this check, all I know is if we don't circuits will be added to microwave components after construction. + if(istype(M, circuit)) // Yes, we remove circuit twice. Yes, it's necessary. Yes, it's stupid. workingList -= M return workingList \ No newline at end of file diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index e96f855670f..bb261551d9a 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -386,6 +386,8 @@ update_icons() /mob/living/bot/proc/explode() + if(paicard) + ejectpai() qdel(src) /mob/living/bot/is_sentient() From 3633d3c27355035d8de938383d9662da0b57941d Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 14:46:17 -0400 Subject: [PATCH 11/17] Fixing bot wierdness For some dumb reason every bot (except mule bots???) overrides the explode proc instead of adding to it. --- code/modules/mob/living/bot/bot.dm | 10 +++++++++- code/modules/mob/living/bot/cleanbot.dm | 3 ++- code/modules/mob/living/bot/ed209bot.dm | 3 ++- code/modules/mob/living/bot/edCLNbot.dm | 3 ++- code/modules/mob/living/bot/farmbot.dm | 3 ++- code/modules/mob/living/bot/floorbot.dm | 10 ++++++---- code/modules/mob/living/bot/medbot.dm | 7 ++++--- code/modules/mob/living/bot/secbot.dm | 6 ++++-- 8 files changed, 31 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index bb261551d9a..ea31d291231 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -388,6 +388,7 @@ /mob/living/bot/proc/explode() if(paicard) ejectpai() + release_vore_contents() qdel(src) /mob/living/bot/is_sentient() @@ -538,4 +539,11 @@ /mob/living/bot/Login() no_vore = FALSE // ROBOT VORE - init_vore() // ROBOT VORE \ No newline at end of file + init_vore() // ROBOT VORE + verbs |= /mob/living/proc/insidePanel() + +/mob/living/bot/Logout() + no_vore = TRUE // ROBOT VORE + release_vore_contents() + init_vore() // ROBOT VORE + verbs -= /mob/living/proc/insidePanel() \ No newline at end of file diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm index 061574bd645..27a27b59ec3 100644 --- a/code/modules/mob/living/bot/cleanbot.dm +++ b/code/modules/mob/living/bot/cleanbot.dm @@ -128,6 +128,7 @@ update_icons() /mob/living/bot/cleanbot/explode() + . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -140,7 +141,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - qdel(src) + //qdel(src) return /mob/living/bot/cleanbot/update_icons() diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 17d2da7878e..4aa9a93c5fe 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -27,6 +27,7 @@ icon_state = "ed209[on]" /mob/living/bot/secbot/ed209/explode() + . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -49,7 +50,7 @@ s.start() new /obj/effect/decal/cleanable/blood/oil(Tsec) - qdel(src) + return//qdel(src) /mob/living/bot/secbot/ed209/handleRangedTarget() RangedAttack(target) diff --git a/code/modules/mob/living/bot/edCLNbot.dm b/code/modules/mob/living/bot/edCLNbot.dm index bbb1e9861d8..670c550145c 100644 --- a/code/modules/mob/living/bot/edCLNbot.dm +++ b/code/modules/mob/living/bot/edCLNbot.dm @@ -50,6 +50,7 @@ src.explode() /mob/living/bot/cleanbot/edCLN/explode() + . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -68,7 +69,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - qdel(src) + //qdel(src) return /mob/living/bot/cleanbot/edCLN/tgui_data(mob/user) diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index 083da22d3d1..8bb7a468bea 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -269,6 +269,7 @@ tank.reagents.splash(A, 100) /mob/living/bot/farmbot/explode() + . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -286,7 +287,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - qdel(src) + //qdel(src) return diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index 9e869e0d81a..13d2b0977a3 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -42,7 +42,7 @@ data["on"] = on data["open"] = open data["locked"] = locked - + data["vocal"] = vocal data["amount"] = amount @@ -75,7 +75,7 @@ /mob/living/bot/floorbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return TRUE - + add_fingerprint(src) switch(action) @@ -85,7 +85,7 @@ else turn_on() . = TRUE - + if(locked && !issilicon(usr)) return @@ -288,6 +288,7 @@ addTiles(4) /mob/living/bot/floorbot/explode() + . = ..() turn_off() visible_message("\The [src] blows apart!") playsound(src, "sparks", 50, 1) @@ -302,7 +303,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - qdel(src) + //qdel(src) + return /mob/living/bot/floorbot/proc/addTiles(var/am) amount += am diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index 39b0b882bb1..f1646db5f52 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -268,10 +268,10 @@ /mob/living/bot/medbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return TRUE - + usr.set_machine(src) add_fingerprint(usr) - + . = TRUE switch(action) if("power") @@ -328,6 +328,7 @@ ignore_list |= user /mob/living/bot/medbot/explode() + . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -348,7 +349,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - qdel(src) + //qdel(src) return /mob/living/bot/medbot/handleRegular() diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index 66134335725..dad7ee3e379 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -128,7 +128,7 @@ /mob/living/bot/secbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return - + add_fingerprint(usr) switch(action) @@ -362,6 +362,7 @@ S.slimebatoned(src, xeno_stun_strength) /mob/living/bot/secbot/explode() + . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -379,7 +380,8 @@ s.start() new /obj/effect/decal/cleanable/blood/oil(Tsec) - qdel(src) + //qdel(src) + return /mob/living/bot/secbot/proc/target_name(mob/living/T) if(ishuman(T)) From 655db74de8ede87e8b8a1564f7ff66ebb77bf15c Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 14:47:49 -0400 Subject: [PATCH 12/17] Update bot.dm --- code/modules/mob/living/bot/bot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index ea31d291231..f5a3c0ef890 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -540,10 +540,10 @@ /mob/living/bot/Login() no_vore = FALSE // ROBOT VORE init_vore() // ROBOT VORE - verbs |= /mob/living/proc/insidePanel() + verbs |= /mob/living/proc/insidePanel /mob/living/bot/Logout() no_vore = TRUE // ROBOT VORE release_vore_contents() init_vore() // ROBOT VORE - verbs -= /mob/living/proc/insidePanel() \ No newline at end of file + verbs -= /mob/living/proc/insidePanel \ No newline at end of file From 7d5e40014429390ce1f56e2ff404e49a9bd29cc4 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 15:16:16 -0400 Subject: [PATCH 13/17] Fixing bots . = ..() is bad here, using return ..() instead --- code/modules/mob/living/bot/cleanbot.dm | 3 +-- code/modules/mob/living/bot/ed209bot.dm | 3 +-- code/modules/mob/living/bot/edCLNbot.dm | 3 +-- code/modules/mob/living/bot/farmbot.dm | 3 +-- code/modules/mob/living/bot/floorbot.dm | 3 +-- code/modules/mob/living/bot/medbot.dm | 3 +-- 6 files changed, 6 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm index 27a27b59ec3..f60bccbfc32 100644 --- a/code/modules/mob/living/bot/cleanbot.dm +++ b/code/modules/mob/living/bot/cleanbot.dm @@ -128,7 +128,6 @@ update_icons() /mob/living/bot/cleanbot/explode() - . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -142,7 +141,7 @@ s.set_up(3, 1, src) s.start() //qdel(src) - return + return ..() /mob/living/bot/cleanbot/update_icons() if(busy) diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 4aa9a93c5fe..8700988e592 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -27,7 +27,6 @@ icon_state = "ed209[on]" /mob/living/bot/secbot/ed209/explode() - . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -50,7 +49,7 @@ s.start() new /obj/effect/decal/cleanable/blood/oil(Tsec) - return//qdel(src) + return ..() /mob/living/bot/secbot/ed209/handleRangedTarget() RangedAttack(target) diff --git a/code/modules/mob/living/bot/edCLNbot.dm b/code/modules/mob/living/bot/edCLNbot.dm index 670c550145c..ce0edabe088 100644 --- a/code/modules/mob/living/bot/edCLNbot.dm +++ b/code/modules/mob/living/bot/edCLNbot.dm @@ -50,7 +50,6 @@ src.explode() /mob/living/bot/cleanbot/edCLN/explode() - . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -70,7 +69,7 @@ s.set_up(3, 1, src) s.start() //qdel(src) - return + return ..() /mob/living/bot/cleanbot/edCLN/tgui_data(mob/user) var/list/data = ..() diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index 8bb7a468bea..969bfc1c831 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -269,7 +269,6 @@ tank.reagents.splash(A, 100) /mob/living/bot/farmbot/explode() - . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -288,7 +287,7 @@ s.set_up(3, 1, src) s.start() //qdel(src) - return + return ..() /mob/living/bot/farmbot/confirmTarget(var/atom/targ) diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index 13d2b0977a3..a7a7def771c 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -288,7 +288,6 @@ addTiles(4) /mob/living/bot/floorbot/explode() - . = ..() turn_off() visible_message("\The [src] blows apart!") playsound(src, "sparks", 50, 1) @@ -304,7 +303,7 @@ s.set_up(3, 1, src) s.start() //qdel(src) - return + return ..() /mob/living/bot/floorbot/proc/addTiles(var/am) amount += am diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index f1646db5f52..ced48594f1c 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -328,7 +328,6 @@ ignore_list |= user /mob/living/bot/medbot/explode() - . = ..() on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -350,7 +349,7 @@ s.set_up(3, 1, src) s.start() //qdel(src) - return + return ..() /mob/living/bot/medbot/handleRegular() . = ..() From ad07883ca489de93c9c9a6ebf5d4f06af5071ee3 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 15:38:01 -0400 Subject: [PATCH 14/17] Final fixes It should be good to go now. --- code/modules/mob/living/bot/bot.dm | 2 +- code/modules/mob/living/bot/secbot.dm | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index f5a3c0ef890..66aa9fcd787 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -530,7 +530,7 @@ return return feed_grabbed_to_self(src,T) -/mob/living/bot/verb/ejectself(var/mob/living/T in oview(1)) +/mob/living/bot/verb/ejectself() set name = "Eject pAI" set category = "Bot Commands" set desc = "Eject your card, return to smole." diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index dad7ee3e379..f6a868d11aa 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -362,7 +362,6 @@ S.slimebatoned(src, xeno_stun_strength) /mob/living/bot/secbot/explode() - . = ..() visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) @@ -381,7 +380,7 @@ new /obj/effect/decal/cleanable/blood/oil(Tsec) //qdel(src) - return + return ..() /mob/living/bot/secbot/proc/target_name(mob/living/T) if(ishuman(T)) From f8fdd3b0114ee91c940e93073ebb89fb3eb9b528 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 16:05:53 -0400 Subject: [PATCH 15/17] Update microwave.dm --- code/modules/food/kitchen/microwave.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 28355bd7a4e..b149aef9d2e 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -127,7 +127,8 @@ to_chat(user, "It's dirty!") return 1 else if(is_type_in_list(O,acceptable_items)) - if(cookingContents().len>=(max_n_of_items + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. + var/list/workingList = cookingContents() + if(workingList.len>=(max_n_of_items + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. to_chat(user, "This [src] is full of ingredients, you cannot put more.") 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 From 7246a449278e9dee97f12cb79c29104095c0b0c6 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 16:24:34 -0400 Subject: [PATCH 16/17] wow this was deep fucking- --- code/__defines/span_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__defines/span_vr.dm b/code/__defines/span_vr.dm index 618fd52b3d1..737d1a81ada 100644 --- a/code/__defines/span_vr.dm +++ b/code/__defines/span_vr.dm @@ -40,7 +40,7 @@ #define span_danger(str) ("" + str + "") #define span_warning(str) ("" + str + "") #define span_rose(str) ("" + str + "") -#define span_info(str) ("" + str + "" +#define span_info(str) ("" + str + "") #define span_notice(str) ("" + str + "") #define span_alium(str) ("" + str + "") #define span_cult(str) ("" + str + "") From 1399615072695c10134308465bcde6f21df39d21 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 2 May 2022 16:30:01 -0400 Subject: [PATCH 17/17] oh my god a fucking indent --- code/modules/mob/living/bot/bot.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 66aa9fcd787..206d9f0321b 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -517,7 +517,8 @@ paicard = null name = initial(name) botcard.access = botcard_access.Copy() - to_chat(AI, span_notice("You feel a tad claustrophobic as your mind closes back into your card, ejecting from \the [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)]."))