From 34f71c489bbc1680f8403cf6ab754064031aafe9 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Fri, 31 Jan 2020 19:03:44 -0300 Subject: [PATCH 1/2] It's 12 o'clock Darn tootin' pardner --- code/modules/cargo/packs.dm | 38 +- code/modules/projectiles/gun.dm | 6 +- .../projectiles/guns/energy/dueling.dm | 389 ++++++++++++++++++ icons/obj/guns/energy.dmi | Bin 37512 -> 38245 bytes tgstation.dme | 1 + tgstation.lk | 0 6 files changed, 429 insertions(+), 5 deletions(-) create mode 100644 code/modules/projectiles/guns/energy/dueling.dm create mode 100644 tgstation.lk diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 6f85668b..149416bf 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -2924,9 +2924,9 @@ name = "Kinkmate construction kit" cost = 2000 contraband = TRUE - contains = list(/obj/item/vending_refill/kink, - /obj/item/vending_refill/kink, - /obj/item/vending_refill/kink, + contains = list(/obj/item/vending_refill/kink, + /obj/item/vending_refill/kink, + /obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate) crate_name = "Kinkmate construction kit" @@ -2966,6 +2966,36 @@ crate_name = "captain pen" crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen +/datum/supply_pack/misc/dueling_stam + name = "Dueling Pistols" + desc = "Resolve all your quarrels with some nonlethal fun." + cost = 2000 + contains = list(/obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina) + crate_name = "dueling pistols" + +/datum/supply_pack/misc/dueling_lethal + name = "Lethal Dueling Pistols" + desc = "Settle your differences the true spaceman way." + cost = 3000 + contraband = TRUE + contains = list(/obj/item/storage/lockbox/dueling/hugbox, + /obj/item/storage/lockbox/dueling/hugbox, + /obj/item/storage/lockbox/dueling/hugbox) + crate_name = "dueling pistols (lethal)" + +/datum/supply_pack/misc/dueling_death + name = "Elimination Dueling Pistols" + desc = "It's high noon." + cost = 5000 + hidden = TRUE + contains = list(/obj/item/storage/lockbox/dueling) + crate_name = "dueling pistols (elimination)" + + /datum/supply_pack/misc/exoticfootwear name = "Exotic Footwear Crate" desc = "Popularised by lizards and exotic dancers, the footwear included in this shipment is sure to give your feet the breathing room they deserve. Sweet Kicks Inc. is not responsible for any damage, distress, or @r0u$a1 caused by this shipment." @@ -3006,7 +3036,7 @@ /obj/item/bedsheet/purple, /obj/item/bedsheet/red, /obj/item/bedsheet/yellow, - /obj/item/bedsheet/brown, + /obj/item/bedsheet/brown, /obj/item/bedsheet/black, /obj/item/bedsheet/rainbow) crate_name = "colored bedsheet crate" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 8c44ca45..b0f9a7b4 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -235,7 +235,7 @@ sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) else //Smart spread sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread)) - + before_firing(target,user) if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd)) shoot_with_empty_chamber(user) firing_burst = FALSE @@ -281,6 +281,7 @@ to_chat(user, " [src] is lethally chambered! You don't want to risk harming anyone...") return sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) + before_firing(target,user) if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd)) shoot_with_empty_chamber(user) return @@ -470,6 +471,9 @@ qdel(pin) pin = new /obj/item/firing_pin +//Happens before the actual projectile creation +/obj/item/gun/proc/before_firing(atom/target,mob/user) + return ///////////// // ZOOMING // ///////////// diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm new file mode 100644 index 00000000..85a65b65 --- /dev/null +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -0,0 +1,389 @@ +#define DUEL_IDLE 1 +#define DUEL_PREPARATION 2 +#define DUEL_READY 3 +#define DUEL_COUNTDOWN 4 +#define DUEL_FIRING 5 + +//paper rock scissors +#define DUEL_SETTING_A "wide" +#define DUEL_SETTING_B "cone" +#define DUEL_SETTING_C "pinpoint" + +#define DUEL_HUGBOX_NONE 0 //dismember head +#define DUEL_HUGBOX_LETHAL 1 //200 damage to chest +#define DUEL_HUGBOX_NONLETHAL 2 //stamcrit + +/datum/duel + var/obj/item/gun/energy/dueling/gun_A + var/obj/item/gun/energy/dueling/gun_B + var/state = DUEL_IDLE + var/required_distance = 5 + var/list/confirmations = list() + var/list/fired = list() + var/countdown_length = 10 + var/countdown_step = 0 + var/static/next_id = 1 + var/id + +/datum/duel/New() + id = next_id++ + +/datum/duel/proc/try_begin() + //Check if both guns are held and if so begin. + var/mob/living/A = get_duelist(gun_A) + var/mob/living/B = get_duelist(gun_B) + if(!A || !B) + message_duelists("To begin the duel, both participants need to be holding paired dueling pistols.") + return + begin() + +/datum/duel/proc/begin() + state = DUEL_PREPARATION + confirmations.Cut() + fired.Cut() + countdown_step = countdown_length + + message_duelists("Set your gun setting and move [required_distance] steps away from your opponent.") + + START_PROCESSING(SSobj,src) + +/datum/duel/proc/get_duelist(obj/gun) + var/mob/living/G = gun.loc + if(!istype(G) || !G.is_holding(gun)) + return null + return G + +/datum/duel/proc/message_duelists(message) + var/mob/living/LA = get_duelist(gun_A) + if(LA) + to_chat(LA,message) + var/mob/living/LB = get_duelist(gun_B) + if(LB) + to_chat(LB,message) + +/datum/duel/proc/other_gun(obj/item/gun/energy/dueling/G) + return G == gun_A ? gun_B : gun_A + +/datum/duel/proc/end() + message_duelists("Duel finished. Re-engaging safety.") + STOP_PROCESSING(SSobj,src) + state = DUEL_IDLE + +/datum/duel/process() + switch(state) + if(DUEL_PREPARATION) + if(check_positioning()) + confirm_positioning() + else if (!get_duelist(gun_A) && !get_duelist(gun_B)) + end() + if(DUEL_READY) + if(!check_positioning()) + back_to_prep() + else if(confirmations.len == 2) + confirm_ready() + if(DUEL_COUNTDOWN) + if(!check_positioning()) + back_to_prep() + else + countdown_step() + if(DUEL_FIRING) + if(check_fired()) + end() + +/datum/duel/proc/back_to_prep() + message_duelists("Positions invalid. Please move to valid positions [required_distance] steps aways from each other to continue.") + state = DUEL_PREPARATION + confirmations.Cut() + countdown_step = countdown_length + +/datum/duel/proc/confirm_positioning() + message_duelists("Position confirmed. Confirm readiness by pulling the trigger once.") + state = DUEL_READY + +/datum/duel/proc/confirm_ready() + message_duelists("Readiness confirmed. Starting countdown. Commence firing at zero mark.") + state = DUEL_COUNTDOWN + +/datum/duel/proc/countdown_step() + countdown_step-- + if(countdown_step == 0) + state = DUEL_FIRING + message_duelists("Fire!") + else + message_duelists("[countdown_step]!") + +/datum/duel/proc/check_fired() + if(fired.len == 2) + return TRUE + //Let's say if gun was dropped/stowed the user is finished + if(!get_duelist(gun_A)) + return TRUE + if(!get_duelist(gun_B)) + return TRUE + return FALSE + +/datum/duel/proc/check_positioning() + var/mob/living/A = get_duelist(gun_A) + var/mob/living/B = get_duelist(gun_B) + if(!A || !B) + return FALSE + if(!isturf(A.loc) || !isturf(B.loc)) + return FALSE + if(get_dist(A,B) != required_distance) + return FALSE + for(var/turf/T in getline(get_turf(A),get_turf(B))) + if(is_blocked_turf(T,TRUE)) + return FALSE + return TRUE + +/obj/item/gun/energy/dueling + name = "dueling pistol" + desc = "High-tech dueling pistol. Launches chaff and projectile according to preset settings." + icon_state = "dueling_pistol" + item_state = "gun" + ammo_x_offset = 2 + w_class = WEIGHT_CLASS_SMALL + ammo_type = list(/obj/item/ammo_casing/energy/duel) + automatic_charge_overlays = FALSE + var/unlocked = FALSE + var/setting = DUEL_SETTING_A + var/datum/duel/duel + var/mutable_appearance/setting_overlay + var/hugbox = DUEL_HUGBOX_NONE + +/obj/item/gun/energy/dueling/hugbox + hugbox = DUEL_HUGBOX_LETHAL + +/obj/item/gun/energy/dueling/hugbox/stamina + hugbox = DUEL_HUGBOX_NONLETHAL + +/obj/item/gun/energy/dueling/Initialize() + . = ..() + setting_overlay = mutable_appearance(icon,setting_iconstate()) + add_overlay(setting_overlay) + + /obj/item/gun/energy/dueling/examine(mob/user) + . = ..() + if(duel) + . += "Its linking number is [duel.id]." + else + . += "ERROR: No linking number on gun." + +/obj/item/gun/energy/dueling/proc/setting_iconstate() + switch(setting) + if(DUEL_SETTING_A) + return "duel_red" + if(DUEL_SETTING_B) + return "duel_green" + if(DUEL_SETTING_C) + return "duel_blue" + return "duel_red" + +/obj/item/gun/energy/dueling/attack_self(mob/living/user) + . = ..() + if(duel.state == DUEL_IDLE) + duel.try_begin() + else + toggle_setting(user) + +/obj/item/gun/energy/dueling/proc/toggle_setting(mob/living/user) + switch(setting) + if(DUEL_SETTING_A) + setting = DUEL_SETTING_B + if(DUEL_SETTING_B) + setting = DUEL_SETTING_C + if(DUEL_SETTING_C) + setting = DUEL_SETTING_A + to_chat(user,"You switch [src] setting to [setting] mode.") + update_icon() + +/obj/item/gun/energy/dueling/update_icon(force_update) + . = ..() + if(setting_overlay) + cut_overlay(setting_overlay) + setting_overlay.icon_state = setting_iconstate() + add_overlay(setting_overlay) + +/obj/item/gun/energy/dueling/Destroy() + . = ..() + if(duel.gun_A == src) + duel.gun_A = null + if(duel.gun_B == src) + duel.gun_B = null + duel = null + +/obj/item/gun/energy/dueling/can_trigger_gun(mob/living/user) + . = ..() + switch(duel.state) + if(DUEL_FIRING) + return . && !duel.fired[src] + if(DUEL_READY) + return . + else + to_chat(user,"[src] is locked. Wait for FIRE signal before shooting.") + return FALSE + +/obj/item/gun/energy/dueling/proc/is_duelist(mob/living/L) + if(!istype(L)) + return FALSE + if(!L.is_holding(duel.other_gun(src))) + return FALSE + return TRUE + +/obj/item/gun/energy/dueling/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread) + if(duel.state == DUEL_READY) + duel.confirmations[src] = TRUE + to_chat(user,"You confirm your readiness.") + return + else if(!is_duelist(target)) //I kinda want to leave this out just to see someone shoot a bystander or missing. + to_chat(user,"[src] safety system prevents shooting anyone but your designated opponent.") + return + else + duel.fired[src] = TRUE + . = ..() + +/obj/item/gun/energy/dueling/before_firing(target,user) + var/obj/item/ammo_casing/energy/duel/D = chambered + D.setting = setting + D.hugbox = hugbox + +/obj/effect/temp_visual/dueling_chaff + icon = 'icons/effects/effects.dmi' + icon_state = "shield-old" + duration = 30 + var/setting + +/obj/effect/temp_visual/dueling_chaff/update_icon() + . = ..() + switch(setting) + if(DUEL_SETTING_A) + color = "red" + if(DUEL_SETTING_B) + color = "green" + if(DUEL_SETTING_C) + color = "blue" + +//Casing + +/obj/item/ammo_casing/energy/duel + e_cost = 0 + projectile_type = /obj/item/projectile/energy/duel + var/setting + var/hugbox = DUEL_HUGBOX_NONE + +/obj/item/ammo_casing/energy/duel/ready_proj(atom/target, mob/living/user, quiet, zone_override) + . = ..() + var/obj/item/projectile/energy/duel/D = BB + D.setting = setting + D.hugbox = hugbox + D.update_icon() + +/obj/item/ammo_casing/energy/duel/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from) + . = ..() + var/obj/effect/temp_visual/dueling_chaff/C = new(get_turf(user)) + C.setting = setting + C.update_icon() + +//Projectile + +/obj/item/projectile/energy/duel + name = "dueling beam" + icon_state = "declone" + is_reflectable = FALSE + homing = TRUE + var/setting + var/hugbox = DUEL_HUGBOX_NONE + +/obj/item/projectile/energy/duel/update_icon() + . = ..() + switch(setting) + if(DUEL_SETTING_A) + color = "red" + if(DUEL_SETTING_B) + color = "green" + if(DUEL_SETTING_C) + color = "blue" + +/obj/item/projectile/energy/duel/on_hit(atom/target, blocked) + . = ..() + var/turf/T = get_turf(target) + var/obj/effect/temp_visual/dueling_chaff/C = locate() in T + if(C) + var/counter_setting + switch(setting) + if(DUEL_SETTING_A) + counter_setting = DUEL_SETTING_B + if(DUEL_SETTING_B) + counter_setting = DUEL_SETTING_C + if(DUEL_SETTING_C) + counter_setting = DUEL_SETTING_A + if(C.setting == counter_setting) + return BULLET_ACT_BLOCK + + var/mob/living/L = target + if(!istype(target)) + return BULLET_ACT_BLOCK + + switch(hugbox) + if(DUEL_HUGBOX_NONE) + var/obj/item/bodypart/B = L.get_bodypart(BODY_ZONE_HEAD) + B.dismember() + qdel(B) + if(DUEL_HUGBOX_LETHAL) + L.adjustBruteLoss(180) + L.death() //Die, powergamers. + if(DUEL_HUGBOX_NONLETHAL) + L.adjustStaminaLoss(200, forced = TRUE) //Die, powergamers x 2 + L.Knockdown(100, override_hardstun = 100) //For good measure. + +//Storage case. +/obj/item/storage/lockbox/dueling + name = "dueling pistol case" + desc = "Let's solve this like gentlespacemen." + icon_state = "medalbox+l" + item_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + w_class = WEIGHT_CLASS_NORMAL + req_access = list(ACCESS_CAPTAIN) + icon_locked = "medalbox+l" + icon_closed = "medalbox" + icon_broken = "medalbox+b" + var/gun_type = /obj/item/gun/energy/dueling + +/obj/item/storage/lockbox/dueling/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_items = 2 + STR.can_hold = typecacheof(/obj/item/gun/energy/dueling) + +/obj/item/storage/lockbox/dueling/update_icon() + cut_overlays() + var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED) + if(locked) + icon_state = "medalbox+l" + else + icon_state = "medalbox" + if(open) + icon_state += "open" + if(broken) + icon_state += "+b" + +/obj/item/storage/lockbox/dueling/PopulateContents() + . = ..() + var/obj/item/gun/energy/dueling/gun_A = new gun_type(src) + var/obj/item/gun/energy/dueling/gun_B = new gun_type(src) + var/datum/duel/D = new + gun_A.duel = D + gun_B.duel = D + D.gun_A = gun_A + D.gun_B = gun_B + +/obj/item/storage/lockbox/dueling/hugbox + gun_type = /obj/item/gun/energy/dueling/hugbox + req_access = list(ACCESS_ARMORY) + +/obj/item/storage/lockbox/dueling/hugbox/stamina + gun_type = /obj/item/gun/energy/dueling/hugbox/stamina + req_access = null \ No newline at end of file diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index a6d5c8a5e1b7e0c74e102c2613d3481a6ebef182..8fafce6afbd1b42470096affc1130c9c14ad9f0c 100644 GIT binary patch delta 20103 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 Date: Mon, 3 Feb 2020 09:50:25 -0300 Subject: [PATCH 2/2] Fixes Dueling.dm examine error and also fixes my retardation --- code/modules/projectiles/guns/energy/dueling.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index 85a65b65..23968fe1 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -162,7 +162,7 @@ setting_overlay = mutable_appearance(icon,setting_iconstate()) add_overlay(setting_overlay) - /obj/item/gun/energy/dueling/examine(mob/user) +/obj/item/gun/energy/dueling/examine(mob/user) . = ..() if(duel) . += "Its linking number is [duel.id]."