From dce4a8754a5844a9852c712dc64fd6eedaf5e574 Mon Sep 17 00:00:00 2001 From: Return Date: Fri, 15 Mar 2024 07:17:31 -0500 Subject: [PATCH] Lift him (PR that makes it so you can be lifted) (#1131) ## About The Pull Request Source inspiration: https://github.com/Bubberstation/Bubberstation/pull/1042 This PR adds an optional 1-point positive quirk that allows you to be picked up. This has no real functional difference from the fireman's carry. Naturally, this trait is mutually exclusive with the oversized quirk. ## Why It's Good For The Game https://github.com/Bubberstation/Bubberstation/assets/110273561/795a66fb-2073-457e-9aab-333fae67117b ## Proof Of Testing ![image](https://github.com/Bubberstation/Bubberstation/assets/110273561/d59cb562-45ed-49ee-9821-a1d7635ea9f1) ## Changelog :cl: ReturnToZender (quirk code), TeshariEnjoer (original PR) add: New positive trait, featherweight. Allows you to be picked up instead of fireman's carried. This dipshit yours? /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- code/__DEFINES/~~bubber_defines/traits.dm | 1 + .../subsystem/processing/quirks.dm | 3 + .../datums/components/datums/riding_mob.dm | 63 +++++++++++++++++++ modular_zubbers/code/game/traits/positive.dm | 11 ++++ tgstation.dme | 2 + 5 files changed, 80 insertions(+) create mode 100644 modular_zubbers/code/datums/components/datums/riding_mob.dm create mode 100644 modular_zubbers/code/game/traits/positive.dm diff --git a/code/__DEFINES/~~bubber_defines/traits.dm b/code/__DEFINES/~~bubber_defines/traits.dm index ec675566419..201be5fd1d0 100644 --- a/code/__DEFINES/~~bubber_defines/traits.dm +++ b/code/__DEFINES/~~bubber_defines/traits.dm @@ -1 +1,2 @@ #define TRAIT_HYDROPHILIC "hydrophilic" +#define TRAIT_CAN_BE_PICKED_UP "can_be_picked_up" diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 3bed8145222..d5c24c7a50c 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -37,6 +37,9 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/oversized, /datum/quirk/freerunning), list(/datum/quirk/oversized, /datum/quirk/item_quirk/settler), //SKYRAT EDIT ADDITION END + //BUBBER EDIT ADDITION BEGIN + list(/datum/quirk/featherweight, /datum/quirk/oversized), + //BUBBER EDIT ADDITION END )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_zubbers/code/datums/components/datums/riding_mob.dm b/modular_zubbers/code/datums/components/datums/riding_mob.dm new file mode 100644 index 00000000000..08f2928c1ae --- /dev/null +++ b/modular_zubbers/code/datums/components/datums/riding_mob.dm @@ -0,0 +1,63 @@ +#define DEFAULT_IN_HAND_OFFSET_X 3 +#define DEFAULT_IN_HAND_OFFSET_Y 0 + +/datum/component/riding/creature/human + var/obj/item/bodypart/used_hand + +/datum/component/riding/creature/human/Initialize(mob/living/riding_mob, force, ride_check_flags, potion_boost) + . = ..() + var/mob/living/carbon/human/human_parent = parent + if(ride_check_flags & CARRIER_NEEDS_ARM && HAS_TRAIT(riding_mob, TRAIT_CAN_BE_PICKED_UP)) + human_parent.buckle_lying = 0 + used_hand = human_parent.get_active_hand() + ADD_TRAIT(riding_mob, TRAIT_UNDENSE, VEHICLE_TRAIT) + + +/datum/component/riding/creature/human/vehicle_mob_unbuckle(datum/source, mob/living/former_rider, force = FALSE) + . = ..() + former_rider.set_density(TRUE) + if((ride_check_flags & CARRIER_NEEDS_ARM) && HAS_TRAIT(former_rider, TRAIT_CAN_BE_PICKED_UP)) + REMOVE_TRAIT(former_rider, TRAIT_UNDENSE, VEHICLE_TRAIT) + +/datum/component/riding/creature/human/handle_vehicle_offsets(dir) + . = ..() + var/mob/living/carbon/human/human_parent = parent + + for(var/mob/living/rider in human_parent.buckled_mobs) + if(!HAS_TRAIT(rider, TRAIT_CAN_BE_PICKED_UP)) + continue + + var/target_pixel_y = DEFAULT_IN_HAND_OFFSET_X + var/target_pixel_x = DEFAULT_IN_HAND_OFFSET_Y + var/offset_hand = used_hand.body_zone + + if(dir == NORTH && offset_hand == BODY_ZONE_L_ARM) + target_pixel_x -= 6 + else if(dir == NORTH && offset_hand == BODY_ZONE_R_ARM) + target_pixel_x += 6 + else if(dir == SOUTH && offset_hand == BODY_ZONE_L_ARM) + target_pixel_x += 6 + else if(dir == SOUTH && offset_hand == BODY_ZONE_R_ARM) + target_pixel_x -= 6 + else if(dir == EAST) + target_pixel_x += 3 + else + target_pixel_x -= 3 + + rider.pixel_y = target_pixel_y + rider.pixel_x = target_pixel_x + +/datum/component/riding/creature/human/handle_vehicle_layer(dir) + . = ..() + var/mob/living/carbon/human/human_parent = parent + + for(var/mob/living/rider in human_parent.buckled_mobs) + if(!HAS_TRAIT(rider, TRAIT_CAN_BE_PICKED_UP)) + continue + var/target_layer = MOB_ABOVE_PIGGYBACK_LAYER + 0.10 + if(dir == NORTH) + target_layer -= 0.30 + rider.layer = target_layer + +#undef DEFAULT_IN_HAND_OFFSET_X +#undef DEFAULT_IN_HAND_OFFSET_Y diff --git a/modular_zubbers/code/game/traits/positive.dm b/modular_zubbers/code/game/traits/positive.dm new file mode 100644 index 00000000000..6c8af13de62 --- /dev/null +++ b/modular_zubbers/code/game/traits/positive.dm @@ -0,0 +1,11 @@ +/datum/quirk/featherweight + name = "Featherweight" + desc = "Your body is lighter than others'. You can be picked up by the scruff or collar with ease." + value = 1 + icon = FA_ICON_FEATHER + medical_record_text = "Subject's body is lighter than usual, they can be carried with relative ease." + gain_text = "Your body feels lighter!" + lose_text = "Your body feels slightly more dense." + quirk_flags = QUIRK_HUMAN_ONLY + mob_trait = TRAIT_CAN_BE_PICKED_UP + mail_goodies = list(/obj/item/food/lollipop) diff --git a/tgstation.dme b/tgstation.dme index 00fb2c7ecd3..ba0f8c33b38 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8210,6 +8210,7 @@ #include "modular_zubbers\code\datums\components\crafting\utility.dm" #include "modular_zubbers\code\datums\components\crafting\crafting\furniture.dm" #include "modular_zubbers\code\datums\components\crafting\crafting\melee_weapon.dm" +#include "modular_zubbers\code\datums\components\datums\riding_mob.dm" #include "modular_zubbers\code\datums\computer_datums\protolathe_modifications.dm" #include "modular_zubbers\code\datums\diseases\advance\presets.dm" #include "modular_zubbers\code\datums\greyscale\config_types\greyscale_configs\greyscale_clothes.dm" @@ -8296,6 +8297,7 @@ #include "modular_zubbers\code\game\objects\structures\plaques\static_plaques.dm" #include "modular_zubbers\code\game\traits\negative.dm" #include "modular_zubbers\code\game\traits\neutral.dm" +#include "modular_zubbers\code\game\traits\positive.dm" #include "modular_zubbers\code\game\turfs\change_turf.dm" #include "modular_zubbers\code\game\turfs\closed\lunar_cave.dm" #include "modular_zubbers\code\game\turfs\closed\lunar_surface.dm"