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)]."))