mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
Allows uplinks to be given while the owner is under any form of shapeshifting (#96105)
## About The Pull Request This is more snowflaky than I'd like but I can't think of a better way to handle this than directly checking for the shapeshift status, as its used in a bunch of places. Closes #96072 ## Changelog 🆑 fix: Being shapeshifted while rolling midround traitor no longer robs you of your uplink /🆑
This commit is contained in:
@@ -111,18 +111,21 @@
|
||||
* * antag_datum: the antag datum of the uplink owner, for storing it in antag memory. optional!
|
||||
*/
|
||||
/datum/mind/proc/give_uplink(silent = FALSE, datum/antagonist/antag_datum)
|
||||
if(isnull(current))
|
||||
if(!isliving(current))
|
||||
return
|
||||
var/mob/living/carbon/human/traitor_mob = current
|
||||
if (!istype(traitor_mob))
|
||||
return
|
||||
var/datum/status_effect/shapechange_mob/shapeshift = current.has_status_effect(/datum/status_effect/shapechange_mob)
|
||||
if (!ishuman(shapeshift?.caster_mob))
|
||||
return
|
||||
traitor_mob = shapeshift.caster_mob
|
||||
|
||||
var/obj/item/uplink_loc
|
||||
var/uplink_spawn_location = traitor_mob.client?.prefs?.read_preference(/datum/preference/choiced/uplink_location)
|
||||
var/uplink_spawn_location = current.client?.prefs?.read_preference(/datum/preference/choiced/uplink_location)
|
||||
var/cant_speak = (HAS_TRAIT(traitor_mob, TRAIT_MUTE) || is_mime_job(assigned_role))
|
||||
if(uplink_spawn_location == UPLINK_RADIO && cant_speak)
|
||||
if(!silent)
|
||||
to_chat(traitor_mob, span_warning("You have been deemed ineligible for a radio uplink. Supplying standard uplink instead."))
|
||||
to_chat(current, span_warning("You have been deemed ineligible for a radio uplink. Supplying standard uplink instead."))
|
||||
uplink_spawn_location = UPLINK_PDA
|
||||
|
||||
if(uplink_spawn_location != UPLINK_IMPLANT)
|
||||
@@ -134,7 +137,7 @@
|
||||
var/obj/item/implant/uplink/starting/new_implant = new(traitor_mob)
|
||||
new_implant.implant(traitor_mob, null, silent = TRUE)
|
||||
if(!silent)
|
||||
to_chat(traitor_mob, span_boldnotice("Your Syndicate Uplink has been cunningly implanted in you, for a small TC fee. Simply trigger the uplink to access it."))
|
||||
to_chat(current, span_boldnotice("Your Syndicate Uplink has been cunningly implanted in you, for a small TC fee. Simply trigger the uplink to access it."))
|
||||
add_memory(/datum/memory/key/traitor_uplink/implant, uplink_loc = "implant")
|
||||
return new_implant
|
||||
|
||||
@@ -144,7 +147,7 @@
|
||||
if(!new_uplink)
|
||||
CRASH("Uplink creation failed.")
|
||||
new_uplink.setup_unlock_code()
|
||||
new_uplink.uplink_handler.owner = traitor_mob.mind
|
||||
new_uplink.uplink_handler.owner = src
|
||||
new_uplink.uplink_handler.assigned_role = traitor_mob.mind.assigned_role.title
|
||||
new_uplink.uplink_handler.assigned_species = traitor_mob.dna.species.id
|
||||
|
||||
@@ -164,7 +167,7 @@
|
||||
|
||||
new_uplink.unlock_text = unlock_text
|
||||
if(!silent)
|
||||
to_chat(traitor_mob, span_boldnotice(unlock_text))
|
||||
to_chat(current, span_boldnotice(unlock_text))
|
||||
if(antag_datum)
|
||||
antag_datum.antag_memory += new_uplink.unlock_note + "<br>"
|
||||
return .
|
||||
|
||||
Reference in New Issue
Block a user