From e69f1159c1ac4cb27bf7dcb3e28f195cef0c8883 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:11:49 +0700 Subject: [PATCH 01/31] a general buff to give seclite and belt --- code/modules/jobs/job_types/captain.dm | 2 +- code/modules/jobs/job_types/detective.dm | 1 + code/modules/jobs/job_types/head_of_security.dm | 6 ++++-- code/modules/jobs/job_types/security_officer.dm | 4 +++- code/modules/jobs/job_types/warden.dm | 5 ++++- modular_skyrat/modules/blueshield/code/blueshield.dm | 1 + .../modules/nanotrasen_rep/code/nanotrasen_consultant.dm | 7 +++++-- .../modules/sec_haul/code/security_medic/security_medic.dm | 3 ++- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index afcc3fc2997..bd2dd916d58 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -70,7 +70,7 @@ gloves = /obj/item/clothing/gloves/captain head = /obj/item/clothing/head/hats/caphat shoes = /obj/item/clothing/shoes/laceup - + r_pocket = /obj/item/flashlight/seclite backpack = /obj/item/storage/backpack/captain satchel = /obj/item/storage/backpack/satchel/cap diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 4b44a3a4ae2..04503ab596a 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -56,6 +56,7 @@ /obj/item/detective_scanner = 1, /obj/item/melee/baton = 1, /obj/item/storage/box/evidence = 1, + /obj/item/flashlight/seclite = 1, ) belt = /obj/item/modular_computer/pda/detective ears = /obj/item/radio/headset/headset_sec/alt diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 79294563a48..9f6eedce476 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -51,12 +51,14 @@ id_trim = /datum/id_trim/job/head_of_security uniform = /obj/item/clothing/under/rank/security/head_of_security suit = /obj/item/clothing/suit/armor/hos/trenchcoat - //suit_store = /obj/item/gun/energy/e_gun //SKYRAT EDIT REMOVAL + suit_store = /obj/item/gun/energy/e_gun //KEPLER EDIT RESTORATION backpack_contents = list( /obj/item/evidencebag = 1, /obj/item/storage/box/gunset/glock18_hos = 1, //SKYRAT EDIT ADDITION + /obj/item/flashlight/seclite = 1, + /obj/item/modular_computer/pda/heads/hos =1, ) - belt = /obj/item/modular_computer/pda/heads/hos + belt = /obj/item/storage/belt/security/full =1, ears = /obj/item/radio/headset/heads/hos/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black/security //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/gloves/color/black diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 47ce1982604..02659b2bf25 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -209,8 +209,10 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) suit_store = /obj/item/gun/energy/disabler backpack_contents = list( /obj/item/evidencebag = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/modular_computer/pda/security = 1, ) - belt = /obj/item/modular_computer/pda/security + belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/headset_sec/alt gloves = /obj/item/clothing/gloves/color/black/security //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/security_garrison //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/head/helmet/sec diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index f0e8f0cdc93..bb028ad7add 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -53,8 +53,11 @@ suit_store = /obj/item/gun/energy/disabler backpack_contents = list( /obj/item/evidencebag = 1, + /obj/item/modular_computer/pda/warden = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/storage/box/gunset/glock17 = 1, ) - belt = /obj/item/modular_computer/pda/warden + belt = /obj/item/storage/belt/security/full = 1, ears = /obj/item/radio/headset/headset_sec/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black/security //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/gloves/color/black diff --git a/modular_skyrat/modules/blueshield/code/blueshield.dm b/modular_skyrat/modules/blueshield/code/blueshield.dm index f9d39f4fe76..087f8146098 100644 --- a/modular_skyrat/modules/blueshield/code/blueshield.dm +++ b/modular_skyrat/modules/blueshield/code/blueshield.dm @@ -62,6 +62,7 @@ head = /obj/item/clothing/head/beret/blueshield box = /obj/item/storage/box/survival/security belt = /obj/item/modular_computer/pda/security + r_pocket = /obj/item/flashlight/seclite id = /obj/item/card/id/advanced/centcom id_trim = /datum/id_trim/job/blueshield diff --git a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm index 5930d4c1747..f56de7887ae 100644 --- a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm +++ b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm @@ -44,7 +44,7 @@ name = "Nanotrasen Consultant" jobtype = /datum/job/nanotrasen_consultant - belt = /obj/item/modular_computer/pda/nanotrasen_consultant + belt = /obj/item/storage/belt/security/peacekeeper glasses = /obj/item/clothing/glasses/sunglasses ears = /obj/item/radio/headset/heads/nanotrasen_consultant gloves = /obj/item/clothing/gloves/combat @@ -55,6 +55,7 @@ backpack_contents = list( /obj/item/melee/baton/telescopic = 1, /obj/item/storage/box/gunset/nanotrasen_consultant = 1, + /obj/item/modular_computer/pda/nanotrasen_consultant = 1, ) skillchips = list(/obj/item/skillchip/disk_verifier) @@ -124,7 +125,9 @@ new /obj/item/ammo_box/magazine/m45a5(src) new /obj/item/ammo_box/magazine/m45a5(src) new /obj/item/ammo_box/magazine/m45a5(src) - + new /obj/item/ammo_box/magazine/m45a5(src) + new /obj/item/ammo_box/magazine/m45a5(src) + new /obj/item/ammo_box/magazine/m45a5(src) /obj/structure/closet/secure_closet/nanotrasen_consultant/station name = "\proper nanotrasen consultant's locker" diff --git a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm index efca4b31eb8..7e6f7430571 100644 --- a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm +++ b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm @@ -47,7 +47,7 @@ name = "Security Medic" jobtype = /datum/job/security_medic - belt = /obj/item/modular_computer/pda/security + belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/headset_medsec uniform = /obj/item/clothing/under/rank/security/peacekeeper/security_medic gloves = /obj/item/clothing/gloves/latex/nitrile @@ -58,6 +58,7 @@ head = /obj/item/clothing/head/beret/sec/peacekeeper/security_medic backpack_contents = list( /obj/item/storage/box/gunset/firefly = 1, + /obj/item/modular_computer/pda/security = 1, ) backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec From 43815f10cf86d3f09fed67b51186094b7bf85781 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:35:18 +0700 Subject: [PATCH 02/31] should be good --- code/modules/jobs/job_types/head_of_security.dm | 2 +- modular_skyrat/modules/blueshield/code/special.dm | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 9f6eedce476..31ae0411026 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -58,7 +58,7 @@ /obj/item/flashlight/seclite = 1, /obj/item/modular_computer/pda/heads/hos =1, ) - belt = /obj/item/storage/belt/security/full =1, + belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/heads/hos/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black/security //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/gloves/color/black diff --git a/modular_skyrat/modules/blueshield/code/special.dm b/modular_skyrat/modules/blueshield/code/special.dm index 3e80dbfed24..41954e2dfd0 100644 --- a/modular_skyrat/modules/blueshield/code/special.dm +++ b/modular_skyrat/modules/blueshield/code/special.dm @@ -1,7 +1,7 @@ -/obj/item/gun/energy/e_gun/revolver //The virgin gun. +/obj/item/gun/energy/e_gun/revolver //The gun fit for a kitsune name = "X-R12 energy revolver" desc = "An experimental model advanced energy weapon with the capacity to shoot both electrodes and lasers, used by many private defense contractors from Romulus to New Moscow, its also rather heavy and would certainly hurt to get pistol whipped by." - force = 16 + force = 12 ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser/blueshield) ammo_x_offset = 1 charge_sections = 4 @@ -22,9 +22,9 @@ /obj/item/stock_parts/cell/blueshield name = "internal revolver power cell" maxcharge = 1200 - chargerate = 300 + chargerate = 105 -/obj/item/gun/energy/e_gun/revolver/pdw9 //The chad gun. +/obj/item/gun/energy/e_gun/revolver/pdw9 //The gun fit for a real man name = "PDW-9 taser pistol" desc = "A military grade energy sidearm, used by many militia forces throughout the local sector. It comes with an internally recharging battery which is slow to recharge." ammo_x_offset = 2 @@ -34,7 +34,7 @@ /obj/item/stock_parts/cell/pdw9 name = "internal pistol power cell" - maxcharge = 1000 + maxcharge = 1200 chargerate = 300 var/obj/item/gun/energy/e_gun/revolver/pdw9/parent From dc5b341c60dd35abe7cef42ca3e4b7667563b401 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:39:14 +0700 Subject: [PATCH 03/31] fixed --- code/modules/jobs/job_types/warden.dm | 2 +- modular_skyrat/modules/blueshield/code/special.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index bb028ad7add..aa253eb4fbb 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -57,7 +57,7 @@ /obj/item/flashlight/seclite = 1, /obj/item/storage/box/gunset/glock17 = 1, ) - belt = /obj/item/storage/belt/security/full = 1, + belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/headset_sec/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black/security //SKYRAT EDIT CHANGE - Original: /obj/item/clothing/gloves/color/black diff --git a/modular_skyrat/modules/blueshield/code/special.dm b/modular_skyrat/modules/blueshield/code/special.dm index 41954e2dfd0..a99c4f4b8fb 100644 --- a/modular_skyrat/modules/blueshield/code/special.dm +++ b/modular_skyrat/modules/blueshield/code/special.dm @@ -22,7 +22,7 @@ /obj/item/stock_parts/cell/blueshield name = "internal revolver power cell" maxcharge = 1200 - chargerate = 105 + chargerate = 105 //Hit your shot and don't complain, it's self recharging. /obj/item/gun/energy/e_gun/revolver/pdw9 //The gun fit for a real man name = "PDW-9 taser pistol" From 372f921fcaefc9bae71a305593fd489e24161176 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:40:23 +0700 Subject: [PATCH 04/31] Update blueshield.dm --- modular_skyrat/modules/blueshield/code/blueshield.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_skyrat/modules/blueshield/code/blueshield.dm b/modular_skyrat/modules/blueshield/code/blueshield.dm index 087f8146098..c7df4570b67 100644 --- a/modular_skyrat/modules/blueshield/code/blueshield.dm +++ b/modular_skyrat/modules/blueshield/code/blueshield.dm @@ -54,6 +54,8 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses backpack_contents = list( /obj/item/storage/box/gunset/blueshield = 1, + /obj/item/gun/energy/e_gun/revolver = 1, + /obj/item/storage/medkit/tactical/blueshield = 1, /obj/item/melee/baton/security/loaded = 1,) implants = list(/obj/item/implant/mindshield) backpack = /obj/item/storage/backpack/blueshield From a8ef4cff50c845bdd8839d77fa2d87554a9da957 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:52:11 +0700 Subject: [PATCH 05/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 31ae0411026..b3ed39c885a 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -54,7 +54,6 @@ suit_store = /obj/item/gun/energy/e_gun //KEPLER EDIT RESTORATION backpack_contents = list( /obj/item/evidencebag = 1, - /obj/item/storage/box/gunset/glock18_hos = 1, //SKYRAT EDIT ADDITION /obj/item/flashlight/seclite = 1, /obj/item/modular_computer/pda/heads/hos =1, ) @@ -87,3 +86,19 @@ head = null mask = /obj/item/clothing/mask/gas/sechailer internals_slot = ITEM_SLOT_SUITSTORE + +/obj/item/choice_beacon/head_of_security + name = "gun choice beacon" + desc = "whatever you choose will determine the outcome of space station 13 and the fate of the company so choose wisely."" + company_source = "Romulus Shipping Company" + company_message = span_bold("Copy that [user] supply pod enroute!") + +/obj/item/choice_beacon/head_of_security/generate_display_names() + var/static/list/hosgun_list + if(!hosgun_list) + hosgun_list = list() + for(var/obj/item/storage/box/hosgun/box as anything in typesof(/obj/item/storage/box/hos)) + hosgun_list[initial(box.name)] = box + return hosgun_list + + From c615de3c90f88394eab0b97db9a9113ef5fbef93 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 00:23:09 +0700 Subject: [PATCH 06/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index b3ed39c885a..c387e5568c8 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -97,8 +97,10 @@ var/static/list/hosgun_list if(!hosgun_list) hosgun_list = list() - for(var/obj/item/storage/box/hosgun/box as anything in typesof(/obj/item/storage/box/hos)) + for(var/obj/item/storage/box/hosgun/box as anything in typesof(/obj/item/storage/box/hosgun)) hosgun_list[initial(box.name)] = box return hosgun_list +/obj/item/storage/box/hosgun/Populate_contents() + From 1de28b8334b1c7bcec1d47bfd3c6e631a6f0658d Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 11:02:33 +0700 Subject: [PATCH 07/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index c387e5568c8..03f81f348eb 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -89,7 +89,7 @@ /obj/item/choice_beacon/head_of_security name = "gun choice beacon" - desc = "whatever you choose will determine the outcome of space station 13 and the fate of the company so choose wisely."" + desc = "whatever you choose will determine the outcome of space station 13 and the fate of the company so choose wisely." company_source = "Romulus Shipping Company" company_message = span_bold("Copy that [user] supply pod enroute!") @@ -101,6 +101,7 @@ hosgun_list[initial(box.name)] = box return hosgun_list -/obj/item/storage/box/hosgun/Populate_contents() - +/obj/item/storage/box/hosgun/glock/PopulateContents() + . = ..() + new /obj/item/gun/ballistic/automatic/pistol/m45a5/nomag(src) From a7d3332b2813b6404a9ea348d4d0d8ab2a1ecbea Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 12:10:15 +0700 Subject: [PATCH 08/31] the revolver sprite is in! --- modular_zubbers/icons/obj/reshirevolver.dmi | Bin 0 -> 510 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modular_zubbers/icons/obj/reshirevolver.dmi diff --git a/modular_zubbers/icons/obj/reshirevolver.dmi b/modular_zubbers/icons/obj/reshirevolver.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b5a1c8d958cdbc5afc7b99489185212ef33f0e55 GIT binary patch literal 510 zcmVV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# zaV)qvGg33tGfIFQV z?)4yqE>0&~USg86;^%ohrG*O^V*or*E@~qDkvzo}nDfeGLtd73)5O)V+8yawT433> zw=Mv@?+IgZO(cO*YLHTPF%aDfY2b7_p_<@AV2p`ht(ZPRi0Er=eY^;)IP)E7V~o5j zlCkhl>_>a?lhik6Q0y_?AY>fj_x@?1#sH|Nc+J74kAN1`XpI25?b|Zv0d9i!YOyB( z0PhF)zwagl-?#hxIoO5sj|5>4js$@NuXJ%fZ{yz*JdR_uw*UYD07*qoM6N<$g5o~a A8UO$Q literal 0 HcmV?d00001 From 5da1ac779cabe066ba32743a8c0e8fd2efe607d4 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:13:53 +0700 Subject: [PATCH 09/31] testing required --- .../jobs/job_types/head_of_security.dm | 13 +++- .../code/modules/projectiles/guns/gun.dm | 3 + .../modules/blueshield/code/special.dm | 1 + .../code/game/objects/items/reshirevolver.dm | 61 ++++++++++++++++++ modular_zubbers/icons/obj/pouches.dmi | Bin 0 -> 700 bytes 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 modular_zubbers/code/game/objects/items/reshirevolver.dm create mode 100644 modular_zubbers/icons/obj/pouches.dmi diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 03f81f348eb..cb5810a02cf 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -55,7 +55,8 @@ backpack_contents = list( /obj/item/evidencebag = 1, /obj/item/flashlight/seclite = 1, - /obj/item/modular_computer/pda/heads/hos =1, + /obj/item/modular_computer/pda/heads/hos = 1, + /obj/item/storage/box/gunset/glock18_hos = 1, ) belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/heads/hos/alt @@ -87,12 +88,15 @@ mask = /obj/item/clothing/mask/gas/sechailer internals_slot = ITEM_SLOT_SUITSTORE +//TEST THIS OUT WHEN NEEDED + /obj/item/choice_beacon/head_of_security name = "gun choice beacon" desc = "whatever you choose will determine the outcome of space station 13 and the fate of the company so choose wisely." company_source = "Romulus Shipping Company" company_message = span_bold("Copy that [user] supply pod enroute!") + /obj/item/choice_beacon/head_of_security/generate_display_names() var/static/list/hosgun_list if(!hosgun_list) @@ -103,5 +107,10 @@ /obj/item/storage/box/hosgun/glock/PopulateContents() . = ..() - new /obj/item/gun/ballistic/automatic/pistol/m45a5/nomag(src) + new /obj/item/storage/box/gunset/glock18_hos(src) + +/obj/item/storage/box/hosgun/revolver/PopulateContents() + . = ..() + new /obj/item/storage/box/gunset/hos_revolver(src) + diff --git a/modular_skyrat/master_files/code/modules/projectiles/guns/gun.dm b/modular_skyrat/master_files/code/modules/projectiles/guns/gun.dm index c7787f8c33f..04c76957ebf 100644 --- a/modular_skyrat/master_files/code/modules/projectiles/guns/gun.dm +++ b/modular_skyrat/master_files/code/modules/projectiles/guns/gun.dm @@ -215,6 +215,9 @@ . += "
It has [span_abductor("✌︎︎♌︎︎♎︎︎◆︎︎♍︎︎⧫︎︎❄︎♏︎♍︎♒︎")] engraved into the photon accelerator." if(COMPANY_REMOVED) . += "
It has had [span_grey("all identifying marks scrubbed off")]." + if(COMPANY_ROMULUS) + . += "
It has [span_blue("Romulus Technology")] etched into the barrel." + /obj/item/gun/proc/fire_select() var/mob/living/carbon/human/user = usr diff --git a/modular_skyrat/modules/blueshield/code/special.dm b/modular_skyrat/modules/blueshield/code/special.dm index a99c4f4b8fb..b118ceb0387 100644 --- a/modular_skyrat/modules/blueshield/code/special.dm +++ b/modular_skyrat/modules/blueshield/code/special.dm @@ -18,6 +18,7 @@ w_class = WEIGHT_CLASS_NORMAL worn_icon = 'modular_skyrat/modules/aesthetics/guns/icons/guns_back.dmi' worn_icon_state = "bsrevolver" + company_flag = COMPANY_ROMULUS /obj/item/stock_parts/cell/blueshield name = "internal revolver power cell" diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm new file mode 100644 index 00000000000..fa5735ef486 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -0,0 +1,61 @@ +/obj/item/gun/ballistic/revolver/hos_revolver + name = "\improper HR-460MS 'Tracker'" + desc = "A brutally effectve revolver by Romulus officers prior to destruction of the planet, if the initial damage did not kill, the bleedout would. Uses the brutal .460 Rowland ammo." + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rowland + icon = 'modular_zubbers/icons/obj/reshirevolver.dmi' + icon_state = "tracker" + fire_sound = 'modular_skyrat/modules/sec_haul/sound/hpistol_fire.ogg' + company_flag = COMPANY_ROMULUS + projectile_damage_multiplier = 1.6 //48 Damages, still a lot but not too much +//With the damage multipler, it would crit in 4, kill in 6. Does not take into account armours. + +/obj/item/ammo_box/magazine/internal/cylinder/rowland + name = "\improper rowland revolver cylinder" + ammo_type = /obj/item/ammo_casing/b460 + caliber = CALIBER_460 + +/obj/item/storage/bag/b460reloadpouch + name = "reload pouch" + desc = "A pouch for holding loose casings for .460 Rowland ammo. incompatible with anything else" + icon = 'modular_zubbers/icons/obj/pouches.dmi' + icon_state = "reloadpouch" + +/obj/item/storage/bag/b460/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL + atom_storage.max_total_storage = 24 + atom_storage.max_slots = 1 + atom_storage.numerical_stacking = TRUE + atom_storage.can_hold = typecacheof(list(/obj/item/ammo_casing/b460)) + +/obj/item/storage/bag/b460/PopulateContents() + .=..() + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + new /obj/item/ammo_casing/b460(src) + +/obj/item/storage/box/gunset/hos_revolver/PopulateContents() + . = ..() + new /obj/item/gun/ballistic/revolver/hos_revolver(src) + new /obj/item/storage/bag/b460reloadpouch(src) \ No newline at end of file diff --git a/modular_zubbers/icons/obj/pouches.dmi b/modular_zubbers/icons/obj/pouches.dmi new file mode 100644 index 0000000000000000000000000000000000000000..24b2462e5b3529051807b0512f483d5024dea7eb GIT binary patch literal 700 zcmV;t0z>_YP)Z zhK5T^OH*HNzP`RzU~Lf*5m{nwK}1PbT3}XRYE@TTKtxDCLPcC;ZAnd0Pg7TBYH)3E zb7pICS6pOOUu^tJDSH3_00DGTPE!Ct=GbNc003`#R9JLGWpiV4X>fFDZ*Bkpc$`yK zaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBS zC^aWPF{L2CG&w_wi!&v&s2C_}$ic!2Q;YK-P^MsO455c&Tfa=-_x9DYFiWxHm(wx(9o z{uVkxhafudh1`;cuIbW{z0P90XY9x(*fqKW(-eEc{HC?vfn^IR_MLv;bq~k}Ll$^6 z_UywW-#>0FV1X|TVUI>9r)OSc77Na4?1f@oX00;KsM&Ve6d``&wwv(yjm{iJdlZ=NKDfdTjT#=B}Ve90Mqq`Ouexs zRiM9PiijCT`VjaFD$k1o05gCR@|?Xufhqt$stil$46G)oDy+&9l;VMAeX4asT|*7P iK9Y!jm`ytF|2JRPa3#XPCLl2Y0000 Date: Tue, 11 Apr 2023 13:16:57 +0700 Subject: [PATCH 10/31] Update tgstation.dme --- tgstation.dme | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 7c5486aef7f..636a6526d1c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6694,9 +6694,13 @@ #include "modular_zubbers\code\datums\bubber_quirks\hydrophilic.dm" #include "modular_zubbers\code\datums\id_trim\jobs.dm" #include "modular_zubbers\code\game\area\areas\station.dm" +#include "modular_zubbers\code\game\objects\effects\decals.dm" #include "modular_zubbers\code\game\objects\effects\landmarks.dm" #include "modular_zubbers\code\game\objects\effects\items\plushes.dm" +#include "modular_zubbers\code\game\objects\items\holy_weapons.dm" +#include "modular_zubbers\code\game\objects\items\reshirevolver.dm" #include "modular_zubbers\code\game\objects\items\food\misc.dm" +#include "modular_zubbers\code\modules\_defines.dm" #include "modular_zubbers\code\modules\clothing\head\helmet.dm" #include "modular_zubbers\code\modules\clothing\outfits\plasmaman.dm" #include "modular_zubbers\code\modules\clothing\suits\armor.dm" From cfb5073fd6150232d46e861cc4ff8ba23a3bbac1 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:32:55 +0700 Subject: [PATCH 11/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index cb5810a02cf..e6809e877c7 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -108,9 +108,16 @@ /obj/item/storage/box/hosgun/glock/PopulateContents() . = ..() new /obj/item/storage/box/gunset/glock18_hos(src) + new /obj/item/ammo_box/c9mm(src) + new /obj/item/ammo_box/c9mm(src) + new /obj/item/storage/box/hecu_rations(src) /obj/item/storage/box/hosgun/revolver/PopulateContents() . = ..() new /obj/item/storage/box/gunset/hos_revolver(src) - + new /obj/item/clothing/neck/hos/redsec(src) + new /obj/item/clothing/under/rank/security/head_of_security/redsec(src) + new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/redsec(src) + new /obj/item/clothing/shoes/jackboots/sec/redsec(src) + new /obj/item/storage/box/nri_rations(src) From 44da5decaaef211bcef2845994e33ead1e36a59c Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:38:58 +0700 Subject: [PATCH 12/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index e6809e877c7..2b28244f2af 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -94,7 +94,7 @@ name = "gun choice beacon" desc = "whatever you choose will determine the outcome of space station 13 and the fate of the company so choose wisely." company_source = "Romulus Shipping Company" - company_message = span_bold("Copy that [user] supply pod enroute!") + company_message = span_bold("Copy that SS13, supply pod enroute!") /obj/item/choice_beacon/head_of_security/generate_display_names() From a39dbe2b1f3540afd989045d89c148930c9b75ab Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:52:01 +0700 Subject: [PATCH 13/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 2b28244f2af..74b6c4f90b2 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -115,7 +115,7 @@ /obj/item/storage/box/hosgun/revolver/PopulateContents() . = ..() new /obj/item/storage/box/gunset/hos_revolver(src) - new /obj/item/clothing/neck/hos/redsec(src) + new /obj/item/clothing/neck/cloak/hos/redsec(src) new /obj/item/clothing/under/rank/security/head_of_security/redsec(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/redsec(src) new /obj/item/clothing/shoes/jackboots/sec/redsec(src) From 3451328d7dc47b9e73f460d0bc46947a26862b30 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:52:40 +0700 Subject: [PATCH 14/31] Update gun.dm --- code/__DEFINES/~skyrat_defines/gun.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__DEFINES/~skyrat_defines/gun.dm b/code/__DEFINES/~skyrat_defines/gun.dm index 6d2d4adcbaa..8450fd5c61f 100644 --- a/code/__DEFINES/~skyrat_defines/gun.dm +++ b/code/__DEFINES/~skyrat_defines/gun.dm @@ -18,3 +18,4 @@ #define COMPANY_JARNSMIOUR (1<<13) #define COMPANY_ABDUCTOR (1<<14) #define COMPANY_REMOVED (1<<15) +#define COMPANY_ROMULUS (1<<16) From ac622fae41e37362fc734f1196cae611c0a1dfb9 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 14:42:39 +0700 Subject: [PATCH 15/31] Update reshirevolver.dm --- modular_zubbers/code/game/objects/items/reshirevolver.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index fa5735ef486..536d556cd45 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -58,4 +58,4 @@ /obj/item/storage/box/gunset/hos_revolver/PopulateContents() . = ..() new /obj/item/gun/ballistic/revolver/hos_revolver(src) - new /obj/item/storage/bag/b460reloadpouch(src) \ No newline at end of file + new /obj/item/storage/bag/b460reloadpouch(src) From cc4d6dbfa365ad99803c1ecb383f8dfcb70a6ef2 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 14:44:37 +0700 Subject: [PATCH 16/31] Update reshirevolver.dm --- modular_zubbers/code/game/objects/items/reshirevolver.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index 536d556cd45..de372c538bd 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -19,6 +19,9 @@ desc = "A pouch for holding loose casings for .460 Rowland ammo. incompatible with anything else" icon = 'modular_zubbers/icons/obj/pouches.dmi' icon_state = "reloadpouch" + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + resistance_flags = FLAMMABLE /obj/item/storage/bag/b460/Initialize(mapload) . = ..() From 41062561d3fac2cbb06b9ce2cf02da6e890732da Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 16:43:26 +0700 Subject: [PATCH 17/31] Update reshirevolver.dm --- modular_zubbers/code/game/objects/items/reshirevolver.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index de372c538bd..2b3814e4101 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -23,7 +23,7 @@ w_class = WEIGHT_CLASS_BULKY resistance_flags = FLAMMABLE -/obj/item/storage/bag/b460/Initialize(mapload) +/obj/item/storage/bag/b460reloadpouch/Initialize(mapload) . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL atom_storage.max_total_storage = 24 @@ -31,7 +31,7 @@ atom_storage.numerical_stacking = TRUE atom_storage.can_hold = typecacheof(list(/obj/item/ammo_casing/b460)) -/obj/item/storage/bag/b460/PopulateContents() +/obj/item/storage/bag/b460reloadpouch/PopulateContents() .=..() new /obj/item/ammo_casing/b460(src) new /obj/item/ammo_casing/b460(src) From fdd156df8933176e4daae993a060e818953c2410 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Tue, 11 Apr 2023 19:01:18 +0700 Subject: [PATCH 18/31] an update to the revolver again --- .../code/game/objects/items/reshirevolver.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index 2b3814e4101..1796c72abe7 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -11,6 +11,7 @@ /obj/item/ammo_box/magazine/internal/cylinder/rowland name = "\improper rowland revolver cylinder" + max_ammo = 6 ammo_type = /obj/item/ammo_casing/b460 caliber = CALIBER_460 @@ -26,13 +27,15 @@ /obj/item/storage/bag/b460reloadpouch/Initialize(mapload) . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL - atom_storage.max_total_storage = 24 - atom_storage.max_slots = 1 + atom_storage.max_total_storage = 30 + atom_storage.max_slots = 2 atom_storage.numerical_stacking = TRUE - atom_storage.can_hold = typecacheof(list(/obj/item/ammo_casing/b460)) + atom_storage.set_holdable(list( + /obj/item/ammo_casing/b460, + )) /obj/item/storage/bag/b460reloadpouch/PopulateContents() - .=..() + . = ..() new /obj/item/ammo_casing/b460(src) new /obj/item/ammo_casing/b460(src) new /obj/item/ammo_casing/b460(src) From 1a736db66674c609c17316187d9553619d4bcc23 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Wed, 12 Apr 2023 00:12:54 +0700 Subject: [PATCH 19/31] Update reshirevolver.dm --- modular_zubbers/code/game/objects/items/reshirevolver.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index 1796c72abe7..d3de687970e 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -28,7 +28,7 @@ . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL atom_storage.max_total_storage = 30 - atom_storage.max_slots = 2 + atom_storage.max_slots = 30 atom_storage.numerical_stacking = TRUE atom_storage.set_holdable(list( /obj/item/ammo_casing/b460, From 1fdf85e3e0418af62ca316bae3ef1110ead6e75b Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Wed, 12 Apr 2023 12:09:53 +0700 Subject: [PATCH 20/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 74b6c4f90b2..5b9c50ff009 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -56,7 +56,7 @@ /obj/item/evidencebag = 1, /obj/item/flashlight/seclite = 1, /obj/item/modular_computer/pda/heads/hos = 1, - /obj/item/storage/box/gunset/glock18_hos = 1, + /obj/item/choice_beacon/head_of_security = 1, ) belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/heads/hos/alt From 9a01bb86c421f001dad95a103ecd2454d3e41b3f Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Wed, 12 Apr 2023 21:53:04 +0700 Subject: [PATCH 21/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 5b9c50ff009..8ce49830351 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -105,6 +105,9 @@ hosgun_list[initial(box.name)] = box return hosgun_list +/obj/item/storage/box/hosgun/glock + name = "Glock 18" + /obj/item/storage/box/hosgun/glock/PopulateContents() . = ..() new /obj/item/storage/box/gunset/glock18_hos(src) @@ -112,6 +115,9 @@ new /obj/item/ammo_box/c9mm(src) new /obj/item/storage/box/hecu_rations(src) +/obj/item/storage/box/hosgun/revolver + name = "Heavy Revolver .460" + /obj/item/storage/box/hosgun/revolver/PopulateContents() . = ..() new /obj/item/storage/box/gunset/hos_revolver(src) From 88b5d49a7ff961345884bf259b5cda642c9937d9 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Thu, 13 Apr 2023 22:13:49 +0700 Subject: [PATCH 22/31] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 8ce49830351..0577de2ccb3 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -105,10 +105,10 @@ hosgun_list[initial(box.name)] = box return hosgun_list -/obj/item/storage/box/hosgun/glock +/obj/item/storage/box/hosgun name = "Glock 18" -/obj/item/storage/box/hosgun/glock/PopulateContents() +/obj/item/storage/box/hosgun/PopulateContents() . = ..() new /obj/item/storage/box/gunset/glock18_hos(src) new /obj/item/ammo_box/c9mm(src) From 5b45e412b4fe99e3b4dd8ae3ae543974e6bea199 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Fri, 14 Apr 2023 15:12:24 +0700 Subject: [PATCH 23/31] allowing it to work --- .../modules/jobs/job_types/head_of_security.dm | 18 ++++++++++++++---- .../code/game/objects/items/reshirevolver.dm | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 0577de2ccb3..5a3ffbaae94 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -106,24 +106,34 @@ return hosgun_list /obj/item/storage/box/hosgun - name = "Glock 18" + name = "Classic 3-round burst pistol 9mm" /obj/item/storage/box/hosgun/PopulateContents() - . = ..() new /obj/item/storage/box/gunset/glock18_hos(src) new /obj/item/ammo_box/c9mm(src) new /obj/item/ammo_box/c9mm(src) new /obj/item/storage/box/hecu_rations(src) + new /obj/item/storage/fancy/cigarettes/cigars(src) /obj/item/storage/box/hosgun/revolver - name = "Heavy Revolver .460" + name = "Romulus Officer Heavy Revolver .460" /obj/item/storage/box/hosgun/revolver/PopulateContents() - . = ..() new /obj/item/storage/box/gunset/hos_revolver(src) new /obj/item/clothing/neck/cloak/hos/redsec(src) new /obj/item/clothing/under/rank/security/head_of_security/redsec(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/redsec(src) new /obj/item/clothing/shoes/jackboots/sec/redsec(src) new /obj/item/storage/box/nri_rations(src) + new /obj/item/knife/combat(src) + +/obj/item/storage/box/hosgun/glock + name = "Solaris Police Dual 9mm Pistol" + +/obj/item/storage/box/hosgun/glock/PopulateContents() + new /obj/item/storage/box/gunset/glock17(src) + new /obj/item/storage/box/gunset/glock17(src) + new /obj/item/clothing/under/rank/security/head_of_security/peacekeeper/sol(src) + new /obj/item/clothing/neck/tie/red(src) + new /obj/item/storage/pill_bottle/probital(src) diff --git a/modular_zubbers/code/game/objects/items/reshirevolver.dm b/modular_zubbers/code/game/objects/items/reshirevolver.dm index d3de687970e..400f61c367f 100644 --- a/modular_zubbers/code/game/objects/items/reshirevolver.dm +++ b/modular_zubbers/code/game/objects/items/reshirevolver.dm @@ -17,10 +17,10 @@ /obj/item/storage/bag/b460reloadpouch name = "reload pouch" - desc = "A pouch for holding loose casings for .460 Rowland ammo. incompatible with anything else" + desc = "A pouch for holding loose casings for .460 Rowland ammo. incompatible with anything else. Fit on your belt too" icon = 'modular_zubbers/icons/obj/pouches.dmi' icon_state = "reloadpouch" - slot_flags = ITEM_SLOT_POCKETS + slot_flags = ITEM_SLOT_POCKETS | ITEM_SLOT_BELT w_class = WEIGHT_CLASS_BULKY resistance_flags = FLAMMABLE From d0d21e988d0f2970c614e7a1af68b5650905cc51 Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Fri, 14 Apr 2023 15:16:12 +0700 Subject: [PATCH 24/31] warden with glock 17 --- code/modules/jobs/job_types/warden.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index aa253eb4fbb..7a0ca04cf5d 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -55,7 +55,6 @@ /obj/item/evidencebag = 1, /obj/item/modular_computer/pda/warden = 1, /obj/item/flashlight/seclite = 1, - /obj/item/storage/box/gunset/glock17 = 1, ) belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/headset_sec/alt @@ -65,6 +64,7 @@ shoes = /obj/item/clothing/shoes/jackboots/sec l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld + r_hand = /obj/item/storage/box/gunset/glock17 backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec From 18bfe925740844336e793f13f51b03f28fe2d5af Mon Sep 17 00:00:00 2001 From: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Date: Fri, 14 Apr 2023 15:28:08 +0700 Subject: [PATCH 25/31] Update warden.dm --- code/modules/jobs/job_types/warden.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 7a0ca04cf5d..aa253eb4fbb 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -55,6 +55,7 @@ /obj/item/evidencebag = 1, /obj/item/modular_computer/pda/warden = 1, /obj/item/flashlight/seclite = 1, + /obj/item/storage/box/gunset/glock17 = 1, ) belt = /obj/item/storage/belt/security/full ears = /obj/item/radio/headset/headset_sec/alt @@ -64,7 +65,6 @@ shoes = /obj/item/clothing/shoes/jackboots/sec l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld - r_hand = /obj/item/storage/box/gunset/glock17 backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec From e1616cc5753c66c31dc1c36463cd0bc1381110b0 Mon Sep 17 00:00:00 2001 From: ReturnToZender Date: Mon, 17 Apr 2023 09:04:34 -0500 Subject: [PATCH 26/31] Reverts to TG weapons Add: Changes some of the effects of the stunbaton back to TG --- code/game/objects/items/melee/baton.dm | 35 ++++++++------------ code/modules/projectiles/guns/energy/stun.dm | 2 +- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 4305e986c6e..85fea1f4649 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -385,21 +385,18 @@ /obj/item/melee/baton/security name = "stun baton" - desc = "A stun baton for incapacitating people with." - desc_controls = "Left click to stun, right click to harm." + desc = "A stun baton for incapacitating people with. Left click to stun, right click to harm." + icon_state = "stunbaton" inhand_icon_state = "baton" worn_icon_state = "baton" force = 10 - wound_bonus = 0 attack_verb_continuous = list("beats") attack_verb_simple = list("beat") - armor_type = /datum/armor/baton_security - throwforce = 7 - stamina_damage = 35 // SKYRAT EDIT - 4 baton crit now (Original: 45) + stamina_damage = 60 knockdown_time = 5 SECONDS clumsy_knockdown_time = 15 SECONDS cooldown = 2.5 SECONDS @@ -416,11 +413,6 @@ var/can_remove_cell = TRUE var/convertible = TRUE //if it can be converted with a conversion kit -/datum/armor/baton_security - bomb = 50 - fire = 80 - acid = 80 - /obj/item/melee/baton/security/Initialize(mapload) . = ..() if(preload_cell_type) @@ -428,20 +420,20 @@ log_mapping("[src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") else cell = new preload_cell_type(src) - RegisterSignal(src, COMSIG_PARENT_ATTACKBY, PROC_REF(convert)) + RegisterSignal(src, COMSIG_PARENT_ATTACKBY, .proc/convert) update_appearance() /obj/item/melee/baton/security/get_cell() return cell -/obj/item/melee/baton/security/suicide_act(mob/living/user) +/obj/item/melee/baton/security/suicide_act(mob/user) if(cell?.charge && active) user.visible_message(span_suicide("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!")) + . = (FIRELOSS) attack(user, user) - return FIRELOSS else user.visible_message(span_suicide("[user] is shoving the [name] down their throat! It looks like [user.p_theyre()] trying to commit suicide!")) - return OXYLOSS + . = (OXYLOSS) /obj/item/melee/baton/security/Destroy() if(cell) @@ -577,12 +569,12 @@ * After a period of time, we then check to see what stun duration we give. */ /obj/item/melee/baton/security/additional_effects_non_cyborg(mob/living/target, mob/living/user) - target.set_jitter_if_lower(40 SECONDS) - // target.set_confusion_if_lower(10 SECONDS) // SKYRAT EDIT REMOVAL - target.set_stutter_if_lower(16 SECONDS) + target.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE) + target.set_timed_status_effect(10 SECONDS, /datum/status_effect/confusion, only_if_higher = TRUE) + target.set_timed_status_effect(16 SECONDS, /datum/status_effect/speech/stutter, only_if_higher = TRUE) SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK) - addtimer(CALLBACK(src, PROC_REF(apply_stun_effect_end), target), 2 SECONDS) + addtimer(CALLBACK(src, .proc/apply_stun_effect_end, target), 2 SECONDS) /// After the initial stun period, we check to see if the target needs to have the stun applied. /obj/item/melee/baton/security/proc/apply_stun_effect_end(mob/living/target) @@ -590,8 +582,7 @@ if(!target.IsKnockdown()) to_chat(target, span_warning("Your muscles seize, making you collapse[trait_check ? ", but your body quickly recovers..." : "!"]")) - if(!trait_check) - target.Knockdown(knockdown_time) + target.Knockdown(knockdown_time * (trait_check ? 0.1 : 1)) /obj/item/melee/baton/security/get_wait_description() return span_danger("The baton is still charging!") @@ -624,7 +615,7 @@ scramble_mode() for(var/loops in 1 to rand(6, 12)) scramble_time = rand(5, 15) / (1 SECONDS) - addtimer(CALLBACK(src, PROC_REF(scramble_mode)), scramble_time*loops * (1 SECONDS)) + addtimer(CALLBACK(src, .proc/scramble_mode), scramble_time*loops * (1 SECONDS)) /obj/item/melee/baton/security/proc/scramble_mode() if (!cell || cell.charge < cell_hit_cost) diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 4e7552f4771..9278d59ff83 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -30,7 +30,7 @@ desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." icon_state = "disabler" inhand_icon_state = null - ammo_type = list(/obj/item/ammo_casing/energy/disabler/skyrat) // SKYRAT EDIT: ammo_type = list(/obj/item/ammo_casing/energy/disabler) + ammo_type = list(/obj/item/ammo_casing/energy/disabler) ammo_x_offset = 2 cell_type = /obj/item/stock_parts/cell/super // SKYRAT EDIT ADDITION From a994ec21f286459026bbab0bdc08a889c4c9bdc1 Mon Sep 17 00:00:00 2001 From: iero-srv <> Date: Mon, 17 Apr 2023 17:22:35 -0400 Subject: [PATCH 27/31] Status Indicators A Port from Polaris/Virgo --- .../status_indicator_defines.dm | 11 + .../code/modules/mob/living/living.dm | 3 + .../status_indicators/status_indicator.dm | 222 ++++++++++++++++++ .../status_indicator_pref.dm | 26 ++ .../icons/mob/status_indicators.dmi | Bin 0 -> 6751 bytes tgstation.dme | 4 + .../skyrat/status_indicators.tsx | 8 + 7 files changed, 274 insertions(+) create mode 100644 code/__DEFINES/~~bubber_defines/status_indicator_defines.dm create mode 100644 modular_zubbers/code/modules/mob/living/living.dm create mode 100644 modular_zubbers/code/modules/status_indicators/status_indicator.dm create mode 100644 modular_zubbers/code/modules/status_indicators/status_indicator_pref.dm create mode 100644 modular_zubbers/icons/mob/status_indicators.dmi create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/skyrat/status_indicators.tsx diff --git a/code/__DEFINES/~~bubber_defines/status_indicator_defines.dm b/code/__DEFINES/~~bubber_defines/status_indicator_defines.dm new file mode 100644 index 00000000000..57abd103b0d --- /dev/null +++ b/code/__DEFINES/~~bubber_defines/status_indicator_defines.dm @@ -0,0 +1,11 @@ +#define STUNNED "stunned" +#define WEAKEN "weakened" +#define PARALYSIS "paralysis" +#define SLEEPING "sleeping" +#define CONFUSED "confused" +#define PLANE_STATUS_INDICATOR -12 //Status Indicators that show over mobs' heads when certain things like stuns affect them. +#define STATUS_LAYER -2.1 +#define STATUS_INDICATOR_Y_OFFSET 2 // Offset from the edge of the icon sprite, so 32 pixels plus whatever number is here. +#define STATUS_INDICATOR_ICON_X_SIZE 0 // Don't need to care about the Y size due to the origin being on the bottom side. +#define STATUS_INDICATOR_ICON_MARGIN 0 // The space between two status indicators. We don't do this with the current icons. +#define DEFAULT_MOB_SCALE 1 diff --git a/modular_zubbers/code/modules/mob/living/living.dm b/modular_zubbers/code/modules/mob/living/living.dm new file mode 100644 index 00000000000..840c112204e --- /dev/null +++ b/modular_zubbers/code/modules/mob/living/living.dm @@ -0,0 +1,3 @@ +/mob/living/Initialize(mapload) + . = ..() + AddComponent(/datum/component/status_indicator) diff --git a/modular_zubbers/code/modules/status_indicators/status_indicator.dm b/modular_zubbers/code/modules/status_indicators/status_indicator.dm new file mode 100644 index 00000000000..e45f7abfd2d --- /dev/null +++ b/modular_zubbers/code/modules/status_indicators/status_indicator.dm @@ -0,0 +1,222 @@ + +GLOBAL_LIST_INIT(potential_indicators, list( + STUNNED = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = STUNNED), + WEAKEN = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = WEAKEN), + PARALYSIS = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = PARALYSIS), + SLEEPING = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = SLEEPING), + CONFUSED = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = CONFUSED), +)) + +/datum/component/status_indicator + var/list/status_indicators = null // Will become a list as needed. Contains our status indicator objects. Note, they are actually added to overlays, this just keeps track of what exists. + var/mob/living/attached_mob + +/// Returns true if the mob is weakened. Also known as floored. +/datum/component/status_indicator/proc/is_weakened() + if(!indicator_fakeouts() && \ + attached_mob.IsKnockdown() || \ + HAS_TRAIT(attached_mob, TRAIT_FLOORED) && \ + !HAS_TRAIT_FROM(attached_mob, TRAIT_FLOORED, BUCKLED_TRAIT) + ) + return TRUE + +/// Returns true if the mob is stunned. +/datum/component/status_indicator/proc/is_stunned() + if(!indicator_fakeouts() && \ + HAS_TRAIT_FROM(attached_mob, TRAIT_INCAPACITATED, TRAIT_STATUS_EFFECT(STAT_TRAIT)) || \ + HAS_TRAIT(attached_mob, TRAIT_CRITICAL_CONDITION) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(STAT_TRAIT)) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_IMMOBILIZED, CHOKEHOLD_TRAIT) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_INCAPACITATED, TRAIT_STATUS_EFFECT(STAT_TRAIT)) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(STAT_TRAIT)) + ) + return TRUE + +/// Returns true if the mob is paralyzed - for can't fight back purposes. +/datum/component/status_indicator/proc/is_paralyzed() + if(!indicator_fakeouts() && \ + attached_mob.IsParalyzed() || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_FLOORED, CHOKEHOLD_TRAIT) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(STAT_TRAIT)) || \ + HAS_TRAIT(attached_mob, TRAIT_CRITICAL_CONDITION) || \ + HAS_TRAIT_FROM(attached_mob, TRAIT_INCAPACITATED, STAMINA)) + return TRUE + +/// Returns true if the mob is unconcious for any reason. +/datum/component/status_indicator/proc/is_unconcious() + if(!indicator_fakeouts() && HAS_TRAIT(attached_mob, TRAIT_KNOCKEDOUT)) + return TRUE + +/// Returns true if the mob has confusion. +/datum/component/status_indicator/proc/is_confused() + if(!indicator_fakeouts() && attached_mob.has_status_effect(/datum/status_effect/confusion)) + return TRUE + +/datum/component/status_indicator/RegisterWithParent() + attached_mob = parent + // The Basics + RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(cut_indicators_overlays)) + RegisterSignal(parent, COMSIG_CARBON_HEALTH_UPDATE, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(check_indicators)) + // When things actually happen + RegisterSignal(parent, COMSIG_LIVING_STATUS_STUN, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_LIVING_STATUS_KNOCKDOWN, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_LIVING_STATUS_PARALYZE, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_LIVING_STATUS_IMMOBILIZE, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_LIVING_STATUS_UNCONSCIOUS, PROC_REF(status_indicator_evaluate)) + RegisterSignal(parent, COMSIG_MOB_LOGIN, PROC_REF(apply_pref_on_login)) + +/datum/component/status_indicator/proc/apply_pref_on_login() + var/atom/movable/screen/plane_master/game_world_upper_fov_hidden/status_indicator/local_status = locate() in attached_mob.client.screen + if(local_status) + . = attached_mob.client.prefs.read_preference(/datum/preference/toggle/enable_status_indicators) + local_status.alpha = (.) ? 255 : 0 + +/datum/component/status_indicator/UnregisterFromParent() + QDEL_NULL(status_indicators) + UnregisterSignal(attached_mob, COMSIG_LIVING_DEATH) + UnregisterSignal(attached_mob, COMSIG_CARBON_HEALTH_UPDATE) + UnregisterSignal(attached_mob, COMSIG_LIVING_LIFE) + UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_STUN) + UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_KNOCKDOWN) + UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_PARALYZE) + UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_IMMOBILIZE) + UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_UNCONSCIOUS) + attached_mob = null +/// This proc makes it so that mobs that have status indicators are checked to remove them, especially in fakeout situations. +/datum/component/status_indicator/proc/check_indicators() + if(status_indicators) + status_indicator_evaluate() + +/// Receives signals to update on carbon health updates. Checks if the mob is dead - if true, removes all the indicators. Then, we determine what status indicators the mob should carry or remove. +/datum/component/status_indicator/proc/status_indicator_evaluate() + SIGNAL_HANDLER + if(attached_mob.stat == DEAD) + return + else + weaken_indicator_update() + paralyzed_indicator_update() + stunned_indicator_update() + unconcious_indicator_update() + confused_indicator_update() + return +/// Cases in which no status indicators should appear above a mob, such as changeling revive and regen coma. +/datum/component/status_indicator/proc/indicator_fakeouts() + if(HAS_TRAIT(attached_mob, TRAIT_DEATHCOMA)) + return TRUE + return FALSE + +/datum/component/status_indicator/proc/weaken_indicator_update() + SIGNAL_HANDLER + is_weakened() ? add_status_indicator(WEAKEN) : remove_status_indicator(WEAKEN) +/datum/component/status_indicator/proc/paralyzed_indicator_update() + SIGNAL_HANDLER + is_paralyzed() ? add_status_indicator(PARALYSIS) : remove_status_indicator(PARALYSIS) +/datum/component/status_indicator/proc/stunned_indicator_update() + SIGNAL_HANDLER + is_stunned() ? add_status_indicator(STUNNED) : remove_status_indicator(STUNNED) +/datum/component/status_indicator/proc/unconcious_indicator_update() + SIGNAL_HANDLER + is_unconcious() ? add_status_indicator(SLEEPING) : remove_status_indicator(SLEEPING) +/datum/component/status_indicator/proc/confused_indicator_update() + SIGNAL_HANDLER + is_confused() ? add_status_indicator(CONFUSED) : remove_status_indicator(CONFUSED) + +/// Adds a status indicator to the mob. Takes an image as an argument. If it exists, it won't dupe it. +/datum/component/status_indicator/proc/add_status_indicator(image/prospective_indicator) + if(get_status_indicator(prospective_indicator)) // No duplicates, please. + return + + prospective_indicator = GLOB.potential_indicators[prospective_indicator] + prospective_indicator.loc = src + LAZYADD(status_indicators, prospective_indicator) + handle_status_indicators(prospective_indicator) + +/// Similar to add_status_indicator() but removes it instead, and nulls the list if it becomes empty as a result. +/datum/component/status_indicator/proc/remove_status_indicator(image/prospective_indicator) + prospective_indicator = get_status_indicator(prospective_indicator) + + attached_mob.cut_overlay(prospective_indicator) + LAZYREMOVE(status_indicators, prospective_indicator) + handle_status_indicators(prospective_indicator) + +/// Finds a status indicator on a mob. +/datum/component/status_indicator/proc/get_status_indicator(image/prospective_indicator) + + for(var/image/indicator in status_indicators) + if(indicator.icon_state == prospective_indicator) + return indicator + return LAZYACCESS(status_indicators, LAZYFIND(status_indicators, prospective_indicator)) + +/// Cuts all the indicators on a mob in a loop. +/datum/component/status_indicator/proc/cut_indicators_overlays() + SIGNAL_HANDLER + for(var/prospective_indicator in status_indicators) + attached_mob.cut_overlay(prospective_indicator) + +/// Refreshes the indicators over a mob's head. Should only be called when adding or removing a status indicator with the above procs, +/// or when the mob changes size visually for some reason. +/datum/component/status_indicator/proc/handle_status_indicators(image/prospective_indicator) + // First, get rid of all the overlays. + + cut_indicators_overlays() + + if(!LAZYLEN(status_indicators)) + return + + var/mob/living/carbon/my_carbon_mob = attached_mob + + var/icon_scale = get_icon_scale(my_carbon_mob) + + if(my_carbon_mob.stat == DEAD) + cut_indicators_overlays() + return + + // Now put them back on in the right spot. + var/our_sprite_x = 16 * icon_scale + var/our_sprite_y = 24 * icon_scale + + var/x_offset = our_sprite_x // Add your own offset here later if you want. + var/y_offset = our_sprite_y + STATUS_INDICATOR_Y_OFFSET + + // Calculates how 'long' the row of indicators and the margin between them should be. + // The goal is to have the center of that row be horizontally aligned with the sprite's center. + var/expected_status_indicator_length = (STATUS_INDICATOR_ICON_X_SIZE * status_indicators.len) + (STATUS_INDICATOR_ICON_MARGIN * max(status_indicators.len - 1, 0)) + var/current_x_position = (x_offset / 2) - (expected_status_indicator_length / 2) + + // In /mob/living's `update_transform()`, the sprite is horizontally shifted when scaled up, so that the center of the sprite doesn't move to the right. + // Because of that, this adjustment needs to happen with the future indicator row as well, or it will look bad. + current_x_position -= 16 * (icon_scale - DEFAULT_MOB_SCALE) + + // Now the indicator row can actually be built. + for(var/all_indicators in status_indicators) + var/image/indicator = all_indicators + + // This is a semi-HUD element, in a similar manner as medHUDs, in that they're 'above' everything else in the world, + // but don't pierce obfuscation layers such as blindness or darkness, unlike actual HUD elements like inventory slots. + indicator.plane = GAME_PLANE_UPPER_FOV_HIDDEN + indicator.layer = STATUS_LAYER + indicator.appearance_flags = PIXEL_SCALE|TILE_BOUND|NO_CLIENT_COLOR|RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM|KEEP_APART + indicator.pixel_y = y_offset + indicator.pixel_x = current_x_position + my_carbon_mob.add_overlay(indicator) + // Adding the margin space every time saves a conditional check on the last iteration, + // and it won't cause any issues since no more icons will be added, and the var is not used for anything else. + current_x_position += STATUS_INDICATOR_ICON_X_SIZE + STATUS_INDICATOR_ICON_MARGIN + +/datum/component/status_indicator/proc/get_icon_scale(livingmob) + if(!iscarbon(livingmob)) // normal mobs are always 1 for scale - hopefully all borgs and simplemobs get this one + return DEFAULT_MOB_SCALE + var/mob/living/carbon/passed_mob = livingmob // we're possibly a player! We have size prefs! + var/mysize = (passed_mob.dna?.current_body_size ? passed_mob.dna.current_body_size : DEFAULT_MOB_SCALE) + return mysize + +/atom/movable/screen/plane_master/game_world_upper_fov_hidden/status_indicator + name = "Status Indicator Plane" + documentation = "Status Indicator Plane" + plane = GAME_PLANE_UPPER_FOV_HIDDEN + start_hidden = FALSE + +#undef STATUS_INDICATOR_Y_OFFSET +#undef STATUS_INDICATOR_ICON_X_SIZE +#undef STATUS_INDICATOR_ICON_MARGIN diff --git a/modular_zubbers/code/modules/status_indicators/status_indicator_pref.dm b/modular_zubbers/code/modules/status_indicators/status_indicator_pref.dm new file mode 100644 index 00000000000..87a8fd20f18 --- /dev/null +++ b/modular_zubbers/code/modules/status_indicators/status_indicator_pref.dm @@ -0,0 +1,26 @@ +/datum/preference/toggle/enable_status_indicators + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "enable_status_indicators" + savefile_identifier = PREFERENCE_PLAYER + +/datum/preference/toggle/enable_status_indicators/create_default_value() + return TRUE + + +/datum/preference/toggle/enable_status_indicators/apply_to_client(client/client, value) + if(client.mob) + var/datum/component/status_indicator/mystatus = client.mob.GetComponent(/datum/component/status_indicator) + if(mystatus) + mystatus.apply_pref_on_login() + +/* if(client && client.prefs) + . = client?.prefs?.read_preference(/datum/preference/toggle/enable_status_indicators) + var/atom/movable/screen/plane_master/status/status_indicators = locate() in client.screen + if(isnull(status_indicators)) + new /atom/movable/screen/plane_master/status in client.screen + status_indicators = locate() in client.screen + if(length(status_indicators) < 1) + pop(status_indicators) + (.) ? (status_indicators.alpha = 255) : (status_indicators.alpha = 0) + + */ diff --git a/modular_zubbers/icons/mob/status_indicators.dmi b/modular_zubbers/icons/mob/status_indicators.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9c80c2bf10aa31c4aff9026441d18bcee8625436 GIT binary patch literal 6751 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 Date: Mon, 17 Apr 2023 17:57:27 -0400 Subject: [PATCH 28/31] dun dun duuunnnn --- .../modules/status_indicators/status_indicator.dm | 14 ++++++-------- tgstation.dme | 7 +++---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/modular_zubbers/code/modules/status_indicators/status_indicator.dm b/modular_zubbers/code/modules/status_indicators/status_indicator.dm index e45f7abfd2d..43e1319adb4 100644 --- a/modular_zubbers/code/modules/status_indicators/status_indicator.dm +++ b/modular_zubbers/code/modules/status_indicators/status_indicator.dm @@ -1,10 +1,10 @@ GLOBAL_LIST_INIT(potential_indicators, list( - STUNNED = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = STUNNED), - WEAKEN = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = WEAKEN), - PARALYSIS = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = PARALYSIS), - SLEEPING = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = SLEEPING), - CONFUSED = image(icon = 'modular_skyrat/master_files/icons/mob/status_indicators.dmi', icon_state = CONFUSED), + STUNNED = image(icon = 'modular_zubbers/icons/mob/status_indicators.dmi', icon_state = STUNNED), + WEAKEN = image(icon = 'modular_zubbers/icons/mob/status_indicators.dmi', icon_state = WEAKEN), + PARALYSIS = image(icon = 'modular_zubbers/icons/mob/status_indicators.dmi', icon_state = PARALYSIS), + SLEEPING = image(icon = 'modular_zubbers/icons/mob/status_indicators.dmi', icon_state = SLEEPING), + CONFUSED = image(icon = 'modular_zubbers/icons/mob/status_indicators.dmi', icon_state = CONFUSED), )) /datum/component/status_indicator @@ -56,8 +56,7 @@ GLOBAL_LIST_INIT(potential_indicators, list( attached_mob = parent // The Basics RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(cut_indicators_overlays)) - RegisterSignal(parent, COMSIG_CARBON_HEALTH_UPDATE, PROC_REF(status_indicator_evaluate)) - RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(check_indicators)) + RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(status_indicator_evaluate)) // When things actually happen RegisterSignal(parent, COMSIG_LIVING_STATUS_STUN, PROC_REF(status_indicator_evaluate)) RegisterSignal(parent, COMSIG_LIVING_STATUS_KNOCKDOWN, PROC_REF(status_indicator_evaluate)) @@ -75,7 +74,6 @@ GLOBAL_LIST_INIT(potential_indicators, list( /datum/component/status_indicator/UnregisterFromParent() QDEL_NULL(status_indicators) UnregisterSignal(attached_mob, COMSIG_LIVING_DEATH) - UnregisterSignal(attached_mob, COMSIG_CARBON_HEALTH_UPDATE) UnregisterSignal(attached_mob, COMSIG_LIVING_LIFE) UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_STUN) UnregisterSignal(attached_mob, COMSIG_LIVING_STATUS_KNOCKDOWN) diff --git a/tgstation.dme b/tgstation.dme index 34464f02a83..e65bc73ba9d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -374,7 +374,6 @@ #include "code\__DEFINES\~skyrat_defines\sound.dm" #include "code\__DEFINES\~skyrat_defines\span.dm" #include "code\__DEFINES\~skyrat_defines\species_clothing_paths.dm" -#include "code\__DEFINES\~skyrat_defines\status_indicator_defines.dm" #include "code\__DEFINES\~skyrat_defines\strippable.dm" #include "code\__DEFINES\~skyrat_defines\synth_defines.dm" #include "code\__DEFINES\~skyrat_defines\teshari_clothing_paths.dm" @@ -391,6 +390,7 @@ #include "code\__DEFINES\~~bubber_defines\access.dm" #include "code\__DEFINES\~~bubber_defines\quirk_whitelist.dm" #include "code\__DEFINES\~~bubber_defines\species.dm" +#include "code\__DEFINES\~~bubber_defines\status_indicator_defines.dm" #include "code\__DEFINES\~~bubber_defines\traits.dm" #include "code\__HELPERS\_auxtools_api.dm" #include "code\__HELPERS\_lists.dm" @@ -5314,7 +5314,6 @@ #include "modular_skyrat\master_files\code\modules\mob\living\blood.dm" #include "modular_skyrat\master_files\code\modules\mob\living\emote_popup.dm" #include "modular_skyrat\master_files\code\modules\mob\living\examine_tgui.dm" -#include "modular_skyrat\master_files\code\modules\mob\living\living.dm" #include "modular_skyrat\master_files\code\modules\mob\living\living_defines.dm" #include "modular_skyrat\master_files\code\modules\mob\living\carbon\human.dm" #include "modular_skyrat\master_files\code\modules\mob\living\carbon\human_helpers.dm" @@ -6589,8 +6588,6 @@ #include "modular_skyrat\modules\stasisrework\code\machine_circuitboards.dm" #include "modular_skyrat\modules\stasisrework\code\medical_designs.dm" #include "modular_skyrat\modules\stasisrework\code\stasissleeper.dm" -#include "modular_skyrat\modules\status_indicators\status_indicator.dm" -#include "modular_skyrat\modules\status_indicators\status_indicator_pref.dm" #include "modular_skyrat\modules\stone\code\ore_veins.dm" #include "modular_skyrat\modules\stone\code\stone.dm" #include "modular_skyrat\modules\stormtrooper\code\stormtrooper_clothes.dm" @@ -6728,6 +6725,8 @@ #include "modular_zubbers\code\modules\mod\mod_theme.dm" #include "modular_zubbers\code\modules\mod\mod_types.dm" #include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm" +#include "modular_zubbers\code\modules\status_indicators\status_indicator.dm" +#include "modular_zubbers\code\modules\status_indicators\status_indicator_pref.dm" #include "modular_zubbers\code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm" #include "modular_zubbers\code\modules\vending\wardrobe.dm" // END_INCLUDE From 4e528c257c8baddd03eb48aaefbcba3377bfb78b Mon Sep 17 00:00:00 2001 From: iero-srv <> Date: Mon, 17 Apr 2023 20:41:02 -0400 Subject: [PATCH 29/31] Squashed commit of the following: commit c9143749f3969981bd2b1628be33730b085a3279 Author: nevimer Date: Sun May 1 23:56:37 2022 -0400 run CI again commit 967bb8fc009630442d314d6abbf0d5b9e71efffb Author: nevimer Date: Sun May 1 21:55:27 2022 -0400 Makes the lathe tax a preference, fixes more. --- .../modules/research/machinery/_production.dm | 30 +------------------ config/game_options.txt | 4 +++ .../modules/research/techweb/protolathe.dm | 29 ++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 35 insertions(+), 29 deletions(-) create mode 100644 modular_skyrat/master_files/code/modules/research/techweb/protolathe.dm diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index c39261512c5..7c043b545b7 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -287,35 +287,7 @@ say("Not enough reagents to complete prototype[print_quantity > 1? "s" : ""].") return FALSE - // Charge the lathe tax at least once per ten items. - var/total_cost = LATHE_TAX * max(round(print_quantity / 10), 1) - - if(!charges_tax) - total_cost = 0 - - if(isliving(usr)) - var/mob/living/user = usr - var/obj/item/card/id/card = user.get_idcard(TRUE) - - if(!card && istype(user.pulling, /obj/item/card/id)) - card = user.pulling - - if(card && card.registered_account) - var/datum/bank_account/our_acc = card.registered_account - if(our_acc.account_job.departments_bitflags & allowed_department_flags) - total_cost = 0 // We are not charging crew for printing their own supplies and equipment. - - if(attempt_charge(src, usr, total_cost) & COMPONENT_OBJ_CANCEL_CHARGE) - say("Insufficient funds to complete prototype. Please present a holochip or valid ID card.") - return FALSE - - if(iscyborg(usr)) - var/mob/living/silicon/robot/borg = usr - - if(!borg.cell) - return FALSE - - borg.cell.use(SILICON_LATHE_TAX) + lathe_tax() materials.mat_container.use_materials(efficient_mats, print_quantity) materials.silo_log(src, "built", -print_quantity, "[design.name]", efficient_mats) diff --git a/config/game_options.txt b/config/game_options.txt index e72fc3af8c4..4c113a217ce 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -551,6 +551,10 @@ MAXFINE 2000 ## Whether native FoV is enabled for all people. #NATIVE_FOV +## How much does the protolathe cost to use on station? Disabled is off. + +##PROTOLATHE_TAX 10 + ## Whether circuit sounds are allowed to be played or not. #DISALLOW_CIRCUIT_SOUNDS diff --git a/modular_skyrat/master_files/code/modules/research/techweb/protolathe.dm b/modular_skyrat/master_files/code/modules/research/techweb/protolathe.dm new file mode 100644 index 00000000000..80998cf3216 --- /dev/null +++ b/modular_skyrat/master_files/code/modules/research/techweb/protolathe.dm @@ -0,0 +1,29 @@ +/obj/machinery/rnd/production + var/total_cost = 0 + var/on_station_lathe = TRUE + var/free_lathe = FALSE + +/obj/machinery/rnd/production/proc/lathe_tax() + total_cost ? (free_lathe ? 0 : total_cost) : (CONFIG_GET(number/protolathe_tax)) + + if(is_station_level(z) && on_station_lathe && total_cost && !free_lathe) + var/mob/living/user = usr + var/obj/item/card/id/card = user.get_idcard(TRUE) + if(!card && istype(user.pulling, /obj/item/card/id)) + card = user.pulling + if(card) + var/datum/bank_account/our_acc = card.registered_account + if(our_acc.account_job && SSeconomy.get_dep_account(our_acc.account_job?.paycheck_department) == SSeconomy.get_dep_account(payment_department)) + total_cost = 0 //We are not charging crew for printing their own supplies and equipment. + if(!iscarbon(usr)) // catch all cyborg types + total_cost = 0 + if(attempt_charge(src, usr, total_cost) & COMPONENT_OBJ_CANCEL_CHARGE) + return FALSE + +/obj/machinery/rnd/production/protolathe/offstation + on_station_lathe = FALSE + +/datum/config_entry/number/protolathe_tax + default = 0 + min_val = 0 + max_val = 65535 diff --git a/tgstation.dme b/tgstation.dme index 90317860438..db9b785d823 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5354,6 +5354,7 @@ #include "modular_skyrat\master_files\code\modules\research\designs\misc_designs.dm" #include "modular_skyrat\master_files\code\modules\research\machinery\departmental_circuit_imprinter.dm" #include "modular_skyrat\master_files\code\modules\research\techweb\all_nodes.dm" +#include "modular_skyrat\master_files\code\modules\research\techweb\protolathe.dm" #include "modular_skyrat\master_files\code\modules\shuttle\shuttle.dm" #include "modular_skyrat\master_files\code\modules\surgery\surgery.dm" #include "modular_skyrat\master_files\code\modules\surgery\organs\tongue.dm" From 305a8928081cda3562b43f3464027a45eb71688f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Apr 2023 04:18:42 +0000 Subject: [PATCH 30/31] Automatic changelog for PR #190 [ci skip] --- html/changelogs/AutoChangeLog-pr-190.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-190.yml diff --git a/html/changelogs/AutoChangeLog-pr-190.yml b/html/changelogs/AutoChangeLog-pr-190.yml new file mode 100644 index 00000000000..2f3fbe9bedb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-190.yml @@ -0,0 +1,4 @@ +author: "[nevimer](https://github.com/nevimer), [AtoriBirb](https://github.com/AtoriBirb)" +delete-after: True +changes: + - rscadd: "Status Indicators! Toggle in preferences!" \ No newline at end of file From 4f4c77c5b5b51d3cf81da5e6afbbd5348f620937 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Apr 2023 04:19:52 +0000 Subject: [PATCH 31/31] Automatic changelog for PR #189 [ci skip] --- html/changelogs/AutoChangeLog-pr-189.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-189.yml diff --git a/html/changelogs/AutoChangeLog-pr-189.yml b/html/changelogs/AutoChangeLog-pr-189.yml new file mode 100644 index 00000000000..280ad21bb6b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-189.yml @@ -0,0 +1,4 @@ +author: "nevimer" +delete-after: True +changes: + - config: "Lathe tax is now a config option" \ No newline at end of file