From f84536fc3ae7d92758eb2d65bdd75e206871013b Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 15 May 2025 06:56:26 +0200 Subject: [PATCH] some small things (#17693) * some small things * . * clean this up * potentially fix nulls in player list * . * Fixes * Update machine_stacking.dm --------- Co-authored-by: C.L. --- code/__defines/materials.dm | 2 ++ code/datums/mind.dm | 14 ++------------ code/game/objects/items/devices/translator.dm | 2 +- code/modules/materials/sheets/organic/wood.dm | 4 ++-- code/modules/mob/mob.dm | 4 ++++ code/modules/mob/new_player/lobby_browser.dm | 5 +++-- code/modules/mob/new_player/login.dm | 3 +-- code/modules/surgery/organs_internal.dm | 1 + code/modules/vore/smoleworld/smoleworld_vr.dm | 6 +++--- 9 files changed, 19 insertions(+), 22 deletions(-) diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index e714c46dad7..6b4db86ad64 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -20,6 +20,7 @@ #define MAT_SIFLOG "alien log" #define MAT_HARDWOOD "hardwood" #define MAT_HARDLOG "hardwood log" +#define MAT_WOODEN_STICK "wooden stick" #define MAT_STEELHULL "steel hull" #define MAT_PLASTEEL "plasteel" #define MAT_PLASTEELHULL "plasteel hull" @@ -69,6 +70,7 @@ #define MAT_FANCYBLACK "fancyblack" #define MAT_FOAM "foam" #define MAT_FLOKIUM "flockium" +#define MAT_SMOLEBRICKS "smolebricks" // cloth materials #define MAT_WOOL "wool" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 3055f34022b..5c6e94874e9 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1,32 +1,22 @@ /* Note from Carnie: The way datum/mind stuff works has been changed a lot. Minds now represent IC characters rather than following a client around constantly. - Guidelines for using minds properly: - - Never mind.transfer_to(ghost). The var/current and var/original of a mind must always be of type mob/living! ghost.mind is however used as a reference to the ghost's corpse - - When creating a new mob for an existing IC character (e.g. cloning a dead guy or borging a brain of a human) the existing mind of the old mob should be transfered to the new mob like so: - mind.transfer_to(new_mob) - - You must not assign key= or ckey= after transfer_to() since the transfer_to transfers the client for you. By setting key or ckey explicitly after transfering the mind with transfer_to you will cause bugs like DCing the player. - - IMPORTANT NOTE 2, if you want a player to become a ghost, use mob.ghostize() It does all the hard work for you. - - When creating a new mob which will be a new IC character (e.g. putting a shade in a construct or randomly selecting a ghost to become a xeno during an event). Simply assign the key or ckey like you've always done. - new_mob.key = key - The Login proc will handle making a new mob for that mobtype (including setting up stuff like mind.name). Simple! However if you want that mind to have any special properties like being a traitor etc you will have to do that yourself. - */ /datum/mind @@ -82,7 +72,7 @@ purchase_log = list() ..() -/datum/mind/proc/transfer_to(mob/living/new_character) +/datum/mind/proc/transfer_to(mob/living/new_character, force = FALSE) if(!istype(new_character)) to_world_log("## DEBUG: transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob. Please inform Carn") if(current) //remove ourself from our old body's mind variable @@ -100,7 +90,7 @@ if(changeling) new_character.make_changeling() - if(active) + if(active || force) new_character.key = key //now transfer the key to link the client to our new body if(new_character.client) diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm index d12a28bad70..590bf3cab7d 100644 --- a/code/game/objects/items/devices/translator.dm +++ b/code/game/objects/items/devices/translator.dm @@ -73,7 +73,7 @@ if(!L.say_understands(null, langset)) new_message = langset.scramble(new_message) - to_chat(L, span_filter_say(span_italics(span_bold("[src]") + "translates, ") + " \"[new_message]\"")) + to_chat(L, span_filter_say(span_italics(span_bold("[src]") + " translates, ") + " \"[new_message]\"")) /obj/item/universal_translator/proc/user_understands(mob/M, mob/living/L, list/message_pieces) for(var/datum/multilingual_say_piece/S in message_pieces) diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm index eec4e1dc628..8139643b17c 100644 --- a/code/modules/materials/sheets/organic/wood.dm +++ b/code/modules/materials/sheets/organic/wood.dm @@ -66,9 +66,9 @@ return ..() /obj/item/stack/material/stick - name = "wooden stick" + name = MAT_WOODEN_STICK icon_state = "sheet-stick" - default_type = "wooden stick" + default_type = MAT_WOODEN_STICK strict_color_stacking = TRUE apply_colour = 1 drop_sound = 'sound/items/drop/wooden.ogg' diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c09ed9b34df..6d84f5d3934 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -374,6 +374,9 @@ /mob/verb/abandon_mob() set name = "Return to Menu" set category = "OOC.Game" + if(istype(src, /mob/new_player)) + to_chat(src, span_boldnotice("You are already in the lobby!")) + return if(stat != DEAD || !ticker) to_chat(src, span_boldnotice("You must be dead to use this!")) @@ -443,6 +446,7 @@ if(!client) log_game("[key] AM failed due to disconnect.") qdel(M) + M.key = null return M.has_respawned = TRUE //When we returned to main menu, send respawn message diff --git a/code/modules/mob/new_player/lobby_browser.dm b/code/modules/mob/new_player/lobby_browser.dm index a7349886b01..c95eab8cd3a 100644 --- a/code/modules/mob/new_player/lobby_browser.dm +++ b/code/modules/mob/new_player/lobby_browser.dm @@ -129,9 +129,10 @@ observer.name = observer.real_name if(!client.holder && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed. remove_verb(observer, /mob/observer/dead/verb/toggle_antagHUD) // Poor guys, don't know what they are missing! - observer.key = key + + mind.transfer_to(observer, TRUE) + observer.set_respawn_timer(time_till_respawn()) // Will keep their existing time if any, or return 0 and pass 0 into set_respawn_timer which will use the defaults - observer.client.init_verbs() qdel(src) return TRUE diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 7823dbbcde5..90e866fc414 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -26,8 +26,7 @@ created_for = ckey - if(!QDELETED(src)) - addtimer(CALLBACK(src, PROC_REF(do_after_login)), 4 SECONDS, TIMER_DELETE_ME) + addtimer(CALLBACK(src, PROC_REF(do_after_login)), 4 SECONDS, TIMER_DELETE_ME) /mob/new_player/proc/do_after_login() PRIVATE_PROC(TRUE) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 3039fe68a07..c6b94d19fba 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -311,6 +311,7 @@ user.visible_message(span_filter_notice("[user] starts pulling \the [tool] from [target]'s [affected]."), \ span_filter_notice("You start pulling \the [tool] from [target]'s [affected].")) user.balloon_alert_visible("starts pulling \the [tool] from [target]'s [affected]", "pulling \the [tool] from \the [affected]") + return target.op_stage.current_organ = organ_to_remove diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index a7e9e74c976..ecda48f3969 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -66,7 +66,7 @@ recipes += new/datum/stack_recipe("smole museum", /obj/structure/smolebuilding/museum, 2, time = 10) /datum/material/smolebricks - name = "smolebricks" + name = MAT_SMOLEBRICKS stack_type = /obj/item/stack/material/smolebricks icon_base = "solid" icon_reinf = "reinf_over" @@ -77,13 +77,13 @@ //the actual materials /obj/item/stack/material/smolebricks - name = "smolebricks" + name = MAT_SMOLEBRICKS desc = "A collection of tiny colored bricks ready to be built into whatever you want." icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolematerial" drop_sound = 'sound/items/drop/smolematerial.ogg' pickup_sound = 'sound/items/pickup/pillbottle.ogg' - default_type = "smolebricks" + default_type = MAT_SMOLEBRICKS w_class = ITEMSIZE_SMALL //smolebrick case to make for easy bricks.