diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 04308f2a2f0..f688e10034c 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -59,6 +59,9 @@ #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) +//why arent catpeople a subspecies +#define iscatperson(A) (ishumanbasic(A) && ( A.dna.features["ears"] == "Cat" || A.dna.features["human_tail"] == "Cat") ) + //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index d0b845ffba5..b1b200f4898 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -95,7 +95,7 @@ else if(prob(50)) severity = 0 - //20% chance to actually hit the eyes + //chance to actually hit the eyes depends on internal component if(prob(effectchance * diode.rating) && C.flash_act(severity)) outmsg = "You blind [C] by shining [src] in their eyes." else @@ -104,13 +104,13 @@ //robots else if(iscyborg(target)) var/mob/living/silicon/S = target - //20% chance to actually hit the sensors + add_logs(user, S, "shone in the sensors", src) + //chance to actually hit the eyes depends on internal component if(prob(effectchance * diode.rating)) S.flash_act(affect_silicon = 1) S.Knockdown(rand(100,200)) to_chat(S, "Your sensors were overloaded by a laser!") outmsg = "You overload [S] by shining [src] at their sensors." - add_logs(user, S, "shone in the sensors", src) else outmsg = "You fail to overload [S] by shining [src] at their sensors!" @@ -126,12 +126,28 @@ //catpeople for(var/mob/living/carbon/human/H in view(1,targloc)) - if(ishumanbasic(H) && (H.getorgan(/obj/item/organ/tail/cat) || H.getorgan(/obj/item/organ/ears/cat) || H.dna.features["ears"] == "Cat" || H.dna.features["human_tail"] == "Cat")) - if(!H.incapacitated() && !H.lying) - H.visible_message("[H] pounces on the light!","LIGHT!") - H.Knockdown(10) + if(!iscatperson(H) || H.incapacitated() || H.eye_blind ) + continue + if(!H.lying) + H.setDir(get_dir(H,targloc)) // kitty always looks at the light + if(prob(effectchance)) + H.visible_message("[H] makes a grab for the light!","LIGHT!") H.Move(targloc) - H.setDir(NORTH) //Facedown looks best imo + add_logs(user, H, "moved with a laser pointer",src) + else + H.visible_message("[H] looks briefly distracted by the light."," You're briefly tempted by the shiny light... ") + else + H.visible_message("[H] stares at the light"," You stare at the light... ") + + //cats! + for(var/mob/living/simple_animal/pet/cat/C in view(1,targloc)) + if(prob(50)) + C.visible_message("[C] pounces on the light!","LIGHT!") + C.Move(targloc) + C.resting = TRUE + C.update_canmove() + else + C.visible_message("[C] looks uninterested in your games.","You spot [user] shining [src] at you. How insulting!") //laser pointer image icon_state = "pointer_[pointer_icon_state]" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index accd8f7dcff..bf12b3eb66f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1091,9 +1091,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits log_admin("[key_name(usr)] sent \"[input]\" as the Tip of the Round.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Tip") -#define ON_PURRBATION(H) (\H.getorgan(/obj/item/organ/tail/cat) || H.getorgan(/obj/item/organ/ears/cat) || \ - H.dna.features["ears"] == "Cat" || H.dna.features["human_tail"] == "Cat") - /proc/mass_purrbation() for(var/M in GLOB.mob_list) if(ishumanbasic(M)) @@ -1109,7 +1106,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_toggle(mob/living/carbon/human/H, silent = FALSE) if(!ishumanbasic(H)) return - if(!ON_PURRBATION(H)) + if(!iscatperson(H)) purrbation_apply(H, silent) . = TRUE else @@ -1119,7 +1116,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE) if(!ishuman(H)) return - if(ON_PURRBATION(H)) + if(iscatperson(H)) return var/obj/item/organ/ears/cat/ears = new @@ -1134,7 +1131,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE) if(!ishuman(H)) return - if(!ON_PURRBATION(H)) + if(!iscatperson(H)) return var/obj/item/organ/ears/cat/ears = H.getorgan(/obj/item/organ/ears/cat) @@ -1173,8 +1170,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!silent) to_chat(H, "You are no longer a cat.") -#undef ON_PURRBATION - /client/proc/modify_goals() set category = "Debug" set name = "Modify goals"