|
87 | 87 |
|
88 | 88 | minimum_break_damage = 30
|
89 | 89 |
|
| 90 | + /// Used for inventory procs |
| 91 | + var/hand_side |
90 | 92 | var/fingerprints = ""
|
91 | 93 |
|
92 | 94 | /obj/item/bodypart/arm/update_limb(dropping_limb, is_creating)
|
93 | 95 | . = ..()
|
94 | 96 | if(is_creating && owner?.has_dna())
|
95 | 97 | fingerprints = md5(owner.dna.unique_identity)
|
96 | 98 |
|
| 99 | +/obj/item/bodypart/arm/on_life(delta_time, times_fired, stam_heal) |
| 100 | + . = ..() |
| 101 | + // Splinted, exit |
| 102 | + if(splint) |
| 103 | + return |
| 104 | + |
| 105 | + // Not broken or dislocated, exit |
| 106 | + if(!(bodypart_flags & (BP_BROKEN_BONES|BP_DISLOCATED))) |
| 107 | + return |
| 108 | + |
| 109 | + var/obj/target_item |
| 110 | + if(hand_side == LEFT_HANDS) |
| 111 | + target_item = owner.get_item_for_held_index(1) |
| 112 | + else |
| 113 | + target_item = owner.get_item_for_held_index(2) |
| 114 | + |
| 115 | + if(isnull(target_item) || !owner.canUnequipItem(target_item)) |
| 116 | + return |
| 117 | + |
| 118 | + var/zone_name = parse_zone(aux_zone) |
| 119 | + |
| 120 | + if(IS_ORGANIC_LIMB(src)) |
| 121 | + if(bodypart_flags & BP_NO_PAIN) |
| 122 | + owner.visible_message(span_alert("<b>[owner]</b> drops what [owner.p_they()] [p_are()] holding in [owner.p_their()] [zone_name].")) |
| 123 | + owner.dropItemToGround(target_item) |
| 124 | + return |
| 125 | + |
| 126 | + owner.apply_pain(30, src, "A sharp pain in your [plaintext_zone] forces you to drop your [target_item]!", TRUE, FALSE) |
| 127 | + owner.dropItemToGround(target_item) |
| 128 | + return . | BODYPART_LIFE_UPDATE_HEALTH_HUD |
| 129 | + |
| 130 | + else |
| 131 | + owner.visible_message(span_alert("<b>[owner]</b>'s [zone_name] malfunctions, dropping what [owner.p_they()] [p_are()] holding..")) |
| 132 | + owner.dropItemToGround(target_item) |
| 133 | + return |
| 134 | + |
97 | 135 | /obj/item/bodypart/arm/left
|
98 | 136 | name = "left arm"
|
99 | 137 | desc = "Did you know that the word 'sinister' stems originally from the \
|
|
115 | 153 | amputation_point = "left shoulder"
|
116 | 154 | joint_name = "left elbow"
|
117 | 155 |
|
| 156 | + hand_side = LEFT_HANDS |
| 157 | + |
118 | 158 |
|
119 | 159 | /obj/item/bodypart/arm/left/set_owner(new_owner)
|
120 | 160 | . = ..()
|
|
199 | 239 | amputation_point = "right shoulder"
|
200 | 240 | joint_name = "right elbow"
|
201 | 241 |
|
| 242 | + hand_side = RIGHT_HANDS |
| 243 | + |
202 | 244 | /obj/item/bodypart/arm/right/set_owner(new_owner)
|
203 | 245 | . = ..()
|
204 | 246 | if(. == FALSE)
|
|
0 commit comments