From 7df83f1c9c32c22f386744ee2462df1b61cf86e4 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Thu, 7 Jan 2021 00:58:10 -0300 Subject: [PATCH 1/7] Update human.dm --- code/modules/mob/living/carbon/human/human.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1f993f38..c9054d86 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -34,7 +34,9 @@ togglesprint() AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood))) - + + if(H.key == ArchieBeepBoop) + H.socks = stockings /mob/living/carbon/human/ComponentInitialize() . = ..() From d08df7bbac4a6337c2eb942e7c49a9295c977fb0 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Thu, 7 Jan 2021 00:59:30 -0300 Subject: [PATCH 2/7] Revert "Update human.dm" This reverts commit 7df83f1c9c32c22f386744ee2462df1b61cf86e4. --- code/modules/mob/living/carbon/human/human.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c9054d86..1f993f38 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -34,9 +34,7 @@ togglesprint() AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood))) - - if(H.key == ArchieBeepBoop) - H.socks = stockings + /mob/living/carbon/human/ComponentInitialize() . = ..() From 713aa33fa8beeb36dae2678e1c5b3c882bb6bbc9 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Thu, 7 Jan 2021 01:00:20 -0300 Subject: [PATCH 3/7] Update human.dm --- code/modules/mob/living/carbon/human/human.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1f993f38..f5f6f61f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -35,7 +35,9 @@ AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood))) - + if(H.key == ArchieBeepBoop) + H.socks = stockings + /mob/living/carbon/human/ComponentInitialize() . = ..() if(!CONFIG_GET(flag/disable_human_mood)) From f21db7377581879ad868a3ee15430d31fd8819b7 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Tue, 19 Jan 2021 03:31:33 -0300 Subject: [PATCH 4/7] fuck yeah banana --- code/game/gamemodes/objective_items.dm | 1 + code/game/machinery/recharger.dm | 27 ++++- code/game/objects/items/miscellaneous.dm | 14 +++ code/game/objects/items/storage/secure.dm | 30 +++++ .../crates_lockers/closets/secure/security.dm | 3 +- .../browserassets/css/browserOutput.css | 6 + .../boxes_magazines/external/rechargable.dm | 101 ++++++++++++++++ code/modules/projectiles/gun.dm | 6 +- .../projectiles/guns/ballistic/revolver.dm | 111 ++++++++++++++++++ icons/obj/ammo.dmi | Bin 29811 -> 30237 bytes icons/obj/guns/projectile.dmi | Bin 37975 -> 38794 bytes 11 files changed, 294 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index d84c104a..a5a60dc8 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 index a5819817..33829b74 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -17,7 +17,9 @@ /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, /obj/item/gun/ballistic/automatic/magrifle_e, - /obj/item/gun/ballistic/automatic/pistol/mag_e)) + /obj/item/gun/ballistic/automatic/pistol/mag_e, + /obj/item/ammo_casing/msw_batt, + /obj/item/ammo_box/magazine/mws_mag)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/stock_parts/capacitor/C in component_parts) @@ -121,6 +123,29 @@ using_power = 1 update_icon(using_power) 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 9837936e..619bfd63 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -19,3 +19,17 @@ icon_state = "skub" w_class = WEIGHT_CLASS_BULKY attack_verb = list("skubbed") + +/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 diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index e177a9f9..5a06759b 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -150,6 +150,36 @@ 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 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 adf373e4..36cc23b7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -90,12 +90,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 2ca28d99..dfd54e85 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 7ed0cde5..21e3083f 100644 --- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm +++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm @@ -12,3 +12,104 @@ /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 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 9d670a91..68fbfc31 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -95,7 +95,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 @@ -251,7 +251,7 @@ shoot_with_empty_chamber(user) firing_burst = FALSE return FALSE - process_chamber() + process_chamber(user) update_icon() return TRUE @@ -293,7 +293,7 @@ else shoot_with_empty_chamber(user) return - process_chamber() + process_chamber(user) update_icon() semicd = TRUE addtimer(CALLBACK(src, .proc/reset_semicd), fire_delay) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 3c0d2800..fee38e33 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -358,3 +358,114 @@ user.emote("scream") user.drop_all_held_items() user.Knockdown(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 diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 677d35219633a8c405b288169fa811c8c5d26384..64e0ce04cd6f25430c508257712c7f86a3fea79a 100644 GIT binary patch delta 8972 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 diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 5c41ffe831d40b87f165f46f0bc659ff577acd0f..a149a89e1febf13b9afceac2a9829ac4b06cbc32 100644 GIT binary patch delta 18981 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 z Date: Tue, 19 Jan 2021 06:09:55 -0300 Subject: [PATCH 5/7] part 2 forgot a bunch of shit, also had to re-do parts because we don't have update_overlays() --- code/game/machinery/recharger.dm | 2 +- code/game/objects/items/miscellaneous.dm | 51 +++++++++++++++++++ code/modules/cargo/centcom_podlauncher.dm | 2 +- .../boxes_magazines/external/rechargable.dm | 17 ++++--- code/modules/projectiles/gun.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 11 ++-- 6 files changed, 69 insertions(+), 16 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 33829b74..c18411ef 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -18,7 +18,7 @@ /obj/item/modular_computer, /obj/item/gun/ballistic/automatic/magrifle_e, /obj/item/gun/ballistic/automatic/pistol/mag_e, - /obj/item/ammo_casing/msw_batt, + /obj/item/ammo_casing/mws_batt, /obj/item/ammo_box/magazine/mws_mag)) /obj/machinery/recharger/RefreshParts() diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 619bfd63..8983485c 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -1,3 +1,54 @@ +/obj/item/choice_beacon + name = "choice beacon" + desc = "Hey, why are you viewing this?!! Please let Centcom know about this odd occurance." + icon = 'icons/obj/device.dmi' + icon_state = "gangtool-blue" + item_state = "radio" + var/list/stored_options + var/force_refresh = FALSE //if set to true, the beacon will recalculate its display options whenever opened + +/obj/item/choice_beacon/attack_self(mob/user) + if(canUseBeacon(user)) + generate_options(user) + +/obj/item/choice_beacon/proc/generate_display_names() // return the list that will be used in the choice selection. entries should be in (type.name = type) fashion. see choice_beacon/hero for how this is done. + return list() + +/obj/item/choice_beacon/proc/canUseBeacon(mob/living/user) + if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return TRUE + else + playsound(src, 'sound/machines/buzz-sigh.ogg', 40, 1) + return FALSE + +/obj/item/choice_beacon/proc/generate_options(mob/living/M) + if(!stored_options || force_refresh) + stored_options = generate_display_names() + if(!stored_options.len) + return + var/choice = input(M,"Which item would you like to order?","Select an Item") as null|anything in stored_options + if(!choice || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + + spawn_option(stored_options[choice],M) + qdel(src) + +/obj/item/choice_beacon/proc/create_choice_atom(atom/choice, mob/owner) + return new choice() + +/obj/item/choice_beacon/proc/spawn_option(obj/choice,mob/living/M) + var/obj/new_item = new choice() + var/obj/structure/closet/supplypod/bluespacepod/pod = new() + pod.explosionSize = list(0,0,0,0) + new_item.forceMove(pod) + var/msg = "After making your selection, you notice a strange target on the ground. It might be best to step back!" + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/radio/headset)) + msg = "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows: Item request received. Your package is inbound, please stand back from the landing site. Message ends.\"" + to_chat(M, msg) + new /obj/effect/DPtarget(get_turf(src), pod) + /obj/item/caution desc = "Caution! Wet Floor!" name = "wet floor sign" diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index e482aa00..880fb859 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -508,4 +508,4 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm updateCursor(FALSE) //Make sure our moues cursor resets to default. False means we are not in launch mode qdel(temp_pod) //Delete the temp_pod qdel(selector) //Delete the selector effect - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm index 21e3083f..1444cccd 100644 --- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm +++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm @@ -27,8 +27,8 @@ var/list/modes = list() -/obj/item/ammo_box/magazine/mws_mag/update_overlays() - .=..() +/obj/item/ammo_box/magazine/mws_mag/update_icon() + cut_overlays() if(!stored_ammo.len) return //Why bother @@ -37,13 +37,14 @@ 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.color = batt.type_color cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset - . += cap + add_overlay(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 + add_overlay(charge) current++ //Increment for offsets @@ -74,11 +75,11 @@ cell.give(cell.maxcharge) update_icon() -/obj/item/ammo_casing/mws_batt/update_overlays() - .=..() - +/obj/item/ammo_casing/mws_batt/update_icon() + cut_overlays() var/mutable_appearance/ends = mutable_appearance(icon, "[initial(icon_state)]_ends", color = type_color) - . += ends + ends.color = type_color + add_overlay(ends) /obj/item/ammo_casing/mws_batt/get_cell() return cell diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 68fbfc31..55f057d2 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -95,7 +95,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(mob/living/user)) +/obj/item/gun/proc/process_chamber(mob/living/user) return FALSE //check if there's enough ammo/energy/whatever to shoot one time diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index fee38e33..05e284e5 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -445,8 +445,8 @@ chambered = null update_icon() -/obj/item/gun/ballistic/revolver/mws/update_overlays() - .=..() +/obj/item/gun/ballistic/revolver/mws/update_icon() + cut_overlays() if(!chambered) return @@ -456,16 +456,17 @@ //Mode bar var/image/mode_bar = image(icon, icon_state = "[initial(icon_state)]_type") mode_bar.color = batt_color - . += mode_bar + add_overlay(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 + add_overlay(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 + charge_bar.color = batt_color + add_overlay(charge_bar) From f6c3dccaf9a1536dba196b1e09a18e3be6c84fa0 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Tue, 19 Jan 2021 06:27:15 -0300 Subject: [PATCH 6/7] Revert "Update human.dm" This reverts commit 713aa33fa8beeb36dae2678e1c5b3c882bb6bbc9. --- code/modules/mob/living/carbon/human/human.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f5f6f61f..1f993f38 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -35,9 +35,7 @@ AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood))) - if(H.key == ArchieBeepBoop) - H.socks = stockings - + /mob/living/carbon/human/ComponentInitialize() . = ..() if(!CONFIG_GET(flag/disable_human_mood)) From 520e075e396eaae7a5484a41f14a3439f9aa6d06 Mon Sep 17 00:00:00 2001 From: CygnusB <39594514+MalricB@users.noreply.github.com> Date: Tue, 19 Jan 2021 06:42:01 -0300 Subject: [PATCH 7/7] Update secure.dm --- code/game/objects/items/storage/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 5a06759b..8bb37fd6 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -177,7 +177,7 @@ 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() +/obj/item/storage/secure/briefcase/hos/multiphase_box/PopulateContents() new /obj/item/gun/energy/e_gun/hos(src)