mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
[MIRROR] Various Mail fixes (#10592)
Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
102cb59639
commit
2688d24510
@@ -24,7 +24,7 @@ SUBSYSTEM_DEF(mail)
|
|||||||
// Collect recipients
|
// Collect recipients
|
||||||
var/list/mail_recipients = list()
|
var/list/mail_recipients = list()
|
||||||
for(var/mob/living/carbon/human/player_human in player_list)
|
for(var/mob/living/carbon/human/player_human in player_list)
|
||||||
if(player_human.stat != DEAD && player_human.client && player_human.client.inactivity <= 10 MINUTES && player_human.job != JOB_OUTSIDER && player_human.job != JOB_ANOMALY && player_human.job != JOB_VR && !player_is_antag(player_human.mind)) // Only alive, active and NT employeers should be getting mail.
|
if(player_human.stat != DEAD && player_human.client && player_human.client.inactivity <= 10 MINUTES && player_human.job != JOB_OUTSIDER && player_human.job != JOB_ANOMALY && player_human.job != JOB_VR && !player_is_antag(player_human.mind) && !isbelly(player_human.loc)) // Only alive, active and NT employeers should be getting mail.
|
||||||
mail_recipients += player_human
|
mail_recipients += player_human
|
||||||
|
|
||||||
// Creates mail for all the mail waiting to arrive, if there's nobody to receive it, it will be a chance of junk mail.
|
// Creates mail for all the mail waiting to arrive, if there's nobody to receive it, it will be a chance of junk mail.
|
||||||
@@ -39,7 +39,7 @@ SUBSYSTEM_DEF(mail)
|
|||||||
var/mob/living/carbon/human/mail_to
|
var/mob/living/carbon/human/mail_to
|
||||||
if(mail_recipients.len)
|
if(mail_recipients.len)
|
||||||
mail_to = pick(mail_recipients)
|
mail_to = pick(mail_recipients)
|
||||||
new_mail.initialize_for_recipient(mail_to)
|
new_mail.initialize_for_recipient(mail_to.mind)
|
||||||
mail_recipients -= mail_to
|
mail_recipients -= mail_to
|
||||||
else
|
else
|
||||||
new_mail.junk_mail()
|
new_mail.junk_mail()
|
||||||
|
|||||||
@@ -371,12 +371,11 @@
|
|||||||
/obj/item/stack/material/steel{amount = 10} = 235,
|
/obj/item/stack/material/steel{amount = 10} = 235,
|
||||||
/obj/item/stack/material/lead{amount = 10} = 235,
|
/obj/item/stack/material/lead{amount = 10} = 235,
|
||||||
/obj/item/stack/material/glass/reinforced{amount = 10} = 235,
|
/obj/item/stack/material/glass/reinforced{amount = 10} = 235,
|
||||||
/obj/item/rcd_ammo = 155,
|
/obj/item/rcd_ammo = 165,
|
||||||
/obj/item/stack/material/plasteel{amount = 10} = 100,
|
/obj/item/stack/material/plasteel{amount = 10} = 100,
|
||||||
/obj/item/tool/screwdriver/power = 10,
|
/obj/item/tool/transforming/jawsoflife = 10,
|
||||||
/obj/item/tool/wirecutters/power = 10,
|
/obj/item/tool/transforming/powerdrill = 10,
|
||||||
/obj/item/weldingtool/experimental = 10,
|
/obj/item/weldingtool/experimental = 10,
|
||||||
/obj/item/tool/wrench/power = 10,
|
|
||||||
)
|
)
|
||||||
mail_color = COMMS_COLOR_ENGINEER
|
mail_color = COMMS_COLOR_ENGINEER
|
||||||
|
|
||||||
@@ -384,12 +383,11 @@
|
|||||||
mail_goodies = list(
|
mail_goodies = list(
|
||||||
/obj/item/storage/box/lights/mixed = 250,
|
/obj/item/storage/box/lights/mixed = 250,
|
||||||
/obj/item/stack/cable_coil = 250,
|
/obj/item/stack/cable_coil = 250,
|
||||||
/obj/item/clothing/gloves/yellow = 200,
|
/obj/item/clothing/gloves/yellow = 210,
|
||||||
/obj/item/stack/cable_coil/heavyduty = 210,
|
/obj/item/stack/cable_coil/heavyduty = 210,
|
||||||
/obj/item/tool/screwdriver/power = 10,
|
/obj/item/tool/transforming/jawsoflife = 10,
|
||||||
/obj/item/tool/wirecutters/power = 10,
|
/obj/item/tool/transforming/powerdrill = 10,
|
||||||
/obj/item/weldingtool/experimental = 10,
|
/obj/item/weldingtool/experimental = 10,
|
||||||
/obj/item/tool/wrench/power = 10,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/datum/job/atmos
|
/datum/job/atmos
|
||||||
@@ -398,8 +396,8 @@
|
|||||||
/obj/item/analyzer = 300,
|
/obj/item/analyzer = 300,
|
||||||
/obj/item/holosign_creator/combifan = 230,
|
/obj/item/holosign_creator/combifan = 230,
|
||||||
/obj/item/pipe_dispenser = 130,
|
/obj/item/pipe_dispenser = 130,
|
||||||
/obj/item/tool/screwdriver/power = 10,
|
/obj/item/tool/transforming/jawsoflife = 10,
|
||||||
/obj/item/tool/wirecutters/power = 10,
|
/obj/item/tool/transforming/powerdrill = 10,
|
||||||
/obj/item/weldingtool/experimental = 10,
|
/obj/item/weldingtool/experimental = 10,
|
||||||
)
|
)
|
||||||
mail_color = COMMS_COLOR_ENGINEER
|
mail_color = COMMS_COLOR_ENGINEER
|
||||||
@@ -632,8 +630,8 @@
|
|||||||
/obj/item/kit/paint/ripley/flames_red = 30,
|
/obj/item/kit/paint/ripley/flames_red = 30,
|
||||||
/obj/item/kit/paint/gygax/recitence = 25,
|
/obj/item/kit/paint/gygax/recitence = 25,
|
||||||
/obj/item/kit/paint/ripley/flames_blue = 25,
|
/obj/item/kit/paint/ripley/flames_blue = 25,
|
||||||
/obj/item/tool/screwdriver/power = 10,
|
/obj/item/tool/transforming/jawsoflife = 10,
|
||||||
/obj/item/tool/wirecutters/power = 10,
|
/obj/item/tool/transforming/powerdrill = 10,
|
||||||
/obj/item/weldingtool/experimental = 10,
|
/obj/item/weldingtool/experimental = 10,
|
||||||
)
|
)
|
||||||
mail_color = COMMS_COLOR_SCIENCE
|
mail_color = COMMS_COLOR_SCIENCE
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
// Destination tagging for the mail sorter.
|
// Destination tagging for the mail sorter.
|
||||||
var/sortTag = 0
|
var/sortTag = 0
|
||||||
// Who this mail is for and who can open it.
|
// Who this mail is for and who can open it.
|
||||||
var/datum/weakref/recipient
|
var/datum/weakref/recipient_ref
|
||||||
// How many goodies this mail contains.
|
// How many goodies this mail contains.
|
||||||
var/goodie_count = 1
|
var/goodie_count = 1
|
||||||
// Goodies which can be given to anyone.
|
// Goodies which can be given to anyone.
|
||||||
@@ -103,14 +103,15 @@
|
|||||||
|
|
||||||
/obj/item/mail/proc/setRecipient(mob/user)
|
/obj/item/mail/proc/setRecipient(mob/user)
|
||||||
var/list/recipients = list()
|
var/list/recipients = list()
|
||||||
|
var/mob/living/recipient_mob
|
||||||
for(var/mob/living/player in player_list)
|
for(var/mob/living/player in player_list)
|
||||||
if(!player_is_antag(player.mind) && player.mind.show_in_directory)
|
if(!player_is_antag(player.mind) && player.mind.show_in_directory)
|
||||||
recipients += player
|
recipients += player
|
||||||
|
|
||||||
recipients = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
recipient_mob = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
||||||
|
|
||||||
if(recipients)
|
if(recipient_mob)
|
||||||
initialize_for_recipient(recipients, preset_goodies = TRUE)
|
initialize_for_recipient(recipient_mob.mind, preset_goodies = TRUE)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/item/mail/blank/AltClick(mob/user)
|
/obj/item/mail/blank/AltClick(mob/user)
|
||||||
@@ -192,7 +193,9 @@
|
|||||||
return after_unwrap(user)
|
return after_unwrap(user)
|
||||||
|
|
||||||
/obj/item/mail/proc/unwrap(mob/user)
|
/obj/item/mail/proc/unwrap(mob/user)
|
||||||
if(recipient && user != recipient)
|
if(recipient_ref)
|
||||||
|
var/datum/mind/recipient = recipient_ref.resolve()
|
||||||
|
if(recipient && recipient.current.dna.unique_enzymes != user.dna.unique_enzymes)
|
||||||
to_chat(user, span_danger("You can't open somebody's mail! That's <em>illegal</em>"))
|
to_chat(user, span_danger("You can't open somebody's mail! That's <em>illegal</em>"))
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
@@ -216,20 +219,20 @@
|
|||||||
playsound(loc, 'sound/items/poster_ripped.ogg', 100, TRUE)
|
playsound(loc, 'sound/items/poster_ripped.ogg', 100, TRUE)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/mail/proc/initialize_for_recipient(mob/new_recipient, var/preset_goodies = FALSE)
|
/obj/item/mail/proc/initialize_for_recipient(var/datum/mind/recipient, var/preset_goodies = FALSE)
|
||||||
recipient = new_recipient
|
var/current_title = recipient.role_alt_title ? recipient.role_alt_title : recipient.assigned_role
|
||||||
var/current_title = new_recipient.mind.role_alt_title ? new_recipient.mind.role_alt_title : new_recipient.mind.assigned_role
|
name = "[initial(name)] for [recipient.name] ([current_title])"
|
||||||
name = "[initial(name)] for [new_recipient.real_name] ([current_title])"
|
recipient_ref = WEAKREF(recipient)
|
||||||
|
|
||||||
var/datum/job/this_job = SSjob.name_occupations[new_recipient.job]
|
var/datum/job/this_job = SSjob.name_occupations[recipient.assigned_role]
|
||||||
|
|
||||||
var/list/goodies = generic_goodies
|
var/list/goodies = generic_goodies
|
||||||
if(this_job)
|
if(this_job)
|
||||||
colored_envelope = this_job.get_mail_color()
|
colored_envelope = this_job.get_mail_color()
|
||||||
if(!preset_goodies)
|
if(!preset_goodies)
|
||||||
var/list/job_goodies = this_job.get_mail_goodies(new_recipient, current_title)
|
var/list/job_goodies = this_job.get_mail_goodies(recipient.current, current_title)
|
||||||
if(LAZYLEN(job_goodies))
|
if(LAZYLEN(job_goodies))
|
||||||
if(this_job.get_mail_goodies())
|
if(this_job.get_mail_goodies(recipient.current, current_title))
|
||||||
goodies = job_goodies
|
goodies = job_goodies
|
||||||
else
|
else
|
||||||
goodies += job_goodies
|
goodies += job_goodies
|
||||||
@@ -238,7 +241,7 @@
|
|||||||
for(var/iterator in 1 to goodie_count)
|
for(var/iterator in 1 to goodie_count)
|
||||||
var/target_good = pickweight(goodies)
|
var/target_good = pickweight(goodies)
|
||||||
var/atom/movable/target_atom = new target_good(src)
|
var/atom/movable/target_atom = new target_good(src)
|
||||||
log_game("[key_name(new_recipient)] received [target_atom.name] in the mail ([target_good])")
|
log_game("[key_name(recipient)] received [target_atom.name] in the mail ([target_good])")
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
return TRUE
|
return TRUE
|
||||||
@@ -259,6 +262,7 @@
|
|||||||
var/list/types = typesof(/atom)
|
var/list/types = typesof(/atom)
|
||||||
var/list/matches = new()
|
var/list/matches = new()
|
||||||
var/list/recipients = list()
|
var/list/recipients = list()
|
||||||
|
var/datum/mind/recipient_mind
|
||||||
|
|
||||||
for(var/path in types)
|
for(var/path in types)
|
||||||
if(findtext("[path]", object))
|
if(findtext("[path]", object))
|
||||||
@@ -277,9 +281,11 @@
|
|||||||
for(var/mob/living/player in player_list)
|
for(var/mob/living/player in player_list)
|
||||||
recipients += player
|
recipients += player
|
||||||
|
|
||||||
recipients = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
var/mob/living/chosen_player = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
||||||
|
|
||||||
if(!recipients)
|
recipient_mind = chosen_player.mind
|
||||||
|
|
||||||
|
if(!recipient_mind)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/shuttle_spawn = tgui_alert(usr, "Spawn mail at location or in the shuttle?", "Spawn mail", list("Location", "Shuttle"))
|
var/shuttle_spawn = tgui_alert(usr, "Spawn mail at location or in the shuttle?", "Spawn mail", list("Location", "Shuttle"))
|
||||||
@@ -287,13 +293,13 @@
|
|||||||
return
|
return
|
||||||
if(shuttle_spawn == "Shuttle")
|
if(shuttle_spawn == "Shuttle")
|
||||||
var/obj/item/mail/new_mail = new
|
var/obj/item/mail/new_mail = new
|
||||||
new_mail.initialize_for_recipient(recipients, TRUE)
|
new_mail.initialize_for_recipient(recipient_mind, TRUE)
|
||||||
new chosen(new_mail)
|
new chosen(new_mail)
|
||||||
SSmail.admin_mail += new_mail
|
SSmail.admin_mail += new_mail
|
||||||
log_and_message_admins("spawned [chosen] inside an envelope at the shuttle")
|
log_and_message_admins("spawned [chosen] inside an envelope at the shuttle")
|
||||||
else
|
else
|
||||||
var/obj/item/mail/ground_mail = new /obj/item/mail(usr.loc)
|
var/obj/item/mail/ground_mail = new /obj/item/mail(usr.loc)
|
||||||
ground_mail.initialize_for_recipient(recipients, TRUE)
|
ground_mail.initialize_for_recipient(recipient_mind, TRUE)
|
||||||
new chosen(ground_mail)
|
new chosen(ground_mail)
|
||||||
log_and_message_admins("spawned [chosen] inside an envelope at ([usr.x],[usr.y],[usr.z])")
|
log_and_message_admins("spawned [chosen] inside an envelope at ([usr.x],[usr.y],[usr.z])")
|
||||||
|
|
||||||
@@ -320,7 +326,7 @@
|
|||||||
new_mail = new /obj/item/mail/envelope(src)
|
new_mail = new /obj/item/mail/envelope(src)
|
||||||
var/mob/living/carbon/human/mail_to
|
var/mob/living/carbon/human/mail_to
|
||||||
if(mail_to)
|
if(mail_to)
|
||||||
new_mail.initialize_for_recipient(mail_to)
|
new_mail.initialize_for_recipient(mail_to.mind)
|
||||||
mail_recipients -= mail_to
|
mail_recipients -= mail_to
|
||||||
else
|
else
|
||||||
new_mail.junk_mail()
|
new_mail.junk_mail()
|
||||||
@@ -387,7 +393,12 @@
|
|||||||
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/mob/living/recipient = saved.recipient
|
var/mob/living/recipient
|
||||||
|
if(saved.recipient_ref)
|
||||||
|
recipient = saved.recipient_ref.resolve()
|
||||||
|
|
||||||
|
if(isnull(recipient))
|
||||||
|
return
|
||||||
|
|
||||||
if(M.stat == DEAD)
|
if(M.stat == DEAD)
|
||||||
to_chat(user, span_warning("Consent Verification failed: You can't deliver mail to a corpse!"))
|
to_chat(user, span_warning("Consent Verification failed: You can't deliver mail to a corpse!"))
|
||||||
|
|||||||
Reference in New Issue
Block a user