From 67b32472f8eb17d167069cea009a95f3d73b5c13 Mon Sep 17 00:00:00 2001 From: Syndicat_Meow Date: Fri, 27 Dec 2024 10:32:27 +0100 Subject: [PATCH] DID YOU KNOW YOU CAN TAME CLOWNS?! --- code/__DEFINES/fish.dm | 4 +-- code/__DEFINES/traits/declarations.dm | 8 ++--- code/_globalvars/traits/_traits.dm | 8 ++--- code/datums/components/riding/riding_mob.dm | 29 +++++++++++++++++-- code/datums/elements/climbable.dm | 3 ++ code/datums/quirks/positive_quirks/settler.dm | 22 ++++++++++---- code/modules/fishing/sources/_fish_source.dm | 3 ++ code/modules/mob/living/brain/brain_item.dm | 9 +++++- code/modules/mob/mob.dm | 5 ++++ 9 files changed, 72 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/fish.dm b/code/__DEFINES/fish.dm index 4360c16aacbb..4276fad0f8e1 100644 --- a/code/__DEFINES/fish.dm +++ b/code/__DEFINES/fish.dm @@ -8,8 +8,8 @@ #define FAV_BAIT_DIFFICULTY_MOD -5 /// Difficulty modifier when bait is fish's disliked #define DISLIKED_BAIT_DIFFICULTY_MOD 15 -/// Difficulty modifier when our fisherman has the trait TRAIT_SETTLER -#define SETTLER_DIFFICULTY_MOD -5 +/// Difficulty modifier when our fisherman has the trait TRAIT_EXPERT_FISHER +#define EXPERT_FISHER_DIFFICULTY_MOD -5 #define FISH_TRAIT_MINOR_DIFFICULTY_BOOST 5 diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 21cc362a6b7a..e5823c830c83 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -1258,11 +1258,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Traits given by settler, each with their own specific effects for cases where someone would have that trait, but not the other settler effects -/* #define TRAIT_EXPERT_FISHER "expert_fisher" */ // fishing is easier -/* #define TRAIT_ROUGHRIDER "roughrider" */ // you can improve speed on mounted animals with a good mood -/* #define TRAIT_STUBBY_BODY "stubby_body" */ // you have a stubby body that lessens your agility +#define TRAIT_EXPERT_FISHER "expert_fisher" // fishing is easier +#define TRAIT_ROUGHRIDER "roughrider" // you can improve speed on mounted animals with a good mood +#define TRAIT_STUBBY_BODY "stubby_body" // you have a stubby body that lessens your agility #define TRAIT_BEAST_EMPATHY "beast_empathy" // you're good with animals, such as with taming them -/* #define TRAIT_STURDY_FRAME "sturdy_frame" */ // you suffer much lesser effects from equipment that slows you down +#define TRAIT_STURDY_FRAME "sturdy_frame" // you suffer much lesser effects from equipment that slows you down /// This item cannot be selected for or used by a theft objective (Spies, Traitors, etc.) /* #define TRAIT_ITEM_OBJECTIVE_BLOCKED "item_objective_blocked" */ diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 46f63365f0d6..163586f3ac24 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -544,7 +544,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( /* "TRAIT_EASYBLEED" = TRAIT_EASYBLEED, */ /* "TRAIT_EXAMINE_FISHING_SPOT" = TRAIT_EXAMINE_FISHING_SPOT, */ /* "TRAIT_EXAMINE_FITNESS" = TRAIT_EXAMINE_FITNESS, */ - /* "TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER, */ + "TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER, /* "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, */ /* "TRAIT_FAST_TYING" = TRAIT_FAST_TYING, */ /* "TRAIT_FIST_MINING" = TRAIT_FIST_MINING, */ @@ -589,7 +589,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( /* "TRAIT_ROCK_EATER" = TRAIT_ROCK_EATER, */ /* "TRAIT_ROCK_METAMORPHIC" = TRAIT_ROCK_METAMORPHIC, */ /* "TRAIT_ROCK_STONER" = TRAIT_ROCK_STONER, */ - /* "TRAIT_ROUGHRIDER" = TRAIT_ROUGHRIDER, */ + "TRAIT_ROUGHRIDER" = TRAIT_ROUGHRIDER, /* "TRAIT_SEE_WORN_COLOURS" = TRAIT_SEE_WORN_COLOURS, */ /* "TRAIT_SILICON_EMOTES_ALLOWED" = TRAIT_SILICON_EMOTES_ALLOWED, */ /* "TRAIT_SLOW_FLIP" = TRAIT_SLOW_FLIP, */ @@ -599,9 +599,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( /* "TRAIT_STIMULATED" = TRAIT_STIMULATED, */ /* "TRAIT_STRENGTH" = TRAIT_STRENGTH, */ /* "TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH, */ - /* "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, */ + "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, /* "TRAIT_STUN_ON_NEXT_SHOVE" = TRAIT_STUN_ON_NEXT_SHOVE, */ - /* "TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME, */ + "TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME, /* "TRAIT_SURGEON" = TRAIT_SURGEON, */ /* "TRAIT_SURGICALLY_ANALYZED" = TRAIT_SURGICALLY_ANALYZED, */ /* "TRAIT_SYNDIE_KISS" = TRAIT_SYNDIE_KISS, */ diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 00e7175bbd0d..b744ae5a4a01 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -92,7 +92,7 @@ return ..() /datum/component/riding/creature/driver_move(atom/movable/movable_parent, mob/living/user, direction) - if(!COOLDOWN_FINISHED(src, vehicle_move_cooldown)) + if(!COOLDOWN_FINISHED(src, vehicle_move_cooldown) || !Process_Spacemove()) return COMPONENT_DRIVER_BLOCK_MOVE if(!keycheck(user)) if(ispath(keytype, /obj/item)) @@ -103,7 +103,32 @@ var/turf/next = get_step(living_parent, direction) step(living_parent, direction) last_move_diagonal = ((direction & (direction - 1)) && (living_parent.loc == next)) - COOLDOWN_START(src, vehicle_move_cooldown, (last_move_diagonal ? 2 : 1) * move_delay()) // monkestation edit: use move_delay() proc instead of raw vehicle_move_delay var + var/modified_move_cooldown = vehicle_move_cooldown + var/modified_move_delay = vehicle_move_delay + if(ishuman(user) && HAS_TRAIT(user, TRAIT_ROUGHRIDER)) // YEEHAW! + var/mob/living/carbon/human/rough_rider = user + var/ride_benefit = null + if(HAS_TRAIT(rough_rider, TRAIT_PRIMITIVE)) // closer to a beast than a man; you don't need to think to ride! + ride_benefit = SANITY_LEVEL_GREAT + else + ride_benefit = rough_rider.mob_mood.sanity_level + switch(ride_benefit) + if(SANITY_LEVEL_GREAT) + modified_move_cooldown *= 0.5 + modified_move_delay *= 0.5 + if(SANITY_LEVEL_NEUTRAL) + modified_move_cooldown *= 0.8 + modified_move_delay *= 0.8 + if(SANITY_LEVEL_DISTURBED) + modified_move_cooldown *= 1 + modified_move_delay *= 1 + if(SANITY_LEVEL_CRAZY) + modified_move_cooldown *= 1.2 + modified_move_delay *= 1.2 + if(SANITY_LEVEL_INSANE) + modified_move_cooldown *= 1.5 + modified_move_delay *= 1.5 + COOLDOWN_START(src, vehicle_move_cooldown = modified_move_cooldown, (last_move_diagonal ? 2 : 1) * modified_move_delay) return ..() /datum/component/riding/creature/keycheck(mob/user) diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm index a77375ac2557..ca9dca336ac2 100644 --- a/code/datums/elements/climbable.dm +++ b/code/datums/elements/climbable.dm @@ -74,6 +74,9 @@ if(HAS_TRAIT(user,TRAIT_FAST_CLIMBER)) //How it feels to chew 5 gum adjusted_climb_time *= 0.3 //MONKESTATION EDIT END + if(HAS_TRAIT(user, TRAIT_STUBBY_BODY)) //hold on, gimme a moment, my tiny legs can't get over the goshdamn table + adjusted_climb_time *= 1.5 + adjusted_climb_stun *= 1.5 LAZYADDASSOCLIST(current_climbers, climbed_thing, user) if(do_after(user, adjusted_climb_time, climbed_thing, interaction_key = DOAFTER_SOURCE_CLIMBING)) // monkestation edit: add an interaction key if(QDELETED(climbed_thing)) //Checking if structure has been destroyed diff --git a/code/datums/quirks/positive_quirks/settler.dm b/code/datums/quirks/positive_quirks/settler.dm index c1380c1da696..ab3f6daf0915 100644 --- a/code/datums/quirks/positive_quirks/settler.dm +++ b/code/datums/quirks/positive_quirks/settler.dm @@ -1,4 +1,4 @@ -/* /datum/quirk/item_quirk/settler - monkestation disabled for now +/datum/quirk/item_quirk/settler /// was needed for monke to patch out some stuff from cat reforged. name = "Settler" desc = "You are from a lineage of the earliest space settlers! While your family's generational exposure to varying gravity \ has resulted in a ... smaller height than is typical for your species, you make up for it by being much better at outdoorsmanship and \ @@ -9,20 +9,30 @@ value = 4 mob_trait = TRAIT_SETTLER quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE - medical_record_text = "Patient appears to be abnormally stout." + medical_record_text = "Patient has been exposed to planetary conditions for extended periods, resulting in an excessively stout build." mail_goodies = list( /obj/item/clothing/shoes/workboots/mining, /obj/item/gps, ) + /// Most of the behavior of settler is from these traits, rather than exclusively the quirk + var/list/settler_traits = list( + TRAIT_EXPERT_FISHER, + TRAIT_ROUGHRIDER, + TRAIT_STUBBY_BODY, + TRAIT_BEAST_EMPATHY, + TRAIT_STURDY_FRAME, + ) -/datum/quirk/item_quirk/settler/add_unique(client/client_source) - give_item_to_holder(/obj/item/storage/box/papersack/wheat, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) - give_item_to_holder(/obj/item/storage/toolbox/fishing/small, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) +/datum/quirk/item_quirk/settler/add(client/client_source) var/mob/living/carbon/human/human_quirkholder = quirk_holder human_quirkholder.set_mob_height(HUMAN_HEIGHT_SHORTEST) human_quirkholder.add_movespeed_modifier(/datum/movespeed_modifier/settler) human_quirkholder.physiology.hunger_mod *= 0.5 //good for you, shortass, you don't get hungry nearly as often + human_quirkholder.add_traits(settler_traits, QUIRK_TRAIT) +/datum/quirk/item_quirk/settler/add_unique(client/client_source) + give_item_to_holder(/obj/item/storage/box/papersack/wheat, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) + give_item_to_holder(/obj/item/storage/toolbox/fishing/small, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) /datum/quirk/item_quirk/settler/remove() if(QDELING(quirk_holder)) return @@ -30,4 +40,4 @@ human_quirkholder.set_mob_height(HUMAN_HEIGHT_MEDIUM) human_quirkholder.remove_movespeed_modifier(/datum/movespeed_modifier/settler) human_quirkholder.physiology.hunger_mod *= 2 - */ + human_quirkholder.remove_traits(settler_traits, QUIRK_TRAIT) diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 7a9b5af47e7f..e25ce00d5aa6 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -84,6 +84,9 @@ GLOBAL_LIST_INIT(specific_fish_icons, zebra_typecacheof(list( /datum/fish_source/proc/calculate_difficulty(result, obj/item/fishing_rod/rod, mob/fisherman, datum/fishing_challenge/challenge) . = fishing_difficulty + // Difficulty modifier added by having the Settler quirk + if(HAS_TRAIT(fisherman, TRAIT_EXPERT_FISHER)) + . += EXPERT_FISHER_DIFFICULTY_MOD // Difficulty modifier added by the fisher's skill level if(!challenge || !(challenge.special_effects & FISHING_MINIGAME_RULE_NO_EXP)) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 72e5aa9b8ea5..80bed0a36a4b 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -376,7 +376,14 @@ /obj/item/organ/internal/brain/primitive //No like books and stompy metal men name = "primitive brain" desc = "This juicy piece of meat has a clearly underdeveloped frontal lobe." - organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, TRAIT_PRIMITIVE) // No literacy + organ_traits = list( + TRAIT_ADVANCEDTOOLUSER, + TRAIT_CAN_STRIP, + TRAIT_PRIMITIVE, // No literacy + TRAIT_EXPERT_FISHER, // live off land, fish from river + TRAIT_ROUGHRIDER, // ride beast, chase down prey, flee from danger + TRAIT_BEAST_EMPATHY, // know the way of beast, calm with food + ) /obj/item/organ/internal/brain/lustrous name = "lustrous brain" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 63a775f5902c..5d1eb0511f0b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1413,6 +1413,11 @@ immutable_speedies += thing.slowdown else speedies += thing.slowdown + + //if we have TRAIT_STURDY_FRAME, we reduce our overall speed penalty UNLESS that penalty would be a negative value, and therefore a speed boost. + if(speedies > 0 && HAS_TRAIT(src, TRAIT_STURDY_FRAME)) + speedies *= 0.2 + if(immutable_speedies) add_or_update_variable_movespeed_modifier( /datum/movespeed_modifier/equipment_speedmod/immutable,