diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 19d0540e0e..3394fba90c 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -93,6 +93,7 @@ #define FIRE_PRIORITY_SERVER_MAINT 10 #define FIRE_PRIORITY_RESEARCH 10 #define FIRE_PRIORITY_VIS 10 +#define FIRE_PRIORITY_VORE 10 #define FIRE_PRIORITY_GARBAGE 15 #define FIRE_PRIORITY_WET_FLOORS 20 #define FIRE_PRIORITY_AIR 20 diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index f65c15ec88..c25ebf5b0a 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/storage/toolbox/artistic = 2, /obj/item/toy/eightball = 1, /obj/item/reagent_containers/pill/floorpill = 1, - /obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 1, + /obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 2, /obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint /obj/item/storage/pill_bottle/penis_enlargement = 2, /obj/item/storage/pill_bottle/breast_enlargement = 2, diff --git a/code/controllers/subsystem/vore.dm b/code/controllers/subsystem/vore.dm index faaa297ca3..ca34f9ab61 100644 --- a/code/controllers/subsystem/vore.dm +++ b/code/controllers/subsystem/vore.dm @@ -7,7 +7,7 @@ SUBSYSTEM_DEF(bellies) name = "Bellies" - priority = 5 + priority = FIRE_PRIORITY_VORE wait = 1 SECONDS flags = SS_KEEP_TIMING|SS_NO_INIT runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index bf352e8eb7..3885a1f4d9 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -498,6 +498,23 @@ Code: else menu += "[ldat]" + menu += "

Pimpin' Ride:

" + + ldat = null + for (var/obj/vehicle/ridden/janicart/M in world) + var/turf/ml = get_turf(M) + + if(ml) + if (ml.z != cl.z) + continue + var/direction = get_dir(src, M) + ldat += "Ride - \[[ml.x],[ml.y] ([uppertext(dir2text(direction))])\]
" + + if (!ldat) + menu += "None" + else + menu += "[ldat]" + menu += "

Located Janitorial Cart:

" ldat = null diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index d71b91c8dc..96543ec5af 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -524,12 +524,15 @@ /obj/item/grenade/chem_grenade, /obj/item/lightreplacer, /obj/item/flashlight, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/holosign_creator, /obj/item/key/janitor, /obj/item/clothing/gloves, /obj/item/melee/flyswatter, + /obj/item/paint/paint_remover, /obj/item/assembly/mousetrap )) diff --git a/code/game/world.dm b/code/game/world.dm index dedf822597..e9c8433006 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -137,7 +137,7 @@ GLOBAL_VAR(restart_counter) // but those are both private, so let's put the commit info in the runtime // log which is ultimately public. log_runtime(GLOB.revdata.get_log_message()) - + /world/Topic(T, addr, master, key) TGS_TOPIC //redirect to server tools if necessary @@ -270,7 +270,8 @@ GLOBAL_VAR(restart_counter) if (M.client) n++ - features += "[SSmapping.config.map_name]" //CIT CHANGE - makes the hub entry display the current map + if(SSmapping.config) // this just stops the runtime, honk. + features += "[SSmapping.config.map_name]" //CIT CHANGE - makes the hub entry display the current map if(get_security_level())//CIT CHANGE - makes the hub entry show the security level features += "[get_security_level()] alert" diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 46588404aa..931d6611fc 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1713,7 +1713,7 @@ /datum/supply_pack/service/janitor/janpremium name = "Janitor Premium Supplies" desc = "Do to the union for better supplies, we have desided to make a deal for you, In this crate you can get a brand new chem, Drying Angent this stuff is the work of slimes or magic! This crate also contains a rag to test out the Drying Angent magic, three wet floor signs, and some spare bottles of ammonia." - cost = 3000 + cost = 1750 access = ACCESS_JANITOR contains = list(/obj/item/caution, /obj/item/caution, @@ -1721,9 +1721,20 @@ /obj/item/reagent_containers/rag, /obj/item/reagent_containers/glass/bottle/ammonia, /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/reagent_containers/glass/bottle/ammonia, /obj/item/reagent_containers/spray/drying_agent) crate_name = "janitor backpack crate" +/datum/supply_pack/service/janitor/janpimp + name = "Custodial Cruiser" + desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!" + cost = 3000 + access = ACCESS_JANITOR + contains = list(/obj/vehicle/ridden/janicart, + /obj/item/key/janitor) + crate_name = "janitor ride crate" + crate_type = /obj/structure/closet/crate/large + /datum/supply_pack/service/mule name = "MULEbot Crate" desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 1af24f8e61..cc6d65b74d 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -65,6 +65,9 @@ var/warcry = "AT" /obj/item/clothing/gloves/rapid/Touch(mob/living/target,proximity = TRUE) + if(!istype(target)) + return + var/mob/living/M = loc if(M.a_intent == INTENT_HARM) @@ -87,6 +90,9 @@ warcry = "owo" //Shouldn't ever come into play /obj/item/clothing/gloves/rapid/hug/Touch(mob/living/target,proximity = TRUE) + if(!istype(target)) + return + var/mob/living/M = loc if(M.a_intent == INTENT_HELP) diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index fee0b2b7c9..308cec1cbd 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -78,6 +78,12 @@ // these vars are not really standardized but all would theoretically create stuff on death for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & mob.vars) mob.vars[v] = null + ENABLE_BITFIELD(mob.flags_1, HOLOGRAM_1) + if(isliving(mob)) + var/mob/living/L = mob + L.feeding = FALSE + L.devourable = FALSE + L.digestable = FALSE return mob /obj/effect/holodeck_effect/mobspawner/deactivate(var/obj/machinery/computer/holodeck/HC) @@ -100,7 +106,7 @@ /obj/effect/holodeck_effect/mobspawner/penguin mobtype = /mob/living/simple_animal/pet/penguin/emperor - + /obj/effect/holodeck_effect/mobspawner/penguin/Initialize() if(prob(1)) mobtype = /mob/living/simple_animal/pet/penguin/emperor/shamebrero diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index d6eacfe0e1..79a23014b0 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -69,6 +69,8 @@ if(default_deconstruction_screwdriver(user, "dnamod", "dnamod", I)) update_icon() return + else if(default_unfasten_wrench(user, I)) + return if(default_deconstruction_crowbar(I)) return if(iscyborg(user)) diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index f106a0dfe0..d24160ad6f 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -218,13 +218,13 @@ // Strawberry /obj/item/seeds/strawberries - name = "pack of green grape seeds" + name = "pack of strawberrie seeds" desc = "These seeds grow into strawberries vines." icon_state = "seed-strawberry" species = "strawberry" plantname = "Strawberry Vine" product = /obj/item/reagent_containers/food/snacks/grown/strawberries - reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.1) + reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.2) mutatelist = list() /obj/item/reagent_containers/food/snacks/grown/strawberries @@ -233,4 +233,4 @@ icon_state = "strawberries" filling_color = "#7FFF00" tastes = list("strawberries" = 1) - wine_power = 20 \ No newline at end of file + wine_power = 20 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d992a46245..19f18f9973 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -636,14 +636,15 @@ else if(canmove) if(on_fire) resist_fire() //stop, drop, and roll - else if(resting) //cit change - allows resisting out of resting + return + if(resting) //cit change - allows resisting out of resting resist_a_rest() // ditto - else if(iscarbon(src)) //Citadel Change for embedded removal memes - var/mob/living/carbon/C = src - if(!C.handcuffed && !C.legcuffed) - return TRUE - else if(last_special <= world.time) + return + if(resist_embedded()) //Citadel Change for embedded removal memes + return + if(last_special <= world.time) resist_restraints() //trying to remove cuffs. + return /mob/proc/resist_grab(moving_resist) diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index 41ece5ed06..666de9cef0 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -49,6 +49,8 @@ // Simple animals have only one belly. This creates it (if it isn't already set up) /mob/living/simple_animal/init_vore() vore_init = TRUE + if(CHECK_BITFIELD(flags_1, HOLOGRAM_1)) + return if(vore_organs.len) return if(no_vore) //If it can't vore, let's not give it a stomach. diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo .dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo .dm index fd548adc76..b11a5ee258 100644 --- a/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo .dm +++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo .dm @@ -32,4 +32,12 @@ id = "mining" build_path = /obj/item/circuitboard/computer/mining category = list("Computer Boards") - departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SECURITY \ No newline at end of file + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SECURITY + +/datum/design/board/miningshuttle + name = "Computer Design (Mining Shuttle Console)" + desc = "Allows for the construction of circuit boards used to build a Mining Shuttle Console." + id = "miningshuttle" + build_path = /obj/item/circuitboard/computer/mining_shuttle + category = list("Computer Boards") + departmental_flags = DEPARTMENTAL_FLAG_CARGO \ No newline at end of file diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 0968ce049e..4a6f9625f1 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -290,6 +290,16 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE +/datum/design/light_replacer + name = "Light Replacer" + desc = "A device to automatically replace lights. Refill with working light bulbs." + id = "light_replacer" + build_type = PROTOLATHE + materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) + build_path = /obj/item/lightreplacer + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + /datum/design/blutrash name = "Trashbag of Holding" desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index f8122c16e3..1dbd111785 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -57,16 +57,6 @@ category = list("Misc","Power Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING -/datum/design/light_replacer - name = "Light Replacer" - desc = "A device to automatically replace lights. Refill with working light bulbs." - id = "light_replacer" - build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) - build_path = /obj/item/lightreplacer - category = list("Power Designs") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE - /datum/design/inducer name = "Inducer" desc = "The NT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9e7d9be783..0d0d3cc25b 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -432,7 +432,7 @@ display_name = "Computer Consoles" description = "Computers and how they work." prereq_ids = list("datatheory") - design_ids = list("cargo", "cargorequest", "libraryconsole", "mining", "crewconsole", "rdcamera", "comconsole", "idcardconsole", "seccamera") + design_ids = list("cargo", "cargorequest", "libraryconsole", "mining", "miningshuttle", "crewconsole", "rdcamera", "comconsole", "idcardconsole", "seccamera") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 40546a907c..fb3de4c1c5 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -354,7 +354,8 @@ if("mam_body_markings" in S.default_features) var/datum/sprite_accessory/Smark Smark = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]] - body_markings_icon = Smark.icon + if(Smark) + body_markings_icon = Smark.icon if(H.dna.features.["mam_body_markings"] != "None") body_markings = lowertext(H.dna.features.["mam_body_markings"]) auxmarking = lowertext(H.dna.features.["mam_body_markings"]) diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 4594048256..bdf53d3953 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -31,7 +31,9 @@ /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, + /obj/item/seeds/sugarcane = 3, /obj/item/seeds/sunflower = 3, + /obj/item/seeds/strawberries = 3, /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3, diff --git a/html/changelogs/AutoChangeLog-pr-9107.yml b/html/changelogs/AutoChangeLog-pr-9107.yml new file mode 100644 index 0000000000..65a14b9576 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9107.yml @@ -0,0 +1,4 @@ +author: "Bhijn" +delete-after: True +changes: + - bugfix: "You can now actually use the resist hotkey to resist out of handcuffs. Woah, revolutionary" diff --git a/html/changelogs/AutoChangeLog-pr-9119.yml b/html/changelogs/AutoChangeLog-pr-9119.yml new file mode 100644 index 0000000000..756c3edcb2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9119.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - rscadd: "mining shuttle console can now be printed after computer consoles have been researched" diff --git a/html/changelogs/AutoChangeLog-pr-9130.yml b/html/changelogs/AutoChangeLog-pr-9130.yml new file mode 100644 index 0000000000..f10e72a6ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9130.yml @@ -0,0 +1,9 @@ +author: "Owai-Seek" +delete-after: True +changes: + - rscadd: "custodial cruiser cargo crate" + - tweak: "removed light replacer from power designs and moved to misc designs" + - tweak: "added pimpin ride to custodial locator" + - tweak: "added additional items to janibelt whitelist" + - tweak: "made plant DNA manipulator unwrenchable" + - balance: "reduced janitor premium supply costs" diff --git a/html/changelogs/AutoChangeLog-pr-9133.yml b/html/changelogs/AutoChangeLog-pr-9133.yml new file mode 100644 index 0000000000..50bfced879 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9133.yml @@ -0,0 +1,4 @@ +author: "Raptorizer" +delete-after: True +changes: + - tweak: "Doubled peach spawn rate" diff --git a/html/changelogs/AutoChangeLog-pr-9138.yml b/html/changelogs/AutoChangeLog-pr-9138.yml new file mode 100644 index 0000000000..b78d505c5a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9138.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - bugfix: "seed" diff --git a/modular_citadel/code/datums/mood_events/moodular.dm b/modular_citadel/code/datums/mood_events/moodular.dm index b53ce417e8..aa87f1b97a 100644 --- a/modular_citadel/code/datums/mood_events/moodular.dm +++ b/modular_citadel/code/datums/mood_events/moodular.dm @@ -3,9 +3,7 @@ // box of hugs /obj/item/storage/box/hug/attack_self(mob/user) . = ..() - GET_COMPONENT_FROM(mood, /datum/component/mood, user) - if(mood) - mood.add_event("hugbox", /datum/mood_event/hugbox) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"hugbox", /datum/mood_event/hugbox) //Removed headpats here, duplicate code? @@ -13,25 +11,17 @@ /obj/item/toy/plush/attack_self(mob/user) . = ..() if(stuffed || grenade) - GET_COMPONENT_FROM(mood, /datum/component/mood, user) - if(mood) - mood.add_event("plushpet", /datum/mood_event/plushpet) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushpet", /datum/mood_event/plushpet) else - GET_COMPONENT_FROM(mood, /datum/component/mood, user) - if(mood) - mood.add_event("plush_nostuffing", /datum/mood_event/plush_nostuffing) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plush_nostuffing", /datum/mood_event/plush_nostuffing) // Jack the Ripper starring plush /obj/item/toy/plush/attackby(obj/item/I, mob/living/user, params) . = ..() if(I.is_sharp()) if(!grenade) - GET_COMPONENT_FROM(mood, /datum/component/mood, user) - if(mood) - mood.add_event("plushjack", /datum/mood_event/plushjack) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushjack", /datum/mood_event/plushjack) // plush playing (plush-on-plush action) if(istype(I, /obj/item/toy/plush)) - GET_COMPONENT_FROM(mood, /datum/component/mood, user) - if(mood) - mood.add_event("plushplay", /datum/mood_event/plushplay) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushplay", /datum/mood_event/plushplay) diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 977d28199e..42363e9e07 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -322,31 +322,6 @@ name = "worn pet collar" desc = "a pet collar that looks well used." -/obj/item/clothing/neck/petcollar/naomi/examine(mob/user) - . = ..() - if(usr.ckey != "technicalmagi") - to_chat(user, "There's something odd about the it. You probably shouldn't wear it...")//warn people not to wear it if they're not Naomi, lest they become as crazy as she is - -/obj/item/clothing/neck/petcollar/naomi/equipped() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/clothing/neck/petcollar/naomi/dropped() - . = ..() - STOP_PROCESSING(SSobj, src) - -/obj/item/clothing/neck/petcollar/naomi/process() - var/mob/living/carbon/human/H - if(ishuman(loc)) - H = loc - if(!H) - return - else if(H.get_item_by_slot(SLOT_NECK) == src) - if(H.arousalloss < H.max_arousal / 3) - H.arousalloss = H.max_arousal / 3 - if(prob(5) && H.hallucination < 15) - H.hallucination += 10 - /obj/item/clothing/neck/cloak/green name = "Generic Green Cloak" desc = "This cloak doesn't seem too special." diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index 66ac6c05c5..842061bbae 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -1,36 +1,20 @@ -/mob/living/carbon/human/species/mammal - race = /datum/species/mammal - -/mob/living/carbon/human/species/avian - race = /datum/species/avian - -/mob/living/carbon/human/species/aquatic - race = /datum/species/aquatic - -/mob/living/carbon/human/species/insect - race = /datum/species/insect - -/mob/living/carbon/human/species/xeno - race = /datum/species/xeno - -/mob/living/carbon/human/species/ipc - race = /datum/species/ipc - -/mob/living/carbon/human/species/roundstartslime - race = /datum/species/jelly/roundstartslime - /mob/living/carbon/human/resist() . = ..() if(wear_suit && wear_suit.breakouttime)//added in human cuff breakout proc + +/mob/living/proc/resist_embedded() + return + +/mob/living/carbon/human/resist_embedded() + if(handcuffed || legcuffed || (wear_suit && wear_suit.breakouttime)) return - if(.) - if(canmove && !on_fire) - for(var/obj/item/bodypart/L in bodyparts) - if(istype(L) && L.embedded_objects.len) - for(var/obj/item/I in L.embedded_objects) - if(istype(I) && I.w_class >= WEIGHT_CLASS_NORMAL) //minimum weight class to insta-ripout via resist - remove_embedded_unsafe(L, I, src, 1.5) //forcefully call the remove embedded unsafe proc but with extra pain multiplier. if you want to remove it less painfully, examine and remove it carefully. - return FALSE //Hands are occupied + if(canmove && !on_fire) + for(var/obj/item/bodypart/L in bodyparts) + if(istype(L) && L.embedded_objects.len) + for(var/obj/item/I in L.embedded_objects) + if(istype(I) && I.w_class >= WEIGHT_CLASS_NORMAL) //minimum weight class to insta-ripout via resist + remove_embedded_unsafe(L, I, src, 1.5) //forcefully call the remove embedded unsafe proc but with extra pain multiplier. if you want to remove it less painfully, examine and remove it carefully. + return TRUE //Hands are occupied return /mob/living/carbon/human/proc/remove_embedded_unsafe(obj/item/bodypart/L, obj/item/I, mob/user, painmul = 1) diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index c4b2fbf5b1..1ad29c1af3 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -152,11 +152,13 @@ SSbellies.belly_list += src /obj/belly/Destroy() - SSbellies.belly_list -= src if(owner) - owner.vore_organs -= src - owner = null - . = ..() + Remove(owner) + return ..() + +/obj/belly/proc/Remove(mob/living/owner) + owner.vore_organs -= src + owner = null // Called whenever an atom enters this belly /obj/belly/Entered(var/atom/movable/thing,var/atom/OldLoc) diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm index 9356c25f57..da323f02e2 100644 --- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm +++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm @@ -4,10 +4,16 @@ recent_sound = FALSE return SSBELLIES_IGNORED + if(!owner) + qdel(src) + SSbellies.belly_list -= src + return SSBELLIES_PROCESSED + if(loc != owner) - if(istype(owner)) - loc = owner + if(isliving(owner)) //we don't have machine based bellies. (yet :honk:) + forceMove(owner) else + SSbellies.belly_list -= src qdel(src) return SSBELLIES_PROCESSED