Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ports a character customization option: Quirks #28388

Open
wants to merge 71 commits into
base: master
Choose a base branch
from

Conversation

BiancaWilkson
Copy link
Contributor

What Does This PR Do

This PR adds a new section to the character creator, quirks. Quirks are additional traits you can apply to your character that can have more significant changes than something like the loadout. Everyone would have a quirk balance that starts at 0, and you can adjust what quirks your character has given that the balance never goes above 0. You'll have points subtracted for negative quirks, and points added for positive quirks.

Here's a full list of the quirks I'm initially adding, with the idea that there are plenty of examples to work off of. If one has a * by its name then you cannot take a security or command position with it. ### Positive
  • Skittish, 4 cost, Lets you hide in crates, and when on run intent you'll automatically run into and close any closet or crate you run into.
  • Freerunner, 4 cost, 20% faster vaulting over tables/fences etc.
  • Crafty, 2 cost, double crafting speed
  • Heavy drinker, 1 cost, 0.7x multiplier to alcohol effectiveness
  • Meal prepper, 1 cost, You start with a lunchbag in your backpack
  • Glutton, 2 cost, You can eat faster, and don't suffer any ill effects from being overweight
  • Upgraded Lungs, 3 cost, You start with a pair of upgraded cybernetic lungs

Negative

  • Lightweight, -1 cost, 1.3x multiplier to alcohol effectiveness
  • Foreigner*, -2 cost, You cannot speak galcomm
  • Deaf*, -4 cost, You are incurably deaf.
  • Blind*, -4 cost, You are incurably blind.
  • Mute*, -3 cost, You are incurably mute.
  • Frail, -3 cost, Major injuries like bone breaks, dismemberment etc happen much earlier, and much easier.
  • Asthma, -3 cost, You regain oxy damage slower, and can trigger coughing attacks when at high oxy/stamina damage
  • High Internal Resistance, -2 cost, IPC only quirk, you don't spawn with a charger and trying to charge at an APC overheats you.

Why It's Good For The Game

I've always thought quirks were something that Para was really missing. They let you add just a little bit of mechanical backing to your characters' unique personality traits. I specifically tried to make it so adding new quirks would be easy, and prospective coders would have plenty of unique examples of what can be done.

Images of changes

Thank you Burza for doing most of the work in making this menu look good.
image

Testing

Whoo boy, a lot.
Saved/Loaded the quirk menu in a bunch of different ways and places until the JSON format was consistently converted correctly.
Tested asthma's thresholds for what might trigger a lethal asthma attack
Made sure items were spawned into the player's backpack correctly.
Made sure skittish worked with crates
Made sure organs were properly added/removed and it didn't deleted someone's lungs or something
Made sure that the list of quirks was being properly passed from character save to character
Made sure admin only commands added/removed quirks properly
A lot more I promise but it's getting late


Declaration

  • I confirm that I either do not require pre-approval for this PR, or I have obtained such approval and have included a screenshot to demonstrate this below.

Changelog

🆑 Burza, Wilkson
add: Quirks, A new (to Paradise) character customization option for giving your spaceman unique traits at roundstart.
/:cl:

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally SQL Change This PR modifies the game database. This PR must go through the host. Configuration Change This PR changes the game configuration files. Please run via the host. TGUI This PR modifies TGUI, will conflict labels Feb 14, 2025
@BiancaWilkson
Copy link
Contributor Author

Reminder for my tomorrow self to add a semicolon to the end of the SQL statement

@Coolrune206
Copy link
Contributor

I'd personally suggest removing or tweaking Foreigner, as NT Hiring an employee that cannot speak the company standard language doesn't make sense.

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting approval This PR is waiting for approval internally and removed -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally labels Feb 14, 2025
@McRamon
Copy link
Contributor

McRamon commented Feb 14, 2025

Wake me up when the most optimized op build is found

@Daylight2
Copy link
Contributor

I like the idea. A bit barebones at the moment, but more stuff can be added later on.

@ParadiseSS13-Bot ParadiseSS13-Bot added the Testmerge Requested This PR has a pending testmerge request label Feb 17, 2025
@Stoniest
Copy link
Contributor

How does Freerunner effect people with CQC or the chef in bar/kitchen vaulting over things?

@BiancaWilkson
Copy link
Contributor Author

How does Freerunner effect people with CQC or the chef in bar/kitchen vaulting over things?

CQC doesn't get table leap, but it decreases bartender/chef vault time from 0.5 seconds to 0.4

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting review This PR is awaiting review from the review team and removed -Status: Awaiting approval This PR is waiting for approval internally labels Feb 22, 2025
@Cress67
Copy link
Contributor

Cress67 commented Feb 23, 2025

Can we let IPCs take Glutton anyway? They rarely become overweight, but when they do it's actually impossible to get rid of without having Robotics make them a new body to sleeve their brain into. All it takes is getting shocked to death, and then getting shocked a couple more times, and suddenly you have an obese IPC for the rest of the round.

@@ -93,7 +94,7 @@ GLOBAL_DATUM_INIT(major_announcement, /datum/announcer, new(config_type = /datum
if(!istype(M) || !M.client || M.stat || !M.can_hear())
receivers -= M
continue
if(!M.say_understands(null, message_language))
if(!force_translation && !M.say_understands(null, message_language))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you might want to modify this check in some way to make sure these force-translated announcements don't get heard by like xenomorphs or something. Maybe add/check a trait on mobs for it?

@@ -172,6 +172,22 @@
return TRUE
return (!density)

/obj/structure/closet/Bumped(atom/movable/AM)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious if this would have any kind of weird interaction with shove_impact

@@ -218,6 +216,9 @@
if(broken)
to_chat(user, "<span class='warning'>The crate appears to be broken.</span>")
return FALSE
if(user.loc == src)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but what if they have tk?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even if they have TK, being able to accidentally lock yourself in a crate is a pretty miserable time. I'd rather force someone to need another player's help in getting completely stuck.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh yeah, I wasn't really thinking about the locking side of things, moreso being able to unlock from inside.

desc = "You can't handle liquor very well, and get drunker quicker."
cost = -1
alcohol_modifier = 1.3

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for consistency```suggestion

Comment on lines +11 to +14
/// If only organic characters can have it
var/organic_only = FALSE
/// If only IPC characters can have it
var/machine_only = FALSE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps a bitflag like
QUIRK_COMPATIBLE_ORGANIC = (1<<1)
QUIRK_COMPATIBLE_MACHINE = (1<<2)
And then just use one field and OR it

/// If this quirk needs to do something every life cycle
var/processes = FALSE
/// If this quirk applies a trait, what trait should be applied.
var/trait_to_apply
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these fields might make sense as lists for the future, in case you need to give them multiple traits, multiple organs, etc.

Comment on lines 72 to 81
/datum/quirk/alcohol_tolerance
var/alcohol_modifier = 1

/datum/quirk/alcohol_tolerance/apply_quirk_effects(mob/living/quirky)
..()
owner.physiology.alcohol_mod *= alcohol_modifier

/datum/quirk/alcohol_tolerance/remove_quirk_effects()
..()
owner.physiology.alcohol_mod /= alcohol_modifier
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be moved out into one of the other quirks files

@TravisAngeI
Copy link

I'd personally suggest removing or tweaking Foreigner, as NT Hiring an employee that cannot speak the company standard language doesn't make sense.

People already have characters that do this, or barely speak it, the only issue I could see with a quirk like this is not being able to understand and hear Galactic Common. Not being able to speak it is probably fine?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-Status: Awaiting review This PR is awaiting review from the review team Configuration Change This PR changes the game configuration files. Please run via the host. SQL Change This PR modifies the game database. This PR must go through the host. Testmerge Requested This PR has a pending testmerge request TGUI This PR modifies TGUI, will conflict
Projects
None yet
Development

Successfully merging this pull request may close these issues.