diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index effeb274ab..74a1fbd785 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -123,12 +123,15 @@ var/datum/sprite_accessory/S = instance if(!S.ckeys_allowed) snowflake_mam_snouts_list[S.name] = mspath + var/color1 = random_short_color() + var/color2 = random_short_color() + var/color3 = random_short_color() //CIT CHANGE - changes this entire return to support cit's snowflake parts return(list( - "mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), - "mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), - "mcolor3" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), + "mcolor" = color1, + "mcolor2" = color2, + "mcolor3" = color3, "tail_lizard" = pick(GLOB.tails_list_lizard), "tail_human" = "None", "wings" = "None", diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 4ae61169b7..73a207a457 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -162,6 +162,8 @@ return var/button_number = 0 + var/list/cview = getviewsize(client.view) + var/supportedcolumns = cview[1]-2 if(hud_used.action_buttons_hidden) for(var/datum/action/A in actions) @@ -177,7 +179,7 @@ if(B.moved) B.screen_loc = B.moved else - B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) + B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number, supportedcolumns) if(reload_screen) client.screen += B @@ -186,30 +188,26 @@ return if(!hud_used.hide_actions_toggle.moved) - hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) + hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1, supportedcolumns) else hud_used.hide_actions_toggle.screen_loc = hud_used.hide_actions_toggle.moved if(reload_screen) client.screen += hud_used.hide_actions_toggle - - -#define AB_MAX_COLUMNS 10 - -/datum/hud/proc/ButtonNumberToScreenCoords(number) // TODO : Make this zero-indexed for readabilty - var/row = round((number - 1)/AB_MAX_COLUMNS) - var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 +/datum/hud/proc/ButtonNumberToScreenCoords(number, supportedcolumns) // TODO : Make this zero-indexed for readabilty + var/row = round((number - 1)/supportedcolumns) + var/col = ((number - 1)%(supportedcolumns)) + 1 var/coord_col = "+[col-1]" - var/coord_col_offset = 4 + 2 * col + var/coord_col_offset = 2 + 2 * col var/coord_row = "[row ? -row : "+0"]" return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-6" -/datum/hud/proc/SetButtonCoords(obj/screen/button,number) - var/row = round((number-1)/AB_MAX_COLUMNS) - var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 +/datum/hud/proc/SetButtonCoords(obj/screen/button,number, supportedcolumns) + var/row = round((number-1)/supportedcolumns) + var/col = ((number - 1)%(supportedcolumns)) + 1 var/x_offset = 32*(col-1) + 4 + 2*col var/y_offset = -32*(row+1) + 26 diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 8a17ad07d1..221d04dad5 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -32,8 +32,11 @@ SUBSYSTEM_DEF(input) "default" = list( "Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"", "O" = "ooc", + "Ctrl+O" = "looc", "T" = "say", + "Ctrl+T" = "whisper", "M" = "me", + "Ctrl+M" = "subtle", "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs "Any" = "\"KeyDown \[\[*\]\]\"", "Any+UP" = "\"KeyUp \[\[*\]\]\"", diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index cfd8f95d7b..513115b194 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -166,7 +166,6 @@ /datum/quirk/trandening/on_spawn() var/mob/living/carbon/human/H = quirk_holder - var/obj/item/autosurgeon/gloweyes = new(get_turf(H)) - H.put_in_hands(gloweyes) + var/obj/item/autosurgeon/gloweyes/gloweyes = new(get_turf(H)) H.equip_to_slot(gloweyes, SLOT_IN_BACKPACK) H.regenerate_icons() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 3dab6a66af..9ff1b5cf01 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -379,6 +379,26 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/on_found(mob/finder) return +/obj/item/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params) //Copypaste of /atom/MouseDrop() since this requires code in a very specific spot + if(!usr || !over) + return + if(SEND_SIGNAL(src, COMSIG_MOUSEDROP_ONTO, over, usr) & COMPONENT_NO_MOUSEDROP) //Whatever is receiving will verify themselves for adjacency. + return + if(over == src) + return usr.client.Click(src, src_location, src_control, params) + var/list/directaccess = usr.DirectAccess() + if((usr.CanReach(src) || (src in directaccess)) && (usr.CanReach(over) || (over in directaccess))) + if(!usr.get_active_held_item()) + usr.UnarmedAttack(src, TRUE) + if(usr.get_active_held_item() == src) + melee_attack_chain(usr, over) + return + if(!Adjacent(usr) || !over.Adjacent(usr)) + return // should stop you from dragging through windows + + over.MouseDrop_T(src,usr) + return + // called after an item is placed in an equipment slot // user is mob that equipped it // slot uses the slot_X defines found in setup.dm diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index bd2bede87c..e4debeff49 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -1,5 +1,5 @@ /* - * These absorb the functionality of the plant bag, ore satchel, etc. + * These absorb the functionality of the plant bag, ore satchel, etc * They use the use_to_pickup, quick_gather, and quick_empty functions * that were already defined in weapon/storage, but which had been * re-implemented in other classes. @@ -162,6 +162,26 @@ /obj/item/storage/bag/ore/cyborg name = "cyborg mining satchel" +/obj/item/storage/bag/ore/cyborg/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.allow_quick_empty = TRUE + STR.can_hold = typecacheof(list(/obj/item/stack/ore)) + STR.max_w_class = WEIGHT_CLASS_HUGE + STR.max_combined_stack_amount = 150 + +/obj/item/storage/bag/ore/large + name = "large mining satchel" + desc = "This bag can hold three times the ore in many small pockets. Shockingly foldable and compact for its volume." + +/obj/item/storage/bag/ore/large/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.allow_quick_empty = TRUE + STR.can_hold = typecacheof(list(/obj/item/stack/ore)) + STR.max_w_class = WEIGHT_CLASS_HUGE + STR.max_combined_stack_amount = 150 + /obj/item/storage/bag/ore/holding //miners, your messiah has arrived name = "mining satchel of holding" desc = "A revolution in convenience, this satchel allows for huge amounts of ore storage. It's been outfitted with anti-malfunction safety measures." diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index c795726421..079feec17a 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -112,12 +112,17 @@ /obj/item/storage/firstaid/radbgone/PopulateContents() if(empty) return + if(prob(50)) + new /obj/item/reagent_containers/pill/mutarad(src) + if(prob(80)) + new /obj/item/reagent_containers/pill/antirad_plus(src) new /obj/item/reagent_containers/syringe/charcoal(src) new /obj/item/storage/pill_bottle/charcoal(src) new /obj/item/reagent_containers/pill/mutadone(src) new /obj/item/reagent_containers/pill/antirad(src) new /obj/item/reagent_containers/food/drinks/bottle/vodka(src) new /obj/item/healthanalyzer(src) + /obj/item/storage/firstaid/o2 name = "oxygen deprivation treatment kit" @@ -291,3 +296,19 @@ /obj/item/storage/pill_bottle/aranesp/PopulateContents() for(var/i in 1 to 5) new /obj/item/reagent_containers/pill/aranesp(src) + +/obj/item/storage/pill_bottle/antirad_plus + name = "anti radiation deluxe pill bottle" + desc = "The label says 'Med-Co branded pills'." + +/obj/item/storage/pill_bottle/antirad_plus/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/reagent_containers/pill/antirad_plus(src) + +/obj/item/storage/pill_bottle/mutarad + name = "radiation treatment deluxe pill bottle" + desc = "The label says 'Med-Co branded pills' and below that 'Contains Mutadone in each pill!`." + +/obj/item/storage/pill_bottle/mutarad/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/reagent_containers/pill/mutarad(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index a062be0964..5a9228e397 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -6,6 +6,7 @@ /obj/structure/closet/secure_closet/quartermaster/PopulateContents() ..() new /obj/item/clothing/neck/cloak/qm(src) + new /obj/item/clothing/head/beret/qm(src) new /obj/item/storage/lockbox/medal/cargo(src) new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/sneakers/brown(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index dd2e8428b1..0d06276876 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -6,6 +6,7 @@ /obj/structure/closet/secure_closet/engineering_chief/PopulateContents() ..() new /obj/item/clothing/neck/cloak/ce(src) + new /obj/item/clothing/head/beret/ce(src) new /obj/item/clothing/under/rank/chief_engineer(src) new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/welding(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 5ef952b139..9081cddbe4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -55,6 +55,7 @@ /obj/structure/closet/secure_closet/CMO/PopulateContents() ..() new /obj/item/clothing/neck/cloak/cmo(src) + new /obj/item/clothing/head/beret/cmo(src) new /obj/item/storage/backpack/duffelbag/med(src) new /obj/item/clothing/suit/bio_suit/cmo(src) new /obj/item/clothing/head/bio_hood/cmo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index eb10b97bc3..7fe1247eb7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -6,6 +6,7 @@ /obj/structure/closet/secure_closet/RD/PopulateContents() ..() new /obj/item/clothing/neck/cloak/rd(src) + new /obj/item/clothing/head/beret/rd(src) new /obj/item/clothing/suit/bio_suit/scientist(src) new /obj/item/clothing/head/bio_hood/scientist(src) new /obj/item/clothing/suit/toggle/labcoat(src) 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 5c45baa194..b4cdff4224 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -19,6 +19,7 @@ new /obj/item/clothing/under/captainparade(src) new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src) new /obj/item/clothing/head/caphat/parade(src) + new /obj/item/clothing/head/caphat/beret(src) new /obj/item/clothing/suit/captunic(src) new /obj/item/clothing/under/rank/captain/femformal(src) //citadel edit new /obj/item/clothing/head/crown/fancy(src) @@ -44,6 +45,7 @@ new /obj/item/clothing/neck/cloak/hop(src) new /obj/item/clothing/under/rank/head_of_personnel(src) new /obj/item/clothing/head/hopcap(src) + new /obj/item/clothing/head/hopcap/beret(src) new /obj/item/cartridge/hop(src) new /obj/item/radio/headset/heads/hop(src) new /obj/item/clothing/shoes/sneakers/brown(src) diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index 9adfaada72..a97c0bf116 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -126,3 +126,18 @@ GLOBAL_LIST(round_end_notifiees) /datum/tgs_chat_command/reload_admins/proc/ReloadAsync() set waitfor = FALSE load_admins() + +/datum/tgs_chat_command/addbunkerbypass + name = "whitelist" + help_text = "whitelist " + admin_only = TRUE + +/datum/tgs_chat_command/addbunkerbypass/Run(datum/tgs_chat_user/sender, params) + if(!CONFIG_GET(flag/sql_enabled)) + return "The Database is not enabled!" + + GLOB.bunker_passthrough |= ckey(params) + + log_admin("[sender.friendly_name] has added [params] to the current round's bunker bypass list.") + message_admins("[sender.friendly_name] has added [params] to the current round's bunker bypass list.") + return "[params] has been added to the current round's bunker bypass list." \ No newline at end of file diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index d76edf2e10..633f4fa850 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -81,6 +81,21 @@ crate_name = "emergency crate" crate_type = /obj/structure/closet/crate/internals +/datum/supply_pack/emergency/radiatione_emergency + name = "Emergenc Radiation Protection Crate" + desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a few pill bottles that are able to handles radiation and the affects of the poisoning." + cost = 2500 + contains = list(/obj/item/clothing/head/radiation, + /obj/item/clothing/head/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/geiger_counter, + /obj/item/geiger_counter, + /obj/item/storage/pill_bottle/mutarad, + /obj/item/storage/firstaid/radbgone) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + /datum/supply_pack/emergency/rcds name = "Emergency RCDs" desc = "Bombs going off on station? SME blown and now you need to fix the hole it left behind? Well this crate has a pare of Rcds to be able to easily fix up any problem you may have!" @@ -1357,6 +1372,19 @@ /obj/item/storage/firstaid/o2) crate_name = "oxygen deprivation kit crate" +/datum/supply_pack/medical/advrad + name = "Radiation Treatment Crate Deluxe" + desc = "A crate for when radiation is out of hand... Contains two rad-b-gone kits, one bottle of anti radiation deluxe pill bottle, as well as a radiation treatment deluxe pill bottle!" + cost = 3500 + contains = list(/obj/item/storage/pill_bottle/antirad_plus, + /obj/item/storage/pill_bottle/mutarad, + /obj/item/storage/firstaid/radbgone, + /obj/item/storage/firstaid/radbgone, + /obj/item/geiger_counter, + /obj/item/geiger_counter) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + /datum/supply_pack/medical/surgery name = "Surgical Supplies Crate" desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed." diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 8b1b1dac25..b1503f26fb 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -38,6 +38,12 @@ dog_fashion = null +/obj/item/clothing/head/caphat/beret + name = "captain's beret" + desc = "A beret fit for a leader." + icon_state = "capberet" + + dog_fashion = null //Head of Personnel /obj/item/clothing/head/hopcap @@ -47,6 +53,13 @@ armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) dog_fashion = /datum/dog_fashion/head/hop +/obj/item/clothing/head/hopcap/beret + name = "head of personnel's beret" + desc = "The symbol of true bureaucratic micromanagement, although in a fancy form." + icon_state = "hopberet" + + dog_fashion = null + //Chaplain /obj/item/clothing/head/nun_hood name = "nun hood" @@ -164,3 +177,27 @@ name = "treasure hunter's fedora" desc = "You got red text today kid, but it doesn't mean you have to like it." icon_state = "curator" + +//Chief Medical Officer +/obj/item/clothing/head/beret/cmo + name = "chief medical officer's beret" + desc = "A fancy beret with a green cross, signifying your status in the station's medbay." + icon_state = "cmoberet" + +//Research Director +/obj/item/clothing/head/beret/rd + name = "research director's beret" + desc = "A beret worn only by highly intelligent people." + icon_state = "rdberet" + +//Chief Engineer +/obj/item/clothing/head/beret/ce + name = "chief engineer's beret" + desc = "A beret that will surely make you look way cooler than a hard hat, although lack of protection is the price." + icon_state = "ceberet" + +//Quartermaster +/obj/item/clothing/head/beret/qm + name = "quartermaster's beret" + desc = "This headwear shows off your Cargonian leadership" + icon_state = "qmberet" \ No newline at end of file diff --git a/code/modules/jobs/map_changes/map_changes.dm b/code/modules/jobs/map_changes/map_changes.dm index b88bc093d0..b4aa4520a3 100644 --- a/code/modules/jobs/map_changes/map_changes.dm +++ b/code/modules/jobs/map_changes/map_changes.dm @@ -1,6 +1,4 @@ -//this needs to come after the job_types subfolder to keep the correct ordering - -#include "..\..\..\..\_maps\map_files\OmegaStation\job_changes.dm" -#undef JOB_MODIFICATION_MAP_NAME -#include "..\..\..\..\_maps\map_files\PubbyStation\job_changes.dm" +//this needs to come after the job_types subfolder to keep the correct ordering + +#include "..\..\..\..\_maps\map_files\PubbyStation\job_changes.dm" #undef JOB_MODIFICATION_MAP_NAME \ No newline at end of file diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 7276039443..5fa7b9d571 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -24,6 +24,7 @@ new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400), new /datum/data/mining_equipment("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500), new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500), + new /datum/data/mining_equipment("Larger Ore Bag", /obj/item/storage/bag/ore/large, 500), new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), @@ -42,9 +43,9 @@ new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000), new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1000), - new /datum/data/mining_equipment("1000 Point Transfer Card", /obj/item/card/mining_point_card/mp1000, 1000), - new /datum/data/mining_equipment("1500 Point Transfer Card", /obj/item/card/mining_point_card/mp1500, 1500), - new /datum/data/mining_equipment("2000 Point Transfer Card", /obj/item/card/mining_point_card/mp2000, 2000), + new /datum/data/mining_equipment("1000 Point Transfer Card", /obj/item/card/mining_point_card/mp1000, 1000), + new /datum/data/mining_equipment("1500 Point Transfer Card", /obj/item/card/mining_point_card/mp1500, 1500), + new /datum/data/mining_equipment("2000 Point Transfer Card", /obj/item/card/mining_point_card/mp2000, 2000), new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000), new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000), @@ -66,7 +67,10 @@ new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), - new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000) + new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000), + new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 12000), + new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 15000) + ) /datum/data/mining_equipment @@ -320,9 +324,29 @@ new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/mining_access_card(src) - //CITADEL ADDITIONS BELOW +/obj/item/storage/backpack/duffelbag/mining_cloned + name = "mining replacement kit" + desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even as a new Id!" + +/obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents() + new /obj/item/pickaxe/mini(src) + new /obj/item/clothing/under/rank/miner/lavaland(src) + new /obj/item/clothing/shoes/workboots/mining(src) + new /obj/item/clothing/gloves/color/black(src) + new /obj/item/implanter/tracking/gps(src) + new /obj/item/kitchen/knife/combat/survival(src) + new /obj/item/storage/firstaid/regular(src) + new /obj/item/reagent_containers/hypospray/medipen/survival(src) + new /obj/item/t_scanner/adv_mining_scanner(src) + new /obj/item/clothing/suit/hooded/explorer(src) + new /obj/item/encryptionkey/headset_cargo(src) + new /obj/item/clothing/mask/gas/explorer(src) + new /obj/item/card/id/mining(src) + new /obj/item/storage/bag/ore(src) + new /obj/item/clothing/glasses/meson/prescription(src) + /obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) var/items = list("Exo-suit", "SEVA suit") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 8fff4cfec0..1e83517977 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1143,6 +1143,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_inv_w_uniform() H.update_inv_wear_suit() + /* if(H.noisy && H.nutrition <= NUTRITION_LEVEL_STARVING) if(prob(10)) playsound(get_turf(H),"hunger_sounds",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) @@ -1150,7 +1151,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) else if(H.noisy && H.nutrition <= NUTRITION_LEVEL_HUNGRY) if(prob(10)) playsound(get_turf(H),"hunger_sounds",15,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - + */ + // nutrition decrease and satiety if (H.nutrition > 0 && H.stat != DEAD && !H.has_trait(TRAIT_NOHUNGER)) // THEY HUNGER diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index b851552dc5..c5a64ebd13 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -94,4 +94,9 @@ inherent_traits = list(TRAIT_NOGUNS) mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 - brutemod = 0.9 \ No newline at end of file + brutemod = 0.9 + +/datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) + if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines + C.dna.features["tail"] = "Smooth" + return ..() diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 4e278d2ede..3970e8157b 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -463,6 +463,19 @@ M.radiation -= min(M.radiation, 8) ..() +/datum/reagent/medicine/prussian_blue + name = "Prussian Blue" + id = "prussian_blue" + description = "Efficiently restores heavy radiation damage." + reagent_state = LIQUID + color = "#003153" // RGB 0, 49, 83 + metabolization_rate = 0.5 * REAGENTS_METABOLISM + +/datum/reagent/medicine/prussian_blue/on_mob_life(mob/living/carbon/M) + if(M.radiation > 0) + M.radiation -= min(M.radiation, 20) + ..() + /datum/reagent/medicine/pen_acid name = "Pentetic Acid" id = "pen_acid" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 1702e1f816..38d47d5185 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -172,6 +172,23 @@ icon_state = "pill18" list_reagents = list("potass_iodide" = 50) roundstart = 1 + +/obj/item/reagent_containers/pill/antirad_plus + name = "prussian blue pill" + desc = "Used to treat heavy radition poisoning." + icon = 'modular_citadel/icons/obj/modularpills.dmi' + icon_state = "prussian_blue" + list_reagents = list("prussian_blue" = 25, "water" = 10) + roundstart = 1 + +/obj/item/reagent_containers/pill/mutarad + name = "radiation treatment deluxe pill" + desc = "Used to treat heavy radition poisoning and genetic defects." + icon = 'modular_citadel/icons/obj/modularpills.dmi' + icon_state = "anit_rad_fixgene" + list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5) + roundstart = 1 + ///////////////////////////////////////// this pill is used only in a legion mob drop /obj/item/reagent_containers/pill/shadowtoxin name = "black pill" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 03af32f660..f394351285 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -495,7 +495,6 @@ if(should_draw_greyscale) - marking.color = null var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) if(draw_color) limb.color = "#[draw_color]" diff --git a/html/changelogs/AutoChangeLog-pr-8189.yml b/html/changelogs/AutoChangeLog-pr-8189.yml new file mode 100644 index 0000000000..2a2fb9cbbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8189.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Action buttons are now able to fill the entire screen in widescreen and other weird view sizes." diff --git a/html/changelogs/AutoChangeLog-pr-8190.yml b/html/changelogs/AutoChangeLog-pr-8190.yml new file mode 100644 index 0000000000..d2b05015e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8190.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscdel: "Omegastation's job changes will no longer be included at compile time." diff --git a/html/changelogs/AutoChangeLog-pr-8195.yml b/html/changelogs/AutoChangeLog-pr-8195.yml new file mode 100644 index 0000000000..b9e9346c95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8195.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "You can now quickly use unequipped items on objects by simply click-dragging the item onto the object with an empty active hand. Doing so will place the item in your hand, and then use that item on the object." diff --git a/html/changelogs/AutoChangeLog-pr-8214.yml b/html/changelogs/AutoChangeLog-pr-8214.yml new file mode 100644 index 0000000000..96f835d2f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8214.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - bugfix: "fixed Navy officer uniforms that failed to spawn" + - code_imp: "Loadout items will be forcefully added to backpacks or at your feet instead of left behind at title screen" diff --git a/html/changelogs/AutoChangeLog-pr-8219.yml b/html/changelogs/AutoChangeLog-pr-8219.yml new file mode 100644 index 0000000000..b0d77cdec0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8219.yml @@ -0,0 +1,6 @@ +author: "Coolgat3" +delete-after: True +changes: + - rscadd: "Added berets for all the heads." + - imageadd: "Added sprites for the berets." + - code_imp: "Coded the berets to spawn in appropiate lockers." diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 2f39dd5940..3da5fc08e2 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 34d8374a42..d905979c9c 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/modular_citadel/code/controllers/subsystem/job.dm b/modular_citadel/code/controllers/subsystem/job.dm index 303e1b626d..c433042ae6 100644 --- a/modular_citadel/code/controllers/subsystem/job.dm +++ b/modular_citadel/code/controllers/subsystem/job.dm @@ -23,7 +23,12 @@ continue var/obj/item/I = new G.path if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first - if(!M.equip_to_slot_if_possible(I, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack + if(iscarbon(M)) + var/mob/living/carbon/C = M + var/obj/item/storage/backpack/B = C.back + if(!B || !SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) // Otherwise, try to put it in the backpack, for carbons. + I.forceMove(get_turf(C)) + else if(!M.equip_to_slot_if_possible(I, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. /datum/controller/subsystem/job/proc/FreeRole(rank) diff --git a/modular_citadel/code/modules/client/loadout/_security.dm b/modular_citadel/code/modules/client/loadout/_security.dm index 28145d07b9..7a49b1f049 100644 --- a/modular_citadel/code/modules/client/loadout/_security.dm +++ b/modular_citadel/code/modules/client/loadout/_security.dm @@ -29,10 +29,10 @@ restricted_roles = list("Security Officer") /datum/gear/navyblueuniformofficer - name = "security officer navyblue uniform" + name = "Security officer navyblue uniform" category = SLOT_W_UNIFORM path = /obj/item/clothing/under/rank/security/navyblue - restricted_roles = list("Security officer") + restricted_roles = list("Security Officer") /datum/gear/navybluejacketwarden name = "warden navyblue jacket" diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index 81eb93106c..b5be18cec3 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1256,7 +1256,7 @@ datum/sprite_accessory/mam_tails/insect /datum/sprite_accessory/mam_body_markings/none name = "None" icon_state = "none" - color_src = MUTCOLORS + ckeys_allowed = list("yousshouldnteverbeseeingthisyoumeme") /datum/sprite_accessory/mam_body_markings/plain name = "Plain" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index c34146a90c..6b6349c0f3 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -195,10 +195,10 @@ say_mod = "hisses" default_color = "00FF00" should_draw_citadel = TRUE - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) - mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur") - default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None") + mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur", "legs") + default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade Legs") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index f369f21afb..6a0bf77cd3 100644 Binary files a/modular_citadel/icons/mob/mutant_bodyparts.dmi and b/modular_citadel/icons/mob/mutant_bodyparts.dmi differ diff --git a/modular_citadel/icons/mob/xeno_parts_greyscale.dmi b/modular_citadel/icons/mob/xeno_parts_greyscale.dmi index 0f27cf8f30..26da9bce10 100644 Binary files a/modular_citadel/icons/mob/xeno_parts_greyscale.dmi and b/modular_citadel/icons/mob/xeno_parts_greyscale.dmi differ diff --git a/modular_citadel/icons/obj/modularpills.dmi b/modular_citadel/icons/obj/modularpills.dmi new file mode 100644 index 0000000000..78095d82c0 Binary files /dev/null and b/modular_citadel/icons/obj/modularpills.dmi differ