diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm index 3f56ebda7f..9a1b3871df 100644 --- a/code/__defines/is_helpers.dm +++ b/code/__defines/is_helpers.dm @@ -60,3 +60,4 @@ #define ismineralturf(A) istype(A, /turf/simulated/mineral) #define istaurtail(A) istype(A, /datum/sprite_accessory/tail/taur) +#define islongtail(A) istype(A, /datum/sprite_accessory/tail/longtail) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index fe034f0095..35e55428a9 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -141,6 +141,7 @@ var/last_chew = 0 /obj/item/weapon/handcuffs/fuzzy name = "fuzzy cuffs" icon_state = "fuzzycuff" + breakouttime = 100 //VOREstation edit desc = "Use this to keep... 'prisoners' in line." /obj/item/weapon/handcuffs/cable diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 1d37f4b47a..a0caed0b98 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -175,3 +175,10 @@ to_chat(user, span("notice", "You deconstruct \the [src].")) ChangeTurf(get_base_turf_by_area(src), preserve_outdoors = TRUE) return TRUE + +/turf/simulated/floor/AltClick(mob/user) + if(isliving(user)) + var/mob/living/livingUser = user + if(try_graffiti(livingUser, livingUser.get_active_hand())) + return + . = ..() \ No newline at end of file diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index 1168f7a081..01ba755478 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -9,7 +9,11 @@ attack_tile(C, L) // Be on help intent if you want to decon something. return - if(!(C.is_screwdriver() && flooring && (flooring.flags & TURF_REMOVE_SCREWDRIVER)) && try_graffiti(user, C)) + if(!(C.has_tool_quality(TOOL_SCREWDRIVER) && flooring && (flooring.flags & TURF_REMOVE_SCREWDRIVER))) + if(isliving(user)) + var/mob/living/L = user + if(L.a_intent == I_HELP) + try_graffiti(L, C) // back by unpopular demand return // Multi-z roof building diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 036cfd5728..a03effa2e2 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -130,9 +130,10 @@ /turf/simulated/wall/attackby(var/obj/item/weapon/W, var/mob/user) user.setClickCooldown(user.get_attack_speed(W)) - - if(!construction_stage && try_graffiti(user, W)) - return + + if(!construction_stage && user.a_intent == I_HELP) + if(try_graffiti(user,W)) + return if (!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index d0bb6d5640..f664e73b40 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -333,3 +333,10 @@ ChangeTurf(/turf/simulated/floor/airless, preserve_outdoors = TRUE) return TRUE return FALSE + +/turf/simulated/wall/AltClick(mob/user) + if(isliving(user)) + var/mob/living/livingUser = user + if(try_graffiti(livingUser, livingUser.get_active_hand())) + return + . = ..() \ No newline at end of file diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm index 4bedd91eb0..daff23f85d 100644 --- a/code/modules/emotes/emote_define.dm +++ b/code/modules/emotes/emote_define.dm @@ -89,15 +89,23 @@ var/global/list/emotes_by_key var/atom/target if(can_target() && extra_params) - extra_params = lowertext(extra_params) - for(var/atom/thing in view(user)) - if(extra_params == lowertext(thing.name)) - target = thing - break + var/target_dist + extra_params = trim(lowertext(extra_params)) + for(var/atom/thing in view((isnull(check_range) ? world.view : check_range), user)) - if(target && target != user && check_range) - if (get_dist(user, target) > check_range) - to_chat(user, SPAN_WARNING("\The [target] is too far away.")) + if(!isturf(thing.loc)) + continue + + var/new_target_dist = get_dist(thing, user) + if(!isnull(target_dist) && target_dist > new_target_dist) + continue + + if(findtext(lowertext(thing.name), extra_params)) + target_dist = new_target_dist + target = thing + + if(!target) + to_chat(user, SPAN_WARNING("You cannot see a '[extra_params]' within range.")) return var/use_1p = get_emote_message_1p(user, target, extra_params) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index f5186fa56b..889ed2fdfa 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1243,9 +1243,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() riding_datum = new /datum/riding/taur(src) verbs |= /mob/living/carbon/human/proc/taur_mount verbs |= /mob/living/proc/toggle_rider_reins - return working - else - return working + else if(islongtail(tail_style)) + working.pixel_x = -16 + return working return null // TODO - Move this to where it should go ~Leshana diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index ee11fd7eae..1fd347ec47 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -1147,3 +1147,22 @@ ani_state = "tentacle_w" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + +//LONG TAILS ARE NOT TAUR BUTTS >:O +/datum/sprite_accessory/tail/longtail + name = "You should not see this..." + icon = 'icons/mob/vore/taurs_vr.dmi' + do_colouration = 1 // Yes color, using tail color + color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY + +/datum/sprite_accessory/tail/longtail/shadekin_tail + name = "Shadekin Tail" + icon_state = "shadekin_s" + +/datum/sprite_accessory/tail/longtail/shadekin_tail/shadekin_tail_2c + name = "Shadekin Tail (dual color)" + extra_overlay = "shadekin_markings" + +/datum/sprite_accessory/tail/longtail/shadekin_tail/shadekin_tail_long + name = "Shadekin Long Tail" + icon_state = "shadekin_long_s" diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm index 66233db64c..cc0d2472c2 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -326,20 +326,3 @@ icon_state = "mermaid_s" can_ride = 0 icon_sprite_tag = "mermaid" - -/datum/sprite_accessory/tail/taur/shadekin_tail - name = "Shadekin Tail" - icon_state = "shadekin_s" - can_ride = 0 - hide_body_parts = null - clip_mask_icon = null - clip_mask_state = null - //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) - -/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c - name = "Shadekin Tail (dual color)" - extra_overlay = "shadekin_markings" - -/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_long - name = "Shadekin Long Tail" - icon_state = "shadekin_long_s" diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index 1652fbfca9..60228a3532 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -478,24 +478,6 @@ msg_prey_stepunder = "You jump over %prey's thick tail." msg_owner_stepunder = "%owner bounds over your tail." -/datum/sprite_accessory/tail/taur/shadekin_tail - name = "Shadekin Tail" - icon_state = "shadekin_s" - can_ride = 0 - hide_body_parts = null - clip_mask_icon = null - clip_mask_state = null - //apply_restrictions = TRUE - //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) - -/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c - name = "Shadekin Tail (dual color)" - extra_overlay = "shadekin_markings" - -/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_long - name = "Shadekin Long Tail" - icon_state = "shadekin_long_s" - /datum/sprite_accessory/tail/taur/pawcow // this grabs suit sprites from the normal cow, the outline is the same name = "Cow w/ paws (Taur)" icon_state = "pawcow_s" diff --git a/code/modules/persistence/graffiti.dm b/code/modules/persistence/graffiti.dm index fefc73c199..c1717d1c20 100644 --- a/code/modules/persistence/graffiti.dm +++ b/code/modules/persistence/graffiti.dm @@ -39,8 +39,8 @@ . = ..() /obj/effect/decal/writing/examine(mob/user) - . = ..() - to_chat(user, "It reads \"[message]\".") + ..() + . += "\n It reads \"[message]\"." /obj/effect/decal/writing/attackby(var/obj/item/thing, var/mob/user) if(istype(thing, /obj/item/weapon/weldingtool)) diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index f67b29720d..7d433c9f41 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index 922b153daf..9d1c37b8da 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ