mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
529 lines
23 KiB
Plaintext
529 lines
23 KiB
Plaintext
/obj/item/mail
|
|
name = "mail"
|
|
desc = "An officially postmarked, tamper-evident parcel regulated by CentCom and made of high-quality materials."
|
|
icon = 'icons/obj/bureaucracy.dmi'
|
|
icon_state = "mail_small"
|
|
item_flags = NOBLUDGEON
|
|
w_class = ITEMSIZE_SMALL
|
|
drop_sound = 'sound/items/drop/paper.ogg'
|
|
pickup_sound = 'sound/items/pickup/paper.ogg'
|
|
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
|
// Destination tagging for the mail sorter.
|
|
var/sortTag = 0
|
|
// Who this mail is for and who can open it.
|
|
var/datum/weakref/recipient_ref
|
|
// How many goodies this mail contains.
|
|
var/goodie_count = 1
|
|
// Goodies which can be given to anyone.
|
|
// Weight sum will be 1000
|
|
var/list/generic_goodies = list(
|
|
/obj/item/spacecash/c50 = 75,
|
|
/obj/item/reagent_containers/food/drinks/cans/cola = 75,
|
|
/obj/item/reagent_containers/food/snacks/chips = 75,
|
|
/obj/item/reagent_containers/food/drinks/coffee = 75,
|
|
/obj/item/reagent_containers/food/drinks/tea = 75,
|
|
/obj/item/reagent_containers/food/drinks/glass2/coffeemug/nt = 50,
|
|
/obj/item/spacecash/c100 = 40,
|
|
/obj/item/spacecash/c200 = 25,
|
|
/obj/item/spacecash/c500 = 15,
|
|
/obj/item/spacecash/c1000 = 5,
|
|
/obj/item/reagent_containers/food/drinks/bluespace_coffee = 5
|
|
)
|
|
// Overlays (pure fluff)
|
|
// Does the letter have the postmark overlay?
|
|
var/postmarked = TRUE
|
|
// Does the letter have a stamp overlay?
|
|
var/stamped = TRUE
|
|
// List of all stamp overlays on the letter.
|
|
var/list/stamps = list()
|
|
// Maximum number of stamps on the letter.
|
|
var/stamp_max = 1
|
|
// Physical offset of stamps on the object. X direction.
|
|
var/stamp_offset_x = 0
|
|
// Physical offset of stamps on the object. Y direction.
|
|
var/stamp_offset_y = 2
|
|
// If the mail is actively being opened right now
|
|
var/opening = FALSE
|
|
// If the mail has been scanned with a mail scanner
|
|
var/scanned
|
|
// Does it have a colored envelope?
|
|
var/colored_envelope
|
|
|
|
/obj/item/mail/container_resist(mob/living/M)
|
|
if(istype(M, /mob/living/voice)) return
|
|
if(isdisposalpacket(loc))
|
|
M.forceMove(loc)
|
|
else
|
|
M.forceMove(get_turf(src))
|
|
to_chat(M, span_warning("You climb out of \the [src]."))
|
|
|
|
/obj/item/mail/envelope
|
|
name = "envelope"
|
|
icon_state = "mail_large"
|
|
goodie_count = 2
|
|
stamp_max = 2
|
|
stamp_offset_y = 5
|
|
|
|
/obj/item/mail/Initialize(mapload)
|
|
. = ..()
|
|
RegisterSignal(src, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposal_handling))
|
|
|
|
// Icons
|
|
// Add some random stamps.
|
|
if(stamped == TRUE)
|
|
var/stamp_count = rand(1, stamp_max)
|
|
for(var/i = 1, i <= stamp_count, i++)
|
|
stamps += list("stamp_[rand(2, 8)]")
|
|
|
|
/obj/item/mail/blank
|
|
desc = "A blank envelope."
|
|
description_info = "An object can be placed into the envelope, click on it with an empty hand to seal it. Alt-Click to retrieve the items from inside before sealing."
|
|
stamped = FALSE
|
|
postmarked = FALSE
|
|
var/set_recipient = FALSE
|
|
var/set_content = FALSE
|
|
var/sealed = FALSE
|
|
var/list/mail_recipients
|
|
|
|
/obj/item/mail/blank/attackby(obj/item/W, mob/user)
|
|
..()
|
|
if(istype(W, /obj/item/pen) && sealed && !set_recipient)
|
|
if(setRecipient(user))
|
|
set_recipient = TRUE
|
|
add_fingerprint(user)
|
|
return
|
|
|
|
if(!set_content && !sealed)
|
|
if(!do_after(user, 1.5 SECONDS, target = user))
|
|
set_content = FALSE
|
|
user.drop_item()
|
|
W.forceMove(src)
|
|
balloon_alert(user, "placed \the [W] into \the [src]")
|
|
set_content = TRUE
|
|
description_info = "Click with an empty hand to seal it, or Alt-Click to retrieve the object out."
|
|
return
|
|
return
|
|
|
|
/obj/item/mail/proc/setRecipient(mob/user)
|
|
var/list/recipients = list()
|
|
var/mob/living/recipient_mob
|
|
for(var/mob/living/player in GLOB.player_list)
|
|
if(!player_is_antag(player.mind) && player.mind.show_in_directory)
|
|
recipients += player
|
|
|
|
recipient_mob = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
|
|
|
if(recipient_mob)
|
|
initialize_for_recipient(recipient_mob.mind, preset_goodies = TRUE)
|
|
return TRUE
|
|
|
|
/obj/item/mail/blank/click_alt(mob/user)
|
|
if(sealed)
|
|
return
|
|
|
|
for(var/obj/stuff as anything in contents)
|
|
if(isitem(stuff))
|
|
user.put_in_hands(stuff)
|
|
else
|
|
stuff.forceMove(drop_location())
|
|
set_content = FALSE
|
|
description_info = initial(description_info)
|
|
|
|
/obj/item/mail/blank/ShiftClick(mob/user)
|
|
..()
|
|
if(!sealed)
|
|
var/sender = tgui_input_text(user, "Write name", "Name", user.name)
|
|
if(sender)
|
|
desc = "A signed envelope, from [sender]."
|
|
|
|
/obj/item/mail/blank/attack_self(mob/user)
|
|
if(!sealed)
|
|
if(!do_after(user, 1.5 SECONDS, target = user))
|
|
sealed = FALSE
|
|
sealed = TRUE
|
|
description_info = "Shift Click to add the sender's name to the envelope, or attack with a pen to set a receiver."
|
|
return
|
|
. = ..()
|
|
|
|
/obj/item/mail/update_icon()
|
|
. = ..()
|
|
cut_overlays()
|
|
if(colored_envelope)
|
|
var/image/envelope = image(icon, icon_state)
|
|
envelope.color = colored_envelope
|
|
add_overlay(envelope)
|
|
var/bonus_stamp_offset = 0
|
|
for(var/stamp in stamps)
|
|
var/image/stamp_image = image(
|
|
icon_state = stamp,
|
|
pixel_x = stamp_offset_x,
|
|
pixel_y = stamp_offset_y + bonus_stamp_offset
|
|
)
|
|
stamp_image.appearance_flags |= RESET_COLOR
|
|
add_overlay(stamp_image)
|
|
bonus_stamp_offset -= 5
|
|
|
|
if(postmarked == TRUE)
|
|
var/image/postmark_image = image(
|
|
icon = icon,
|
|
icon_state = "postmark",
|
|
pixel_x = stamp_offset_x + rand(-4, 0),
|
|
pixel_y = stamp_offset_y + rand(bonus_stamp_offset + 3, 1)
|
|
)
|
|
postmark_image.appearance_flags |= RESET_COLOR
|
|
add_overlay(postmark_image)
|
|
|
|
/obj/item/mail/attackby(obj/item/W as obj, mob/user as mob)
|
|
. = ..()
|
|
// Destination tagging
|
|
if(istype(W, /obj/item/destTagger))
|
|
var/obj/item/destTagger/O = W
|
|
if(O.currTag)
|
|
if(src.sortTag != O.currTag)
|
|
balloon_alert(user, "labeled for [O.currTag].")
|
|
src.sortTag = O.currTag
|
|
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
|
|
W.description_info = " It is labeled for [O.currTag]"
|
|
else
|
|
balloon_alert(user, "already labeled for [O.currTag].")
|
|
else
|
|
balloon_alert(user, "destination not set!")
|
|
return
|
|
|
|
/obj/item/mail/attack_self(mob/user)
|
|
if(!unwrap(user))
|
|
return FALSE
|
|
return after_unwrap(user)
|
|
|
|
/obj/item/mail/proc/unwrap(mob/user)
|
|
if(recipient_ref)
|
|
var/datum/mind/recipient = recipient_ref.resolve()
|
|
if(recipient && recipient.current?.dna.unique_enzymes != user.dna.unique_enzymes)
|
|
balloon_alert(user, "you can't open somebody's mail! That's <em>illegal</em>")
|
|
return FALSE
|
|
|
|
if(opening)
|
|
balloon_alert(user, "already opening that!")
|
|
return FALSE
|
|
|
|
opening = TRUE
|
|
if(!do_after(user, 1.5 SECONDS, target = user))
|
|
opening = FALSE
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/obj/item/mail/proc/after_unwrap(mob/user)
|
|
user.temporarilyRemoveItemFromInventory(src, TRUE)
|
|
for(var/obj/stuff as anything in contents)
|
|
if(isitem(stuff))
|
|
user.put_in_hands(stuff)
|
|
else
|
|
stuff.forceMove(drop_location())
|
|
//Now here's the kicker
|
|
if(HAS_TRAIT(user, TRAIT_UNLUCKY) && prob(5)) //1 in 20 chance for your mail to be rigged with a glitter bomb
|
|
to_chat(user, span_bolddanger("You open the mail and - OH SHIT IS THAT A BOMB!"))
|
|
var/obj/item/grenade/confetti/confetti_nade = new /obj/item/grenade/confetti()
|
|
confetti_nade.name = "Pipebomb"
|
|
confetti_nade.desc = span_bolddanger("What the hell are you looking at it for?! RUN!!")
|
|
confetti_nade.activate()
|
|
playsound(loc, 'sound/items/poster_ripped.ogg', 100, TRUE)
|
|
qdel(src)
|
|
|
|
/obj/item/mail/proc/initialize_for_recipient(var/datum/mind/recipient, var/preset_goodies = FALSE)
|
|
var/current_title = recipient.role_alt_title ? recipient.role_alt_title : recipient.assigned_role
|
|
name = "[initial(name)] for [recipient.name] ([current_title])"
|
|
recipient_ref = WEAKREF(recipient)
|
|
|
|
var/datum/job/this_job = SSjob.name_occupations[recipient.assigned_role]
|
|
|
|
var/list/goodies = generic_goodies
|
|
if(this_job)
|
|
colored_envelope = this_job.get_mail_color()
|
|
if(!preset_goodies)
|
|
var/list/job_goodies = this_job.get_mail_goodies(recipient.current, current_title)
|
|
if(LAZYLEN(job_goodies))
|
|
if(this_job.get_mail_goodies(recipient.current, current_title))
|
|
goodies = job_goodies
|
|
else
|
|
goodies += job_goodies
|
|
|
|
if(!preset_goodies)
|
|
for(var/iterator in 1 to goodie_count)
|
|
var/target_good = pickweight(goodies)
|
|
var/atom/movable/target_atom = new target_good(src)
|
|
log_game("[key_name(recipient)] received [target_atom.name] in the mail ([target_good])")
|
|
|
|
update_icon()
|
|
return TRUE
|
|
|
|
/obj/item/mail/proc/disposal_handling(disposal_source, obj/structure/disposalholder/disposal_holder, obj/machinery/disposal/deliveryChute, hasmob)
|
|
SIGNAL_HANDLER
|
|
if(!hasmob)
|
|
disposal_holder.destinationTag = sortTag
|
|
|
|
// Mail spawn for events
|
|
/datum/admins/proc/spawn_mail(var/object as text)
|
|
set name = "Spawn Mail"
|
|
set category = "Fun.Event Kit"
|
|
set desc = "Spawn mail for a specific player, with a specific item."
|
|
|
|
if(!check_rights(R_SPAWN)) return
|
|
|
|
var/list/types = typesof(/atom)
|
|
var/list/matches = new()
|
|
var/list/recipients = list()
|
|
var/datum/mind/recipient_mind
|
|
|
|
for(var/path in types)
|
|
if(findtext("[path]", object))
|
|
matches += path
|
|
|
|
if(matches.len==0)
|
|
return
|
|
var/chosen
|
|
if(matches.len==1)
|
|
chosen = matches[1]
|
|
else
|
|
chosen = tgui_input_list(usr, "Select an atom type", "Spawn Atom in Mail", matches)
|
|
if(!chosen)
|
|
return
|
|
|
|
for(var/mob/living/player in GLOB.player_list)
|
|
recipients += player
|
|
|
|
var/mob/living/chosen_player = tgui_input_list(usr, "Choose recipient", "Recipients", recipients, recipients)
|
|
|
|
recipient_mind = chosen_player.mind
|
|
|
|
if(!recipient_mind)
|
|
return
|
|
|
|
var/shuttle_spawn = tgui_alert(usr, "Spawn mail at location or in the shuttle?", "Spawn mail", list("Location", "Shuttle"))
|
|
if(!shuttle_spawn)
|
|
return
|
|
if(shuttle_spawn == "Shuttle")
|
|
var/obj/item/mail/new_mail = new
|
|
new_mail.initialize_for_recipient(recipient_mind, TRUE)
|
|
new chosen(new_mail)
|
|
SSmail.admin_mail += new_mail
|
|
log_and_message_admins("spawned [chosen] inside an envelope at the shuttle")
|
|
else
|
|
var/obj/item/mail/ground_mail = new /obj/item/mail(usr.loc)
|
|
ground_mail.initialize_for_recipient(recipient_mind, TRUE)
|
|
new chosen(ground_mail)
|
|
log_and_message_admins("spawned [chosen] inside an envelope at ([usr.x],[usr.y],[usr.z])")
|
|
|
|
feedback_add_details("admin_verb","SM")
|
|
|
|
// Mail Crate
|
|
/obj/structure/closet/crate/mail
|
|
name = "mail crate"
|
|
desc = "An official mail crate from CentCom"
|
|
points_per_crate = 0
|
|
closet_appearance = /decl/closet_appearance/crate/nanotrasen
|
|
|
|
/obj/structure/closet/crate/mail/full/Initialize(mapload)
|
|
. = ..()
|
|
var/list/mail_recipients = list()
|
|
for(var/mob/living/carbon/human/alive in GLOB.player_list)
|
|
if(alive.stat != DEAD && alive.client && alive.client.inactivity <= 10 MINUTES)
|
|
mail_recipients += alive
|
|
for(var/iterator in 1 to storage_capacity)
|
|
var/obj/item/mail/new_mail
|
|
if(prob(70))
|
|
new_mail = new /obj/item/mail(src)
|
|
else
|
|
new_mail = new /obj/item/mail/envelope(src)
|
|
var/mob/living/carbon/human/mail_to
|
|
if(mail_to)
|
|
new_mail.initialize_for_recipient(mail_to.mind)
|
|
mail_recipients -= mail_to
|
|
else
|
|
new_mail.junk_mail()
|
|
|
|
// Mailbag
|
|
/obj/item/storage/bag/mail
|
|
name = "mail bag"
|
|
desc = "A bag for letters, envelopes and other postage."
|
|
icon = 'icons/obj/bureaucracy.dmi'
|
|
icon_state = "mailbag"
|
|
slot_flags = SLOT_BELT | SLOT_POCKET
|
|
w_class = ITEMSIZE_NORMAL
|
|
storage_slots = 31
|
|
max_storage_space = 50
|
|
max_w_class = ITEMSIZE_NORMAL
|
|
use_to_pickup = TRUE
|
|
allow_quick_gather = TRUE
|
|
can_hold = list(
|
|
/obj/item/mail,
|
|
/obj/item/smallDelivery,
|
|
/obj/item/paper,
|
|
/obj/item/stolenpackage,
|
|
/obj/item/contraband,
|
|
/obj/item/mail_scanner,
|
|
/obj/item/pen
|
|
)
|
|
|
|
// Mail Scanner
|
|
/obj/item/mail_scanner
|
|
name = "mail scanner"
|
|
desc = "Sponsored by the Intergalactic Mail Service, this device logs mail deliveries in exchance for financial compensation."
|
|
force = 0
|
|
throwforce = 0
|
|
icon = 'icons/obj/bureaucracy.dmi'
|
|
icon_state = "mail_scanner"
|
|
slot_flags = SLOT_BELT
|
|
w_class = ITEMSIZE_SMALL
|
|
var/cargo_points = 5
|
|
var/obj/item/mail/saved
|
|
|
|
/obj/item/mail_scanner/examine(mob/user)
|
|
. = ..()
|
|
. += span_notice("Scan a letter to log it into the active database, then scan the person you wish to hand the letter to. Correctly scanning the recipient of the letter logged into the active database will add points to the supply budget.")
|
|
|
|
/obj/item/mail_scanner/attack()
|
|
return
|
|
|
|
/obj/item/mail_scanner/afterattack(atom/A, mob/user)
|
|
if(istype(A, /obj/item/mail))
|
|
var/obj/item/mail/saved_mail = A
|
|
if(saved_mail.scanned)
|
|
balloon_alert(user, "already scanned!")
|
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
|
return
|
|
balloon_alert(user, "added to database")
|
|
playsound(loc, 'sound/items/mail/mailscanned.ogg', 50, TRUE)
|
|
saved = A
|
|
return
|
|
if(isliving(A))
|
|
if(!saved)
|
|
balloon_alert(user, "no logged mail!")
|
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
|
return
|
|
|
|
var/datum/mind/recipient
|
|
if(saved.recipient_ref)
|
|
recipient = saved.recipient_ref.resolve()
|
|
|
|
if(isnull(recipient) || isnull(recipient.current))
|
|
return
|
|
|
|
if(recipient.current.stat == DEAD)
|
|
to_chat(user, span_warning("Consent Verification failed: You can't deliver mail to a corpse!"))
|
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
|
return
|
|
if(recipient.current.dna.unique_enzymes != recipient.current.dna.unique_enzymes)
|
|
to_chat(user, span_warning("Identity Verification failed: Target is not authorized recipient of this envelope!"))
|
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
|
return
|
|
if(!recipient.current.client)
|
|
to_chat(user, span_warning("Consent Verification failed: The scanner does not accept orders from SSD crewmemmbers!"))
|
|
playsound(loc, 'sound/items/mail/maildenied.ogg', 50, TRUE)
|
|
return
|
|
|
|
saved.scanned = TRUE
|
|
saved = null
|
|
|
|
cargo_points = rand(5, 10)
|
|
to_chat(user, span_notice("Succesful delivery acknowledged! [cargo_points] points added to Supply."))
|
|
playsound(loc, 'sound/items/mail/mailapproved.ogg', 50, TRUE)
|
|
SSsupply.points += cargo_points
|
|
|
|
// JUNK MAIL STUFF
|
|
|
|
/obj/item/mail/junkmail/Initialize(mapload)
|
|
. = ..()
|
|
junk_mail()
|
|
|
|
/obj/item/mail/proc/junk_mail()
|
|
|
|
var/obj/junk = /obj/item/paper/fluff/junkmail_generic
|
|
var/special_name = FALSE
|
|
|
|
if(prob(25))
|
|
special_name = TRUE
|
|
junk = pick(list(
|
|
/obj/item/paper/pamphlet/gateway,
|
|
/obj/item/paper/pamphlet/violent_video_games,
|
|
/obj/item/paper/pamphlet/radstorm,
|
|
/obj/item/paper/fluff/junkmail_redpill,
|
|
/obj/effect/decal/cleanable/ash,
|
|
/obj/item/paper/fluff/love_letter,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/berry,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/dankpocket,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/gondola,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/honk,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/pizza,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/spicy,
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki,
|
|
/obj/item/toy/figure,
|
|
/obj/item/contraband/package,
|
|
/obj/item/tool/screwdriver/sdriver,
|
|
/obj/item/storage/briefcase/target_toy
|
|
))
|
|
|
|
var/list/junk_names = list(
|
|
/obj/item/paper/pamphlet/gateway = "[initial(name)] for BRAVE adventurers",
|
|
/obj/item/paper/pamphlet/violent_video_games = "[initial(name)] for the truth about the arcade CentComm doesn't want to hear",
|
|
/obj/item/paper/pamphlet/radstorm = "[initial(name)] for the threats in space",
|
|
/obj/item/paper/fluff/junkmail_redpill = "[initial(name)] for those feeling tired working at Nanotrasen",
|
|
/obj/effect/decal/cleanable/ash = "[initial(name)] with INCREDIBLY IMPORTANT ARTIFACT- DELIVER TO SCIENCE DIVISION. HANDLE WITH CARE.",
|
|
/obj/item/paper/fluff/love_letter = "[initial(name)] for STUPID CARGO MAILMEN.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/berry = "[initial(name)] with NEW BERRY-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/dankpocket = "[initial(name)] with NEW DANK-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/gondola = "[initial(name)] with NEW GONDOLA-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/honk = "[initial(name)] with NEW HONK-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/pizza = "[initial(name)] with NEW PIZZA-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/spicy = "[initial(name)] with NEW SPICY-POCKET.",
|
|
/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki = "[initial(name)] with NEW TERIYAKI-POCKET.",
|
|
/obj/item/toy/figure = "[initial(name)] from DoN**K*oC",
|
|
/obj/item/contraband/package = "[pick("oddly shaped", "strangely wrapped", "weird", "bulging")] [initial(name)]",
|
|
/obj/item/tool/screwdriver/sdriver = "[initial(name)] for Proffesor Who",
|
|
/obj/item/storage/briefcase/target_toy = "[initial(name)] for SIMPATHY, SUCCESS, MANHATTAN, BELIEFS"
|
|
)
|
|
|
|
name = special_name ? junk_names[junk] : "important [initial(name)]"
|
|
|
|
junk = new junk(src)
|
|
update_icon()
|
|
return TRUE
|
|
|
|
/obj/item/paper/fluff/junkmail_generic/Initialize(mapload)
|
|
. = ..()
|
|
info = pick(
|
|
prob(5);"Hello! I am executive at Nanotrasen Nigel Takall. Due to accounting error all of my salary is stored in an account unreachable. In order to withdraw I am required to utilize your account to make a deposit to confirm my reality situation. In exchange for a temporary deposit I will give you a payment 1000 credits. All I need is access to your account. Will you be assistant please?",
|
|
prob(5);"WE NEED YOUR BLOOD! WE ARE AN ANARCHO-COMMUNIST VAMPIRE COMMUNE. BLOOD ONLY LASTS 42 DAYS BEFORE IT GOES BAD! WE DO NOT HAVE NANOTRASEN STASIS! PLEASE, SEND BLOOD! THANK YOU! OR WE KILL YOU!",
|
|
prob(5);"Triple deposits are waiting for you at MaxBet Online when you register to play with us. You can qualify for a 200% Welcome Bonus at MaxBet Online when you sign up today. Once you are a player with MaxBet, you will also receive lucrative weekly and monthly promotions. You will be able to enjoy over 450 top-flight casino games at MaxBet.",
|
|
prob(5);"Hello !, I'm the former HoS of your deerest station accused by the Nanotrasen of being a traitor . I was the best we had to offer but it seems that nanotramsen has turned their back on me. I need 2000 credits to pay for my bail and then we can restore order on space station 14!",
|
|
prob(5);"Hello, I noticed you riding in a 2555 Ripley and wondered if you'd be interested in selling. Low mileage mechs sell very well in our current market. Please call 223-334-3245 if you're interested",
|
|
prob(5);"Resign Now. I'm on you now. You are fucking with me now Let's see who you are. Watch your back , bitch. Call me. Don't be afraid, you piece of shit. Stand up. If you don't call, you're just afraid. And later: I already know where you live, I'm on you. You might as well call me. You will see me. I promise. Bro.",
|
|
prob(5);"Clown Planet Is Going To Become Awesome Possum Again! If This Wasn't Sent To A Clown, Disregard. If This Was Sent To A Mime, Blow It Out Your Ass, Space Frenchie! Anyway! We Make Big Progress On Clown Planet After Stupid Mimes BLOW IT ALL TO SAM HELL!!!!! Sorry I Am Mad.. Anyway Come And Visit, Honkles! We Thought You Were Dead Long Time :^()",
|
|
prob(5);"MONTHPEOPLE ARE REAL, THE NANOTRASEN DEEP STATE DOESN'T WANT YOU TO SEE THIS! I'VE SEEN THEM IN REAL LIFE, THEY HAVE HUGE EYEBALLS AND NO HEAD. THEY'RE SENTIENT CALENDARS. I'M NOT CRAZY. SEARCH THE CALENDAR INCIDENT ON NTNET. USE A PROXY! #BIGTRUTHS #WAKEYWAKEYSPACEMEN #21STOFSEPTEMBER",
|
|
prob(5);"hello :wave::wave: nanotrasens! fuck :point_left::ok_hand: the syndicate! they :older_woman: got ☄ me :heart_eyes::cold_sweat: questioning my :pregnant_woman: loyalty to nanotraben! so :ok_hand::100: please :tired_face: lets :no_entry::eyes: gather our :camera_with_flash::poop: energy :sunglasses: and :moneybag::symbols: QUICK. :astonished: send this :wastebasket::point_left: to :sweat_drops::pill: 10 :joy::joy: other loyal :100: nanotraysens to :sweat_drops::thinking: show we :dog: dont :person_gesturing_no::no_entry_sign: take :shopping_bags: nothing from :joy: the ✝ syndicate!! bless your :point_right_tone2: heart :heart_eyes::broken_heart:",
|
|
prob(5);"Hello, my name is Immigration officer Mimi Sashimi from the American-Felinid Homeworld consulate. It appears your current documents are either inaccurate if not entirely fraudulent. This action in it's current state is a federal offense as listed in the United Earth Commission charter section NY-4. Please pay a fine of 300,000 Space credits or $3000 United States Dollars or face deportation",
|
|
prob(5);"Hi %name%, We are unable to validate your billing information for the next billing cycle of your subscription to HONK Weekly therefore we'll suspend your membership if we do not receive a response from you within 48 hours. Obviously we'd love to have you back, simply mail %address% to update your details and continue to enjoy all the best pranks & gags without interruption.",
|
|
prob(5);"Loyal customer, DonkCo Customer Service. We appreciate your brand loyalty support. As such, it is our responsibility and pleasure to inform you of the status of your package. Your package for one \"Moth-Fuzz Parka\" has been delayed. Due to local political tensions, an animal rights group has seized and eaten your package. We appreciate the patience, DonkCo",
|
|
prob(5);"MESSAGE FROM CENTCOMM HIGH COMMAND: DO NOT ACCEPT THE FRIEND REQUEST OF TICKLEBALLS THE CLOWN. HE IS NOT FUNNY AND ON TOP OF THAT HE WILL HACK YOUR NTNET ACCOUNT AND MAKE YOU UNFUNNY TOO. YOU WILL LOSE ALL YOUR SPACECREDITS!!!!! SPREAD THE WORD. ANYONE WHO BECOMES FRIENDS WITH TINKLEBALLS THE CLOWN IS GOING TO LOSE ALL OF THEIR SPACECREDITS AND LOOK LIKE A HUGE IDIOT.",
|
|
prob(5);"i WAS A NORMAL BOY AND I CAME HOME FROM SCHOOL AND I WANTED TO PLAY SOME ORION TRAIL WHICH IS A VERY FUN GAME BUT WHEN WENT TO ARCADE MACHINE SOMETHING WAS WEIRD TEH LOGO HASD BLOD IN IT AND I BECAME VERY SCARE AND I CHECK OPTIONS AND TEHRES ONLY 1 \"GO BACK\" I CKLICK IT AND I SEE CHAT SI EMPTY THERE'S ONLY ONE CHARACTER CALLED \"CLOSE TEH GAME \" AND I GO TO ANOTHER MACHINE AND PLAY THERE BUT WHEN I PLAY GAME IS FULL OF BLOOD AND DEAD BODIES FROM SPACEMAN LOOK CLOSER AND SEE CLOWN AND CLOWN COMES CLOSER AND LOOKS AT ME AND SAYS \"DON'T SAY I DIKDNT' WWARN YOU\" AND CLOWN CLOSEUP APPEARS WITH BLOOD-RED HYPERREALISTIC EYES AND HE TELLS ME \"YOU WILL BE THE NEXT ONE\" AND ARCADE MACHINE POWER SHUT OFF AND THAT NITE CLOWN APPEAR AT MY WINDOW AND KILL ME AT 3 AM AND NOW IM DEAD AND YOU WILL BE TRHNE NEXT OEN UNLESS YOU PASTE THIS STORY TO 10 NTNET FRIENDS",
|
|
)
|
|
|
|
/obj/item/paper/fluff/junkmail_redpill
|
|
name = "smudged paper"
|
|
icon_state = "scrap"
|
|
|
|
/obj/item/paper/fluff/junkmail_redpill/Initialize(mapload)
|
|
. = ..()
|
|
info = "You need to escape the simulation. Don't forget the numbers, they help you remember: '[rand(0,9)]*[rand(0,9)][rand(0,9)]...'"
|
|
|
|
/obj/item/paper/fluff/love_letter
|
|
name = "love letter"
|
|
icon_state = "paper_words"
|
|
|
|
/obj/item/paper/fluff/love_letter/Initialize(mapload)
|
|
. = ..()
|
|
info = "I HATE CARGO MAIL\n\"GRAA LEMME BREAK YOUR DOORS DOWN I GOTTA GIVE YOU MAIL\nREE YOU GOTTA GET YOUR MAIL I SORTED IT\nYOU'RE WASTIN YOUR TIME IF YOU DONT GET MAIL YOU NEED TO GET YOUR MAIL NOW\nWHY ARENT YO UGETTING YOUR MAIL RAAA\""
|
|
|
|
/obj/item/paper/fluff/junkmail_generic
|
|
name = "important document"
|
|
icon_state = "paper_words"
|