diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index b34631fe142..06f46ed1927 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -441,7 +441,7 @@ if(H) var/lol = pick(cardinal) step(H,lol) - + destspawn = 1 if(status & ORGAN_ROBOT) owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\ @@ -607,6 +607,25 @@ body_part = HEAD var/disfigured = 0 + take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list()) + ..(brute, burn, sharp, used_weapon, forbidden_limbs) + if (brute_dam > 40) + if (prob(50)) + disfigure("brute") + if (burn_dam > 40) + disfigure("burn") + + proc/disfigure(var/type = "brute") + if(type == "brute") + owner.visible_message("\red You hear a sickening cracking sound coming from \the [owner]'s face.", \ + "\red Your face becomes unrecognizible mangled mess!", \ + "You hear a sickening crack.") + else + owner.visible_message("\red [owner]'s face melts away, turning into mangled mess!", \ + "\red Your face melts off!", \ + "You hear a sickening sizzle.") + disfigured = 1 + /datum/organ/external/l_arm name = "l_arm" display_name = "left arm" diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 447913d225b..818b0a53017 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -3,6 +3,9 @@ desc = "You sit in this. Either by will or force." icon_state = "chair" +/obj/structure/stool/MouseDrop(atom/over_object) + return + /obj/structure/stool/bed/chair/New() if(anchored) src.verbs -= /atom/movable/verb/pull diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 7c40b55bdb4..d2348228bbc 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -32,4 +32,43 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/metal(src.loc) del(src) - return \ No newline at end of file + return + +/obj/structure/stool/MouseDrop(atom/over_object) + if (istype(over_object, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = over_object + var/obj/item/weapon/stool/S = new/obj/item/weapon/stool() + S.origin = src + src.loc = S + H.put_in_hands(S) + H.visible_message("\red [H] grabs [src] from the floor!", "\red You grab [src] from the floor!") + +/obj/item/weapon/stool + name = "stool" + desc = "Uh-hoh, bar is heating up." + icon = 'icons/obj/objects.dmi' + icon_state = "stool" + force = 10 + throwforce = 20 + w_class = 5.0 + var/obj/structure/stool/origin = null + +/obj/item/weapon/stool/attack_self(mob/user as mob) + ..() + origin.loc = get_turf(src) + user.u_equip(src) + user.visible_message("\blue [user] puts [src] down.", "\blue You put [src] down.") + del src + +/obj/item/weapon/stool/attack(mob/M as mob, mob/user as mob) + if (prob(5) && istype(M,/mob/living)) + user.visible_message("\red [user] breaks [src] over [M]'s back!.") + user.u_equip(src) + var/obj/item/stack/sheet/metal/m = new/obj/item/stack/sheet/metal + m.loc = get_turf(src) + del src + var/mob/living/T = M + T.Weaken(10) + T.apply_damage(20) + return + ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index db8bfa183a1..1f0bc8678ad 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -333,14 +333,23 @@ /obj/structure/table/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) var/obj/item/weapon/grab/G = W - if(G.state<2) - user << "\red You need a better grip to do that!" + if (istype(G.affecting, /mob/living)) + var/mob/living/M = G.affecting + if (G.state < 2) + if(user.a_intent == "hurt") + if (prob(5)) M.Weaken(3) + M.apply_damage(10) + visible_message("\red [G.assailant] slams [G.affecting] against \the [src]!") + playsound(src.loc, 'sound/weapons/tablehit1.ogg', 50, 1) + else + user << "\red You need a better grip to do that!" + return + else + G.affecting.loc = src.loc + G.affecting.Weaken(5) + visible_message("\red [G.assailant] puts [G.affecting] on \the [src].") + del(W) return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) - return if (istype(W, /obj/item/weapon/wrench)) user << "\blue Now disassembling table" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 8d0074d0f6a..8a9bb8d0868 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -209,6 +209,30 @@ /obj/structure/window/attackby(obj/item/weapon/W as obj, mob/user as mob) if(!istype(W)) return//I really wish I did not need this + + if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) + var/obj/item/weapon/grab/G = W + if (istype(G.affecting, /mob/living)) + var/mob/living/M = G.affecting + var/state = G.state + del(W) //gotta delete it here because if window breaks, it won't get deleted + switch (state) + if(1) + M.apply_damage(10) + hit(10) + visible_message("\red [user] slams [M] against \the [src]!") + if(2) + M.Weaken(2) + M.apply_damage(15) + hit(25) + visible_message("\red [user] bashes [M] against \the [src]!") + if(3) + M.Weaken(10) + M.apply_damage(25) + hit(50) + visible_message("\red [user] crushes [M] against \the [src]!") + return + if (istype(W, /obj/item/weapon/screwdriver)) if(reinf && state >= 1) state = 3 - state @@ -438,4 +462,4 @@ /obj/structure/window/reinforced/tinted/frosted icon_state = "fwindow" - name = "frosted window" + name = "frosted window" diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index a12488c72f6..8dac28f7264 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 573b818c731..15c2938bbf1 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ