From 970a2022f918cc7af989ec01d2659502d8f98b21 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 8 Mar 2022 00:14:21 -0500 Subject: [PATCH 01/24] Also stop borgs OOC notes from double posting --- code/modules/mob/living/silicon/robot/examine.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index 6f3cabe4af..c46031a69a 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -32,8 +32,6 @@ // VOREStation Edit: Start . += attempt_vr(src,"examine_bellies_borg",args) //VOREStation Edit - if(ooc_notes) - . += "OOC Notes: \[View\]" // VOREStation Edit: End . += "*---------*" From 7b029d07b28be814144659e71358dd95cecfe0c1 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 8 Mar 2022 04:07:35 -0500 Subject: [PATCH 02/24] Dominant Predator fix I didn't test it thoroughly enough and so didn't realize it was only searching in the first belly, now it should gather every mob with a ckey in any of your bellies. --- .../subtypes/vore/dominated_brain.dm | 89 ++++++++++--------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm index c74a8b6433..b0c3bb9ca6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm @@ -456,59 +456,60 @@ for(var/obj/belly/B in src.vore_organs) for(var/mob/living/L in B) if(isliving(L) && L.ckey) - possible_mobs += L + possible_mobs |= L else continue - var/mob/living/M - var/input = tgui_input_list(src, "Select a mob to dominate:", "Dominate Prey", possible_mobs) - if(!input) - to_chat(src, "There are no valid targets inside of you.") - return - M = input - if(!M) - return - if(tgui_alert(src, "You selected [M] to attempt to dominate. Are you sure?", "Dominate Prey",list("No","Yes")) != "Yes") - return - log_admin("[key_name_admin(src)] offered to use dominate prey on [M] ([M.ckey]).") - to_chat(src, "Attempting to dominate and gather \the [M]'s mind...") - if(tgui_alert(M, "\The [src] has elected collect your mind into their own. Is this something you will allow to happen?", "Allow Dominate Prey",list("No","Yes")) != "Yes") - return - if(tgui_alert(M, "Are you sure? You can only undo this while your body is inside of [src]. (You can resist, or use the resist verb in the abilities tab)", "Allow Dominate Prey",list("No","Yes")) != "Yes") - return - to_chat(M, "You can feel the will of another pulling you away from your body...") - to_chat(src, "You can feel the will of your prey diminishing as you gather them!") + if(!possible_mobs) + to_chat(src, "There are no valid targets inside of you.") + return + var/input = tgui_input_list(src, "Select a mob to dominate:", "Dominate Prey", possible_mobs) + if(!input) + return + var/mob/living/M = input + if(tgui_alert(src, "You selected [M] to attempt to dominate. Are you sure?", "Dominate Prey",list("No","Yes")) != "Yes") + return + log_admin("[key_name_admin(src)] offered to use dominate prey on [M] ([M.ckey]).") + to_chat(src, "Attempting to dominate and gather \the [M]'s mind...") + if(tgui_alert(M, "\The [src] has elected collect your mind into their own. Is this something you will allow to happen?", "Allow Dominate Prey",list("No","Yes")) != "Yes") + to_chat(src, "\The [M] has declined your Dominate Prey attempt.") + return + if(tgui_alert(M, "Are you sure? You can only undo this while your body is inside of [src]. (You can resist, or use the resist verb in the abilities tab)", "Allow Dominate Prey",list("No","Yes")) != "Yes") + to_chat(src, "\The [M] has declined your Dominate Prey attempt.") + return + to_chat(M, "You can feel the will of another pulling you away from your body...") + to_chat(src, "You can feel the will of your prey diminishing as you gather them!") - if(!do_after(src, 10 SECONDS, exclusive = TRUE)) - to_chat(M, "The alien presence fades, and you are left along in your body...") - to_chat(src, "Your attempt to gather [M]'s mind has been interrupted.") - return - if(!isbelly(M.loc)) - to_chat(M, "The alien presence fades, and you are left along in your body...") - to_chat(src, "Your attempt to gather [M]'s mind has been interrupted.") - return + if(!do_after(src, 10 SECONDS, exclusive = TRUE)) + to_chat(M, "The alien presence fades, and you are left along in your body...") + to_chat(src, "Your attempt to gather [M]'s mind has been interrupted.") + return + if(!isbelly(M.loc)) + to_chat(M, "The alien presence fades, and you are left along in your body...") + to_chat(src, "Your attempt to gather [M]'s mind has been interrupted.") + return - var/mob/living/dominated_brain/db = new /mob/living/dominated_brain(src, src, M.name, M) + var/mob/living/dominated_brain/db = new /mob/living/dominated_brain(src, src, M.name, M) - verbs |= /mob/proc/pme - verbs |= /mob/proc/psay - db.name = M.name - db.prey_ckey = M.ckey - db.pred_ckey = src.ckey - + verbs |= /mob/proc/pme + verbs |= /mob/proc/psay + db.name = M.name + db.prey_ckey = M.ckey + db.pred_ckey = src.ckey + - db.real_name = M.real_name + db.real_name = M.real_name - M.languages -= M.temp_languages - db.languages |= M.languages - db.handle_langs() - db.ooc_notes = M.ooc_notes - db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness + M.languages -= M.temp_languages + db.languages |= M.languages + db.handle_langs() + db.ooc_notes = M.ooc_notes + db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness - db.ckey = db.prey_ckey - log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their body.") - to_chat(src, "You feel your mind expanded as [M] is incorporated into you.") - to_chat(M, "Your mind is gathered into \the [src], becoming part of them...") + db.ckey = db.prey_ckey + log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their original body.") + to_chat(src, "You feel your mind expanded as [M] is incorporated into you.") + to_chat(M, "Your mind is gathered into \the [src], becoming part of them...") /mob/living/dominated_brain/proc/cease_this_foolishness() set category = "Abilities" From 2a96f20ce4ee7b14450ce796ca783bd8c15d44c7 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 8 Mar 2022 05:33:19 -0500 Subject: [PATCH 03/24] Replaces ammo boxes in maps >:C If you gonna refactor things pls make sure you actually replace the things on -all- the maps we use. = w= --- maps/offmap_vr/om_ships/bearcat.dmm | 2 +- maps/offmap_vr/om_ships/cruiser.dmm | 36 +++--- maps/offmap_vr/om_ships/shelter_6.dmm | 32 ++--- maps/stellardelight/ship_centcom.dmm | 118 +++++++++--------- maps/submaps/admin_use_vr/dhael_centcom.dmm | 118 +++++++++--------- maps/submaps/admin_use_vr/ert.dmm | 36 +++--- maps/submaps/admin_use_vr/kk_mercship.dmm | 6 +- maps/submaps/depreciated_vr/ert_base.dmm | 22 ++-- maps/submaps/depreciated_vr/mercbase.dmm | 6 +- maps/submaps/pois_vr/aerostat/Rockybase.dmm | 6 +- .../surface_submaps/mountains/CaveTrench.dmm | 2 +- .../surface_submaps/plains/Boathouse.dmm | 2 +- .../surface_submaps/plains/Boathouse_vr.dmm | 2 +- .../submaps/surface_submaps/plains/Thiefc.dmm | 2 +- maps/tether/submaps/tether_centcom.dmm | 118 +++++++++--------- 15 files changed, 254 insertions(+), 254 deletions(-) diff --git a/maps/offmap_vr/om_ships/bearcat.dmm b/maps/offmap_vr/om_ships/bearcat.dmm index 28eb49a16f..977ee382f2 100644 --- a/maps/offmap_vr/om_ships/bearcat.dmm +++ b/maps/offmap_vr/om_ships/bearcat.dmm @@ -356,7 +356,7 @@ d2 = 4; icon_state = "1-4" }, -/obj/item/weapon/storage/box/beanbags/large, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /obj/item/weapon/gun/projectile/shotgun/pump/combat{ desc = "When words don't strike hard enough."; name = "Solid Argument" diff --git a/maps/offmap_vr/om_ships/cruiser.dmm b/maps/offmap_vr/om_ships/cruiser.dmm index 834b910d7c..292b8ff06d 100644 --- a/maps/offmap_vr/om_ships/cruiser.dmm +++ b/maps/offmap_vr/om_ships/cruiser.dmm @@ -6061,22 +6061,22 @@ /turf/simulated/wall/rpshull, /area/mothership/bridge) "md" = ( -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /obj/item/weapon/storage/box/empshells/large, /obj/item/weapon/storage/box/empshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/structure/closet/secure_closet/guncabinet{ @@ -6792,8 +6792,8 @@ /obj/item/weapon/gun/projectile/automatic/z8, /obj/item/weapon/gun/projectile/automatic/z8, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762, @@ -6804,8 +6804,8 @@ /obj/item/ammo_magazine/m762/ap, /obj/item/ammo_magazine/m762/ap, /obj/item/ammo_magazine/m762/ap, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "ny" = ( diff --git a/maps/offmap_vr/om_ships/shelter_6.dmm b/maps/offmap_vr/om_ships/shelter_6.dmm index c7d3a9fec8..a9e613c235 100644 --- a/maps/offmap_vr/om_ships/shelter_6.dmm +++ b/maps/offmap_vr/om_ships/shelter_6.dmm @@ -284,20 +284,20 @@ /obj/item/ammo_magazine/m545, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /obj/item/weapon/storage/box/empshells/large, /obj/item/weapon/storage/box/empshells/large, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/item/weapon/storage/box/flashshells, /obj/item/weapon/storage/box/flashshells, /obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, @@ -1824,8 +1824,8 @@ /obj/item/weapon/gun/projectile/automatic/z8, /obj/item/weapon/gun/projectile/automatic/z8, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762, @@ -1836,8 +1836,8 @@ /obj/item/ammo_magazine/m762/ap, /obj/item/ammo_magazine/m762/ap, /obj/item/ammo_magazine/m762/ap, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /obj/item/modular_computer/laptop/preset/custom_loadout/hybrid, /obj/item/modular_computer/laptop/preset/custom_loadout/hybrid, /obj/item/modular_computer/tablet/preset/custom_loadout/hybrid, diff --git a/maps/stellardelight/ship_centcom.dmm b/maps/stellardelight/ship_centcom.dmm index 6de916b0c1..37f0375e71 100644 --- a/maps/stellardelight/ship_centcom.dmm +++ b/maps/stellardelight/ship_centcom.dmm @@ -42,8 +42,8 @@ "ag" = ( /obj/structure/table/rack, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/simulated/floor/tiled/dark, /area/centcom/specops) "ah" = ( @@ -669,11 +669,11 @@ "bZ" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/simulated/floor/tiled{ icon_state = "dark" }, @@ -1584,12 +1584,12 @@ /area/centcom/evac) "fl" = ( /obj/structure/table/reinforced, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /turf/simulated/floor/tiled{ icon_state = "dark" }, @@ -5235,15 +5235,15 @@ "vk" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /turf/simulated/floor/tiled/dark, /area/centcom/security) "vl" = ( @@ -5626,10 +5626,10 @@ "wY" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/simulated/floor/tiled/dark, /area/centcom/security) "xc" = ( @@ -7159,14 +7159,14 @@ /area/centcom/control) "Eq" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) @@ -8505,15 +8505,15 @@ "Ih" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/simulated/floor/tiled/dark, /area/centcom/security) "Ij" = ( @@ -12083,14 +12083,14 @@ /area/centcom/security) "Ri" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) @@ -14307,14 +14307,14 @@ }) "Wq" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) diff --git a/maps/submaps/admin_use_vr/dhael_centcom.dmm b/maps/submaps/admin_use_vr/dhael_centcom.dmm index 4021261ffe..ebf1d39200 100644 --- a/maps/submaps/admin_use_vr/dhael_centcom.dmm +++ b/maps/submaps/admin_use_vr/dhael_centcom.dmm @@ -381,11 +381,11 @@ "bb" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -557,12 +557,12 @@ /area/centcom/specops) "br" = ( /obj/structure/table/reinforced, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -3919,15 +3919,15 @@ "ik" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /turf/unsimulated/floor{ icon_state = "vault"; dir = 5 @@ -3935,14 +3935,14 @@ /area/centcom/security) "il" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /obj/effect/floor_decal/industrial/outline/yellow, /turf/unsimulated/floor{ icon_state = "vault"; @@ -3969,14 +3969,14 @@ /area/centcom/security) "in" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, /obj/effect/floor_decal/industrial/outline/yellow, /turf/unsimulated/floor{ icon_state = "vault"; @@ -3985,14 +3985,14 @@ /area/centcom/security) "io" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/effect/floor_decal/industrial/outline/yellow, /turf/unsimulated/floor{ icon_state = "vault"; @@ -4232,10 +4232,10 @@ "iY" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/unsimulated/floor{ icon_state = "vault"; dir = 5 @@ -4309,15 +4309,15 @@ "jd" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/unsimulated/floor{ icon_state = "vault"; dir = 5 @@ -16221,8 +16221,8 @@ "Zw" = ( /obj/structure/table/rack, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/unsimulated/floor{ icon_state = "dark" }, diff --git a/maps/submaps/admin_use_vr/ert.dmm b/maps/submaps/admin_use_vr/ert.dmm index 5660e5c1e5..0dd7d311ab 100644 --- a/maps/submaps/admin_use_vr/ert.dmm +++ b/maps/submaps/admin_use_vr/ert.dmm @@ -6488,8 +6488,8 @@ "JZ" = ( /obj/structure/table/rack/steel, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /obj/effect/floor_decal/industrial/outline/grey, /obj/machinery/alarm/alarms_hidden{ dir = 1; @@ -6828,15 +6828,15 @@ /area/ship/ert/armoury_st) "LA" = ( /obj/structure/table/rack/steel, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /obj/item/weapon/storage/box/empshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/stunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/effect/floor_decal/industrial/outline/grey, /obj/item/weapon/gun/projectile/shotgun/pump/combat{ pixel_y = 3 @@ -6979,15 +6979,15 @@ /area/ship/ert/armoury_st) "Me" = ( /obj/structure/table/rack/steel, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /obj/item/weapon/storage/box/empshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/stunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/effect/floor_decal/industrial/outline/grey, /obj/item/weapon/gun/projectile/automatic/as24{ pixel_y = 3 diff --git a/maps/submaps/admin_use_vr/kk_mercship.dmm b/maps/submaps/admin_use_vr/kk_mercship.dmm index cc5db6e25d..ad77de938c 100644 --- a/maps/submaps/admin_use_vr/kk_mercship.dmm +++ b/maps/submaps/admin_use_vr/kk_mercship.dmm @@ -7132,7 +7132,7 @@ /area/ship/manta/armoury_as) "Dq" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, /obj/item/weapon/gun/projectile/heavysniper, /obj/effect/floor_decal/techfloor{ dir = 5 @@ -9278,8 +9278,8 @@ /area/ship/manta/armoury_st) "Nc" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, /obj/item/weapon/gun/projectile/shotgun/pump/combat{ pixel_y = 4 }, diff --git a/maps/submaps/depreciated_vr/ert_base.dmm b/maps/submaps/depreciated_vr/ert_base.dmm index 6c09554428..811010e5d0 100644 --- a/maps/submaps/depreciated_vr/ert_base.dmm +++ b/maps/submaps/depreciated_vr/ert_base.dmm @@ -507,17 +507,17 @@ /obj/structure/table/rack/steel, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "ba" = ( diff --git a/maps/submaps/depreciated_vr/mercbase.dmm b/maps/submaps/depreciated_vr/mercbase.dmm index 5c590364fd..57afc34abd 100644 --- a/maps/submaps/depreciated_vr/mercbase.dmm +++ b/maps/submaps/depreciated_vr/mercbase.dmm @@ -164,7 +164,7 @@ /obj/effect/floor_decal/corner/red{ dir = 6 }, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, /obj/item/weapon/gun/projectile/heavysniper, /turf/unsimulated/floor{ dir = 2; @@ -285,8 +285,8 @@ /obj/effect/floor_decal/corner/red{ dir = 10 }, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat, /turf/unsimulated/floor{ diff --git a/maps/submaps/pois_vr/aerostat/Rockybase.dmm b/maps/submaps/pois_vr/aerostat/Rockybase.dmm index 657988b585..2aacf9dde6 100644 --- a/maps/submaps/pois_vr/aerostat/Rockybase.dmm +++ b/maps/submaps/pois_vr/aerostat/Rockybase.dmm @@ -235,9 +235,9 @@ /area/submap/virgo2/Rockybase) "aR" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /obj/item/ammo_magazine/m10mm, /obj/item/ammo_magazine/m10mm, /obj/item/ammo_magazine/m10mm, diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm index 4ff3001c29..3b9626828c 100644 --- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm +++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm @@ -29,7 +29,7 @@ "C" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "D" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "E" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) -"F" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"F" = (/obj/item/ammo_magazine/ammo_box/b12g,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "G" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "H" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "I" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) diff --git a/maps/submaps/surface_submaps/plains/Boathouse.dmm b/maps/submaps/surface_submaps/plains/Boathouse.dmm index 0f20993d39..798ad3431f 100644 --- a/maps/submaps/surface_submaps/plains/Boathouse.dmm +++ b/maps/submaps/surface_submaps/plains/Boathouse.dmm @@ -9,7 +9,7 @@ "ai" = (/turf/simulated/wall/wood,/area/submap/Boathouse) "aj" = (/obj/structure/closet/cabinet,/obj/item/clothing/accessory/jacket,/obj/item/clothing/accessory/jacket,/obj/item/clothing/head/beanie,/turf/simulated/floor/wood,/area/submap/Boathouse) "ak" = (/turf/simulated/floor/wood,/area/submap/Boathouse) -"al" = (/obj/structure/closet/cabinet,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/storage/box/beanbags,/turf/simulated/floor/wood,/area/submap/Boathouse) +"al" = (/obj/structure/closet/cabinet,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/ammo_magazine/ammo_box/b12g/beanbag,/turf/simulated/floor/wood,/area/submap/Boathouse) "am" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Boathouse) "an" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/wood,/area/submap/Boathouse) "ao" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/simulated/floor/water,/area/submap/Boathouse) diff --git a/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm index 062bb10591..31ae85b9aa 100644 --- a/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm +++ b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm @@ -42,7 +42,7 @@ "al" = ( /obj/structure/closet/cabinet, /obj/item/weapon/gun/projectile/shotgun/doublebarrel, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /turf/simulated/floor/wood, /area/submap/Boathouse) "am" = ( diff --git a/maps/submaps/surface_submaps/plains/Thiefc.dmm b/maps/submaps/surface_submaps/plains/Thiefc.dmm index f8b8327363..d83aa9631f 100644 --- a/maps/submaps/surface_submaps/plains/Thiefc.dmm +++ b/maps/submaps/surface_submaps/plains/Thiefc.dmm @@ -13,7 +13,7 @@ "m" = (/obj/structure/table/steel,/obj/item/weapon/paper{desc = "This is some bullshit. First chance we got to knick something that looks half decent turns out to be mostly junk. And now we're getting calls that the other stash we've got has got a spider problem. Fuck this, Between the shitty weather, The pissed of bugs, And now apparently some NT goon running around in the area there's hardly enough reason to stick around. I'm telling Carl I'm out tommorow."; name = "Note"},/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "n" = (/obj/vehicle/train/trolley,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "o" = (/obj/structure/closet/crate,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) -"p" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/practiceshells,/obj/random/projectile/scrapped_gun,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) +"p" = (/obj/structure/closet/crate,/obj/item/ammo_magazine/ammo_box/b12g,/obj/item/weapon/storage/box/practiceshells,/obj/random/projectile/scrapped_gun,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/tether/submaps/tether_centcom.dmm b/maps/tether/submaps/tether_centcom.dmm index fdbd846032..ae96dcf680 100644 --- a/maps/tether/submaps/tether_centcom.dmm +++ b/maps/tether/submaps/tether_centcom.dmm @@ -31,8 +31,8 @@ "ag" = ( /obj/structure/table/rack, /obj/item/weapon/gun/projectile/heavysniper, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/simulated/floor/tiled/dark, /area/centcom/specops) "ah" = ( @@ -627,11 +627,11 @@ "bZ" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunammo, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/simulated/floor/tiled{ icon_state = "dark" }, @@ -1569,12 +1569,12 @@ /area/centcom/terminal) "fl" = ( /obj/structure/table/reinforced, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/flashshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/stunshells, -/obj/item/weapon/storage/box/beanbags, -/obj/item/weapon/storage/box/beanbags, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /turf/simulated/floor/tiled{ icon_state = "dark" }, @@ -5313,15 +5313,15 @@ "vk" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, -/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, +/obj/item/ammo_magazine/ammo_box/b12g, /turf/simulated/floor/tiled/dark, /area/centcom/security) "vm" = ( @@ -5691,10 +5691,10 @@ "wY" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, -/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, /turf/simulated/floor/tiled/dark, /area/centcom/security) "xc" = ( @@ -7194,14 +7194,14 @@ /area/centcom/control) "Eq" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, -/obj/item/weapon/storage/box/stunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, +/obj/item/ammo_magazine/ammo_box/b12g/stunshell, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) @@ -8528,15 +8528,15 @@ "Ih" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, -/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, +/obj/item/ammo_magazine/ammo_box/b12g/pellet, /turf/simulated/floor/tiled/dark, /area/centcom/security) "Ij" = ( @@ -12177,14 +12177,14 @@ /area/centcom/security) "Ri" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, -/obj/item/weapon/storage/box/beanbags/large, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, +/obj/item/ammo_magazine/ammo_box/b12g/beanbag, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) @@ -14352,14 +14352,14 @@ }) "Wq" = ( /obj/structure/table/rack, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, -/obj/item/weapon/storage/box/flashshells/large, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, +/obj/item/ammo_magazine/ammo_box/b12g/flash, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/centcom/security) From b6ad70799a93693855ee3eeb6615623a77108869 Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 8 Mar 2022 20:44:50 +1000 Subject: [PATCH 04/24] Fixes weird char setup crash --- .../preference_setup/loadout/loadout_uniform_vr.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index c10fe8277e..c5e65eff35 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -241,13 +241,19 @@ Talon jumpsuit // undersuits /datum/gear/uniform/undersuit display_name = "undersuit selection" - path = /obj/item/clothing/under/undersuit + path = /obj/item/clothing/under/undersuit/ /datum/gear/uniform/undersuit/New() ..() var/list/suits = list() - var/list/blacklisted_types = list(/obj/item/clothing/under/undersuit/sec, /obj/item/clothing/under/undersuit/sec/hos, /obj/item/clothing/under/undersuit/hazard, /obj/item/clothing/under/undersuit/command, /obj/item/clothing/under/undersuit/centcom) - for(var/obj/item/clothing/under/undersuit/undersuit_type as anything in typesof(/obj/item/clothing/under/undersuit) - blacklisted_types) + var/list/blacklisted_types = list(/obj/item/clothing/under/undersuit/sec, + /obj/item/clothing/under/undersuit/sec/hos, + /obj/item/clothing/under/undersuit/hazard, + /obj/item/clothing/under/undersuit/command, + /obj/item/clothing/under/undersuit/centcom) + for(var/obj/item/clothing/under/undersuit/undersuit_type as anything in typesof(/obj/item/clothing/under/undersuit)) + if(undersuit_type in blacklisted_types) + continue suits[initial(undersuit_type.name)] = undersuit_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(suits)) @@ -264,4 +270,4 @@ Talon jumpsuit /datum/gear/uniform/undersuit_com display_name = "undersuit, command (SM/HoP)" allowed_roles = list("Site Manager", "Head of Personnel") - path = /obj/item/clothing/under/undersuit/command \ No newline at end of file + path = /obj/item/clothing/under/undersuit/command From 0358d02df68fa405127d336a98f2019685bb159a Mon Sep 17 00:00:00 2001 From: Pandora Date: Tue, 8 Mar 2022 11:29:58 +0000 Subject: [PATCH 05/24] smol fix --- code/modules/pda/pda.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm index bda75db610..a19552d368 100644 --- a/code/modules/pda/pda.dm +++ b/code/modules/pda/pda.dm @@ -146,10 +146,11 @@ var/global/list/obj/item/device/pda/PDAs = list() SPECIES_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi', SPECIES_VR_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi', ) - if(7) icon = 'icons/obj/pda_clam.dmi' //VOREStation edit + if(7) icon = 'icons/obj/pda_slider.dmi' //VOREStation edit else icon = 'icons/obj/pda_old.dmi' log_debug("Invalid switch for PDA, defaulting to old PDA icons. [pdachoice] chosen.") + add_overlay("pda-pen") start_program(find_program(/datum/data/pda/app/main_menu)) /obj/item/device/pda/proc/can_use(mob/user) From 8240a4397ecf6a0035dfaedb4d5e97e7b780970f Mon Sep 17 00:00:00 2001 From: Pandora Date: Tue, 8 Mar 2022 11:32:19 +0000 Subject: [PATCH 06/24] bye bye clamshell --- icons/obj/pda_clam.dmi | Bin 18845 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/pda_clam.dmi diff --git a/icons/obj/pda_clam.dmi b/icons/obj/pda_clam.dmi deleted file mode 100644 index e27eeff1413ed0f93a9435d8ad62f860014fb6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18845 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 Date: Tue, 8 Mar 2022 11:32:39 +0000 Subject: [PATCH 07/24] hello slider --- icons/obj/pda_slider.dmi | Bin 0 -> 18845 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/pda_slider.dmi diff --git a/icons/obj/pda_slider.dmi b/icons/obj/pda_slider.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e27eeff1413ed0f93a9435d8ad62f860014fb6e8 GIT binary patch literal 18845 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 Date: Wed, 9 Mar 2022 05:31:43 +0000 Subject: [PATCH 08/24] but there is no real me --- .../client/preference_setup/loadout/loadout_uniform_vr.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index c5e65eff35..e6988b0ac9 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -257,6 +257,11 @@ Talon jumpsuit suits[initial(undersuit_type.name)] = undersuit_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(suits)) +/datum/gear/uniform/undersuit_haz + display_name = "undersuit, hazard (Engineering)" + allowed_roles = list("Chief Engineer", "Atmospheric Technician", "Engineer") + path = /obj/item/clothing/under/undersuit/hazard + /datum/gear/uniform/undersuit_sec display_name = "undersuit, security (Security)" allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") From f040197ce7c27d09021511144d018aeb2af977fe Mon Sep 17 00:00:00 2001 From: Pandora Date: Wed, 9 Mar 2022 16:11:23 +0000 Subject: [PATCH 09/24] 'Do I feel lucky?' Well, do ya, punk? --- code/modules/economy/vending_machines.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 133894337d..e8f6239796 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -1219,7 +1219,10 @@ /obj/item/clothing/mask/bandana/red = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/security = 5, /obj/item/clothing/accessory/armband = 5, - /obj/item/clothing/accessory/holster/waist = 5 + /obj/item/clothing/accessory/holster/armpit = 2 //VOREStation edit - gives some variety of available holsters for those who forgot to bring their own + /obj/item/clothing/accessory/holster/waist = 2 //VOREStation edit - But also reduces the number per type, so there's 8 overall rather than like, 20 + /obj/item/clothing/accessory/holster/hip = 2 //VOREStation edit + /obj/item/clothing/accessory/holster/leg = 2 //VOREStation edit ) req_log_access = access_hop has_logs = 1 @@ -1624,4 +1627,4 @@ /obj/item/clothing/under/clown/rainbow = 1 ) req_log_access = access_hop - has_logs = 1 \ No newline at end of file + has_logs = 1 From 4702afc7c7299409fdd23eb368137e6a40b2a670 Mon Sep 17 00:00:00 2001 From: Pandora Date: Wed, 9 Mar 2022 16:20:42 +0000 Subject: [PATCH 10/24] This is why you double-check your code kids because I'm a potato --- code/modules/economy/vending_machines.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index e8f6239796..4973281ccd 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -1219,9 +1219,9 @@ /obj/item/clothing/mask/bandana/red = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/security = 5, /obj/item/clothing/accessory/armband = 5, - /obj/item/clothing/accessory/holster/armpit = 2 //VOREStation edit - gives some variety of available holsters for those who forgot to bring their own - /obj/item/clothing/accessory/holster/waist = 2 //VOREStation edit - But also reduces the number per type, so there's 8 overall rather than like, 20 - /obj/item/clothing/accessory/holster/hip = 2 //VOREStation edit + /obj/item/clothing/accessory/holster/armpit = 2, //VOREStation edit - gives some variety of available holsters for those who forgot to bring their own + /obj/item/clothing/accessory/holster/waist = 2, //VOREStation edit - But also reduces the number per type, so there's 8 overall rather than like, 20 + /obj/item/clothing/accessory/holster/hip = 2, //VOREStation edit /obj/item/clothing/accessory/holster/leg = 2 //VOREStation edit ) req_log_access = access_hop From 83d40e1f5608d981f1a15e13362e61a351c9985b Mon Sep 17 00:00:00 2001 From: VerySoft Date: Wed, 9 Mar 2022 16:36:49 -0500 Subject: [PATCH 11/24] Don't announce dominated brains when leaving They're part of your brain it's fine. --- code/game/machinery/cryopod.dm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index be8639e4bc..88704bfc1a 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -522,9 +522,18 @@ control_computer.frozen_crew += "[to_despawn.real_name], [to_despawn.mind.role_alt_title] - [stationtime2text()]" control_computer._admin_logs += "[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) at [stationtime2text()]" log_and_message_admins("[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) entered cryostorage.") + + //VOREStation Edit Start + var/depart_announce = TRUE - announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE)) - visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3) + if(!istype(to_despawn, /mob/living/dominated_brain)) + depart_announce = FALSE + + if(depart_announce) + announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE)) + visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3) + + //VOREStation Edit End //VOREStation Edit begin: Dont delete mobs-in-mobs if(to_despawn.client && to_despawn.stat<2) From bc17a8bf817028d59c7bae5fb7c850771053c898 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Wed, 9 Mar 2022 16:40:10 -0500 Subject: [PATCH 12/24] That was almost really stupid --- code/game/machinery/cryopod.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 88704bfc1a..f948459970 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -526,7 +526,7 @@ //VOREStation Edit Start var/depart_announce = TRUE - if(!istype(to_despawn, /mob/living/dominated_brain)) + if(istype(to_despawn, /mob/living/dominated_brain)) depart_announce = FALSE if(depart_announce) From f44aa8adbf6019ab79b5a47c1f4ee834547e1ff1 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Wed, 9 Mar 2022 17:31:02 -0500 Subject: [PATCH 13/24] Vore Stats Adds some vore stats to the end of round trivia thing. Includes number of times any mob with a ckey was eaten, digested, or absorbed. Also includes number of items digested. --- code/datums/roundstats/roundstats.dm | 15 +++++++++++++++ code/modules/vore/eating/belly_obj_vr.dm | 6 ++++++ code/modules/vore/eating/bellymodes_vr.dm | 3 +++ 3 files changed, 24 insertions(+) diff --git a/code/datums/roundstats/roundstats.dm b/code/datums/roundstats/roundstats.dm index c1453b18af..6938a2a6c1 100644 --- a/code/datums/roundstats/roundstats.dm +++ b/code/datums/roundstats/roundstats.dm @@ -21,6 +21,10 @@ GLOBAL_VAR_INIT(items_sold_shift_roundstat, 0) GLOBAL_VAR_INIT(disposals_flush_shift_roundstat, 0) GLOBAL_VAR_INIT(rocks_drilled_roundstat, 0) GLOBAL_VAR_INIT(mech_destroyed_roundstat, 0) +GLOBAL_VAR_INIT(prey_eaten_roundstat, 0) //VOREStation Edit - Obviously +GLOBAL_VAR_INIT(prey_absorbed_roundstat, 0) //VOREStation Edit - Obviously +GLOBAL_VAR_INIT(prey_digested_roundstat, 0) //VOREStation Edit - Obviously +GLOBAL_VAR_INIT(items_digested_roundstat, 0) //VOREStation Edit - Obviously /hook/roundend/proc/RoundTrivia()//bazinga var/list/valid_stats_list = list() //This is to be populated with the good shit @@ -50,6 +54,17 @@ GLOBAL_VAR_INIT(mech_destroyed_roundstat, 0) else if(GLOB.disposals_flush_shift_roundstat > 40) valid_stats_list.Add("The disposal system flushed a whole [GLOB.disposals_flush_shift_roundstat] times for this shift. We should really invest in waste treatement.") + //VOREStation Add Start - Vore stats lets gooooo + if(GLOB.prey_eaten_roundstat > 0) + valid_stats_list.Add("A total of [GLOB.prey_eaten_roundstat] individuals were eaten today!") + if(GLOB.prey_absorbed_roundstat > 0) + valid_stats_list.Add("A total of [GLOB.prey_digested_roundstat] individuals were digested today!") + if(GLOB.prey_absorbed_roundstat > 0) + valid_stats_list.Add("A total of [GLOB.prey_absorbed_roundstat] individuals were absorbed today!") + if(GLOB.prey_absorbed_roundstat > 0) + valid_stats_list.Add("A total of [GLOB.items_digested_roundstat] items were digested today!") + //VOREStation Add End + if(LAZYLEN(valid_stats_list)) to_world("Shift trivia!") diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 10d1dd44f3..8bfa182a05 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -422,6 +422,9 @@ for(var/mob/living/M in contents) M.updateVRPanel() + if(prey.ckey) + GLOB.prey_eaten_roundstat++ + // Get the line that should show up in Examine message if the owner of this belly // is examined. By making this a proc, we not only take advantage of polymorphism, // but can easily make the message vary based on how many people are inside, etc. @@ -686,6 +689,8 @@ M.temp_language_sources += owner handle_absorb_langs(M, owner) + GLOB.prey_absorbed_roundstat++ + to_chat(M, "[absorb_alert_prey]") to_chat(owner, "[absorb_alert_owner]") if(M.noisy) //Mute drained absorbee hunger if enabled. @@ -805,6 +810,7 @@ items_preserved |= item else owner.adjust_nutrition((nutrition_percent / 100) * 5 * digested) + GLOB.items_digested_roundstat++ if(isrobot(owner)) var/mob/living/silicon/robot/R = owner R.cell.charge += ((nutrition_percent / 100) * 50 * digested) diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index e4e358d3c4..7509c11cc4 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -274,6 +274,9 @@ to_chat(owner, "[digest_alert_owner]") to_chat(M, "[digest_alert_prey]") + if(M.ckey) + GLOB.prey_digested_roundstat++ + if((mode_flags & DM_FLAG_LEAVEREMAINS) && M.digest_leave_remains) handle_remains_leaving(M) digestion_death(M) From 93b1160eb306431d638f4caf3c9f2878ec410220 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Wed, 9 Mar 2022 17:33:06 -0500 Subject: [PATCH 14/24] Actually check for the proper stats --- code/datums/roundstats/roundstats.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/roundstats/roundstats.dm b/code/datums/roundstats/roundstats.dm index 6938a2a6c1..6a4c3b0993 100644 --- a/code/datums/roundstats/roundstats.dm +++ b/code/datums/roundstats/roundstats.dm @@ -57,11 +57,11 @@ GLOBAL_VAR_INIT(items_digested_roundstat, 0) //VOREStation Edit - Obviously //VOREStation Add Start - Vore stats lets gooooo if(GLOB.prey_eaten_roundstat > 0) valid_stats_list.Add("A total of [GLOB.prey_eaten_roundstat] individuals were eaten today!") - if(GLOB.prey_absorbed_roundstat > 0) + if(GLOB.prey_digested_roundstat > 0) valid_stats_list.Add("A total of [GLOB.prey_digested_roundstat] individuals were digested today!") if(GLOB.prey_absorbed_roundstat > 0) valid_stats_list.Add("A total of [GLOB.prey_absorbed_roundstat] individuals were absorbed today!") - if(GLOB.prey_absorbed_roundstat > 0) + if(GLOB.items_digested_roundstat > 0) valid_stats_list.Add("A total of [GLOB.items_digested_roundstat] items were digested today!") //VOREStation Add End From 7024659a3db8e8c1956ad60e02a2ab5f3c41bc34 Mon Sep 17 00:00:00 2001 From: Verkister Date: Thu, 10 Mar 2022 08:54:29 +0200 Subject: [PATCH 15/24] Fixes item digestion vore stat count Makes the stat count the things when the item is actually digested instead of counting every tick of partial digestion that may have affected it. --- code/modules/vore/eating/belly_obj_vr.dm | 3 +-- code/modules/vore/eating/digest_act_vr.dm | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 8bfa182a05..02f86a734f 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -797,7 +797,7 @@ continue prey.languages += L prey.temp_languages += L - + //////////////////////////////////////////////////////////////////////// @@ -810,7 +810,6 @@ items_preserved |= item else owner.adjust_nutrition((nutrition_percent / 100) * 5 * digested) - GLOB.items_digested_roundstat++ if(isrobot(owner)) var/mob/living/silicon/robot/R = owner R.cell.charge += ((nutrition_percent / 100) * 50 * digested) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index 741d7e0941..3e76a34101 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -19,6 +19,7 @@ qdel(O) else if(item_storage) O.forceMove(item_storage) + GLOB.items_digested_roundstat++ qdel(src) return w_class @@ -57,6 +58,7 @@ S.use(1) digest_stage = w_class else + GLOB.items_digested_roundstat++ qdel(src) if(g_damage > w_class) return w_class From 1167ec590bddc4d7be671d8fa0b355647758eee4 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Thu, 10 Mar 2022 07:02:00 -0500 Subject: [PATCH 16/24] YEAH! --- code/__defines/belly_modes_vr.dm | 1 + code/modules/emotes/emote_mob.dm | 5 + code/modules/mob/living/living_defines_vr.dm | 3 +- code/modules/mob/living/say.dm | 6 +- .../subtypes/vore/dominated_brain.dm | 213 ++---------------- code/modules/mob/say.dm | 24 ++ code/modules/mob/say_vr.dm | 167 ++++++++++++++ code/modules/vore/eating/belly_obj_vr.dm | 47 +--- code/modules/vore/eating/bellymodes_vr.dm | 4 + code/modules/vore/eating/digest_act_vr.dm | 2 - code/modules/vore/eating/living_vr.dm | 4 +- 11 files changed, 245 insertions(+), 231 deletions(-) diff --git a/code/__defines/belly_modes_vr.dm b/code/__defines/belly_modes_vr.dm index bf64819cd4..810f0da00b 100644 --- a/code/__defines/belly_modes_vr.dm +++ b/code/__defines/belly_modes_vr.dm @@ -18,6 +18,7 @@ #define DM_FLAG_THICKBELLY 0x8 #define DM_FLAG_AFFECTWORN 0x10 #define DM_FLAG_JAMSENSORS 0x20 +#define DM_FLAG_FORCEPSAY 0x40 //Item related modes #define IM_HOLD "Hold" diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 7516be2eff..b0b3fce0bb 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -27,6 +27,11 @@ if(world.time < next_emote) to_chat(src, SPAN_WARNING("You cannot use another emote yet.")) return + //VOREStation Addition Start + if(forced_psay) + pme(message) + return + //VOREStation Addition End if(act == "help") if(world.time >= next_emote_refresh) diff --git a/code/modules/mob/living/living_defines_vr.dm b/code/modules/mob/living/living_defines_vr.dm index 684c0c08a1..06eeee7ac3 100644 --- a/code/modules/mob/living/living_defines_vr.dm +++ b/code/modules/mob/living/living_defines_vr.dm @@ -1,5 +1,6 @@ /mob - var/muffled = 0 // Used by muffling belly + var/muffled = FALSE // Used by muffling belly + var/forced_psay = FALSE // If true will prevent the user from speaking with normal say/emotes, and instead redirect these to a private speech mode with their predator. /mob/living var/ooc_notes = null diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 21f0e7df2c..d10a1d3f0d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -155,7 +155,11 @@ var/list/channel_to_radio_key = new if(stat == DEAD && !forbid_seeing_deadchat) return say_dead(message) return - + //VOREStation Addition Start + if(forced_psay) + psay(message) + return + //VOREStation Addition End //Parse the mode var/message_mode = parse_message_mode(message, "headset") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm index b0c3bb9ca6..8b38d1965e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm @@ -5,6 +5,7 @@ desc = "Someone who has taken a back seat within their own body." icon = 'icons/obj/surgery.dmi' icon_state = "brain1" + forced_psay = TRUE var/mob/living/prey_body //The body of the person who dominated the brain var/prey_ckey //The ckey of the person who dominated the brain var/prey_name //In case the body is missing. ;3c @@ -61,107 +62,9 @@ pred_body = null /mob/living/dominated_brain/Destroy() - if(pred_body) - var/P = FALSE - for(var/I in pred_body) - if(I == src) - continue - if(istype(I, /mob/living/dominated_brain)) - P = TRUE - if(!P) - pred_body.verbs -= /mob/proc/psay - pred_body.verbs -= /mob/proc/pme - lets_unregister_our_signals() . = ..() -/mob/living/dominated_brain/say(var/message, var/datum/language/speaking = null, var/whispering = 0) - - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - - if(loc == pred_body) - - message = sanitize(message) - if (!message) - return - log_say(message,src) - if (stat == 2) - return say_dead(message) - - to_chat(src, "You think, \"[message]\"") - to_chat(pred_body, "The captive mind of \the [src] thinks, \"[message]\"") - for(var/I in pred_body.contents) - if(istype(I, /mob/living/dominated_brain) && I != src) - var/mob/living/dominated_brain/db = I - to_chat(db, "The captive mind of \the [src] thinks, \"[message]\"") - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(M, "The captive mind of [src] whispers, \"[message]\"") - -/mob/living/dominated_brain/me_verb(message as text) - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - - if(loc == pred_body) - - message = sanitize(message) - if (!message) - return - log_emote(message,src) - if (stat == 2) - return say_dead(message) - - to_chat(src, "\The [src] [message]") - to_chat(pred_body, "\The [src] [message]") - for(var/I in pred_body.contents) - if(istype(I, /mob/living/dominated_brain) && I != src) - var/mob/living/dominated_brain/db = I - to_chat(db, "\The [src] [message]") - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(M, "\The [src] [message]") - return - -/mob/living/dominated_brain/emote(var/message) - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - - if(loc == pred_body) - - message = sanitize(message) - if (!message) - return - log_emote(message,src) - if (stat == 2) - return say_dead(message) - - to_chat(src, "\The [src] [message]") - to_chat(pred_body, "\The [src] [message]") - for(var/I in pred_body.contents) - if(istype(I, /mob/living/dominated_brain) && I != src) - var/mob/living/dominated_brain/db = I - to_chat(db, "\The [src] [message]") - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(M, "\The [src] [message]") - return - /mob/living/dominated_brain/process_resist() //Resisting control by an alien mind. if(pred_body.ckey == pred_ckey) @@ -199,8 +102,6 @@ ndb.name = prey_name ndb.prey_ckey = src.prey_ckey ndb.pred_ckey = src.pred_ckey - ndb.pred_body.verbs |= /mob/proc/pme - ndb.pred_body.verbs |= /mob/proc/psay prey_goes_here = ndb prey_goes_here.real_name = src.prey_name @@ -215,8 +116,6 @@ ndb.name = prey_name ndb.prey_ckey = src.prey_ckey ndb.pred_ckey = src.pred_ckey - ndb.pred_body.verbs |= /mob/proc/pme - ndb.pred_body.verbs |= /mob/proc/psay prey_goes_here = ndb src.languages -= src.temp_languages @@ -234,26 +133,29 @@ pred_body.ckey = src.pred_ckey pred_body.ooc_notes = pred_ooc_notes log_and_message_admins("[pred_body] is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].") - handle_langs(src) + pred_body.absorb_langs() pred_body.prey_controlled = FALSE qdel(src) -/mob/living/dominated_brain/proc/handle_langs(var/mob/M) +/mob/living/proc/absorb_langs() //This should be called on the predator in the exchange var/list/langlist = list() - pred_body.languages -= pred_body.temp_languages - LAZYCLEARLIST(pred_body.temp_languages) - pred_body.temp_languages = list() - for(var/i in loc) - if(i == M) - continue - if(istype(i,/mob/living/dominated_brain)) - var/mob/living/dominated_brain/db = i - langlist |= db.languages - langlist |= db.prey_langs - langlist -= pred_body.languages - pred_body.temp_languages |= langlist - pred_body.languages |= langlist + languages -= temp_languages + LAZYCLEARLIST(src.temp_languages) + src.temp_languages = list() + for(var/mob/living/L in contents) + if(istype(L,/mob/living/dominated_brain)) + if(L.ckey) + langlist |= L.languages + for(var/b in vore_organs) + for(var/mob/living/L in b) + if(isliving(L)) + if(L.ckey) + langlist |= L.languages + if(langlist.len) + langlist -= languages + temp_languages |= langlist + languages |= langlist //Welcome to the adapted borer code. /mob/proc/dominate_predator() @@ -319,8 +221,6 @@ else pred_brain = new /mob/living/dominated_brain(pred, pred, name, prey) - pred.verbs |= /mob/proc/pme - pred.verbs |= /mob/proc/psay pred_brain.prey_ooc_notes = prey.ooc_notes pred_brain.pred_ooc_notes = pred.ooc_notes pred_brain.name = pred.name @@ -330,7 +230,7 @@ pred_brain.prey_langs |= preylangs pred_brain.prey_ckey = prey.ckey pred_brain.pred_ckey = pred.ckey - pred_brain.handle_langs() + pred_brain.pred_body.absorb_langs() pred.ooc_notes = pred_brain.prey_ooc_notes pred.verbs |= /mob/proc/release_predator @@ -381,72 +281,6 @@ else to_chat(src, "\The [pred_body] is already dominated, and cannot be controlled at this time.") - -/mob/proc/psay(message as text|null) - set category = "Abilities" - set name = "Prey Say (psay)" - set desc = "Emote to a dominated predator/prey." - - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - message = sanitize(message) - if (!message) - message = input(usr, "Type a message to emote.","Emote to prey") as text|null - if (!message) - return - - var/f = FALSE - for(var/I in contents) - if(istype(I, /mob/living/dominated_brain)) - var/mob/living/dominated_brain/db = I - to_chat(db, "\The [src] thinks, \"[message]\"") - f = TRUE - if(f) - to_chat(src, "You think \"[message]\"") - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(M, "\The [src] thinks, \"[message]\"") - log_say(message,src) - else - to_chat(src, "There is no one inside you to talk to...") - return - -/mob/proc/pme(message as text|null) - set category = "Abilities" - set name = "Prey Emote (pme)" - set desc = "Emote to a dominated predator/prey." - - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - message = sanitize(message) - if (!message) - message = input(usr, "Type a message to emote.","Emote to prey") as text|null - if (!message) - return - var/f = FALSE - for(var/I in contents) - if(istype(I, /mob/living/dominated_brain)) - var/mob/living/dominated_brain/db = I - to_chat(db, "\The [src] [message]") - f = TRUE - if(f) - to_chat(src, "\The [src] [message]") - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(M, "\The [src] [message]") - log_emote(message,src) - else - to_chat(src, "There is no one inside you to talk to...") - return - /mob/living/proc/dominate_prey() set category = "Abilities" set name = "Dominate Prey" @@ -491,8 +325,6 @@ var/mob/living/dominated_brain/db = new /mob/living/dominated_brain(src, src, M.name, M) - verbs |= /mob/proc/pme - verbs |= /mob/proc/psay db.name = M.name db.prey_ckey = M.ckey db.pred_ckey = src.ckey @@ -502,10 +334,11 @@ M.languages -= M.temp_languages db.languages |= M.languages - db.handle_langs() db.ooc_notes = M.ooc_notes db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness + absorb_langs() + db.ckey = db.prey_ckey log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their original body.") to_chat(src, "You feel your mind expanded as [M] is incorporated into you.") @@ -523,7 +356,7 @@ if(prey_body && prey_body.loc.loc == pred_body) prey_body.ckey = prey_ckey - handle_langs(src) + pred_body.absorb_langs() to_chat(src, "Your connection to [pred_body] fades, and you awaken back in your own body!") to_chat(pred_body, "You feel as though a piece of yourself is missing, as \the [src] returns to their body.") log_admin("[src] ([src.ckey]) has returned to their body, [prey_body].") diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index c30d256c59..d51d048da1 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -4,12 +4,22 @@ /mob/verb/whisper(message as text) set name = "Whisper" set category = "IC" + //VOREStation Addition Start + if(forced_psay) + psay(message) + return + //VOREStation Addition End usr.say(message,whispering=1) /mob/verb/say_verb(message as text) set name = "Say" set category = "IC" + //VOREStation Addition Start + if(forced_psay) + psay(message) + return + //VOREStation Addition End set_typing_indicator(FALSE) usr.say(message) @@ -21,6 +31,11 @@ if(say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return + //VOREStation Addition Start + if(forced_psay) + pme(message) + return + //VOREStation Addition End //VOREStation Edit Start if(muffled) @@ -63,6 +78,15 @@ else if(universal_speak || universal_understand) return TRUE + //VOREStation Addition Start + if(isliving(src)) + var/mob/living/L = src + if(isbelly(L.loc) && L.absorbed) + var/mob/living/P = L.loc.loc + if(P.say_understands(other, speaking)) + return TRUE + //VOREStation Addition End + //Languages are handled after. if(!speaking) if(!other) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 8b06163590..389d726d98 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -10,6 +10,11 @@ if(say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return + //VOREStation Addition Start + if(forced_psay) + pme(message) + return + //VOREStation Addition End message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages (within reason) if(!message) @@ -26,6 +31,12 @@ to_chat(src, "You are unable to emote.") return + //VOREStation Addition Start + if(forced_psay) + pme(message) + return + //VOREStation Addition End + var/muzzled = is_muzzled() if(m_type == 2 && muzzled) return @@ -99,3 +110,159 @@ to_chat(user,message) to_chat(user, "^ This message was NOT SENT ^ -- It was [length] characters, and the limit is [MAX_MESSAGE_LEN]. It would fit in [posts] separate messages.") #undef MAX_HUGE_MESSAGE_LEN + +///// PSAY ///// + +/mob/verb/psay(message as text|null) + set category = "Abilities" + set name = "Psay" + set desc = "Talk to an absorbed or dominated predator/prey." + + if (src.client) + if(client.prefs.muted & MUTE_IC) + to_chat(src, "You cannot speak in IC (muted).") + return + message = sanitize_or_reflect(message,src) + if (!message) + message = input(usr, "Type a message to say.","Psay") as text|null + if (!message) + return + if (stat == DEAD) + return say_dead(message) + if(!isliving(src)) + forced_psay = FALSE + say(message) + var/f = FALSE //did we find someone to send the message to other than ourself? + var/mob/living/pb //predator body + var/mob/living/M = src + if(istype(M, /mob/living/dominated_brain)) + var/mob/living/dominated_brain/db = M + if(db.loc != db.pred_body) + to_chat(db, "You aren't inside of a brain anymore!!!") + qdel(db) //Oh no, dominated brains shouldn't exist outside of the body, so if we got here something went very wrong. + return + else + pb = db.pred_body + to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain + f = TRUE + else if(M.forced_psay && M.absorbed) + if(isbelly(M.loc)) + pb = M.loc.loc + to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed + f = TRUE + else + M.forced_psay = FALSE + M.say(message) + + if(pb) //We are prey, let's do the prey thing. + + for(var/I in pb.contents) + if(istype(I, /mob/living/dominated_brain) && I != M) + var/mob/living/dominated_brain/db = I + to_chat(db, "The captive mind of \the [M] thinks, \"[message]\"") //To any dominated brains in the pred + f = TRUE + for(var/B in pb.vore_organs) + for(var/mob/living/L in B) + if(L.absorbed && L != M) + to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people in the pred + f = TRUE + + //Let's also check and see if there's anyone inside of us to send the message to. + for(var/I in M.contents) + if(istype(I, /mob/living/dominated_brain)) + var/mob/living/dominated_brain/db = I + to_chat(db, "\The [M] thinks, \"[message]\"") //To any dominated brains inside us + f = TRUE + for(var/B in M.vore_organs) + for(var/mob/living/L in B) + if(L.absorbed) + to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people inside us + f = TRUE + + if(f) //We found someone to send the message to, let's not print the failed message. + to_chat(M, "You think \"[message]\"") //To us, if we found anyone to send the message to + for (var/mob/G in player_list) + if (istype(G, /mob/new_player)) + continue + else if(G.stat == DEAD && G.is_preference_enabled(/datum/client_preference/ghost_ears)) + to_chat(G, "\The [M] thinks, \"[message]\"") + log_say(message,M) + else + to_chat(M, "There is no one inside you to talk to... ([message])") //So sad + +///// PME ///// + +/mob/verb/pme(message as text|null) + set category = "Abilities" + set name = "Pme" + set desc = "Emote to an absorbed or dominated predator/prey." + + if (src.client) + if(client.prefs.muted & MUTE_IC) + to_chat(src, "You cannot speak in IC (muted).") + return + message = sanitize_or_reflect(message,src) + if (!message) + message = input(usr, "Type a message to emote.","Pme") as text|null + if (!message) + return + if (stat == DEAD) + return say_dead(message) + if(!isliving(src)) + forced_psay = FALSE + me_verb(message) + var/f = FALSE //did we find someone to send the message to other than ourself? + var/mob/living/pb //predator body + var/mob/living/M = src + if(istype(M, /mob/living/dominated_brain)) + var/mob/living/dominated_brain/db = M + if(db.loc != db.pred_body) + to_chat(db, "You aren't inside of a brain anymore!!!") + qdel(db) //Oh no, dominated brains shouldn't exist outside of the body, so if we got here something went very wrong. + return + else + pb = db.pred_body + if(M.forced_psay) + if(isbelly(M.loc) && M.absorbed) + pb = M.loc.loc + else + M.forced_psay = FALSE + M.me_verb(message) + + if(pb) //We are prey, let's do the prey thing. + + to_chat(pb, "\The [M] [message]") //To our pred + f = TRUE + for(var/I in pb.contents) + if(istype(I, /mob/living/dominated_brain) && I != M) + var/mob/living/dominated_brain/db = I + to_chat(db, "\The [M] [message]") //To any dominated brains in the pred + f = TRUE + for(var/B in pb.vore_organs) + for(var/mob/living/L in B) + if(L.absorbed && L != M) + to_chat(L, "\The [M] [message]") //To any absorbed people in the pred + f = TRUE + + //Let's also check and see if there's anyone inside of us to send the message to. + for(var/I in M.contents) + if(istype(I, /mob/living/dominated_brain)) + var/mob/living/dominated_brain/db = I + to_chat(db, "\The [M] [message]") //To any dominated brains inside us + f = TRUE + for(var/B in M.vore_organs) + for(var/mob/living/L in B) + if(L.absorbed) + to_chat(L, "\The [M] [message]") //To any absorbed people inside us + f = TRUE + + if(f) //We found someone to send the message to, let's not print the failed message. + to_chat(M, "\The [M] [message]") //To us, if we found anyone to send the message to + for (var/mob/G in player_list) + if (istype(G, /mob/new_player)) + continue + else if(G.stat == DEAD && G.is_preference_enabled(/datum/client_preference/ghost_ears)) + to_chat(G, "\The [M] [message]") + log_say(message,M) + else + to_chat(M, "There is no one inside you to talk to... ([message])") //So sad diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 02f86a734f..bc6b6a841d 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -59,7 +59,7 @@ //Actual full digest modes var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_ABSORB,DM_DRAIN,DM_UNABSORB,DM_HEAL,DM_SHRINK,DM_GROW,DM_SIZE_STEAL,DM_EGG) //Digest mode addon flags - var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN, "Jams Sensors" = DM_FLAG_JAMSENSORS) + var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN, "Jams Sensors" = DM_FLAG_JAMSENSORS, "Turbo Absorb" = DM_FLAG_FORCEPSAY) //Item related modes var/tmp/static/list/item_digest_modes = list(IM_HOLD,IM_DIGEST_FOOD,IM_DIGEST) @@ -359,9 +359,12 @@ p.undo_prey_takeover(FALSE) return 0 for(var/mob/living/L in M.contents) - L.muffled = 0 + L.muffled = FALSE + L.forced_psay = FALSE + for(var/obj/item/weapon/holder/H in M.contents) - H.held_mob.muffled = 0 + H.held_mob.muffled = FALSE + H.held_mob.forced_psay = FALSE //Place them into our drop_location M.forceMove(drop_location()) @@ -375,7 +378,9 @@ if(ML.client) ML.stop_sound_channel(CHANNEL_PREYLOOP) //Stop the internal loop, it'll restart if the isbelly check on next tick anyway if(ML.muffled) - ML.muffled = 0 + ML.muffled = FALSE + if(ML.forced_psay) + ML.forced_psay = FALSE if(ML.absorbed) ML.absorbed = FALSE handle_absorb_langs(ML, owner) @@ -685,8 +690,6 @@ M.absorbed = TRUE if(M.ckey) - owner.temp_language_sources += M - M.temp_language_sources += owner handle_absorb_langs(M, owner) GLOB.prey_absorbed_roundstat++ @@ -769,35 +772,9 @@ owner.update_icon() ///////////////////////////////////////////////////////////////////////// -/obj/belly/proc/handle_absorb_langs(var/mob/living/prey, var/mob/living/pred) - for(var/mob/living/p in pred.temp_language_sources) //Let's look at the pred's sources - if (!p.absorbed) - for(var/L in pred.temp_languages) - if(L in p.languages) - pred.languages -= L - pred.temp_languages -= L - pred.temp_language_sources -= p - else - for(var/L in p.languages) - if(L in pred.languages) - continue - pred.languages += L - pred.temp_languages += L - - for(var/mob/living/P in prey.temp_language_sources) //Let's look at the prey's sources - if (!prey.absorbed) - for(var/L in prey.temp_languages) - if(L in P.languages) - prey.languages -= L - prey.temp_languages -= L - prey.temp_language_sources -= P - else - for(var/L in P.languages) - if(L in prey.languages) - continue - prey.languages += L - prey.temp_languages += L - +/obj/belly/proc/handle_absorb_langs() + owner.absorb_langs() + //////////////////////////////////////////////////////////////////////// diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 7509c11cc4..9a73677c0d 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -186,6 +186,10 @@ if((mode_flags & DM_FLAG_THICKBELLY) && !H.muffled) H.muffled = TRUE + //Force psay + if((mode_flags & DM_FLAG_FORCEPSAY) && !H.forced_psay && H.absorbed) + H.forced_psay = TRUE + //Worn items flag if(mode_flags & DM_FLAG_AFFECTWORN) for(var/slot in slots) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index 3e76a34101..741d7e0941 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -19,7 +19,6 @@ qdel(O) else if(item_storage) O.forceMove(item_storage) - GLOB.items_digested_roundstat++ qdel(src) return w_class @@ -58,7 +57,6 @@ S.use(1) digest_stage = w_class else - GLOB.items_digested_roundstat++ qdel(src) if(g_damage > w_class) return w_class diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 67b005666b..4038ed6c54 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -416,8 +416,8 @@ if(confirm != "Okay" || loc != B) return //Actual escaping - absorbed = 0 //Make sure we're not absorbed - muffled = 0 //Removes Muffling + absorbed = FALSE //Make sure we're not absorbed + muffled = FALSE //Removes Muffling forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave. for(var/mob/living/simple_mob/SA in range(10)) SA.prey_excludes[src] = world.time From 7b7a86d9c2d35bffbfcf43fbbe39507521e2e519 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Thu, 10 Mar 2022 15:52:58 -0500 Subject: [PATCH 17/24] THE FINAL UPDATE --- code/modules/mob/say_vr.dm | 63 +++++++++++++----------- code/modules/vore/eating/belly_obj_vr.dm | 4 +- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 389d726d98..a0819a21ee 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -114,9 +114,9 @@ ///// PSAY ///// /mob/verb/psay(message as text|null) - set category = "Abilities" + set category = "IC" set name = "Psay" - set desc = "Talk to an absorbed or dominated predator/prey." + set desc = "Talk to people affected by complete absorbed or dominate predator/prey." if (src.client) if(client.prefs.muted & MUTE_IC) @@ -145,14 +145,10 @@ pb = db.pred_body to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain f = TRUE - else if(M.forced_psay && M.absorbed) - if(isbelly(M.loc)) - pb = M.loc.loc - to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed - f = TRUE - else - M.forced_psay = FALSE - M.say(message) + else if(M.forced_psay && M.absorbed && isbelly(M.loc)) + pb = M.loc.loc + to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed + f = TRUE if(pb) //We are prey, let's do the prey thing. @@ -179,23 +175,27 @@ to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people inside us f = TRUE - if(f) //We found someone to send the message to, let's not print the failed message. - to_chat(M, "You think \"[message]\"") //To us, if we found anyone to send the message to + if(f) //We found someone to send the message to + if(pb) + to_chat(M, "You think \"[message]\"") //To us if we are the prey + else + to_chat(M, "You think \"[message]\"") //To us if we are the pred for (var/mob/G in player_list) if (istype(G, /mob/new_player)) continue else if(G.stat == DEAD && G.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(G, "\The [M] thinks, \"[message]\"") + to_chat(G, "\The [M] thinks, \"[message]\"") log_say(message,M) - else - to_chat(M, "There is no one inside you to talk to... ([message])") //So sad + else //There wasn't anyone to send the message to, pred or prey, so let's just say it instead and correct our psay just in case. + M.forced_psay = FALSE + M.say(message) ///// PME ///// /mob/verb/pme(message as text|null) - set category = "Abilities" + set category = "IC" set name = "Pme" - set desc = "Emote to an absorbed or dominated predator/prey." + set desc = "Emote to people affected by complete absorbed or dominate predator/prey." if (src.client) if(client.prefs.muted & MUTE_IC) @@ -222,17 +222,16 @@ return else pb = db.pred_body - if(M.forced_psay) - if(isbelly(M.loc) && M.absorbed) - pb = M.loc.loc - else - M.forced_psay = FALSE - M.me_verb(message) + to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain + f = TRUE + + else if(M.forced_psay && M.absorbed && isbelly(M.loc)) + pb = M.loc.loc + to_chat(pb, "\The [M] [message]") //To our pred if absorbed + f = TRUE if(pb) //We are prey, let's do the prey thing. - to_chat(pb, "\The [M] [message]") //To our pred - f = TRUE for(var/I in pb.contents) if(istype(I, /mob/living/dominated_brain) && I != M) var/mob/living/dominated_brain/db = I @@ -256,13 +255,17 @@ to_chat(L, "\The [M] [message]") //To any absorbed people inside us f = TRUE - if(f) //We found someone to send the message to, let's not print the failed message. - to_chat(M, "\The [M] [message]") //To us, if we found anyone to send the message to + if(f) //We found someone to send the message to + if(pb) + to_chat(M, "\The [M] [message]") //To us if we are the prey + else + to_chat(M, "\The [M] [message]") //To us if we are the pred for (var/mob/G in player_list) if (istype(G, /mob/new_player)) continue else if(G.stat == DEAD && G.is_preference_enabled(/datum/client_preference/ghost_ears)) - to_chat(G, "\The [M] [message]") + to_chat(G, "\The [M] [message]") log_say(message,M) - else - to_chat(M, "There is no one inside you to talk to... ([message])") //So sad + else //There wasn't anyone to send the message to, pred or prey, so let's just emote it instead and correct our psay just in case. + M.forced_psay = FALSE + M.me_verb(message) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index bc6b6a841d..85d4fca868 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -59,7 +59,7 @@ //Actual full digest modes var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_ABSORB,DM_DRAIN,DM_UNABSORB,DM_HEAL,DM_SHRINK,DM_GROW,DM_SIZE_STEAL,DM_EGG) //Digest mode addon flags - var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN, "Jams Sensors" = DM_FLAG_JAMSENSORS, "Turbo Absorb" = DM_FLAG_FORCEPSAY) + var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN, "Jams Sensors" = DM_FLAG_JAMSENSORS, "Complete Absorb" = DM_FLAG_FORCEPSAY) //Item related modes var/tmp/static/list/item_digest_modes = list(IM_HOLD,IM_DIGEST_FOOD,IM_DIGEST) @@ -130,7 +130,7 @@ "You feel %prey becoming part of you.") var/list/absorb_messages_prey = list( - "Your feel yourself becoming part of %pred's %belly!") + "You feel yourself becoming part of %pred's %belly!") var/list/unabsorb_messages_owner = list( "You feel %prey reform into a recognizable state again.") From d5c40874502caee182b8978eaae179b14ebcc100 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Thu, 10 Mar 2022 18:56:11 -0500 Subject: [PATCH 18/24] IT wasn't the final update --- code/modules/mob/say_vr.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index a0819a21ee..59f4f47825 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -122,11 +122,12 @@ if(client.prefs.muted & MUTE_IC) to_chat(src, "You cannot speak in IC (muted).") return - message = sanitize_or_reflect(message,src) if (!message) message = input(usr, "Type a message to say.","Psay") as text|null + message = sanitize_or_reflect(message,src) if (!message) return + message = capitalize(message) if (stat == DEAD) return say_dead(message) if(!isliving(src)) @@ -145,7 +146,7 @@ pb = db.pred_body to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain f = TRUE - else if(M.forced_psay && M.absorbed && isbelly(M.loc)) + else if(M.absorbed && isbelly(M.loc)) pb = M.loc.loc to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed f = TRUE @@ -159,7 +160,7 @@ f = TRUE for(var/B in pb.vore_organs) for(var/mob/living/L in B) - if(L.absorbed && L != M) + if(L.absorbed && L != M && L.ckey) to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people in the pred f = TRUE @@ -201,9 +202,9 @@ if(client.prefs.muted & MUTE_IC) to_chat(src, "You cannot speak in IC (muted).") return - message = sanitize_or_reflect(message,src) if (!message) message = input(usr, "Type a message to emote.","Pme") as text|null + message = sanitize_or_reflect(message,src) if (!message) return if (stat == DEAD) @@ -222,10 +223,10 @@ return else pb = db.pred_body - to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain + to_chat(pb, "\The [M] [message]") //To our pred if dominated brain f = TRUE - else if(M.forced_psay && M.absorbed && isbelly(M.loc)) + else if(M.absorbed && isbelly(M.loc)) pb = M.loc.loc to_chat(pb, "\The [M] [message]") //To our pred if absorbed f = TRUE @@ -239,7 +240,7 @@ f = TRUE for(var/B in pb.vore_organs) for(var/mob/living/L in B) - if(L.absorbed && L != M) + if(L.absorbed && L != M && L.ckey) to_chat(L, "\The [M] [message]") //To any absorbed people in the pred f = TRUE From 94fad3c3c7dfe930dc282cd4f327df28821539a7 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 10 Mar 2022 22:00:57 -0500 Subject: [PATCH 19/24] Easier Borg Nom Nom on grab intent --- code/modules/mob/living/silicon/robot/robot.dm | 4 ++++ code/modules/vore/eating/bellymodes_vr.dm | 4 ++-- vorestation.dme | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 815ba3a598..6e5be0d0fc 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -783,6 +783,10 @@ playsound(src.loc, 'sound/effects/clang2.ogg', 10, 1) visible_message("[H] taps [src].") return + if(I_GRAB) + if(is_vore_predator(H)) + if(src.devourable) + feed_grabbed_to_self(H, src) //Robots take half damage from basic attacks. /mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message) diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 9a73677c0d..5a92072756 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -167,7 +167,7 @@ var/mob/living/L = A touchable_mobs += L - if(L.absorbed) + if(L.absorbed && !issilicon(L)) L.Weaken(5) // Fullscreen overlays @@ -280,7 +280,7 @@ if(M.ckey) GLOB.prey_digested_roundstat++ - + if((mode_flags & DM_FLAG_LEAVEREMAINS) && M.digest_leave_remains) handle_remains_leaving(M) digestion_death(M) diff --git a/vorestation.dme b/vorestation.dme index 7dd76cdb02..9c5a70afda 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4107,6 +4107,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\tether\tether.dm" +#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 0ba03aaf0942676dcdb77bf8c27c1366e541c75f Mon Sep 17 00:00:00 2001 From: GhostActual Date: Thu, 10 Mar 2022 22:18:06 -0500 Subject: [PATCH 20/24] Base Commit --- .../loadout/loadout_general.dm | 9 ++++ code/modules/games/wizoff.dm | 46 ++++++++++++++++++ icons/obj/playing_cards.dmi | Bin 3811 -> 3946 bytes maps/tether/tether-03-surface3.dmm | 2 + vorestation.dme | 1 + 5 files changed, 58 insertions(+) diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 615e16bf5d..74a69d46e0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -140,3 +140,12 @@ display_name = "Cards Against The Galaxy (black deck)" path = /obj/item/weapon/deck/cah/black description = "The ever-popular Cards Against The Galaxy word game. Warning: may include traces of broken fourth wall. This is the black deck." + +/datum/gear/wizoff + display_name = "WizOff" + path = /obj/item/weapon/deck/wizoff + +/datum/gear/wizoffguide + display_name = "WizOff Guide" + path = /obj/item/weapon/book/manual/wizzoffguide + description = "The guide to playing the ever popular card game: Wiz-Off!" \ No newline at end of file diff --git a/code/modules/games/wizoff.dm b/code/modules/games/wizoff.dm index 11cf179735..2f87f15a90 100644 --- a/code/modules/games/wizoff.dm +++ b/code/modules/games/wizoff.dm @@ -55,3 +55,49 @@ "U9: Jaunt" ) +/obj/item/weapon/book/manual/wizzoffguide + name = "WizOff Guide" + icon = 'icons/obj/playing_cards.dmi' + icon_state ="wizoff_guide" + item_state = "book16" + author = "Donk Co." + title = "WizOff Guide" + drop_sound = 'sound/items/drop/paper.ogg' + pickup_sound = 'sound/items/pickup/paper.ogg' + +/obj/item/weapon/book/manual/wizzoffguide/New() + ..() + dat = {" + + + + + + +

Wiz-Off Player Guide

+

How to play Wiz-Off!

+

The wizard themed card game

+

Each player draws 5 cards. There are five rounds. Each round,
+ a player selects a card to play, and the winner is selected
+ based on the following rules:

+
    +
  1. Offensive (O) beats Utility (U)!
  2. +
  3. Defensive (D) beats Offensive (O)!
  4. +
  5. Utility (U) beats Defensive (D)!
  6. +
  7. If both players play the same type of spell,
    + the higher number wins!
  8. +
+

The player who wins the most of the 5 rounds wins the game!
+ Now get ready to battle for the fate of the universe: Wiz-Off!

+ + + + "} \ No newline at end of file diff --git a/icons/obj/playing_cards.dmi b/icons/obj/playing_cards.dmi index 0195f8e6f4702a3426d7555f2c7d412dc9d51a23..b5336d6dd1c5be3607a3927170a9d49909ca6c4d 100644 GIT binary patch literal 3946 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 diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 8334e042a5..8478e8a3fa 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -20249,6 +20249,8 @@ }, /obj/item/weapon/storage/pill_bottle/dice, /obj/item/weapon/storage/pill_bottle/dice_nerd, +/obj/item/weapon/deck/wizoff, +/obj/item/weapon/book/manual/wizzoffguide, /turf/simulated/floor/wood, /area/library) "aGZ" = ( diff --git a/vorestation.dme b/vorestation.dme index 7dd76cdb02..8965b79936 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2357,6 +2357,7 @@ #include "code\modules\games\dice.dm" #include "code\modules\games\spaceball_cards.dm" #include "code\modules\games\tarot.dm" +#include "code\modules\games\wizoff.dm" #include "code\modules\genetics\side_effects.dm" #include "code\modules\ghosttrap\trap.dm" #include "code\modules\holodeck\HolodeckControl.dm" From c0565279a59bd8f609111087d21882df68d45182 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 10 Mar 2022 22:28:14 -0500 Subject: [PATCH 21/24] Update robot.dm Allows for eating and feeding of borgs --- code/modules/mob/living/silicon/robot/robot.dm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6e5be0d0fc..78cfd9535a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -784,9 +784,23 @@ visible_message("[H] taps [src].") return if(I_GRAB) - if(is_vore_predator(H)) - if(src.devourable) + if(is_vore_predator(H) && H.devourable && src.feeding && src.devourable) + var/switchy = tgui_alert(H, "Do you wish to eat [src] or feed yourself to them?", "Feed or Eat",list("Eat","Feed", "Nevermind!") + switch(switchy) + if("Nevermind!") + return + if("Eat") feed_grabbed_to_self(H, src) + return + if("Feed") + H.feed_self_to_grabbed(H, src) + return + if(is_vore_predator(H) && src.devourable) + if(tgui_alert(H, "Do you wish to eat [src]?", "Eat?",list("Yes!", "Nevermind!")) == "Yes!") + feed_grabbed_to_self(H, src) + return + if(H.devourable && src.feeding) + if(tgui_alert(H, "Do you wish to feed yourself to [src]?", "Feed?",list("Yes!", "Nevermind!")) == "Yes!") //Robots take half damage from basic attacks. /mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message) From e0f7d1e9808c897050df95a2715e86a4ea1614d1 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 10 Mar 2022 22:46:53 -0500 Subject: [PATCH 22/24] Update robot.dm Allows the eating of and feeding of yourself to borgs. Runs a pref check before giving the player a confirmation window. (A window isn't given to the borg, since prefs already align and there is a timer.) --- .../modules/mob/living/silicon/robot/robot.dm | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 78cfd9535a..9589cc0246 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -785,22 +785,24 @@ return if(I_GRAB) if(is_vore_predator(H) && H.devourable && src.feeding && src.devourable) - var/switchy = tgui_alert(H, "Do you wish to eat [src] or feed yourself to them?", "Feed or Eat",list("Eat","Feed", "Nevermind!") + var/switchy = tgui_alert(H, "Do you wish to eat [src] or feed yourself to them?", "Feed or Eat",list("Eat","Feed", "Nevermind!")) switch(switchy) - if("Nevermind!") - return - if("Eat") - feed_grabbed_to_self(H, src) - return - if("Feed") - H.feed_self_to_grabbed(H, src) - return + if("Nevermind!") + return + if("Eat") + feed_grabbed_to_self(H, src) + return + if("Feed") + H.feed_self_to_grabbed(H, src) + return if(is_vore_predator(H) && src.devourable) if(tgui_alert(H, "Do you wish to eat [src]?", "Eat?",list("Yes!", "Nevermind!")) == "Yes!") feed_grabbed_to_self(H, src) return if(H.devourable && src.feeding) if(tgui_alert(H, "Do you wish to feed yourself to [src]?", "Feed?",list("Yes!", "Nevermind!")) == "Yes!") + H.feed_self_to_grabbed(H, src) + return //Robots take half damage from basic attacks. /mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message) From 6c81b069142f3b12b301afdf24aed14546c2feb1 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 10 Mar 2022 22:59:32 -0500 Subject: [PATCH 23/24] Update vorestation.dme --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 9c5a70afda..7dd76cdb02 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4107,6 +4107,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\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 3c63657795cf27879fe45d2155330c4678bf0d08 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Fri, 11 Mar 2022 00:13:44 -0500 Subject: [PATCH 24/24] Fix Spacewhale Movement Now it should actually do what it's supposed to do. --- .../animal/alien animals/spacewhale.dm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm index 4cc14a1caa..0b27faa6c8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm @@ -137,7 +137,7 @@ if(post_restless_tired) post_restless_tired-- return - if(!restless && prob(0.5)) + if(prob(0.5)) handle_restless() /mob/living/simple_mob/vore/overmap/spacewhale/proc/handle_restless() @@ -149,9 +149,7 @@ ai_holder.base_wander_delay = initial(ai_holder.base_wander_delay) ai_holder.wander = FALSE post_restless_tired = 250 - if(child_om_marker.known == TRUE) - child_om_marker.icon_state = "space_whale" - visible_message("\The [child_om_marker.name] settles down.") + update_icon() else restless = TRUE hazard_pickup_chance *= 1.5 @@ -159,9 +157,18 @@ movement_cooldown = 1 ai_holder.base_wander_delay = 2 ai_holder.wander_delay = 2 - if(child_om_marker.known == TRUE) + ai_holder.wander = TRUE + update_icon() + +/mob/living/simple_mob/vore/overmap/spacewhale/update_icon() + . = ..() + if(child_om_marker.known == TRUE) + if(restless) child_om_marker.icon_state = "space_whale_restless" visible_message("\The [child_om_marker.name] ripples excitedly.") + else + child_om_marker.icon_state = "space_whale" + visible_message("\The [child_om_marker.name] settles down.") /datum/ai_holder/simple_mob/melee/spacewhale hostile = TRUE @@ -182,8 +189,6 @@ if(stance == STANCE_IDLE) W.hazard_pickup_chance = initial(W.hazard_pickup_chance) W.hazard_drop_chance = initial(W.hazard_drop_chance) - W.movement_cooldown = 50 - base_wander_delay = 50 W.restless = FALSE W.handle_restless() W.movement_cooldown = initial(W.movement_cooldown)