From f95222fee02886d462bb2dc613c6b5136cf3be2f Mon Sep 17 00:00:00 2001 From: Chayse Ramsay Date: Sat, 30 May 2020 02:17:56 +0100 Subject: [PATCH] For the stranger there among them had a big iron on his hip. Big iron on his hiiiiiiip. (#12155) * HoS modular revolver, ported from vore * Bugfixing, sanity checks etc. * Update hos.dm * Sprite fixed * Automatic changelog compile [ci skip] * HoS Weapon Selection * Icons * Clamp fix, removing rogue items from ye olde list * Update ammo.dmi * Requested Changes Part 1 * Beacon fixed (kind of) * Subtypes fix * User * Giving process_chamber a user so that the proc can use to_chat without requiring loc, fixes switching so the gun only switches to the same type when empty * redundant item * Adds an examine notice on how to remove the magazine * Requested Changes * Icons Co-authored-by: Changelogs --- code/game/gamemodes/objective_items.dm | 1 + code/game/machinery/recharger.dm | 25 ++++ code/game/objects/items/miscellaneous.dm | 14 +++ code/game/objects/items/storage/secure.dm | 31 ++++- .../crates_lockers/closets/secure/security.dm | 3 +- .../browserassets/css/browserOutput.css | 6 + .../boxes_magazines/external/rechargable.dm | 102 ++++++++++++++++ code/modules/projectiles/gun.dm | 6 +- .../projectiles/guns/ballistic/revolver.dm | 111 ++++++++++++++++++ icons/obj/ammo.dmi | Bin 29745 -> 30190 bytes icons/obj/guns/projectile.dmi | Bin 45637 -> 46286 bytes 11 files changed, 294 insertions(+), 5 deletions(-) mode change 100755 => 100644 code/game/machinery/recharger.dm diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 2e5dae3e04..68a9c1ce07 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -36,6 +36,7 @@ targetitem = /obj/item/gun/energy/e_gun/hos difficulty = 10 excludefromjob = list("Head Of Security") + altitems = list(/obj/item/gun/ballistic/revolver/mws) /datum/objective_item/steal/handtele name = "a hand teleporter." diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm old mode 100755 new mode 100644 index 8545e6f35c..2fff2011c1 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -17,6 +17,8 @@ /obj/item/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, + /obj/item/ammo_casing/mws_batt, + /obj/item/ammo_box/magazine/mws_mag, /obj/item/twohanded/electrostaff, /obj/item/gun/ballistic/automatic/magrifle)) @@ -143,6 +145,29 @@ using_power = TRUE update_icon() return + + if(istype(charging, /obj/item/ammo_casing/mws_batt)) + var/obj/item/ammo_casing/mws_batt/R = charging + if(R.cell.charge < R.cell.maxcharge) + R.cell.give(R.cell.chargerate * recharge_coeff) + use_power(250 * recharge_coeff) + using_power = 1 + if(R.BB == null) + R.chargeshot() + update_icon(using_power) + + if(istype(charging, /obj/item/ammo_box/magazine/mws_mag)) + var/obj/item/ammo_box/magazine/mws_mag/R = charging + for(var/B in R.stored_ammo) + var/obj/item/ammo_casing/mws_batt/batt = B + if(batt.cell.charge < batt.cell.maxcharge) + batt.cell.give(batt.cell.chargerate * recharge_coeff) + use_power(250 * recharge_coeff) + using_power = 1 + if(batt.BB == null) + batt.chargeshot() + update_icon(using_power) + else return PROCESS_KILL diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index c4bb8c594c..ae9ea6985c 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -115,6 +115,20 @@ new /obj/item/toy/crayon/spraycan(src) new /obj/item/clothing/shoes/sandal(src) +/obj/item/choice_beacon/hosgun + name = "personal weapon beacon" + desc = "Use this to summon your personal Head of Security issued firearm!" + +/obj/item/choice_beacon/hosgun/generate_display_names() + var/static/list/hos_gun_list + if(!hos_gun_list) + hos_gun_list = list() + var/list/templist = subtypesof(/obj/item/storage/secure/briefcase/hos/) //we have to convert type = name to name = type, how lovely! + for(var/V in templist) + var/atom/A = V + hos_gun_list[initial(A.name)] = A + return hos_gun_list + /obj/item/skub desc = "It's skub." name = "skub" diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index ef70bd201d..1caf13454b 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -147,6 +147,35 @@ for(var/i = 0, i < STR.max_items - 2, i++) new /obj/item/stack/spacecash/c1000(src) +/obj/item/storage/secure/briefcase/mws_pack + name = "\improper \'MWS\' gun kit" + desc = "A storage case for a multi-purpose handgun. Variety hour!" + +/obj/item/storage/secure/briefcase/mws_pack/PopulateContents() + new /obj/item/gun/ballistic/revolver/mws(src) + new /obj/item/ammo_box/magazine/mws_mag(src) + for(var/path in subtypesof(/obj/item/ammo_casing/mws_batt)) + new path(src) + +/obj/item/storage/secure/briefcase/hos/mws_pack_hos + name = "\improper \'MWS\' gun kit" + desc = "A storage case for a multi-purpose handgun. Variety hour!" + +/obj/item/storage/secure/briefcase/hos/mws_pack_hos/PopulateContents() + new /obj/item/gun/ballistic/revolver/mws(src) + new /obj/item/ammo_box/magazine/mws_mag(src) + new /obj/item/ammo_casing/mws_batt/lethal(src) + new /obj/item/ammo_casing/mws_batt/lethal(src) + new /obj/item/ammo_casing/mws_batt/stun(src) + new /obj/item/ammo_casing/mws_batt/stun(src) + new /obj/item/ammo_casing/mws_batt/ion(src) + +/obj/item/storage/secure/briefcase/hos/multiphase_box + name = "\improper X-01 Multiphase energy gun box" + desc = "A storage case for a high-tech energy firearm." + +/obj/item/storage/secure/briefcase/mws_pack_hos/PopulateContents() + new /obj/item/gun/energy/e_gun/hos(src) // ----------------------------- // Secure Safe @@ -183,4 +212,4 @@ return attack_self(user) /obj/item/storage/secure/safe/HoS - name = "head of security's safe" + name = "head of security's safe" \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index e5c50af782..9f4da351fa 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -76,12 +76,13 @@ new /obj/item/storage/box/flashbangs(src) new /obj/item/shield/riot/tele(src) new /obj/item/storage/belt/security/full(src) - new /obj/item/gun/energy/e_gun/hos(src) + new /obj/item/choice_beacon/hosgun(src) new /obj/item/flashlight/seclite(src) new /obj/item/pinpointer/nuke(src) new /obj/item/circuitboard/machine/techfab/department/security(src) new /obj/item/storage/photo_album/HoS(src) new /obj/item/clothing/suit/hooded/wintercoat/hos(src) + /obj/structure/closet/secure_closet/warden name = "\proper warden's locker" req_access = list(ACCESS_ARMORY) diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index d4dc3cb213..3455a97ba2 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -403,6 +403,12 @@ h1.alert, h2.alert {color: #000000;} .his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} .spooky {color: #FF6100;} .velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} + +.lethal {color: #bf3d3d; font-weight: bold;} +.stun {color: #0f81bc; font-weight: bold;} +.ion {color: #d084d6; font-weight: bold;} +.xray {color: #32c025; font-weight: bold;} + @keyframes velvet { 0% { color: #400020; } 40% { color: #FF0000; } diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm index 7ed0cde50a..7a3c82489c 100644 --- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm +++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm @@ -12,3 +12,105 @@ /obj/item/ammo_box/magazine/recharge/attack_self() //No popping out the "bullets" return + +// MWS Magazine // +/obj/item/ammo_box/magazine/mws_mag + name = "microbattery magazine" + desc = "A microbattery holder for the 'Big Iron'" + + icon = 'icons/obj/ammo.dmi' + icon_state = "mws_mag" + caliber = "mws" + ammo_type = /obj/item/ammo_casing/mws_batt + start_empty = TRUE + max_ammo = 3 + + var/list/modes = list() + +/obj/item/ammo_box/magazine/mws_mag/update_overlays() + .=..() + if(!stored_ammo.len) + return //Why bother + + var/x_offset = 5 + var/current = 0 + for(var/B in stored_ammo) + var/obj/item/ammo_casing/mws_batt/batt = B + var/mutable_appearance/cap = mutable_appearance(icon, "[initial(icon_state)]_cap", color = batt.type_color) + cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset + . += cap + if(batt.cell.charge > 0) + var/ratio = CEILING(clamp(batt.cell.charge / batt.cell.maxcharge, 0, 1) * 4, 1) //4 is how many lights we have a sprite for + var/mutable_appearance/charge = mutable_appearance(icon, "[initial(icon_state)]_charge-[ratio]", color = "#29EAF4") //Could use battery color but eh. + charge.pixel_x = current * x_offset + . += charge + + current++ //Increment for offsets + + +// MWS Batteries // +/obj/item/ammo_casing/mws_batt + name = "\'MWS\' microbattery - UNKNOWN" + desc = "A miniature battery for an energy weapon." + icon = 'icons/obj/ammo.dmi' + icon_state = "mws_batt" + slot_flags = SLOT_BELT | SLOT_EARS + throwforce = 1 + + caliber = "mws" + var/type_color = null + var/type_name = null + + var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/cell{charge = 600; maxcharge = 600} + + var/e_cost = 100 + projectile_type = /obj/item/projectile/beam + +/obj/item/ammo_casing/mws_batt/Initialize() + . = ..() + pixel_x = rand(-10, 10) + pixel_y = rand(-10, 10) + cell = new cell_type(src) + cell.give(cell.maxcharge) + update_icon() + +/obj/item/ammo_casing/mws_batt/update_overlays() + .=..() + + var/mutable_appearance/ends = mutable_appearance(icon, "[initial(icon_state)]_ends", color = type_color) + . += ends + +/obj/item/ammo_casing/mws_batt/get_cell() + return cell + +/obj/item/ammo_casing/mws_batt/proc/chargeshot() + if(cell.charge >= e_cost) + cell.use(e_cost) + newshot() + return + +// Specific batteries // +/obj/item/ammo_casing/mws_batt/lethal + name = "'MWS' microbattery - LETHAL" + type_color = "#bf3d3d" + type_name = "LETHAL" + projectile_type = /obj/item/projectile/beam + +/obj/item/ammo_casing/mws_batt/stun + name = "'MWS' microbattery - STUN" + type_color = "#0f81bc" + type_name = "STUN" + projectile_type = /obj/item/projectile/beam/disabler + +/obj/item/ammo_casing/mws_batt/xray + name = "'MWS' microbattery - XRAY" + type_color = "#32c025" + type_name = "XRAY" + projectile_type = /obj/item/projectile/beam/xray + +/obj/item/ammo_casing/mws_batt/ion + name = "'MWS' microbattery - ION" + type_color = "#d084d6" + type_name = "ION" + projectile_type = /obj/item/projectile/ion \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ef28c76da9..c4909c5583 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -128,7 +128,7 @@ zoom(user, FALSE) //we can only stay zoomed in if it's in our hands //yeah and we only unzoom if we're actually zoomed using the gun!! //called after the gun has successfully fired its chambered ammo. -/obj/item/gun/proc/process_chamber() +/obj/item/gun/proc/process_chamber(mob/living/user) return FALSE //check if there's enough ammo/energy/whatever to shoot one time @@ -306,7 +306,7 @@ else shoot_with_empty_chamber(user) return - process_chamber() + process_chamber(user) update_icon() SSblackbox.record_feedback("tally", "gun_fired", 1, type) @@ -345,7 +345,7 @@ shoot_with_empty_chamber(user) firing = FALSE return FALSE - process_chamber() + process_chamber(user) update_icon() return TRUE diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 12e7da90c9..9e43ec052f 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -377,3 +377,114 @@ user.emote("scream") user.drop_all_held_items() user.DefaultCombatKnockdown(80) + +// -------------- HoS Modular Weapon System ------------- +// ---------- Code originally from VoreStation ---------- +/obj/item/gun/ballistic/revolver/mws + name = "MWS-01 'Big Iron'" + desc = "Modular Weapons System" + + icon = 'icons/obj/guns/projectile.dmi' + icon_state = "mws" + + fire_sound = 'sound/weapons/Taser.ogg' + + mag_type = /obj/item/ammo_box/magazine/mws_mag + spawnwithmagazine = FALSE + + recoil = 0 + + var/charge_sections = 6 + +/obj/item/gun/ballistic/revolver/mws/examine(mob/user) + . = ..() + . += "Alt-click to remove the magazine." + +/obj/item/gun/ballistic/revolver/mws/shoot_with_empty_chamber(mob/living/user as mob|obj) + process_chamber(user) + if(!chambered || !chambered.BB) + to_chat(user, "*click*") + playsound(src, "gun_dry_fire", 30, 1) + + +/obj/item/gun/ballistic/revolver/mws/process_chamber(mob/living/user) + if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + var/obj/item/ammo_casing/mws_batt/shot = chambered + if(shot.cell.charge >= shot.e_cost) + shot.chargeshot() + else + for(var/B in magazine.stored_ammo) + var/obj/item/ammo_casing/mws_batt/other_batt = B + if(istype(other_batt,shot) && other_batt.cell.charge >= other_batt.e_cost) + switch_to(other_batt, user) + break + update_icon() + +/obj/item/gun/ballistic/revolver/mws/proc/switch_to(obj/item/ammo_casing/mws_batt/new_batt, mob/living/user) + if(ishuman(user)) + if(chambered && new_batt.type == chambered.type) + to_chat(user,"[src] is now using the next [new_batt.type_name] power cell.") + else + to_chat(user,"[src] is now firing [new_batt.type_name].") + + chambered = new_batt + update_icon() + +/obj/item/gun/ballistic/revolver/mws/attack_self(mob/living/user) + if(!chambered) + return + + var/list/stored_ammo = magazine.stored_ammo + + if(stored_ammo.len == 1) + return //silly you. + + //Find an ammotype that ISN'T the same, or exhaust the list and don't change. + var/our_slot = stored_ammo.Find(chambered) + + for(var/index in 1 to stored_ammo.len) + var/true_index = ((our_slot + index - 1) % stored_ammo.len) + 1 // Stupid ONE BASED lists! + var/obj/item/ammo_casing/mws_batt/next_batt = stored_ammo[true_index] + if(chambered != next_batt && !istype(next_batt, chambered.type) && next_batt.cell.charge >= next_batt.e_cost) + switch_to(next_batt, user) + break + +/obj/item/gun/ballistic/revolver/mws/AltClick(mob/living/user) + .=..() + if(magazine) + user.put_in_hands(magazine) + magazine.update_icon() + if(magazine.ammo_count()) + playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, 1) + else + playsound(src, "gun_remove_empty_magazine", 70, 1) + magazine = null + to_chat(user, "You pull the magazine out of [src].") + if(chambered) + chambered = null + update_icon() + +/obj/item/gun/ballistic/revolver/mws/update_overlays() + .=..() + if(!chambered) + return + + var/obj/item/ammo_casing/mws_batt/batt = chambered + var/batt_color = batt.type_color //Used many times + + //Mode bar + var/image/mode_bar = image(icon, icon_state = "[initial(icon_state)]_type") + mode_bar.color = batt_color + . += mode_bar + + //Barrel color + var/mutable_appearance/barrel_color = mutable_appearance(icon, "[initial(icon_state)]_barrel", color = batt_color) + barrel_color.alpha = 150 + . += barrel_color + + //Charge bar + var/ratio = can_shoot() ? CEILING(clamp(batt.cell.charge / batt.cell.maxcharge, 0, 1) * charge_sections, 1) : 0 + for(var/i = 0, i < ratio, i++) + var/mutable_appearance/charge_bar = mutable_appearance(icon, "[initial(icon_state)]_charge", color = batt_color) + charge_bar.pixel_x = i + . += charge_bar \ No newline at end of file diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index a40359cadb3674b73f39251e9c7feb8859d085be..c75afde4cc3c2a80b6fcdd703b3b253b3e67f5e8 100644 GIT binary patch delta 9269 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 GneabU7Jrlg delta 5560 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 Z$PlL~7H8hJf+!IEF}Z1GRA=ZI`#*f0U-