diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 6338213195..fdc313c30a 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7014,9 +7014,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/crew_quarters/fitness/recreation) -"amG" = ( -/turf/closed/wall, -/area/space) "amH" = ( /obj/machinery/door/airlock/external{ req_one_access_txt = "13,8" @@ -46794,7 +46791,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/space/nearstation) +/area/maintenance/starboard/fore) "bOZ" = ( /obj/machinery/chem_master/condimaster{ name = "CondiMaster Neo"; @@ -70554,7 +70551,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/space/nearstation) +/area/maintenance/starboard/aft) "cJg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/bedsheet/medical, @@ -81152,10 +81149,6 @@ /obj/machinery/vr_sleeper, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"evy" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) "eEe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -81385,10 +81378,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"hKW" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/maintenance/aft) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -82834,10 +82823,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"wkz" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) "wlH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -113085,7 +113070,7 @@ cCq cgN cMl bTs -hKW +lMJ aaf aaf aaf @@ -113342,7 +113327,7 @@ cCq cLA bTs bTs -hKW +lMJ aaf aaa aaa @@ -119762,9 +119747,9 @@ cEA aaf aaa aaa -blx +dvY cJf -blx +dvY aaa dbN gsT @@ -120019,9 +120004,9 @@ blx aaa aaa aaa -wkz +ack uim -wkz +ack aaa aaf dbR @@ -121287,7 +121272,7 @@ ciL cgs csc dvY -evy +dxk krD lsv txj @@ -129695,8 +129680,8 @@ aaa aaa aaf aaa -amG -blx +dnh +dnh bOY dqT aaf diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 846fe48604..263cb44144 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2822,7 +2822,7 @@ req_access_txt = "65" }, /turf/open/floor/plating, -/area/space/nearstation) +/area/ai_monitored/turret_protected/aisat_interior) "ahi" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -2923,8 +2923,15 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "ahr" = ( -/turf/closed/wall/r_wall, -/area/space) +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Security External Airlock"; + req_access_txt = "63" + }, +/turf/open/floor/plating, +/area/maintenance/fore) "ahs" = ( /obj/structure/lattice/catwalk, /obj/structure/transit_tube, @@ -4686,7 +4693,7 @@ pixel_y = 20 }, /turf/open/space, -/area/space) +/area/space/nearstation) "alc" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes/cigars, @@ -6629,13 +6636,6 @@ /turf/open/floor/plating, /area/maintenance/fore) "apn" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Security External Airlock"; - req_access_txt = "63" - }, /turf/open/floor/plating, /area/maintenance/fore) "apo" = ( @@ -8698,9 +8698,18 @@ /turf/closed/wall, /area/bridge) "atZ" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard) "aua" = ( /obj/structure/closet/secure_closet/freezer/money, /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, @@ -23763,18 +23772,12 @@ /turf/open/floor/plating, /area/bridge) "bcO" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/solars/starboard) +/turf/open/space, +/area/space/nearstation) "bcQ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -39888,12 +39891,6 @@ /area/science/mixing) "bMp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - req_access_txt = "8" - }, /turf/open/floor/plating, /area/science/mixing) "bMq" = ( @@ -40373,11 +40370,10 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bNq" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 }, -/turf/open/space, +/turf/open/floor/plating/airless, /area/science/mixing) "bNr" = ( /obj/structure/window/reinforced{ @@ -40813,10 +40809,11 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bOu" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1 +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 }, -/turf/open/floor/plating/airless, +/turf/open/space, /area/science/mixing) "bOv" = ( /obj/structure/window/reinforced{ @@ -41104,12 +41101,15 @@ /turf/open/floor/engine/n2o, /area/engine/atmos) "bPl" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/turf/open/space, -/area/space/nearstation) +/obj/machinery/door/airlock/external{ + req_access_txt = "8" + }, +/turf/open/floor/plating, +/area/science/mixing) "bPn" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel" @@ -53174,10 +53174,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"dhS" = ( -/obj/structure/window/reinforced, -/turf/open/space/basic, -/area/space) "dir" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -59590,7 +59586,7 @@ }, /obj/machinery/door/airlock/external, /turf/open/floor/plating, -/area/space/nearstation) +/area/chapel/asteroid/monastery) "rBh" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -77801,7 +77797,7 @@ aiu aiu axC axB -rKr +azN axB aaa aaa @@ -82501,8 +82497,8 @@ aht aaa aaa abI -dhS -cqS +bGI +bNs rzF bNs bOw @@ -90640,9 +90636,9 @@ aaa aaa aaa aaa -aaa -ahi -ahi +aoz +ahr +aoz aqG arD asO @@ -90898,8 +90894,8 @@ aaa aaa aaa aaa -aaa -aaa +cdm +cdm aqG arE arA @@ -94741,7 +94737,7 @@ ags adX adX adX -ahr +adX aaa aaa aaa @@ -94997,7 +94993,7 @@ cnC adX adX adX -shH +adX alb aaa aaa @@ -95255,7 +95251,7 @@ agt agD agR ahh -atZ +ahi aaa aaa aaa @@ -95511,7 +95507,7 @@ agg adX adX adX -shH +adX alb aaa aaa @@ -95769,7 +95765,7 @@ ags adX adX adX -shH +adX aFj aht aht @@ -105617,9 +105613,9 @@ bIN dAF bCV bCV -bNq +bCV bOu -aht +bNq aaa aaa aaa @@ -105875,8 +105871,8 @@ bJT wOS bMp bPl -mZE -aht +bcO +aaa aaa aaa aaa @@ -106131,9 +106127,9 @@ fBz bCV bCV bCV +bCV ahi aht -aht abI abI abI @@ -109182,7 +109178,7 @@ aXC aYF baG sut -bcO +oCX rWE baG dsv @@ -109439,7 +109435,7 @@ aEl aEl baG rWE -oCX +atZ rWE baG aEj diff --git a/code/__HELPERS/donator_groupings.dm b/code/__HELPERS/donator_groupings.dm index bdff20553a..4305fb1ed5 100644 --- a/code/__HELPERS/donator_groupings.dm +++ b/code/__HELPERS/donator_groupings.dm @@ -17,9 +17,9 @@ For fast lookups, this is generated using regenerate_donator_grouping_list() /proc/regenerate_donator_grouping_list() GLOB.donators_by_group = list() //reinit everything var/list/donator_list = GLOB.donators_by_group //cache - var/list/tier_1 = TIER_1_DONATORS - donator_list[DONATOR_GROUP_TIER_1] = tier_1.Copy() //The .Copy() is to "decouple"/make a new list, rather than letting the global list impact the config list. - var/list/tier_2 = tier_1 + TIER_2_DONATORS //Using + on lists implies making new lists, so we don't need to manually Copy(). + var/list/tier_3 = TIER_3_DONATORS + donator_list[DONATOR_GROUP_TIER_3] = tier_3.Copy() //The .Copy() is to "decouple"/make a new list, rather than letting the global list impact the config list. + var/list/tier_2 = tier_3 + TIER_2_DONATORS //Using + on lists implies making new lists, so we don't need to manually Copy(). donator_list[DONATOR_GROUP_TIER_2] = tier_2 - var/list/tier_3 = tier_2 + TIER_3_DONATORS - donator_list[DONATOR_GROUP_TIER_3] = tier_3 + var/list/tier_1 = tier_2 + TIER_1_DONATORS + donator_list[DONATOR_GROUP_TIER_1] = tier_1 diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 6cef7ac50f..179adf46bd 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -53,8 +53,6 @@ /datum/wires/airlock/interactable(mob/user) var/obj/machinery/door/airlock/A = holder - if(!A.hasSiliconAccessInArea(user) && A.isElectrified() && A.shock(user, 100)) - return FALSE if(A.panel_open) return TRUE @@ -73,6 +71,8 @@ /datum/wires/airlock/on_pulse(wire) set waitfor = FALSE var/obj/machinery/door/airlock/A = holder + if(!A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) + return FALSE switch(wire) if(WIRE_POWER1, WIRE_POWER2) // Pulse to loose power. A.loseMainPower() @@ -127,6 +127,8 @@ /datum/wires/airlock/on_cut(wire, mend) var/obj/machinery/door/airlock/A = holder + if(!A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100)) + return FALSE switch(wire) if(WIRE_POWER1, WIRE_POWER2) // Cut to loose power, repair all to gain power. if(mend && !is_cut(WIRE_POWER1) && !is_cut(WIRE_POWER2)) @@ -174,4 +176,4 @@ A.update_icon() if(WIRE_ZAP1, WIRE_ZAP2) // Ouch. if(isliving(usr)) - A.shock(usr, 50) \ No newline at end of file + A.shock(usr, 50) diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index a7f7e3152c..6f1aec287b 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -47,8 +47,11 @@ spawn_option(stored_options[choice],M) qdel(src) -/obj/item/choice_beacon/proc/spawn_option(obj/choice,mob/living/M) - var/obj/new_item = new choice() +/obj/item/choice_beacon/proc/create_choice_atom(atom/choice, mob/owner) + return new choice() + +/obj/item/choice_beacon/proc/spawn_option(atom/choice,mob/living/M) + var/obj/new_item = create_choice_atom(choice, M) var/obj/structure/closet/supplypod/bluespacepod/pod = new() pod.explosionSize = list(0,0,0,0) new_item.forceMove(pod) @@ -152,10 +155,50 @@ augment_list[initial(A.name)] = A return augment_list -/obj/item/choice_beacon/augments/spawn_option(obj/choice,mob/living/M) +/obj/item/choice_beacon/augments/spawn_option(atom/choice,mob/living/M) new choice(get_turf(M)) to_chat(M, "You hear something crackle from the beacon for a moment before a voice speaks. \"Please stand by for a message from S.E.L.F. Message as follows: Item request received. Your package has been transported, use the autosurgeon supplied to apply the upgrade. Message ends.\"") +/obj/item/choice_beacon/pet //donator beacon that summons a small friendly animal + name = "pet beacon" + desc = "Straight from the outerspace pet shop to your feet." + var/static/list/pets = list("Crab" = /mob/living/simple_animal/crab, + "Cat" = /mob/living/simple_animal/pet/cat, + "Space cat" = /mob/living/simple_animal/pet/cat/space, + "Kitten" = /mob/living/simple_animal/pet/cat/kitten, + "Dog" = /mob/living/simple_animal/pet/dog, + "Corgi" = /mob/living/simple_animal/pet/dog/corgi, + "Pug" = /mob/living/simple_animal/pet/dog/pug, + "Exotic Corgi" = /mob/living/simple_animal/pet/dog/corgi/exoticcorgi, + "Fox" = /mob/living/simple_animal/pet/fox, + "Red Panda" = /mob/living/simple_animal/pet/redpanda, + "Possum" = /mob/living/simple_animal/opossum) + var/pet_name + +/obj/item/choice_beacon/pet/generate_display_names() + return pets + +/obj/item/choice_beacon/pet/create_choice_atom(atom/choice, mob/owner) + var/mob/living/simple_animal/new_choice = new choice() + new_choice.butcher_results = null //please don't eat your pet, chef + var/obj/item/pet_carrier/donator/carrier = new() //a donator pet carrier is just a carrier that can't be shoved in an autolathe for metal + carrier.add_occupant(new_choice) + new_choice.mob_size = MOB_SIZE_TINY //yeah we're not letting you use this roundstart pet to hurt people / knock them down + new_choice.pass_flags = PASSTABLE | PASSMOB //your pet is not a bullet/person shield + new_choice.density = FALSE + new_choice.blood_volume = 0 //your pet cannot be used to drain blood from for a bloodsucker + new_choice.desc = "A pet [initial(choice.name)], owned by [owner]!" + new_choice.can_have_ai = FALSE //no it cant be sentient damnit + if(pet_name) + new_choice.name = pet_name + new_choice.unique_name = TRUE + return carrier + +/obj/item/choice_beacon/pet/spawn_option(atom/choice,mob/living/M) + pet_name = input(M, "What would you like to name the pet? (leave blank for default name)", "Pet Name") + ..() + +//choice boxes (they just open in your hand instead of making a pod) /obj/item/choice_beacon/box name = "choice box (default)" desc = "Think really hard about what you want, and then rip it open!" @@ -163,21 +206,17 @@ icon_state = "deliverypackage3" item_state = "deliverypackage3" -/obj/item/choice_beacon/box/spawn_option(obj/choice,mob/living/M) - to_chat(M, "The box opens, revealing the [choice]!") +/obj/item/choice_beacon/box/spawn_option(atom/choice,mob/living/M) + var/choice_text = choice + if(ispath(choice_text)) + choice_text = initial(choice.name) + to_chat(M, "The box opens, revealing the [choice_text]!") playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) M.temporarilyRemoveItemFromInventory(src, TRUE) M.put_in_hands(new choice) qdel(src) -/obj/item/choice_beacon/box/plushie - name = "choice box (plushie)" - desc = "Using the power of quantum entanglement, this box contains every plush, until the moment it is opened!" - icon = 'icons/obj/plushes.dmi' - icon_state = "box" - item_state = "box" - -/obj/item/choice_beacon/box/spawn_option(choice,mob/living/M) +/obj/item/choice_beacon/box/plushie/spawn_option(choice,mob/living/M) if(ispath(choice, /obj/item/toy/plush)) ..() //regular plush, spawn it naturally else @@ -188,6 +227,31 @@ M.put_in_hands(new choice) qdel(src) +/obj/item/choice_beacon/box/carpet //donator carpet beacon + name = "choice box (carpet)" + desc = "Contains 50 of a selected carpet inside!" + var/static/list/carpet_list = list(/obj/item/stack/tile/carpet/black/fifty = "Black Carpet", + "Black & Red Carpet" = /obj/item/stack/tile/carpet/blackred/fifty, + "Monochrome Carpet" = /obj/item/stack/tile/carpet/monochrome/fifty, + "Blue Carpet" = /obj/item/stack/tile/carpet/blue/fifty, + "Cyan Carpet" = /obj/item/stack/tile/carpet/cyan/fifty, + "Green Carpet" = /obj/item/stack/tile/carpet/green/fifty, + "Orange Carpet" = /obj/item/stack/tile/carpet/orange/fifty, + "Purple Carpet" = /obj/item/stack/tile/carpet/purple/fifty, + "Red Carpet" = /obj/item/stack/tile/carpet/red/fifty, + "Royal Black Carpet" = /obj/item/stack/tile/carpet/royalblack/fifty, + "Royal Blue Carpet" = /obj/item/stack/tile/carpet/royalblue/fifty) + +/obj/item/choice_beacon/box/carpet/generate_display_names() + return carpet_list + +/obj/item/choice_beacon/box/plushie + name = "choice box (plushie)" + desc = "Using the power of quantum entanglement, this box contains every plush, until the moment it is opened!" + icon = 'icons/obj/plushes.dmi' + icon_state = "box" + item_state = "box" + /obj/item/choice_beacon/box/plushie/generate_display_names() var/list/plushie_list = list() //plushie set 1: just subtypes of /obj/item/toy/plush diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index a4b12dd629..ef2fb44d3d 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -29,6 +29,9 @@ var/has_lock_sprites = TRUE //whether to load the lock overlays or not var/allows_hostiles = FALSE //does the pet carrier allow hostile entities to be held within it? +/obj/item/pet_carrier/donator + custom_materials = null //you cant just use the loadout item to get free metal! + /obj/item/pet_carrier/Destroy() if(occupants.len) for(var/V in occupants) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 45cac650b8..c36fba96cb 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -243,10 +243,24 @@ LINEN BINS /obj/item/bedsheet/random/Initialize() ..() - var/type = pick(typesof(/obj/item/bedsheet) - /obj/item/bedsheet/random) + var/type = pick(typesof(/obj/item/bedsheet) - list(/obj/item/bedsheet/random, /obj/item/bedsheet/chameleon)) new type(loc) return INITIALIZE_HINT_QDEL +/obj/item/bedsheet/chameleon //donator chameleon bedsheet + name = "chameleon bedsheet" + desc = "Bedsheet technology has truly gone too far." + var/datum/action/item_action/chameleon/change/chameleon_action + +/obj/item/bedsheet/chameleon/New() + ..() + chameleon_action = new(src) + chameleon_action.chameleon_type = /obj/item/bedsheet + chameleon_action.chameleon_name = "Bedsheet" + chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/bedsheet/chameleon, /obj/item/bedsheet/random), only_root_path = TRUE) + chameleon_action.initialize_disguises() + +//bedsheet bin /obj/structure/bedsheetbin name = "linen bin" desc = "It looks rather cosy." diff --git a/code/modules/antagonists/bloodsucker/powers/fortitude.dm b/code/modules/antagonists/bloodsucker/powers/fortitude.dm index 24cad2a188..740ec81782 100644 --- a/code/modules/antagonists/bloodsucker/powers/fortitude.dm +++ b/code/modules/antagonists/bloodsucker/powers/fortitude.dm @@ -54,7 +54,7 @@ REMOVE_TRAIT(user, TRAIT_PIERCEIMMUNE, "fortitude") REMOVE_TRAIT(user, TRAIT_NODISMEMBER, "fortitude") REMOVE_TRAIT(user, TRAIT_STUNIMMUNE, "fortitude") - REMOVE_TRAIT(user, TRAIT_STUNIMMUNE, "fortitude") + REMOVE_TRAIT(user, TRAIT_NORUNNING, "fortitude") if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 480ebda4f8..778b5175a7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -801,7 +801,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(!subcategories.Find(gear_subcategory)) gear_subcategory = subcategories[1] - var/firstsubcat = FALSE + var/firstsubcat = TRUE for(var/subcategory in subcategories) if(firstsubcat) firstsubcat = FALSE diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 1c3ac0f340..b5d92fb780 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -199,12 +199,16 @@ /obj/item/clothing/gloves/evening name = "evening gloves" - desc = "Thin, pretty gloves intended for use in regal feminine attire, but knowing Space China these are just for some maid fetish." + desc = "Thin, pretty gloves intended for use in regal feminine attire. A tag on the hem claims they were 'maid' in Space China, these were probably intended for use in some maid fetish." icon_state = "evening" item_state = "evening" - strip_delay = 40 - equip_delay_other = 20 + transfer_prints = TRUE cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT strip_mod = 0.9 - custom_price = PRICE_ALMOST_CHEAP + +/obj/item/clothing/gloves/evening/black + name = "midnight gloves" + desc = "Thin, pretty gloves intended for use in sexy feminine attire. A tag on the hem claims they pair great with black stockings." + icon_state = "eveningblack" + item_state = "eveningblack" diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index c31008fa62..c17b62ba6c 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -35,18 +35,20 @@ return destinations -/obj/item/wormhole_jaunter/proc/activate(mob/user, adjacent) +/obj/item/wormhole_jaunter/proc/activate(mob/user, adjacent, force_entry = FALSE) if(!turf_check(user)) return var/list/L = get_destinations(user) if(!L.len) - to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") + to_chat(user, "The [name] found no beacons in the world to anchor a wormhole to.") return var/chosen_beacon = pick(L) - var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), src, 100, null, FALSE, get_turf(chosen_beacon)) + var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), 100, null, FALSE, get_turf(chosen_beacon)) if(adjacent) try_move_adjacent(J) + if(force_entry) + J.teleport(user, force = TRUE) playsound(src,'sound/effects/sparks4.ogg',50,1) qdel(src) @@ -73,7 +75,7 @@ if(user.get_item_by_slot(SLOT_BELT) == src) to_chat(user, "Your [name] activates, saving you from the chasm!") SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation - activate(user, FALSE) + activate(user, FALSE, TRUE) else to_chat(user, "[src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") @@ -84,9 +86,10 @@ icon_state = "bhole3" desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." mech_sized = TRUE //save your ripley + teleport_channel = TELEPORT_CHANNEL_WORMHOLE innate_accuracy_penalty = 6 -/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M) +/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M, force = FALSE) . = ..() if(.) // KERPLUNK diff --git a/code/modules/spells/spell_types/taeclowndo.dm b/code/modules/spells/spell_types/taeclowndo.dm index 59826daf07..9d6d71a89f 100644 --- a/code/modules/spells/spell_types/taeclowndo.dm +++ b/code/modules/spells/spell_types/taeclowndo.dm @@ -42,6 +42,8 @@ return . = ..() + if(!.) + return new /obj/item/grown/bananapeel(target) /obj/effect/proc_holder/spell/aimed/banana_peel/update_icon() diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index dc4f4e9273..a78a4e6ef4 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -36,6 +36,7 @@ /obj/item/clothing/under/misc/keyholesweater = 2, /obj/item/clothing/under/misc/stripper/mankini = 2, /obj/item/clothing/under/costume/jabroni = 2, + /obj/item/clothing/gloves/evening/black = 2, /obj/item/dildo/flared/huge = 3 ) premium = list( diff --git a/html/changelogs/AutoChangeLog-pr-13182.yml b/html/changelogs/AutoChangeLog-pr-13182.yml new file mode 100644 index 0000000000..9beb8f28c5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13182.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "airlocks now only shock on pulse/wirecutters instead of on tgui panel open." diff --git a/html/changelogs/AutoChangeLog-pr-13204.yml b/html/changelogs/AutoChangeLog-pr-13204.yml new file mode 100644 index 0000000000..e9033c299d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13204.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "three new items are in the loadout for all donators" diff --git a/html/changelogs/AutoChangeLog-pr-13209.yml b/html/changelogs/AutoChangeLog-pr-13209.yml new file mode 100644 index 0000000000..f885a4dc93 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13209.yml @@ -0,0 +1,5 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "wormhole jaunters work" + - tweak: "wormhole jaunters no longer get interference from bags of holding" diff --git a/html/changelogs/AutoChangeLog-pr-13239.yml b/html/changelogs/AutoChangeLog-pr-13239.yml new file mode 100644 index 0000000000..0f01f680c6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13239.yml @@ -0,0 +1,4 @@ +author: "zeroisthebiggay" +delete-after: True +changes: + - rscadd: "contraband black evening gloves in kinkvend" diff --git a/html/changelogs/AutoChangeLog-pr-13243.yml b/html/changelogs/AutoChangeLog-pr-13243.yml new file mode 100644 index 0000000000..a09ae5d607 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13243.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - bugfix: "Fixes areas on expanded airlocks" diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 755280b332..44499649f9 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 874f0d3660..c0f78ee604 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 378c70d187..06783df03d 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -7,6 +7,27 @@ category = LOADOUT_CATEGORY_DONATOR ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard +/datum/gear/donator/pet + name = "Pet Beacon" + slot = SLOT_IN_BACKPACK + path = /obj/item/choice_beacon/pet + ckeywhitelist = list() + donator_group_id = DONATOR_GROUP_TIER_1 // can be accessed by all donators + +/datum/gear/donator/carpet + name = "Carpet Beacon" + slot = SLOT_IN_BACKPACK + path = /obj/item/choice_beacon/box/carpet + ckeywhitelist = list() + donator_group_id = DONATOR_GROUP_TIER_1 + +/datum/gear/donator/chameleon_bedsheet + name = "Chameleon Bedsheet" + slot = SLOT_NECK + path = /obj/item/bedsheet/chameleon + ckeywhitelist = list() + donator_group_id = DONATOR_GROUP_TIER_1 + /datum/gear/donator/donortestingbikehorn name = "Donor item testing bikehorn" slot = SLOT_IN_BACKPACK diff --git a/modular_citadel/code/modules/client/loadout/gloves.dm b/modular_citadel/code/modules/client/loadout/gloves.dm index ffa4724f63..09694ddec7 100644 --- a/modular_citadel/code/modules/client/loadout/gloves.dm +++ b/modular_citadel/code/modules/client/loadout/gloves.dm @@ -9,6 +9,10 @@ /datum/gear/gloves/evening name = "Evening gloves" path = /obj/item/clothing/gloves/evening + +/datum/gear/gloves/midnight + name = "Midnight gloves" + path = /obj/item/clothing/gloves/evening/black /datum/gear/gloves/goldring name = "A gold ring"