diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index e3b5b8d0c5..75db08c20b 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -123,14 +123,14 @@ if (ishuman(L)) user.lastattacked = L //are these used at all, if we have logs? L.lastattacker = user - + if (user != L) // Attacking yourself can't miss target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, L) - + if(!target_zone) L.visible_message("\red [user] misses [L] with \the [src]!") return 0 - + var/mob/living/carbon/human/H = L var/datum/organ/external/affecting = H.get_organ(target_zone) if (affecting) @@ -148,12 +148,16 @@ //stun effects L.stun_effect_act(stun, agony, target_zone, src) - + playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src].") - + deductcharge(hitcost) - + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + H.forcesay(hit_appends) + return 1 /obj/item/weapon/melee/baton/emp_act(severity) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index bd6c0f30e6..d8d97dee78 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -229,6 +229,7 @@ emp_act if(armor >= 2) return 0 if(!I.force) return 0 + var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) apply_damage(I.force, I.damtype, affecting, armor, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I) @@ -275,6 +276,9 @@ emp_act if(bloody) bloody_body(src) + if(Iforce > 10 || Iforce >= 5 && prob(33)) + forcesay(hit_appends) //forcesay checks stat already + //Melee weapon embedded object code. if (I.damtype == BRUTE && !I.is_robot_module()) var/damage = I.force diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 3c2ed51c07..8d361c7060 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -131,6 +131,40 @@ ..(message, speaking, verb, alt_name, italics, message_range, used_radios, speech_sound, sound_vol) //ohgod we should really be passing a datum here. +/mob/living/carbon/human/proc/forcesay(list/append) + if(stat == CONSCIOUS) + if(client) + var/virgin = 1 //has the text been modified yet? + var/temp = winget(client, "input", "text") + if(findtextEx(temp, "Say \"", 1, 7) && length(temp) > 5) //case sensitive means + + temp = replacetext(temp, ";", "") //general radio + + if(findtext(trim_left(temp), ":", 6, 7)) //dept radio + temp = copytext(trim_left(temp), 8) + virgin = 0 + + if(virgin) + temp = copytext(trim_left(temp), 6) //normal speech + virgin = 0 + + while(findtext(trim_left(temp), ":", 1, 2)) //dept radio again (necessary) + temp = copytext(trim_left(temp), 3) + + if(findtext(temp, "*", 1, 2)) //emotes + return + world << "Text after stuff is [temp]" + temp = copytext(trim_left(temp), 1, rand(5,8)) + world << "Text after trimming is [temp]" + + var/trimmed = trim_left(temp) + if(length(trimmed)) + if(append) + temp += pick(append) + + say(temp) + winset(client, "input", "text=[null]") + /mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak. diff --git a/code/setup.dm b/code/setup.dm index 361cfaa66c..be96c0ba12 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -849,3 +849,5 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define ATMOS_DEFAULT_VOLUME_FILTER 200 //L #define ATMOS_DEFAULT_VOLUME_MIXER 200 //L #define ATMOS_DEFAULT_VOLUME_PIPE 70 //L + +var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")