mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Memory Expansion! New memories, and prisoners are tattoo'd to the degree of their crime. (#72457)
## About The Pull Request ### New Memories - Added a memory for catching a fish - Added a memory of who turned you into a revolutionary, this might be very cool later on for mindreading purposes - Added a memory for infusing with something ### Prisoner Tats - Prisoner backgrounds now come with a certain amount of tattoos depending on what you did. Negligence? Zero tats. <details> <summary>Mass Murderer?</summary> BECOME https://youtu.be/7xUtZzLBV5c?t=73 </details> - Because I wanted someone covered head to toe in tats, there is now a "Mass Murderer" background that comes with 6 tattoos, one for each limb. ## Why It's Good For The Game ## Changelog 🆑 add: Some prisoner backgrounds have more or less tattoos. add: More Memories to collect involving fishing and getting converted /🆑
This commit is contained in:
@@ -192,30 +192,6 @@ GLOBAL_LIST_INIT(security_depts_prefs, sort_list(list(
|
||||
SEC_DEPT_SUPPLY,
|
||||
)))
|
||||
|
||||
/// Types of Crimes Prisoners will have on their record roundstart.
|
||||
/// (They also can choose Random, which picks from these options... randomly!)
|
||||
GLOBAL_LIST_INIT(prisoner_crimes, list(
|
||||
"Abhorrent Criminal Negligence" = "Incompetently risked numerous lives.",
|
||||
"Attempted Development of Cloning" = "Attempted illegal research in the cloning sphere. Cloning, cloning construction, and cloning-related R&D was outlawed in 2560.",
|
||||
"Attempted Murder" = "Attempted to maliciously kill someone.",
|
||||
"Biological Terrorism" = "Created and or released a lethal biological agent/lifeform.",
|
||||
"Classified" = "Consult Legal.",
|
||||
"Corporate Espionage" = "Conducted espionage against Nanotrasen for commercial purposes.",
|
||||
"Counterfeiting" = "Engaged in widespread fraud.",
|
||||
"Enemy of the Corporation" = "Acted as, or knowingly aided, an enemy of Nanotrasen.",
|
||||
"Grand Sabotage" = "Engaged in malicious destructive actions, seriously threatening Nanotrasen employees and or infrastructure.",
|
||||
"Grand Theft" = "Stole items of high value or sensitive nature.",
|
||||
"Identity Theft of High-Ranking Figure" = "Impersonated a high-ranking figure.",
|
||||
"Kidnapping" = "Planned and executed a kidnapping.",
|
||||
"Medical Malpractice" = "Engaged in organ harvesting, limb theft, or other malicious medical procedures.",
|
||||
"Murder" = "Maliciously killed someone.",
|
||||
"Mutiny" = "Attempted to overthrow/subvert Chain of Command.",
|
||||
"Other" = "Consult Legal.",
|
||||
"Tampering of Artificial Intelligence" = "Uploaded malicious, negligent, or otherwise blacklisted directives to an Artificial Intelligence.",
|
||||
"Tax Evasion" = "Outstanding amount of tax evasion.",
|
||||
"Worship of Blacklisted Deities" = "Practiced worship of blacklisted deities.",
|
||||
))
|
||||
|
||||
//Backpacks
|
||||
#define DBACKPACK "Department Backpack"
|
||||
#define DDUFFELBAG "Department Duffel Bag"
|
||||
|
||||
@@ -59,4 +59,6 @@
|
||||
|
||||
/datum/component/fishing_spot/proc/fishing_completed(datum/fishing_challenge/source, mob/user, success, perfect)
|
||||
if(success)
|
||||
var/obj/item/fish/caught = source.reward_path
|
||||
user.add_mob_memory(/datum/memory/caught_fish, protagonist = user, deuteragonist = initial(caught.name))
|
||||
fish_source.dispense_reward(source.reward_path, user)
|
||||
|
||||
@@ -818,3 +818,99 @@
|
||||
"[protagonist_name] helping up [deuteragonist_name]",
|
||||
"[deuteragonist_name] taking the hand offered graciously by [protagonist_name] to get up",
|
||||
)
|
||||
|
||||
/// Catching a fish
|
||||
/datum/memory/caught_fish
|
||||
story_value = STORY_VALUE_OKAY
|
||||
|
||||
/datum/memory/caught_fish/get_names()
|
||||
return list(
|
||||
"[protagonist_name] catching an absolute honker.",
|
||||
"[protagonist_name] caught a [deuteragonist_name].",
|
||||
)
|
||||
|
||||
/datum/memory/caught_fish/get_starts()
|
||||
return list(
|
||||
"[protagonist_name] reels in the line",
|
||||
"[protagonist_name]'s eye glints, and they begin reeling",
|
||||
"in a fishing trance, [protagonist_name] catches something",
|
||||
"[protagonist_name] begins battle with a fish",
|
||||
"a whole lot of fishing going on",
|
||||
)
|
||||
|
||||
/datum/memory/caught_fish/get_moods()
|
||||
return list(
|
||||
"[protagonist_name] [mood_verb] as a [deuteragonist_name] flies out of the water!",
|
||||
"[protagonist_name] [mood_verb] as they catch a [deuteragonist_name]!",
|
||||
"[protagonist_name] [mood_verb] as they pose holding a [deuteragonist_name]!",
|
||||
)
|
||||
|
||||
/datum/memory/caught_fish/get_sad_moods()
|
||||
return list("partakes in therapy fishing")
|
||||
|
||||
/// Becoming a mutant via infusion
|
||||
/datum/memory/dna_infusion
|
||||
story_value = STORY_VALUE_MEH
|
||||
///describing what they turn into, "skittish", "nomadic", etc
|
||||
var/mutantlike
|
||||
|
||||
/datum/memory/dna_infusion/New(
|
||||
datum/mind/memorizer_mind,
|
||||
atom/protagonist,
|
||||
atom/deuteragonist,
|
||||
atom/antagonist,
|
||||
mutantlike,
|
||||
)
|
||||
src.mutantlike = mutantlike
|
||||
return ..()
|
||||
|
||||
/datum/memory/dna_infusion/get_names()
|
||||
return list(
|
||||
"[protagonist_name] infusing with a [deuteragonist_name].",
|
||||
"[protagonist_name] infusing a [deuteragonist_name] into themselves.",
|
||||
)
|
||||
|
||||
/datum/memory/dna_infusion/get_starts()
|
||||
return list(
|
||||
"[protagonist_name] enters a creepy DNA machine",
|
||||
"[protagonist_name]'s partakes in some mad science",
|
||||
"the DNA infuser closes with [protagonist_name] inside",
|
||||
"a [deuteragonist_name] is in the infusion slot"
|
||||
)
|
||||
|
||||
/datum/memory/dna_infusion/get_moods()
|
||||
return list(
|
||||
"[protagonist_name] [mood_verb] as they infuse with a [deuteragonist_name]!",
|
||||
"[protagonist_name] [mood_verb] as they become one the [deuteragonist_name].",
|
||||
"[protagonist_name] [mood_verb] as their DNA has [deuteragonist_name] folded into it.",
|
||||
"[protagonist_name] becomes more [mutantlike] as they infuse with a [deuteragonist_name]!",
|
||||
"[protagonist_name] becomes more [mutantlike] as they become one the [deuteragonist_name].",
|
||||
"[protagonist_name] becomes more [mutantlike] as their DNA has [deuteragonist_name] folded into it.",
|
||||
)
|
||||
|
||||
/datum/memory/dna_infusion/get_happy_moods()
|
||||
return list(
|
||||
"endures the pain for science",
|
||||
"confidently winces through the pain"
|
||||
)
|
||||
|
||||
/datum/memory/dna_infusion/get_neutral_moods()
|
||||
return list(
|
||||
"screams with pain",
|
||||
"begins to have second thoughts"
|
||||
)
|
||||
|
||||
/datum/memory/dna_infusion/get_sad_moods()
|
||||
return list("bitterly rejects their humanity")
|
||||
|
||||
/// Who rev'd me, so if a mindreader reads a rev, they have a clue on who to hunt down
|
||||
/datum/memory/recruited_by_headrev
|
||||
|
||||
/datum/memory/recruited_by_headrev/get_names()
|
||||
return list("[protagonist_name] is converted into a revolutionary by [antagonist_name]")
|
||||
|
||||
/datum/memory/recruited_by_headrev/get_starts()
|
||||
return list(
|
||||
"[protagonist_name]'s mind sets itself on a singular, violent purpose as they're flashed by [antagonist_name]: Kill the heads.",
|
||||
"[antagonist_name] lifts an odd device to [protagonist_name]'s eyes and flashes him, imprinting murderous instructions.",
|
||||
)
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
playsound(src, 'sound/machines/blender.ogg', 50, TRUE)
|
||||
to_chat(hoccupant, span_danger("Little needles repeatedly prick you! And with each prick, you feel yourself becoming more... [infusing_into.infusion_desc]?"))
|
||||
hoccupant.take_overall_damage(10)
|
||||
hoccupant.add_mob_memory(/datum/memory/dna_infusion, protagonist = hoccupant, deuteragonist = infusing_from, mutantlike = infusing_into.infusion_desc)
|
||||
Shake(15, 15, INFUSING_TIME)
|
||||
addtimer(CALLBACK(occupant, TYPE_PROC_REF(/mob, emote), "scream"), INFUSING_TIME - 1 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(end_infuse)), INFUSING_TIME)
|
||||
|
||||
@@ -233,6 +233,7 @@
|
||||
rev_mind.current.flash_act(1, 1)
|
||||
rev_mind.current.Stun(10 SECONDS)
|
||||
|
||||
rev_mind.add_memory(/datum/memory/recruited_by_headrev, protagonist = rev_mind.current, antagonist = owner.current)
|
||||
rev_mind.add_antag_datum(/datum/antagonist/rev,rev_team)
|
||||
rev_mind.special_role = ROLE_REV
|
||||
return TRUE
|
||||
|
||||
@@ -18,3 +18,128 @@
|
||||
return FALSE
|
||||
|
||||
return istype(preferences.get_highest_priority_job(), /datum/job/prisoner)
|
||||
|
||||
/// Types of Crimes Prisoners will have on their record roundstart.
|
||||
/// (They also can choose Random, which picks from these options... randomly!)
|
||||
GLOBAL_LIST_INIT(prisoner_crimes, init_prisoner_crimes())
|
||||
|
||||
/proc/init_prisoner_crimes()
|
||||
var/list/instances = list()
|
||||
for(var/datum/prisoner_crime/crime as anything in subtypesof(/datum/prisoner_crime))
|
||||
crime = new crime()
|
||||
instances[crime.name] = crime
|
||||
return instances
|
||||
|
||||
/datum/prisoner_crime
|
||||
/// crime name
|
||||
var/name = "Bugged the Game"
|
||||
/// what the record will say about the crime
|
||||
var/desc = "Engaged in widespread gamebreaking, didn't report on Github. By the way, report this on Github!"
|
||||
/// how many tattoos come from the crime. People who committed murder have more than tax evaders!
|
||||
var/tattoos = -1
|
||||
|
||||
/datum/prisoner_crime/New()
|
||||
. = ..()
|
||||
if(tattoos == -1)
|
||||
tattoos = 1
|
||||
stack_trace("\"[src]\" prisoner_crime does not have a set amount of tattoos!")
|
||||
|
||||
/datum/prisoner_crime/negligence
|
||||
name = "Abhorrent Criminal Negligence"
|
||||
desc = "Incompetently risked numerous lives."
|
||||
tattoos = 0
|
||||
|
||||
/datum/prisoner_crime/cloning
|
||||
name = "Attempted Development of Cloning"
|
||||
desc = "Attempted illegal research in the cloning sphere. Cloning, cloning construction, and cloning-related R&D was outlawed in 2560."
|
||||
tattoos = 0
|
||||
|
||||
/datum/prisoner_crime/attempted_murder
|
||||
name = "Attempted Murder"
|
||||
desc = "Attempted to maliciously kill someone."
|
||||
tattoos = 2
|
||||
|
||||
/datum/prisoner_crime/bio_terrorism
|
||||
name = "Biological Terrorism"
|
||||
desc = "Created and or released a lethal biological agent/lifeform."
|
||||
tattoos = 3
|
||||
|
||||
/datum/prisoner_crime/classified
|
||||
name = "Classified"
|
||||
desc = "Consult Legal."
|
||||
tattoos = 0
|
||||
|
||||
/datum/prisoner_crime/espionage
|
||||
name = "Corporate Espionage"
|
||||
desc = "Conducted espionage against Nanotrasen for commercial purposes."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/counterfeiting
|
||||
name = "Counterfeiting"
|
||||
desc = "Engaged in widespread fraud."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/enemy_of_the_corp
|
||||
name = "Enemy of the Corporation"
|
||||
desc = "Acted as, or knowingly aided, an enemy of Nanotrasen."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/grand_sabo
|
||||
name = "Grand Sabotage"
|
||||
desc = "Engaged in malicious destructive actions, seriously threatening Nanotrasen employees and or infrastructure."
|
||||
tattoos = 2
|
||||
|
||||
/datum/prisoner_crime/grand_theft
|
||||
name = "Grand Theft"
|
||||
desc = "Stole items of high value or sensitive nature."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/identity_theft
|
||||
name = "Identity Theft of High-Ranking Figure"
|
||||
desc = "Impersonated a high-ranking figure."
|
||||
tattoos = 0 //well, obviously can't impersonate people with tats. if they want to go back to doing that
|
||||
|
||||
/datum/prisoner_crime/kidnapping
|
||||
name = "Kidnapping"
|
||||
desc = "Planned and executed a kidnapping."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/malpractice
|
||||
name = "Medical Malpractice"
|
||||
desc = "Engaged in organ harvesting, limb theft, or other malicious medical procedures."
|
||||
tattoos = 2
|
||||
|
||||
/datum/prisoner_crime/murder
|
||||
name = "Murder"
|
||||
desc = "Maliciously killed someone."
|
||||
tattoos = 3
|
||||
|
||||
/datum/prisoner_crime/mutiny
|
||||
name = "Mutiny"
|
||||
desc = "Attempted to overthrow/subvert Chain of Command."
|
||||
tattoos = 5 //+rep for trying
|
||||
|
||||
/datum/prisoner_crime/other
|
||||
name = "Other"
|
||||
desc = "Consult Legal."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/ai_tampering
|
||||
name = "Tampering of Artificial Intelligence"
|
||||
desc = "Uploaded malicious, negligent, or otherwise blacklisted directives to an Artificial Intelligence."
|
||||
tattoos = 3
|
||||
|
||||
/datum/prisoner_crime/tax_evasion
|
||||
name = "Tax Evasion"
|
||||
desc = "Outstanding amount of tax evasion."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/cultist
|
||||
name = "Worship of Blacklisted Deities"
|
||||
desc = "Practiced worship of blacklisted deities."
|
||||
tattoos = 1
|
||||
|
||||
/datum/prisoner_crime/mass_murder
|
||||
name = "Mass Murder"
|
||||
desc = "Maliciously planned and executed the slaughter of many people."
|
||||
tattoos = 6
|
||||
|
||||
@@ -39,10 +39,10 @@
|
||||
return
|
||||
if(crime_name == "Random")
|
||||
crime_name = pick(assoc_to_keys(GLOB.prisoner_crimes))
|
||||
|
||||
var/datum/prisoner_crime/crime = GLOB.prisoner_crimes[crime_name]
|
||||
var/datum/data/record/target_record = find_record("name", crewmember.real_name, GLOB.data_core.security)
|
||||
var/crime_desc = GLOB.prisoner_crimes[crime_name]
|
||||
target_record.fields["criminal"] = "Incarcerated"
|
||||
var/datum/data/crime/past_crime = GLOB.data_core.createCrimeEntry(crime_name, crime_desc, "Central Command", "Indefinite.")
|
||||
var/datum/data/crime/past_crime = GLOB.data_core.createCrimeEntry(crime.name, crime.desc, "Central Command", "Indefinite.")
|
||||
GLOB.data_core.addCrime(target_record.fields["id"], past_crime)
|
||||
to_chat(crewmember, span_warning("You are imprisoned for \"[crime_name]\"."))
|
||||
|
||||
@@ -64,9 +64,16 @@
|
||||
|
||||
/datum/outfit/job/prisoner/post_equip(mob/living/carbon/human/new_prisoner, visualsOnly)
|
||||
. = ..()
|
||||
if(!length(SSpersistence.prison_tattoos_to_use) || visualsOnly)
|
||||
|
||||
var/crime_name = new_prisoner.client?.prefs?.read_preference(/datum/preference/choiced/prisoner_crime)
|
||||
if(!crime_name)
|
||||
return
|
||||
var/obj/item/bodypart/tatted_limb = pick(new_prisoner.bodyparts)
|
||||
var/list/tattoo = pick(SSpersistence.prison_tattoos_to_use)
|
||||
tatted_limb.AddComponent(/datum/component/tattoo, tattoo["story"])
|
||||
SSpersistence.prison_tattoos_to_use -= tattoo
|
||||
var/datum/prisoner_crime/crime = GLOB.prisoner_crimes[crime_name]
|
||||
|
||||
var/list/limbs_to_tat = new_prisoner.bodyparts.Copy()
|
||||
for(var/i in 1 to crime.tattoos)
|
||||
if(!length(SSpersistence.prison_tattoos_to_use) || visualsOnly)
|
||||
return
|
||||
var/obj/item/bodypart/tatted_limb = pick_n_take(limbs_to_tat)
|
||||
var/list/tattoo = pick_n_take(SSpersistence.prison_tattoos_to_use)
|
||||
tatted_limb.AddComponent(/datum/component/tattoo, tattoo["story"])
|
||||
|
||||
Reference in New Issue
Block a user