Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025

This commit is contained in:
Roxy
2025-10-23 17:38:23 -04:00
453 changed files with 20635 additions and 15897 deletions
+4
View File
@@ -122,6 +122,7 @@
name = pai.name,
transmit = pai.can_transmit,
receive = pai.can_receive,
leashed = pai.leash,
range = pai.leash?.distance,
)
return data
@@ -156,6 +157,9 @@
if("toggle_holo")
pai.toggle_holo()
return TRUE
if("toggle_leash")
pai.toggle_leash()
return TRUE
if("toggle_radio")
pai.toggle_radio(params["option"])
return TRUE
+10 -13
View File
@@ -216,16 +216,23 @@
pai_card.set_personality(src)
card = pai_card
forceMove(pai_card)
leash = AddComponent(/datum/component/leash, pai_card, HOLOFORM_DEFAULT_RANGE, force_teleport_out_effect = /obj/effect/temp_visual/guardian/phase/out)
toggle_leash()
addtimer(VARSET_WEAK_CALLBACK(src, holochassis_ready, TRUE), HOLOCHASSIS_INIT_TIME)
if(!holoform)
add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), PAI_FOLDED)
update_appearance(UPDATE_DESC)
RegisterSignal(src, COMSIG_LIVING_CULT_SACRIFICED, PROC_REF(on_cult_sacrificed))
RegisterSignals(src, list(COMSIG_LIVING_ADJUST_BRUTE_DAMAGE, COMSIG_LIVING_ADJUST_BURN_DAMAGE), PROC_REF(on_shell_damaged))
RegisterSignal(src, COMSIG_LIVING_ADJUST_STAMINA_DAMAGE, PROC_REF(on_shell_weakened))
/mob/living/silicon/pai/proc/toggle_leash()
if(isnull(card))
return
if(leash)
QDEL_NULL(leash)
else
leash = AddComponent(/datum/component/leash, card, HOLOFORM_DEFAULT_RANGE, force_teleport_out_effect = /obj/effect/temp_visual/guardian/phase/out)
/mob/living/silicon/pai/create_modularInterface()
if(!modularInterface)
modularInterface = new /obj/item/modular_computer/pda/silicon/pai(src)
@@ -257,12 +264,7 @@
SEND_SIGNAL(src, COMSIG_LIVING_HEALTH_UPDATE)
/mob/living/silicon/pai/update_desc(updates)
// BUBBER EDIT START: PAI ReLeashed: ORIGINAL: desc = "A hard-light holographic avatar representing a pAI. This one appears in the form of a [chassis]."
if(!holo_leash)
desc = "A pAI mobile hard-light holographics emitter. This one appears in the form of a [chassis]."
else
desc = "A hard-light holographic avatar representing a pAI. This one appears in the form of a [chassis]."
// BUBBER EDIT END
desc = "A hard-light holographic avatar representing a pAI. This one appears in the form of a [chassis]."
return ..()
/mob/living/silicon/pai/update_icon_state()
@@ -343,9 +345,7 @@
master_dna = "Untraceable Signature"
// Sets supplemental directive to this
add_supplied_law(0, "Do not interfere with the operations of the Syndicate.")
QDEL_NULL(leash) // Freedom!!!
to_chat(src, span_danger("ALERT: Foreign software detected."))
to_chat(src, span_danger("WARN: Holochasis range restrictions disabled."))
return TRUE
/mob/living/silicon/pai/on_saboteur(datum/source, disrupt_duration)
@@ -473,9 +473,6 @@
/// Updates the distance we can be from our pai card
/mob/living/silicon/pai/proc/increment_range(increment_amount)
if(!holo_leash) // BUBBER EDIT: PAI ReLeashed: ORIGINAL: if(emagged)
return
var/new_distance = leash.distance + increment_amount
if (new_distance < HOLOFORM_MIN_RANGE || new_distance > HOLOFORM_MAX_RANGE)
return
+3 -33
View File
@@ -78,12 +78,7 @@
if(!holoform)
. = fold_out(force)
return FALSE
// BUBBER EDIT START: PAI ReLeashed
if(!holo_leash)
visible_message(span_notice("[src] deactivates its holochassis emitter and folds back into a compact card!")) // BUBBER EDIT: PAI Freedom: ORIGINAL: visible_message(span_notice("[src] dematerialises!"))
else
visible_message(span_notice("[src] dematerialises!"))
// BUBBER EDIT END
visible_message(span_notice("[src] dematerialises!"))
stop_pulling()
if(ispickedupmob(loc))
var/obj/item/mob_holder/mob_head = loc
@@ -93,11 +88,6 @@
client.set_eye(card)
if (isturf(loc))
new /obj/effect/temp_visual/guardian/phase/out(loc)
// BUBBER EDIT ADDITION START: PAI ReLeashed
if(!holo_leash)
var/turf/target = drop_location()
card.forceMove(target)
// BUBBER EDIT END
forceMove(card)
add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), PAI_FOLDED)
ADD_TRAIT(src, TRAIT_UNDENSE, PAI_FOLDED)
@@ -132,33 +122,13 @@
REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, PAI_FOLDED)
REMOVE_TRAIT(src, TRAIT_HANDS_BLOCKED, PAI_FOLDED)
REMOVE_TRAIT(src, TRAIT_UNDENSE, PAI_FOLDED)
// BUBBER EDIT START: PAI ReLeashed: ORIGINAL: forceMove(get_turf(card))
if(!holo_leash)
if(istype(card.loc, /obj/item/modular_computer))
var/obj/item/modular_computer/pc = card.loc
pc.inserted_pai = null
pc.visible_message(span_notice("[src] ejects itself from [pc]!"))
if(isliving(card.loc))
var/mob/living/living_holder = card.loc
if(!living_holder.temporarilyRemoveItemFromInventory(card))
balloon_alert(src, "unable to expand")
return FALSE
forceMove(get_turf(card))
card.forceMove(src)
else
forceMove(get_turf(card))
// BUBBER EDIT END
forceMove(get_turf(card))
if(client)
client.perspective = EYE_PERSPECTIVE
client.set_eye(src)
set_light_on(FALSE)
update_appearance(UPDATE_ICON_STATE)
// BUBBER EDIT START: PAI ReLeashed
if(!holo_leash)
visible_message(span_boldnotice("[src] folds out its holochassis emitter and forms a holoshell around itself!")) // BUBBER EDIT: PAI Freedom: ORIGINAL: visible_message(span_boldnotice("[src] appears in a flash of light!"))
else
visible_message(span_boldnotice("[src] appears in a flash of light!"))
// BUBBER EDIT END: PAI ReLeashed
visible_message(span_boldnotice("[src] appears in a flash of light!"))
holoform = TRUE
return TRUE