mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-16 02:17:06 +01:00
48d8a06d1c
This PR does a few new things: 1. Adds a Mass var for Movables (/Mob, /Obj) which is literally required for me to do anything at all with Kinematics (Very routine basic physics) 2. Adds a derived "effective mass" statistic which is generated via signal hook, allowing sources like Skills, Drugs, Cybernetics etc to pitch in and contribute to a user's "Strength" in certain situations without directly modifying mass. 3. Adds a mass modifier var for species datums, while painstakingly calibrating each and every single species with consultation from every lore team. A baseline human gets 72.0kg of Human Reference Mass. Any species applied to it will multiply this by a constant that algebraically cancels out the Human Reference Mass and replaces it with a Species Reference Mass. Changing a species via the usual procs will reset and then re-apply the correct values. 4. Refactored Lift/Drag/Fireman to have limits and penalties based on relative effective mass 5. Finally, to make use of all this, I've added a new Conditioning Skill, which modifies effective mass. The standard assumption made for Lift/Carry is based in an assumption that a typical character should realistically be able to lift/carry/fireman a person 1.25x their mass. Previously the fireman carry mechanic was heavily hardcoded, and didn't have much in the way of granularity. If I wanted to RP a character that was a bodybuilder, there wasn't really a way to do this. With this PR, there's now a fairly large variety of interesting breakpoints. This also allows there to be more granularity between different species as desired by our lore teams. For example, a Zhan is in general stronger than a M'sai. To give an example in the breakpoints for two different species: Human Lift Breakpoints: Rank 1: 90kg (lift a Skrell, Human, Offworlder, M'sai, KA, or ZA) Rank 2: 112.5kg (Lift a Zhan, Shell, or Diona Coeus) Rank 3: 135kg (Lift a (Non-Industrial) IPC, Unathi) Rank 4: 157.5kg (No new breakpoints, though you get less a movespeed penalty from lugging around any of the above) Can Never Lift: Industrial, Bullwark, Diona, Vaurca Ta' Zhan Tajara Lift Breakpoints: Rank 1: 116kg (Skrell, Human, Offworlder, M'sai, Ka, Za, Zhan, Shell, or Diona Coeus) Rank 2: 145kg (Non-Industrial IPC, Unathi) Rank 3: 174kg (No new breakpoints, though you get less penalties from the above) Rank 4: 203kg (Juuuust barely lift an Industrial or Diona with heavy slowdown) <img width="1078" height="436" alt="image" src="https://github.com/user-attachments/assets/a6802515-a827-4dc1-8734-55b604c589ab" /> Conditioning as a Skill sits in the Occupational category, which has been carefully chosen and designed around to create a fairly compelling web of opportunity costs. As a skill, it's very desireable for basically any person that wants to play a "Muscular character" and also enjoys fireman carrying people around, which makes it particularly useful for hangar techs. By contrast a Paramedic might not actually need this skill, since they can bypass the usual limits by just using rollerbeds. --------- Signed-off-by: VMSolidus <evilexecutive@gmail.com>
98 lines
3.4 KiB
Plaintext
98 lines
3.4 KiB
Plaintext
/mob/living/carbon/update_emotes()
|
|
. = ..(skip_sort=1)
|
|
if(species)
|
|
for(var/emote in species.default_emotes)
|
|
var/singleton/emote/emote_datum = GET_SINGLETON(emote)
|
|
if(emote_datum.check_user(src))
|
|
usable_emotes[emote_datum.key] = emote_datum
|
|
usable_emotes = sortAssoc(usable_emotes)
|
|
|
|
// Specific defines follow.
|
|
/datum/species/slime
|
|
default_emotes = list(
|
|
/singleton/emote/visible/bounce,
|
|
/singleton/emote/visible/jiggle,
|
|
/singleton/emote/visible/lightup,
|
|
/singleton/emote/visible/vibrate
|
|
)
|
|
|
|
/datum/species/unathi
|
|
default_emotes = list(
|
|
/singleton/emote/human/swish,
|
|
/singleton/emote/human/wag,
|
|
/singleton/emote/human/sway,
|
|
/singleton/emote/human/qwag,
|
|
/singleton/emote/human/fastsway,
|
|
/singleton/emote/human/swag,
|
|
/singleton/emote/human/stopsway,
|
|
/singleton/emote/visible/tflick,
|
|
/singleton/emote/audible/lizard_bellow,
|
|
/singleton/emote/audible/hiss,
|
|
/singleton/emote/audible/hiss/long,
|
|
/singleton/emote/audible/growl
|
|
)
|
|
pain_emotes_with_pain_level = list(
|
|
list(/singleton/emote/audible/roar, /singleton/emote/audible/whimper, /singleton/emote/audible/moan) = 70,
|
|
list(/singleton/emote/audible/grunt, /singleton/emote/audible/groan, /singleton/emote/audible/moan) = 40,
|
|
list(/singleton/emote/audible/grunt, /singleton/emote/audible/groan) = 10,
|
|
)
|
|
|
|
/datum/species/diona
|
|
default_emotes = list(
|
|
/singleton/emote/audible/chirp,
|
|
/singleton/emote/audible/multichirp,
|
|
/singleton/emote/audible/nymphsqueal,
|
|
/singleton/emote/audible/painrustle,
|
|
/singleton/emote/audible/paincreak
|
|
)
|
|
pain_emotes_with_pain_level = list(
|
|
list(/singleton/emote/audible/painrustle, /singleton/emote/audible/paincreak, /singleton/emote/audible/nymphsqueal) = 70,
|
|
list(/singleton/emote/audible/painrustle, /singleton/emote/audible/nymphsqueal) = 40,
|
|
list(/singleton/emote/audible/paincreak) = 10,
|
|
)
|
|
|
|
/datum/species/bug
|
|
default_emotes = list(
|
|
/singleton/emote/audible/hiss,
|
|
/singleton/emote/audible/chitter,
|
|
/singleton/emote/audible/shriek,
|
|
/singleton/emote/audible/screech,
|
|
/singleton/emote/audible/click,
|
|
/singleton/emote/audible/clack
|
|
)
|
|
pain_emotes_with_pain_level = list(
|
|
list(/singleton/emote/audible/screech, /singleton/emote/audible/shriek) = 70,
|
|
list(/singleton/emote/audible/shriek, /singleton/emote/audible/hiss) = 40,
|
|
list(/singleton/emote/audible/hiss) = 10,
|
|
)
|
|
|
|
/datum/species/tajaran
|
|
default_emotes = list(
|
|
/singleton/emote/audible/howl,
|
|
/singleton/emote/audible/hiss,
|
|
/singleton/emote/visible/flick,
|
|
/singleton/emote/visible/tflick,
|
|
/singleton/emote/human/swish,
|
|
/singleton/emote/human/wag,
|
|
/singleton/emote/human/sway,
|
|
/singleton/emote/human/qwag,
|
|
/singleton/emote/human/fastsway,
|
|
/singleton/emote/human/swag,
|
|
/singleton/emote/human/stopsway
|
|
)
|
|
pain_emotes_with_pain_level = list(
|
|
list(/singleton/emote/audible/scream, /singleton/emote/audible/whimper, /singleton/emote/audible/moan, /singleton/emote/audible/cry, /singleton/emote/audible/howl) = 70,
|
|
list(/singleton/emote/audible/grunt, /singleton/emote/audible/groan, /singleton/emote/audible/moan, /singleton/emote/audible/hiss) = 40,
|
|
list(/singleton/emote/audible/grunt, /singleton/emote/audible/groan, /singleton/emote/audible/hiss) = 10,
|
|
)
|
|
|
|
/datum/species/skrell
|
|
default_emotes = list(
|
|
/singleton/emote/audible/warble,
|
|
/singleton/emote/audible/croon,
|
|
/singleton/emote/audible/lowarble,
|
|
/singleton/emote/audible/croak,
|
|
/singleton/emote/audible/peep,
|
|
/singleton/emote/audible/puff
|
|
)
|