[WIP] Trait Tweaks - Heavyweight + Combat Heavyweight, etc

Heavyweight's effect has been moved to a neutral trait of the same name.
Combat Heavyweight replaces Heavyweight, offers reduction on all incoming stuns + resistance to knockdown effects.

Trait Changes requested by Cyrus:
Pain Intolerance + Intolerance High changed to cost 2 + 3 respectively.
Big + Giant Mouth are now neutral. They're literally just "I can eat food faster haha."

Other Changes:
Feedback on AI/Mob mech punch if the player or mob is resistant to the effect of the punch.

More TBD.
This commit is contained in:
Rykka
2022-02-07 07:15:04 -08:00
parent bc382a60c4
commit 7286bcfb31
6 changed files with 65 additions and 21 deletions
@@ -302,6 +302,32 @@
halloss = 0
else
..()
/mob/living/carbon/human/Stun(var/amount)
if(amount > 0) //only multiply it by the mod if it's positive, or else it takes longer to fade too!
amount = amount*species.stun_mod
..(amount)
/mob/living/carbon/human/SetStunned(var/amount)
..()
/mob/living/carbon/human/AdjustStunned(var/amount)
if(amount > 0) // Only multiply it if positive.
amount = amount*species.stun_mod
..(amount)
/mob/living/carbon/human/Weaken(var/amount)
if(amount > 0) //only multiply it by the mod if it's positive, or else it takes longer to fade too!
amount = amount*species.weaken_mod
..(amount)
/mob/living/carbon/human/SetWeakened(var/amount)
..()
/mob/living/carbon/human/AdjustWeakened(var/amount)
if(amount > 0) // Only multiply it if positive.
amount = amount*species.weaken_mod
..(amount)
/mob/living/carbon/human/getToxLoss()
if(species.flags & NO_POISON)
@@ -109,6 +109,9 @@
var/chemOD_mod = 1 // Damage modifier for overdose; higher = more damage from ODs
var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc.
var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc.
var/stun_mod = 1 // Multiplier to stun effects; 0.5 = half, - = no effect (immune), 2 = double, etc.
var/weaken_mod = 1 // Multiplier to weakness effects; 0.5 = half, - = no effect (immune), 2 = double, etc.
// Stuns + Weakens will be rounded to the nearest whole #. If you set 0.5 mod, on a base stun of 3, the return will be 1.5, which rounds to 1. Be careful.
var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc.
var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var
// set below is EMP interactivity for nonsynth carbons
@@ -103,14 +103,14 @@
/datum/trait/negative/pain_intolerance_basic
name = "Pain Intolerant"
desc = "You are frail and sensitive to pain. You experience 25% more pain from all sources."
cost = -1
var_changes = list("pain_mod" = 1.25)
cost = -2
var_changes = list("pain_mod" = 1.2) // CHOMPEdit: Makes this exact opposite of Pain Tolerance Basic.
/datum/trait/negative/pain_intolerance_advanced
name = "High Pain Intolerance"
desc = "You are highly sensitive to all sources of pain, and experience 50% more pain."
cost = -2
var_changes = list("pain_mod" = 1.5) //this makes you extremely vulnerable to most sources of pain, a stunbaton bop or shotgun beanbag will do around 90 agony, almost enough to drop you in one hit
cost = -3
var_changes = list("pain_mod" = 1.5) //this makes you extremely vulnerable to most sources of pain, a stunbaton bop or shotgun beanbag will do around 90 agony, almost enough to drop you in one hit. CHOMPEdit: This really should cost more if it's this bad.
//YW ADDITIONS END
/datum/trait/negative/conductive
@@ -40,3 +40,27 @@
cost = 0
var_changes = list("metabolic_rate" = 2, "hunger_factor" = 1.6, "metabolism" = 0.012) //2x metabolism speed, 32x hunger speed
custom_only = FALSE
/datum/trait/neutral/big_mouth
name = "Big mouth"
desc = "It takes half as many bites to finish food as it does for most people."
cost = 0
var_changes = list("bite_mod" = 2)
custom_only = FALSE
/datum/trait/neutral/big_mouth_extreme
name = "Giant mouth"
desc = "It takes a quarter as many bites to finish food as it does for most people."
cost = 0
var_changes = list("bite_mod" = 4)
custom_only = FALSE
/datum/trait/neutral/heavyweight
name = "Heavyweight"
desc = "You are harder to move out of the way due to your sturdiness or frame, and neither players nor mobs can trade places with you."
cost = 0
custom_only = FALSE
/datum/trait/neutral/heavyweight/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.mob_bump_flag = HEAVY
@@ -76,14 +76,16 @@
excludes = list(/datum/trait/positive/more_blood,/datum/trait/negative/less_blood,/datum/trait/negative/less_blood_extreme)
can_take = ORGANICS
/datum/trait/positive/heavyweight
name = "Heavyweight"
desc = "You are more heavyweight or otherwise more sturdy than most species, and as such, it's much more difficult to move you."
/datum/trait/positive/heavyweight_combat
name = "Combat Heavyweight"
desc = "You are more heavyweight or otherwise more sturdy than most species, and as such, more resistant to knockdown effects and stuns. Stuns are only half as effective on you."
cost = 2
/datum/trait/positive/heavyweight/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.mob_bump_flag = HEAVY
H.mob_size = MOB_LARGE
H.stun_mod = 0.5 // Stuns are 1/3 as effective - a stun of 3 seconds will be 1 second after rounding. Set to 0.75 to make a 3 second stun 2 seconds.
H.weaken_mod = 0.5 // Stuns are 1/3 as effective - a stun of 3 seconds will be 1 second after rounding. (Weaken is used alongside stun to prevent aiming.)
/datum/trait/positive/table_passer
name = "Table passer"
@@ -94,25 +96,12 @@
..()
H.pass_flags = PASSTABLE
/datum/trait/positive/big_mouth
name = "Big mouth"
desc = "It takes half as many bites to finish food as it does for most people."
cost = 0 //This doesn't deserve a cost.
var_changes = list("bite_mod" = 2)
/datum/trait/positive/grappling_expert
name = "Grappling expert"
desc = "Your grabs are much harder to escape from, and you are better at escaping from other's grabs!"
cost = 3
var_changes = list("grab_resist_divisor_victims" = 1.5, "grab_resist_divisor_self" = 0.5, "grab_power_victims" = -1, "grab_power_self" = 1)
/datum/trait/positive/big_mouth_extreme
name = "Giant mouth"
desc = "It takes a quarter as many bites to finish food as it does for most people."
cost = 0 //This also doesn't deserve a cost.
var_changes = list("bite_mod" = 4)
/datum/trait/positive/absorbent
name = "Absorbent"
desc = "You are able to clean messes just by walking over them, and gain nutrition from doing so!"
@@ -36,3 +36,5 @@
L.throw_at(get_edge_target_turf(L, throw_dir), throw_dist, 1, src)
else
to_chat(L, span("warning", "\The [src] punches you with incredible force, but you remain in place."))
visible_message(span("danger", "\The [src] slams it's mechanized fist into \the [L] with incredible force, to no visible effect!")) // CHOMPEdit: Mechpunch visible/audible feedback for *resisting* the punch.
playsound(src, "punch", 50, 1) // CHOMPEdit: Mechpunch visible/audible feedback for *resisting* the punch.