diff --git a/_maps/RandomZLevels/away_mission/jungleresort.dmm b/_maps/RandomZLevels/away_mission/jungleresort.dmm index 4afe638edb..9ff92b619a 100644 --- a/_maps/RandomZLevels/away_mission/jungleresort.dmm +++ b/_maps/RandomZLevels/away_mission/jungleresort.dmm @@ -413,10 +413,6 @@ /obj/item/toy/figure/chef, /turf/open/floor/wood, /area/awaymission/jungleresort) -"gC" = ( -/obj/item/clothing/head/rice_hat/cursed, -/turf/open/floor/plating/dirt/jungle, -/area/awaymission/jungleresort) "gK" = ( /obj/structure/table/wood, /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, @@ -13828,7 +13824,7 @@ io du YF io -gC +io io io ia @@ -26666,4 +26662,3 @@ bG bG bG "} - diff --git a/code/__DEFINES/instruments.dm b/code/__DEFINES/instruments.dm index 3c414f87f4..69d2a60e51 100644 --- a/code/__DEFINES/instruments.dm +++ b/code/__DEFINES/instruments.dm @@ -19,7 +19,7 @@ #define INSTRUMENT_EXP_FALLOFF_MAX 10 /// Minimum volume for when the sound is considered dead. -#define INSTRUMENT_MIN_SUSTAIN_DROPOFF 0 +#define INSTRUMENT_MIN_SUSTAIN_DROPOFF 1 #define SUSTAIN_LINEAR 1 #define SUSTAIN_EXPONENTIAL 2 diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index a860a8cd3f..6f7eeb95c3 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -242,6 +242,8 @@ SSpersistence.station_was_destroyed = TRUE if(!mode.allow_persistence_save) SSpersistence.station_persistence_save_disabled = TRUE + else + SSpersistence.SaveTCGCards() SSpersistence.CollectData() //stop collecting feedback during grifftime diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index f376ba50d7..ac6ea4e25c 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -132,6 +132,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NODROP" = TRAIT_NODROP, "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, "TRAIT_SPOOKY_THROW" = TRAIT_SPOOKY_THROW + ), + /datum/mind = list( + "TRAIT_CLOWN_MENTALITY" = TRAIT_CLOWN_MENTALITY ) )) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 0ba6076be2..c090d7367c 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -496,9 +496,15 @@ SUBSYSTEM_DEF(job) H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) for(var/card_type in H.client.prefs.tcg_cards) if(card_type) - var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) + if(islist(H.client.prefs.tcg_cards[card_type])) + for(var/duplicate in H.client.prefs.tcg_cards[card_type]) + var/obj/item/tcg_card/card = new(get_turf(H), card_type, duplicate) + card.forceMove(binder) + binder.cards.Add(card) + else + var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) binder.check_for_exodia() if(length(H.client.prefs.tcg_decks)) binder.decks = H.client.prefs.tcg_decks @@ -508,9 +514,15 @@ SUBSYSTEM_DEF(job) H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE) for(var/card_type in N.client.prefs.tcg_cards) if(card_type) - var/obj/item/tcg_card/card = new(get_turf(H), card_type, N.client.prefs.tcg_cards[card_type]) - card.forceMove(binder) - binder.cards.Add(card) + if(islist(H.client.prefs.tcg_cards[card_type])) + for(var/duplicate in N.client.prefs.tcg_cards[card_type]) + var/obj/item/tcg_card/card = new(get_turf(H), card_type, duplicate) + card.forceMove(binder) + binder.cards.Add(card) + else + var/obj/item/tcg_card/card = new(get_turf(H), card_type, N.client.prefs.tcg_cards[card_type]) + card.forceMove(binder) + binder.cards.Add(card) binder.check_for_exodia() if(length(N.client.prefs.tcg_decks)) binder.decks = N.client.prefs.tcg_decks diff --git a/code/controllers/subsystem/persistence/_persistence.dm b/code/controllers/subsystem/persistence/_persistence.dm index 9b2c019db4..d494561d0f 100644 --- a/code/controllers/subsystem/persistence/_persistence.dm +++ b/code/controllers/subsystem/persistence/_persistence.dm @@ -88,7 +88,6 @@ SUBSYSTEM_DEF(persistence) SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. SavePaintings() SaveScars() - SaveTCGCards() /** * Loads persistent data relevant to the current map: Objects, etc. diff --git a/code/game/machinery/colormate.dm b/code/game/machinery/colormate.dm index 1f1c16248c..d059d492ae 100644 --- a/code/game/machinery/colormate.dm +++ b/code/game/machinery/colormate.dm @@ -44,7 +44,8 @@ icon_state = "colormate" /obj/machinery/gear_painter/Destroy() - inserted.forceMove(drop_location()) + if(inserted) //please i beg you do not drop nulls + inserted.forceMove(drop_location()) return ..() /obj/machinery/gear_painter/attackby(obj/item/I, mob/living/user) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm index ba79cca07a..bb95a8bdf3 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm @@ -566,7 +566,7 @@ human_user.adjustBruteLoss(-10, FALSE) human_user.adjustFireLoss(-10, FALSE) human_user.adjustStaminaLoss(-10, FALSE) - human_user.adjustToxLoss(-10, FALSE) + human_user.adjustToxLoss(-10, FALSE, TRUE) human_user.adjustOxyLoss(-10) /obj/effect/proc_holder/spell/pointed/manse_link diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index 9d65396c63..43678e17c6 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -183,7 +183,7 @@ var/mob/living/carbon/human/human_user = user human_user.adjustBruteLoss(-6, FALSE) human_user.adjustFireLoss(-6, FALSE) - human_user.adjustToxLoss(-6, FALSE) + human_user.adjustToxLoss(-6, FALSE, TRUE) human_user.adjustOxyLoss(-6, FALSE) human_user.adjustStaminaLoss(-20) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 8580b153b2..3e72765234 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -1040,6 +1040,12 @@ icon_state = "wbreakpoly" item_state = "wbreakpoly" +/obj/item/clothing/suit/toggle/wbreakpoly/on_toggle(mob/user) + if(suittoggled) + to_chat(usr, "You zip up [src].") + else + to_chat(usr, "You unzip [src].") + /obj/item/clothing/suit/toggle/wbreakpoly/polychromic/ComponentInitialize() . = ..() AddElement(/datum/element/polychromic, list("#464F65", "#916035", "#474747"), 3) diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index aa22834670..98d6809d64 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -110,6 +110,9 @@ suit_toggle(user) return TRUE +/obj/item/clothing/suit/toggle/proc/on_toggle(mob/user) // override this, not suit_toggle, which does checks + to_chat(usr, "You toggle [src]'s [togglename].") + /obj/item/clothing/suit/toggle/ui_action_click() suit_toggle() @@ -119,7 +122,7 @@ if(!can_use(usr)) return 0 - to_chat(usr, "You toggle [src]'s [togglename].") + on_toggle(usr) if(src.suittoggled) src.icon_state = "[initial(icon_state)]" src.suittoggled = FALSE diff --git a/code/modules/clothing/under/suits.dm b/code/modules/clothing/under/suits.dm index b9f55e695a..7f0ecf3d70 100644 --- a/code/modules/clothing/under/suits.dm +++ b/code/modules/clothing/under/suits.dm @@ -138,3 +138,27 @@ icon_state = "greyturtle" item_state = "greyturtle" can_adjust = FALSE + +/obj/item/clothing/under/suit/turtle/purple + name = "purple turtleneck" + icon_state = "turtle_sci" + item_state = "turtle_sci" + can_adjust = FALSE + +/obj/item/clothing/under/suit/turtle/orange + name = "orange turtleneck" + icon_state = "turtle_eng" + item_state = "turtle_eng" + can_adjust = FALSE + +/obj/item/clothing/under/suit/turtle/red + name = "red turtleneck" + icon_state = "turtle_sec" + item_state = "turtle_sec" + can_adjust = FALSE + +/obj/item/clothing/under/suit/turtle/blue + name = "blue turtleneck" + icon_state = "turtle_med" + item_state = "turtle_med" + can_adjust = FALSE diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index e49bd5162b..fcaa77cac4 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -178,10 +178,7 @@ new /obj/effect/temp_visual/monkeyify/humanify(loc) - transformation_timer = addtimer(CALLBACK(src, .proc/finish_humanize, tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE) - -/mob/living/carbon/proc/finish_humanize(tr_flags) - transformation_timer = null + sleep(TRANSFORMATION_DURATION) //This entire proc CANNOT be split into two var/list/stored_implants = list() var/list/int_organs = list() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6552d82e95..fe8f923e1a 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2545,7 +2545,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustAllImmobility(-40, FALSE) M.adjustStaminaLoss(-15, FALSE) - M.adjustToxLoss(-3, FALSE) + M.adjustToxLoss(-3, FALSE, TRUE) M.adjustOxyLoss(-3, FALSE) M.adjustBruteLoss(-3, FALSE) M.adjustFireLoss(-3, FALSE) diff --git a/code/modules/surgery/advanced/toxichealing.dm b/code/modules/surgery/advanced/toxichealing.dm index 0e0fd10c1c..376fb43c31 100644 --- a/code/modules/surgery/advanced/toxichealing.dm +++ b/code/modules/surgery/advanced/toxichealing.dm @@ -24,6 +24,13 @@ /datum/surgery_step/toxichealing/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] starts rejuvenating some of [target]'s flesh back to life.", "You start knitting some of [target]'s flesh back to life.") +/datum/surgery_step/toxichealing/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) + if(..()) + while((target.getToxLoss() >= 1) || (target.getOxyLoss() >= 1)) + . = ..() + if(!.) + break + /datum/surgery_step/toxichealing/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] fixes some of [target]'s wounds.", "You succeed in fixing some of [target]'s wounds.") target.heal_bodypart_damage(0,0,30) //Heals stam diff --git a/code/modules/tcg/cards.dm b/code/modules/tcg/cards.dm index 54d6d5abd9..f5c7c47aaf 100644 --- a/code/modules/tcg/cards.dm +++ b/code/modules/tcg/cards.dm @@ -381,6 +381,14 @@ . = ..() LoadComponent(/datum/component/storage/concrete/tcg) +/obj/item/tcgcard_deck/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage/concrete/tcg) + STR.storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT + STR.max_volume = DEFAULT_VOLUME_TINY * 30 + STR.max_w_class = DEFAULT_VOLUME_TINY + STR.max_items = 30 + /obj/item/tcgcard_deck/update_icon_state() . = ..() if(flipped) @@ -797,7 +805,13 @@ var/list/card_types = list() for(var/obj/item/tcg_card/card in binder.cards) //if(!card.illegal) //Uncomment if you want to block syndie cards from saving - card_types[card.datum_type] = card.illegal + if(!(card.datum_type in card_types)) + card_types[card.datum_type] = card.illegal + else + if(islist(card_types[card.datum_type])) + card_types[card.datum_type] += card.illegal + else + card_types[card.datum_type] = list(card_types[card.datum_type], card.illegal) client.prefs.tcg_decks = binder.decks client.prefs.tcg_cards = card_types diff --git a/code/modules/vore/eating/vorepanel.dm b/code/modules/vore/eating/vorepanel.dm index 6e3951e60a..5622ec0382 100644 --- a/code/modules/vore/eating/vorepanel.dm +++ b/code/modules/vore/eating/vorepanel.dm @@ -4,8 +4,8 @@ #define BELLIES_MAX 20 #define BELLIES_NAME_MIN 2 -#define BELLIES_NAME_MAX 12 -#define BELLIES_DESC_MAX 1024 +#define BELLIES_NAME_MAX 24 +#define BELLIES_DESC_MAX 4096 /mob/living/proc/insidePanel() set name = "Vore Panel" diff --git a/html/changelog.html b/html/changelog.html index 7eee696329..837c3cb6b7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,37 @@ -->