From b238dfc58193d4c3b3491f11debabfd0372c3a7f Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Fri, 27 Apr 2018 18:58:23 -0400 Subject: [PATCH] Ports Guillotine --- code/game/objects/structures/guillotine.dm | 229 +++++++++++++++++++++ code/modules/crafting/recipes.dm | 10 + icons/obj/guillotine.dmi | Bin 0 -> 2466 bytes paradise.dme | 1 + sound/items/unsheath.ogg | Bin 0 -> 22198 bytes 5 files changed, 240 insertions(+) create mode 100644 code/game/objects/structures/guillotine.dm create mode 100644 icons/obj/guillotine.dmi create mode 100644 sound/items/unsheath.ogg diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm new file mode 100644 index 00000000000..db2daff0e09 --- /dev/null +++ b/code/game/objects/structures/guillotine.dm @@ -0,0 +1,229 @@ +#define GUILLOTINE_BLADE_MAX_SHARP 10 // This is maxiumum sharpness that will decapitate without failure +#define GUILLOTINE_DECAP_MIN_SHARP 7 // Minimum amount of sharpness for decapitation. Any less and it will just deal brute damage +#define GUILLOTINE_ANIMATION_LENGTH 9 // How many deciseconds the animation is +#define GUILLOTINE_BLADE_RAISED 1 +#define GUILLOTINE_BLADE_MOVING 2 +#define GUILLOTINE_BLADE_DROPPED 3 +#define GUILLOTINE_BLADE_SHARPENING 4 +#define GUILLOTINE_HEAD_OFFSET 16 // How much we need to move the player to center their head +#define GUILLOTINE_LAYER_DIFF 1.2 // How much to increase/decrease a head when it's buckled/unbuckled +#define GUILLOTINE_ACTIVATE_DELAY 30 // Delay for executing someone +#define GUILLOTINE_WRENCH_DELAY 10 +#define GUILLOTINE_ACTION_INUSE 5 +#define GUILLOTINE_ACTION_WRENCH 6 + +/obj/structure/guillotine + name = "guillotine" + desc = "A large structure used to remove the heads of traitors and treasonists." + icon = 'icons/obj/guillotine.dmi' + icon_state = "guillotine_raised" + can_buckle = TRUE + anchored = TRUE + density = FALSE + buckle_lying = FALSE + layer = ABOVE_MOB_LAYER + var/blade_status = GUILLOTINE_BLADE_RAISED + var/blade_sharpness = GUILLOTINE_BLADE_MAX_SHARP // How sharp the blade is + var/kill_count = 0 + var/current_action = 0 // What's currently happening to the guillotine + +/obj/structure/guillotine/examine(mob/user) + ..() + + var/msg = "" + + msg += "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]
" + + if(blade_status == GUILLOTINE_BLADE_RAISED) + msg += "The blade is raised, ready to fall, and" + + if(blade_sharpness >= GUILLOTINE_DECAP_MIN_SHARP) + msg += " looks sharp enough to decapitate without any resistance." + else + msg += " doesn't look particularly sharp. Perhaps a whetstone can be used to sharpen it." + else + msg += "The blade is hidden inside the stocks." + + if(has_buckled_mobs()) + msg += "
" + msg += "Someone appears to be strapped in. You can help them out, or you can harm them by activating the guillotine." + + to_chat(user, msg) + + return msg + +/obj/structure/guillotine/attack_hand(mob/user) + add_fingerprint(user) + + // Currently being used by something + if(current_action) + return + + switch(blade_status) + if(GUILLOTINE_BLADE_MOVING) + return + if(GUILLOTINE_BLADE_DROPPED) + blade_status = GUILLOTINE_BLADE_MOVING + icon_state = "guillotine_raise" + addtimer(src, "raise_blade", GUILLOTINE_ANIMATION_LENGTH) + return + if(GUILLOTINE_BLADE_RAISED) + if(has_buckled_mobs()) + if(user.a_intent == INTENT_HARM) + user.visible_message("[user] begins to pull the lever!", + "You begin to the pull the lever.") + current_action = GUILLOTINE_ACTION_INUSE + + if(do_after(user, GUILLOTINE_ACTIVATE_DELAY, target = src) && blade_status == GUILLOTINE_BLADE_RAISED) + current_action = 0 + blade_status = GUILLOTINE_BLADE_MOVING + icon_state = "guillotine_drop" + playsound(src, 'sound/items/unsheath.ogg', 100, 1) + addtimer(src, "drop_blade", GUILLOTINE_ANIMATION_LENGTH - 2, FALSE, user) // Minus two so we play the sound and decap faster + else + current_action = 0 + else + unbuckle_mob() + else + blade_status = GUILLOTINE_BLADE_MOVING + icon_state = "guillotine_drop" + playsound(src, 'sound/items/unsheath.ogg', 100, 1) + addtimer(src, "drop_blade", GUILLOTINE_ANIMATION_LENGTH) + +/obj/structure/guillotine/proc/raise_blade() + blade_status = GUILLOTINE_BLADE_RAISED + icon_state = "guillotine_raised" + +/obj/structure/guillotine/proc/drop_blade(mob/user) + if(has_buckled_mobs() && blade_sharpness) + var/mob/living/carbon/human/H = buckled_mob + + if(!H) + return + + var/obj/item/organ/external/head/head = H.get_organ("head") + + if(QDELETED(head)) + return + + playsound(src, 'sound/weapons/bladeslice.ogg', 100, 1) + if(blade_sharpness >= GUILLOTINE_DECAP_MIN_SHARP || head.brute_dam >= 100) + head.droplimb() + add_attack_logs(user, H, "beheaded with [src]") + H.regenerate_icons() + unbuckle_mob() + kill_count += 1 + + var/blood_overlay = "bloody" + + if(kill_count == 2) + blood_overlay = "bloodier" + else if(kill_count > 2) + blood_overlay = "bloodiest" + + blood_overlay = "guillotine_" + blood_overlay + "_overlay" + overlays.Cut() + overlays += mutable_appearance(icon, blood_overlay) + + // The crowd is pleased + // The delay is to make large crowds have a longer lasting applause + var/delay_offset = 0 + for(var/mob/living/carbon/human/HM in viewers(src, 7)) + addtimer(HM, "emote", delay_offset * 0.3, FALSE, "clap") + delay_offset++ + else + H.apply_damage(15 * blade_sharpness, BRUTE, head) + add_attack_logs(user, H, "dropped the blade on non-fatally with [src]") + H.emote("scream") + + if(blade_sharpness > 1) + blade_sharpness -= 1 + + blade_status = GUILLOTINE_BLADE_DROPPED + icon_state = "guillotine" + +/obj/structure/guillotine/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/whetstone)) + add_fingerprint(user) + if(blade_status == GUILLOTINE_BLADE_SHARPENING) + return + + if(blade_status == GUILLOTINE_BLADE_RAISED) + if(blade_sharpness < GUILLOTINE_BLADE_MAX_SHARP) + blade_status = GUILLOTINE_BLADE_SHARPENING + if(do_after(user, 7, target = src)) + blade_status = GUILLOTINE_BLADE_RAISED + user.visible_message("[user] sharpens the large blade of the guillotine.", + "You sharpen the large blade of the guillotine.") + blade_sharpness += 1 + playsound(src, 'sound/items/Screwdriver.ogg', 100, 1) + return + else + blade_status = GUILLOTINE_BLADE_RAISED + return + else + to_chat(user, "The blade is sharp enough!") + return + else + to_chat(user, "You need to raise the blade in order to sharpen it!") + return + if(iswrench(W)) + if(current_action) + return + + current_action = GUILLOTINE_ACTION_WRENCH + + if(do_after(user, GUILLOTINE_WRENCH_DELAY, target = src)) + current_action = 0 + if(has_buckled_mobs()) + to_chat(user, "Can't unfasten, someone's strapped in!") + return + + if(current_action) + return + to_chat(user, "You [anchored ? "un" : ""]secure [src].") + anchored = !anchored + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + dir = SOUTH + return TRUE + else + current_action = 0 + else + return ..() + +/obj/structure/guillotine/buckle_mob(mob/living/M, force = 0) + if(!anchored) + to_chat(usr, "The [src] needs to be wrenched to the floor!") + return FALSE + + if(!ishuman(M)) + to_chat(usr, "It doesn't look like they can fit into this properly!") + return FALSE // Can't decapitate non-humans + + if(blade_status != GUILLOTINE_BLADE_RAISED) + to_chat(usr, "You need to raise the blade before buckling someone in!") + return FALSE + + if(..()) + M.pixel_y -= GUILLOTINE_HEAD_OFFSET // Offset their body so it looks like they're in the guillotine + M.layer += GUILLOTINE_LAYER_DIFF + +/obj/structure/guillotine/unbuckle_mob(force = 0) + if(buckled_mob) + buckled_mob.pixel_y += GUILLOTINE_HEAD_OFFSET // Move their body back + buckled_mob.layer -= GUILLOTINE_LAYER_DIFF + . = ..() + +#undef GUILLOTINE_BLADE_MAX_SHARP +#undef GUILLOTINE_DECAP_MIN_SHARP +#undef GUILLOTINE_ANIMATION_LENGTH +#undef GUILLOTINE_BLADE_RAISED +#undef GUILLOTINE_BLADE_MOVING +#undef GUILLOTINE_BLADE_DROPPED +#undef GUILLOTINE_BLADE_SHARPENING +#undef GUILLOTINE_HEAD_OFFSET +#undef GUILLOTINE_LAYER_DIFF +#undef GUILLOTINE_ACTIVATE_DELAY +#undef GUILLOTINE_WRENCH_DELAY +#undef GUILLOTINE_ACTION_INUSE +#undef GUILLOTINE_ACTION_WRENCH \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 84226bd1f3b..f1739750a0a 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -354,3 +354,13 @@ reqs = list(/obj/item/grown/log = 5) result = /obj/structure/bonfire category = CAT_PRIMAL + +/datum/crafting_recipe/guillotine + name = "Guillotine" + result = /obj/structure/guillotine + time = 150 // Building a functioning guillotine takes time + reqs = list(/obj/item/stack/sheet/plasteel = 3, + /obj/item/stack/sheet/wood = 20, + /obj/item/stack/cable_coil = 10) + tools = list(/obj/item/screwdriver, /obj/item/wrench, /obj/item/weldingtool) + category = CAT_MISC \ No newline at end of file diff --git a/icons/obj/guillotine.dmi b/icons/obj/guillotine.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e985dbaa825e77bc61ac96d6c4413032633893bd GIT binary patch literal 2466 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 eOy+`lT>a*MK>en=MY@LH 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 Tg4HbVXzU;yHm_Gcu>$))Zk32? literal 0 HcmV?d00001