From c97b47de72d1c97daf33924986ec8611fd387473 Mon Sep 17 00:00:00 2001 From: Chompstation Bot Date: Mon, 28 Jun 2021 11:32:00 +0000 Subject: [PATCH 01/50] [MIRROR] Halves Item Slowdown Effects --- code/game/gamemodes/changeling/powers/armor.dm | 2 +- code/game/gamemodes/cult/cult_items.dm | 2 +- code/game/gamemodes/technomancer/core_obj.dm | 4 ++-- .../gamemodes/technomancer/devices/tesla_armor.dm | 2 +- code/game/objects/items/uav.dm | 6 +++--- .../items/weapons/material/material_armor.dm | 12 ++++++------ .../game/objects/items/weapons/storage/backpack.dm | 2 +- code/game/objects/items/weapons/storage/bags.dm | 2 +- .../objects/items/weapons/tools/screwdriver.dm | 1 - .../objects/items/weapons/tools/weldingtool.dm | 1 - .../objects/items/weapons/tools/wirecutters.dm | 1 - code/game/objects/items/weapons/tools/wrench.dm | 1 - code/modules/artifice/telecube.dm | 2 +- code/modules/clothing/shoes/leg_guards.dm | 2 +- code/modules/clothing/shoes/miscellaneous.dm | 6 +++--- code/modules/clothing/spacesuits/miscellaneous.dm | 2 +- .../spacesuits/rig/modules/specific/sprinter.dm | 2 +- code/modules/clothing/spacesuits/rig/rig.dm | 4 ++-- .../modules/clothing/spacesuits/rig/suits/alien.dm | 2 +- .../clothing/spacesuits/rig/suits/combat.dm | 8 ++++---- code/modules/clothing/spacesuits/rig/suits/merc.dm | 4 ++-- .../clothing/spacesuits/rig/suits/robotics.dm | 4 ++-- .../clothing/spacesuits/rig/suits/station.dm | 14 +++++++------- code/modules/clothing/spacesuits/spacesuits.dm | 8 ++++++++ code/modules/clothing/spacesuits/syndi.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/under/accessories/armor.dm | 7 +++---- .../under/accessories/temperature/poncho.dm | 2 -- code/modules/fishing/fishing_net.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 1 - 30 files changed, 55 insertions(+), 55 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index b5e72d83ea..aa6e2bf0b0 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -103,7 +103,7 @@ armor = list(melee = 75, bullet = 60, laser = 60, energy = 60, bomb = 60, bio = 0, rad = 0) //It costs 3 points, so it should be very protective. siemens_coefficient = 0.3 max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE - slowdown = 3 + slowdown = 1.5 /obj/item/clothing/suit/space/changeling/armored/New() ..() diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index df3750275d..9d192890a0 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -115,7 +115,7 @@ desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy." w_class = ITEMSIZE_NORMAL allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit) - slowdown = 1 + slowdown = 0.5 armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index fe0488d1b9..f7eae8025c 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -253,7 +253,7 @@ energy = 7000 max_energy = 7000 regen_rate = 70 //100 seconds to full - slowdown = -1 + slowdown = -0.5 instability_modifier = 0.9 cooldown_modifier = 0.9 @@ -267,7 +267,7 @@ energy = 20000 max_energy = 20000 regen_rate = 25 //800 seconds to full - slowdown = 1 + slowdown = 0.5 instability_modifier = 1.0 spell_power_modifier = 1.4 diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm index 124e1ed1f3..8093db0bec 100644 --- a/code/game/gamemodes/technomancer/devices/tesla_armor.dm +++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm @@ -12,7 +12,7 @@ desc = "This rather dangerous looking armor will hopefully shock your enemies, and not you in the process." icon_state = "tesla_armor_1" //wip blood_overlay_type = "armor" - slowdown = 1 + slowdown = 0.5 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) action_button_name = "Toggle Tesla Armor" var/active = 1 //Determines if the armor will zap or block diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm index 168eec0a3f..b63d1246b1 100644 --- a/code/game/objects/items/uav.dm +++ b/code/game/objects/items/uav.dm @@ -13,7 +13,7 @@ var/cell_type = null //Can put a starting cell here density = 1 //Is dense, but not anchored, so you can swap with it - slowdown = 3 //Heevvee. + slowdown = 1.5 //Heevvee. health = 100 var/power_per_process = 50 // About 6.5 minutes of use on a high-cell (10,000) @@ -213,14 +213,14 @@ if(UAV_OFF) //Packing state = UAV_PACKED w_class = ITEMSIZE_LARGE - slowdown = 1 + slowdown = 0.5 density = FALSE update_icon() return TRUE if(UAV_PACKED) //Unpacking state = UAV_OFF w_class = ITEMSIZE_HUGE - slowdown = 3 + slowdown = 1.5 density = TRUE update_icon() return TRUE diff --git a/code/game/objects/items/weapons/material/material_armor.dm b/code/game/objects/items/weapons/material/material_armor.dm index b1c07bea1c..19028dcb71 100644 --- a/code/game/objects/items/weapons/material/material_armor.dm +++ b/code/game/objects/items/weapons/material/material_armor.dm @@ -33,7 +33,7 @@ Protectiveness | Armor % var/default_material = null // Set this to something else if you want material attributes on init. var/material_armor_modifier = 1 // Adjust if you want seperate types of armor made from the same material to have different protectiveness (e.g. makeshift vs real armor) var/material_slowdown_modifier = 0 - var/material_slowdown_multiplier = 1 + var/material_slowdown_multiplier = 0.5 /obj/item/clothing/New(var/newloc, var/material_key) ..(newloc) @@ -217,7 +217,7 @@ Protectiveness | Armor % slot = ACCESSORY_SLOT_ARMOR_C material_armor_modifier = 0.8 material_slowdown_modifier = 0.5 //Subtracted from total slowdown - material_slowdown_multiplier = 0.8 //Multiplied by total slowdown + material_slowdown_multiplier = 0.4 //Multiplied by total slowdown /obj/item/clothing/accessory/material/makeshift/heavy //Craftable with 8 material sheets, more slowdown, more armour name = "heavy armor plate" @@ -228,7 +228,7 @@ Protectiveness | Armor % slot = ACCESSORY_SLOT_ARMOR_C material_armor_modifier = 1.2 material_slowdown_modifier = 0 - material_slowdown_multiplier = 1 + material_slowdown_multiplier = 0.5 /obj/item/clothing/accessory/material/custom //Not yet craftable, advanced version made with science! name = "custom armor plate" @@ -239,7 +239,7 @@ Protectiveness | Armor % slot = ACCESSORY_SLOT_ARMOR_C material_armor_modifier = 1.2 material_slowdown_modifier = 0.5 - material_slowdown_multiplier = 0.8 + material_slowdown_multiplier = 0.4 /obj/item/clothing/accessory/material/makeshift/armguards name = "arm guards" @@ -253,7 +253,7 @@ Protectiveness | Armor % slot = ACCESSORY_SLOT_ARMOR_A material_armor_modifier = 0.8 material_slowdown_modifier = 0.8 - material_slowdown_multiplier = 0.8 + material_slowdown_multiplier = 0.4 /obj/item/clothing/accessory/material/makeshift/legguards name = "leg guards" @@ -267,7 +267,7 @@ Protectiveness | Armor % slot = ACCESSORY_SLOT_ARMOR_L material_armor_modifier = 0.8 material_slowdown_modifier = 0.8 - material_slowdown_multiplier = 0.8 + material_slowdown_multiplier = 0.4 /obj/item/clothing/suit/armor/material/makeshift/durasteel default_material = "durasteel" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 8660d8a673..b296c58b96 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -135,7 +135,7 @@ name = "dufflebag" desc = "A large dufflebag for holding extra things." icon_state = "duffle" - slowdown = 1 + slowdown = 0.5 max_storage_space = INVENTORY_DUFFLEBAG_SPACE /obj/item/weapon/storage/backpack/dufflebag/syndie diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 1ca68b8d6b..0a5be3baff 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -398,7 +398,7 @@ desc = "A bag for storing pills, patches, and bottles." max_storage_space = 200 w_class = ITEMSIZE_LARGE - slowdown = 1 + slowdown = 3 can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle) // ----------------------------- diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index 5252aa63ba..e29245ec2f 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -98,7 +98,6 @@ icon_state = "hybscrewdriver" item_state = "screwdriver_black" origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3) - slowdown = 0.1 w_class = ITEMSIZE_NORMAL usesound = 'sound/effects/uncloak.ogg' toolspeed = 0.4 diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index 478b8f7bba..88e6ad19ec 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -460,7 +460,6 @@ icon_state = "hybwelder" max_fuel = 80 //more max fuel is better! Even if it doesn't actually use fuel. eye_safety_modifier = -2 // Brighter than the sun. Literally, you can look at the sun with a welding mask of proper grade, this will burn through that. - slowdown = 0.1 toolspeed = 0.25 w_class = ITEMSIZE_NORMAL flame_intensity = 5 diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm index 36459852ef..16b193e1bb 100644 --- a/code/game/objects/items/weapons/tools/wirecutters.dm +++ b/code/game/objects/items/weapons/tools/wirecutters.dm @@ -78,7 +78,6 @@ desc = "This cuts wires. With Science!" icon_state = "hybcutters" w_class = ITEMSIZE_NORMAL - slowdown = 0.1 origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2) attack_verb = list("pinched", "nipped", "warped", "blasted") usesound = 'sound/effects/stealthoff.ogg' diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index 220ddb667d..6372d54ad6 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -34,7 +34,6 @@ force = 8 throwforce = 10 w_class = ITEMSIZE_NORMAL - slowdown = 0.1 origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2) attack_verb = list("bashed", "battered", "bludgeoned", "whacked", "warped", "blasted") usesound = 'sound/effects/stealthoff.ogg' diff --git a/code/modules/artifice/telecube.dm b/code/modules/artifice/telecube.dm index 6e7db1ebfe..2b30456094 100644 --- a/code/modules/artifice/telecube.dm +++ b/code/modules/artifice/telecube.dm @@ -28,7 +28,7 @@ catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/telecube) - slowdown = 5 + slowdown = 2.5 throw_range = 2 diff --git a/code/modules/clothing/shoes/leg_guards.dm b/code/modules/clothing/shoes/leg_guards.dm index db7e5a88b5..3ef213e69d 100644 --- a/code/modules/clothing/shoes/leg_guards.dm +++ b/code/modules/clothing/shoes/leg_guards.dm @@ -60,7 +60,7 @@ icon_state = "leg_guards_flexitac" item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") siemens_coefficient = 0.6 - slowdown = SHOES_SLOWDOWN+0.2 + slowdown = SHOES_SLOWDOWN+0.5 armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0) min_cold_protection_temperature = T0C - 20 cold_protection = LEGS \ No newline at end of file diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 07b934e5ee..bcb3ba80c5 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -24,7 +24,7 @@ permeability_coefficient = 0.05 siemens_coefficient = 0 //They're thick rubber boots! Of course they won't conduct electricity! item_flags = NOSLIP - slowdown = SHOES_SLOWDOWN+1 + slowdown = SHOES_SLOWDOWN+0.5 species_restricted = null drop_sound = 'sound/items/drop/rubber.ogg' pickup_sound = 'sound/items/pickup/rubber.ogg' @@ -63,7 +63,7 @@ desc = "The prankster's standard-issue clowning shoes. Damn they're huge!" name = "clown shoes" icon_state = "clown" - slowdown = SHOES_SLOWDOWN+1 + slowdown = SHOES_SLOWDOWN+0.5 force = 0 var/footstep = 1 //used for squeeks whilst walking species_restricted = null @@ -134,7 +134,7 @@ icon_state = "flippers" item_state_slots = list(slot_r_hand_str = "galoshes", slot_l_hand_str = "galoshes") item_flags = NOSLIP - slowdown = SHOES_SLOWDOWN+1 + slowdown = SHOES_SLOWDOWN+0.5 species_restricted = null /obj/item/clothing/shoes/flipflop diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 696f63a4ce..391fb2ab67 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -99,4 +99,4 @@ name = "Emergency Softsuit" icon_state = "syndicate-orange" desc = "A thin, ungainly softsuit colored in blaze orange for rescuers to easily locate, looks pretty fragile." - slowdown = 4 + slowdown = 2 diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/sprinter.dm b/code/modules/clothing/spacesuits/rig/modules/specific/sprinter.dm index f69f053260..b8646cfa81 100644 --- a/code/modules/clothing/spacesuits/rig/modules/specific/sprinter.dm +++ b/code/modules/clothing/spacesuits/rig/modules/specific/sprinter.dm @@ -3,7 +3,7 @@ desc = "A robust hardsuit-integrated sprint module." icon_state = "sprinter" - var/sprint_speed = 1 + var/sprint_speed = 0.5 toggleable = 1 disruptable = 1 diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 8230e4d2f0..fd9d2e53ba 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -83,7 +83,7 @@ var/seal_delay = SEAL_DELAY var/sealing // Keeps track of seal status independantly of canremove. var/offline = 1 // Should we be applying suit maluses? - var/offline_slowdown = 3 // If the suit is deployed and unpowered, it sets slowdown to this. + var/offline_slowdown = 1.5 // If the suit is deployed and unpowered, it sets slowdown to this. var/vision_restriction var/offline_vision_restriction = 1 // 0 - none, 1 - welder vision, 2 - blind. Maybe move this to helmets. var/airtight = 1 //If set, will adjust AIRTIGHT flag and pressure protections on components. Otherwise it should leave them untouched. @@ -511,7 +511,7 @@ if(!offline) if(istype(wearer)) if(!canremove) - if (offline_slowdown < 3) + if (offline_slowdown < 1.5) to_chat(wearer, "Your suit beeps stridently, and suddenly goes dead.") else to_chat(wearer, "Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit.") diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm index 3b014808d8..dbc1e34709 100644 --- a/code/modules/clothing/spacesuits/rig/suits/alien.dm +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -50,7 +50,7 @@ flags = PHORONGUARD item_flags = THICKMATERIAL siemens_coefficient = 0.2 - offline_slowdown = 5 + offline_slowdown = 2.5 allowed = list( /obj/item/weapon/gun, /obj/item/device/flashlight, diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index 57e5f6601a..214622881a 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -7,8 +7,8 @@ icon_state = "security_rig" suit_type = "combat hardsuit" armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60) - slowdown = 1 - offline_slowdown = 3 + slowdown = 0.5 + offline_slowdown = 1.5 offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/combat @@ -46,8 +46,8 @@ icon_state = "military_rig" suit_type = "military hardsuit" armor = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 30) - slowdown = 1 - offline_slowdown = 3 + slowdown = 0.5 + offline_slowdown = 1.5 offline_vision_restriction = 1 allowed = list( /obj/item/device/flashlight, diff --git a/code/modules/clothing/spacesuits/rig/suits/merc.dm b/code/modules/clothing/spacesuits/rig/suits/merc.dm index 56435ff7f5..6dcb6bb264 100644 --- a/code/modules/clothing/spacesuits/rig/suits/merc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/merc.dm @@ -8,8 +8,8 @@ icon_state = "merc_rig" suit_type = "crimson hardsuit" armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60) - slowdown = 1 - offline_slowdown = 3 + slowdown = 0.5 + offline_slowdown = 1.5 offline_vision_restriction = 1 siemens_coefficient = 0.3 glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva diff --git a/code/modules/clothing/spacesuits/rig/suits/robotics.dm b/code/modules/clothing/spacesuits/rig/suits/robotics.dm index 2c8ba637af..860ed2c6b8 100644 --- a/code/modules/clothing/spacesuits/rig/suits/robotics.dm +++ b/code/modules/clothing/spacesuits/rig/suits/robotics.dm @@ -6,8 +6,8 @@ icon_state = "void_explorer2" slot_flags = SLOT_BELT armor = list(melee = 40, bullet = 30, laser = 20, energy = 15, bomb = 30, bio = 100, rad = 50) - slowdown = 1 - offline_slowdown = 2 + slowdown = 0.5 + offline_slowdown = 1 offline_vision_restriction = 0 emp_protection = -20 siemens_coefficient= 0.75 diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index f823241be3..141bf4270b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -68,8 +68,8 @@ desc = "A heavy, powerful hardsuit used by construction crews and mining corporations." icon_state = "engineering_rig" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 50) - slowdown = 1 - offline_slowdown = 10 + slowdown = 0.5 + offline_slowdown = 5 offline_vision_restriction = 2 emp_protection = -20 siemens_coefficient= 0.75 @@ -109,7 +109,7 @@ icon_state = "eva_rig" armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100) slowdown = 0 - offline_slowdown = 1 + offline_slowdown = 0.5 offline_vision_restriction = 1 siemens_coefficient= 0.75 @@ -200,7 +200,7 @@ desc = "An Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it." icon_state = "science_rig" armor = list(melee = 45, bullet = 5, laser = 45, energy = 80, bomb = 60, bio = 100, rad = 100) - slowdown = 1 + slowdown = 0.5 offline_vision_restriction = 1 siemens_coefficient= 0.75 @@ -258,7 +258,7 @@ desc = "A durable suit designed for medical rescue in high risk areas." icon_state = "medical_rig" armor = list(melee = 30, bullet = 15, laser = 20, energy = 60, bomb = 30, bio = 100, rad = 100) - slowdown = 1 + slowdown = 0.5 offline_vision_restriction = 1 siemens_coefficient= 0.75 @@ -296,8 +296,8 @@ desc = "A Security hardsuit designed for prolonged EVA in dangerous environments." icon_state = "hazard_rig" armor = list(melee = 60, bullet = 40, laser = 30, energy = 15, bomb = 60, bio = 100, rad = 30) - slowdown = 1 - offline_slowdown = 3 + slowdown = 0.5 + offline_slowdown = 1.5 offline_vision_restriction = 1 siemens_coefficient= 0.7 diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 1b33d838bc..084cdcd12c 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -77,8 +77,16 @@ flags = PHORONGUARD item_flags = THICKMATERIAL body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS +<<<<<<< HEAD allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack) slowdown = 3 +||||||| parent of 4207b8567a... Merge pull request #10775 from VOREStation/upstream-merge-8158 + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit) + slowdown = 3 +======= + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit) + slowdown = 1.5 +>>>>>>> 4207b8567a... Merge pull request #10775 from VOREStation/upstream-merge-8158 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 9de95f3d6c..7ae8a87f68 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -12,7 +12,7 @@ desc = "A crimson spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." w_class = ITEMSIZE_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency/oxygen) - slowdown = 1 + slowdown = 0.5 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0.6 diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 450db31f36..ec0b54befa 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -389,7 +389,7 @@ armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0) cold_protection = UPPER_TORSO|LOWER_TORSO min_cold_protection_temperature = T0C - 20 - slowdown = 0.3 + slowdown = 0.5 /obj/item/clothing/suit/storage/vest/detective name = "detective armor vest" diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm index 032830294c..79a603b9aa 100644 --- a/code/modules/clothing/under/accessories/armor.dm +++ b/code/modules/clothing/under/accessories/armor.dm @@ -63,7 +63,6 @@ desc = "A collection of black pouches that can be attached to a plate carrier. Carries up to four items." icon_state = "lpouches" slots = 4 - slowdown = 0.25 /obj/item/clothing/accessory/storage/pouches/large/blue desc = "A collection of blue pouches that can be attached to a plate carrier. Carries up to four items." @@ -134,7 +133,7 @@ name = "ballistic armor plate" desc = "A woven armor plate with additional plating, providing good protection against high-velocity trauma. Attaches to a plate carrier." icon_state = "armor_ballistic" - slowdown = 0.6 + slowdown = 0.5 armor = list(melee = 10, bullet = 70, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) armorsoak = list(melee = 0, bullet = 10, laser = 0, energy = 5, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.7 @@ -143,7 +142,7 @@ name = "riot armor plate" desc = "A thick armor plate with additional padding, providing good protection against low-velocity trauma. Attaches to a plate carrier." icon_state = "armor_riot" - slowdown = 0.6 + slowdown = 0.5 armor = list(melee = 70, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) armorsoak = list(melee = 10, bullet = 0, laser = 0, energy = 5, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.7 @@ -152,7 +151,7 @@ name = "ablative armor plate" desc = "A durasteel-scaled synthetic armor plate, providing good protection against lasers. Attaches to a plate carrier." icon_state = "armor_ablative" - slowdown = 0.6 + slowdown = 0.5 armor = list(melee = 10, bullet = 10, laser = 70, energy = 50, bomb = 0, bio = 0, rad = 0) armorsoak = list(melee = 0, bullet = 0, laser = 10, energy = 15, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.1 diff --git a/code/modules/clothing/under/accessories/temperature/poncho.dm b/code/modules/clothing/under/accessories/temperature/poncho.dm index f1815760b8..0dbb48cefc 100644 --- a/code/modules/clothing/under/accessories/temperature/poncho.dm +++ b/code/modules/clothing/under/accessories/temperature/poncho.dm @@ -8,8 +8,6 @@ cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS heat_protection = UPPER_TORSO|LOWER_TORSO|ARMS - slowdown = 0.2 - min_cold_protection_temperature = T0C - 40 max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE diff --git a/code/modules/fishing/fishing_net.dm b/code/modules/fishing/fishing_net.dm index 39c5e92eef..3ba2f1591a 100644 --- a/code/modules/fishing/fishing_net.dm +++ b/code/modules/fishing/fishing_net.dm @@ -14,7 +14,7 @@ w_class = ITEMSIZE_SMALL flags = NOBLUDGEON - slowdown = 0.25 + slowdown = 0.5 reach = 2 diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index e4f2b63aeb..6e8f998952 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -97,7 +97,6 @@ var/their_slowdown = max(H.calculate_item_encumbrance(), 1) item_tally = max(item_tally, their_slowdown) // If our slowdown is less than theirs, then we become as slow as them (before species modifires). - item_tally /= 2 //VOREStation Add item_tally *= species.item_slowdown_mod . += item_tally From d740d77c8ab425d7379fb94209b11ddad3878f2b Mon Sep 17 00:00:00 2001 From: Verkister Date: Wed, 30 Jun 2021 19:46:04 +0300 Subject: [PATCH 02/50] Reduces vore overlay TGUI payload Adds a small thumbnail version of the vore overlay dmi with similar iconstates as the real file, and makes the TGUI payload send the information from that file instead of the hugh mungus one to TGUI to avoid killing the vorepanel overlay menu for everyone for the whole round due to some connection hiccup during roundstart preps. --- code/modules/vore/eating/vorepanel_vr.dm | 2 +- icons/mob/screen_preview_vore_ch.dmi | Bin 0 -> 156783 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 icons/mob/screen_preview_vore_ch.dmi diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 4e260552f1..013f080ef9 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -207,7 +207,7 @@ selected_list["interacts"]["digestchance"] = selected.digestchance selected_list["disable_hud"] = selected.disable_hud - selected_list["possible_fullscreens"] = icon_states('icons/mob/screen_full_vore_ch.dmi') //CHOMPedit + selected_list["possible_fullscreens"] = icon_states('icons/mob/screen_preview_vore_ch.dmi') //CHOMPedit var/list/selected_contents = list() for(var/O in selected) diff --git a/icons/mob/screen_preview_vore_ch.dmi b/icons/mob/screen_preview_vore_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d781fda3fc19d7339bdec00470b1f9a7e14936fe GIT binary patch literal 156783 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

P;T!~F;`>quGB<)&x6X1_+pty`-CJnwV&=S^j_ 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

b@Z=-75}Zpgx*6hz5;{m@YfMRU@~OU zOdH8`pjvoNb3!#)R)jmtwUuD6zc!U}^Ax#>ot4P1_$&2pZ`K<~yBCQ&q7PfN2l~Iu z2r|ZdQm-Clw6UCy1Dg8j4VOjZjv(vpieQfcxY?mX>rZqLdmkPU=ZHcHSyHzcp`*5mB|(638;lupm-w2!9xpOa_Ix*>}U3DAsa>^x#v}*tn)nd6U6cq82c`?J9F*jPJN&keq6`QBT@WjNLn&d#TGpZCjd8uY1s8vP@^KFp&yAKFGP)X#8*fV*zlM`s zP~(a}s1y$-hX|I922GswG&dm@ki+hN?6}26PFyI`MOewV@q~LXQobq0KGt&k3`hk1 zUHu0aCHIq=(gA#2^Hjx7t*l7(-na2emTbTNgK1mu%ZPsUmL$n2;5tsBE>rpXCDCtfsQ((wjUgv1%6LD#@3a# zYF5h-t6XWYvQSYlBBh-^7Y|{2m1vF?rt!-T2h^M|^Tp89xd;lkbuVmYj=a&oy!q6& zD?kQ}EB(Pmf%>H^3EBl(M_gq?`;@5$pYP)y>Cb`#;PSbXN>>j)Kb8>Ar)`Ni4{?*L zCLk?xAwY0sDWb8TpP25*`yXJ;^NM?+@h87#uhPVV^h63oR)K%Di_|QA{iHwWPuE4A z2L=aa3I%^MFS;^^EZ5gx9Bumt@A44M=w(F&19tre*Zl4ut_mRmf_gZATfGH$OPMgl zBI0YDyVYMVa&`lzeCXd6y=RgfC-?W310C1og$@5hS4F2)HR-W}A%|~n&O-o->V3*< zgAeC=@1Uz<%xL*2oa{pUyQl4K-GU`kYCnwTC!VA)C;KHL7D3Bopg7lpP_OMivR;!u>ErLuv$eIA?veAc$sm9RyS)Xw zm>?IvBwUV%giAqa`764kALW+$dO?pUiWT*8n)9f8vPqs3BE$D6Pm}3!ou&O(b2a zwRcpuuJ!V~d^^K~M_PHb@uo*DiuK5|Gup0tIO>#F)Du;GVk_!E^oL3~W^}>wDsdxs zI2$fJ&3J`(RTIN^E8ku}R|}LOdf<1UP~R>LvJKTL`VxVJ^TORqA)^)FfBBMNb(mDb z;jdHSq_fzvc8l?(EsB!bUR)zejOg{Yfejl$_-~r*{l))mNhTaFDma_+zV;(9PB-ss zJIiqn%l9i3o^jDroy{`OMk*^SKk}GZtpQONg)(~M?deHv}^; zPvyH|yuZ_5qcV}y=wM+ns^=NE>g}9X+KMk!qbL5R2$t9A<0Y>}ONtW5d7gpN9o+q( zdM|HRtb}Zyy2kh?d24eyX`Zne;GH(x_8iiCjs`+*Y$l=j#J42f{9ezh^Uv7K?q#)A z_AfBpDE>4Jr&2nh7T>NIwI3!T<8_a9dsP2~Djsn|mr!F@KV&<=hqDVXVQr?AR~*(2 zF1fC-mU}e?mbUf_!f6hPs>+_0Sf9PjJloUn6B$eCOtXTog1rEtW?!W^FI|LO79m?Z zS_a0wU_K@+&4niB;lBKmN&V7=-HE<><3*7>GI4+?@?w#_#YNXqml#RO4@Z!%A%uAs z*A=kcggG~v@)s!3xsB!r@LYSs{urQ_Wn;yIM+c>zZ+ND{M-4u_7B}x0-Gi@o5v(Kn zZHkyAtZ!{qC?az;24MtUlMv8E!*WcRT=1LAoHy_B^8#*sisT+8$X%vRC}*p1K?T7fcw4iMi(56x^O727e}a@T**LP z=*wnY^|z3+;PA=sy;*TbUw1YvsAU7V0CTnpS(nM`9SR>3+2ULF_ch8a-|Mf-e{^Kg zyd~OWy|xP?paa*WJ3-jd{7y{oYRpbj{Ap4dzXZ1D5idJ&Hn_A^vE{5REYDYAM1G$L zf)#6#>7k?Foqx{O`lykwFyIX7d6KQK^BntwQ$JZ9G(;lx(?xjt`Z8Qg)9|*8xy^CA zght0wlT8?E=X0MU2s)?3!w$G9)YU-yfsQ)ZLYl8Wf+*VnwGeQaB@iP^a?wm$?;vG0sD2WjvVpMFa@?&6N^?tqAV9VbY&JYO_LmYeW zo$??69F)6;4%!XND?#;R(emuyv9#Ut9oIZ$?(_~aaI`E()0?}rR$h~v z0HD9_H~!C9pTljrC$s17ftX?4JVDA6b9ZG*gSK-N0v0(IC&nOe!v|C9@ZDH~`(t)$ z^azU=LJ#n9u86>CD6zGpY3zgm909RU{!!GWXn8-;RDMVUb+fhIMQ~i~`*(MGcJ#*E zpW2a{EyY_p6Kk3Dwbj+npxyNT(zAbA^J53<7Vcs3~k48Ddzr>isT}z^L32Rg(b5h%|SThz)~P8 z{$v>X=YP+v6_5t5;IL#dD>Iu!-!hqHZFw9PB*w`@Ktr7yb$pruC9%j^NdMQwap)~L zh|C;MXymqXC1@Li82My5b$!$?3ipR@DUY0gOSI@W)_OSlJ2r-sREe0@>V!#M)ZwN? z9wj90v+C`z5xK^@QP>*<490-JbLo7yV0(hodbFjEv2AS6IG)(*K>v5PQaj6Vc?<4G zE>bK{tidGy$Y4`@-lFgz1EdAI%{<=+dchKAY-&zyF-Zdz_4czM>*0at;a!tr_&rV? z1%BYeb!x%Nz%7$)%<3;%@pL#EsNn_ARD=vU(pjw!N0Y23AA)+t)Xh4-@RZR-j$9;Z( z0Uitk6Fp{R8ox0zF=1^>P2ZUuw7a>J2vaRnD-6?K87{#xgU#eXqBZ^<|#>+oy@TZfv2^0jugyh?-J2#6#Lnqzl=_A+;O-s_1uekMJk(TeU9L3Zerz>}REIt#;PXrs&eHmVu^+*Arku zl=61F$M;+IcIZ_NKO?(~w6Z`FJ9SasH#-aYnPmJx_qDUxBJ04yh> z8B@w0R3^vw;??ma5d!ce=ml0I zq#QPlHl^m~a|}2P?&^>MJ=9N0SjQ4p6e67H;qJ#f_V_C}64P4)1X(*~bU-t;1k2Xmluw|NM1(OAn}KsihiNH1aKU5J}- zxSQlNNdrh34HSRn@=&7n`RG)|Jw6;6Eu{?I@AU!mZs-mOro>NVQWKhtpLF#-@W@?Tw<*8PM+-+#CO!$yC3nggOOxotgUOoFqO6P^% zN?bE0lST^q)ucpQ+5#71L2SGk@Hm5}_;YikCm>5K)o{qBqXYe4LA6k>iTIUT!YjJk zrz`s`YkeiQ63z1EZxxM~tqToY)z>|+n)D9BFhDUG0Osw!Ts7Qox-Vb8aPM1forCbL zMUYko>?tzNRrk&WA2X_|_iW@;yfD1=zPVG&I!tbR!sJ<58gF@J3t{ zM*$lOz#a)3G&4h;;l$whmvopPIiI~u?wEYohFk#XAA$diLGJdgVP5t+Uumuq7lny%yH^~teYIjr?S6;j18;2E0FLEsTfc)`w#43#T z>!wrvSYZfS!-jnW6)bQe+K`fYzf&S2)uZ?-DNX`>OZtsGqIc`s1Vf=Xx@;-Uv1Q{X z+lP&o((#*d;@I*fh;2;@UxUJ#7JDw!vL+CNfAgNahi8&sHom$v4jGtAo}g z>wy&Q0bm~&4gdXGUr!I@zi%XxbTvqEdziN1n`!fW&TD&%pUji63(Kv`lh#g<`ipoW zMN3hVG*_94sVUEsi^dMEByJ2q@LToep=YnX?Gcn)H^7SRra+5p5BeO+mu(e0 zt%%r~ZRm^`tcuHazB@C$$Adm9t9}RZYHmb zUgT%-QN#E7935W0D){c8X+%wUxexnG=;MX#FBNghbR4zt<(^YI;c7xqd;>eSdG1~2 z!;32AobqE18T)DS5E|i4IBUdNOj^VTm-A)0mI8(R;k8NX(hG+i zaw898)OPWIF9s^NyjfcND7*fDu)VaqX{i^zvoGS|>m9SHqdT5&6_vPYw99$@91Uay zu)NxCjAUF`ztlGI*p9#7Ch=JJMcOQc_GNaq7k1Lj^1lKhh$}xnyW~!??mP2?BY!=| zAiro4q{-RQ^t(47v3v@bZpD=KT)tq%LxAxfu=&=v&^J=1?`=J9e2o-^m^57!)-s5m zVgwxCcf>1J<9Eq(oI3hN{Imo*0k9CG91~b)F0?^n@vpjKmDImWzkdC?MBKwcBlwvC zxtRdY!?Qt8h)pb%?Tv+#JNp;E{T9S*1LG~{MbSxY9}lBa`K-HA&z4OkB3)=RLrc7Q z1F1~BqcpD{4)!b8mD#=qyS-H-|LV4r>K@Bcr!<9)^9^%ui4Ff<{jLWVj;yeorfcm_ zJ4UJ=Gof&^j`_ieXcW4A&q_*UpFm%d>A=kVyf|Im_XO=22f-}J`h(_@`<23(^J-c= zb~n+=K)kc#Ep`xtzo8WOw>M3K83*h>Ct_{*#8J^JOR+}j&@p^`i#q-@dgCcFy`Ro? z;rGQ4@b$3%$A&^rVr1@|+^slFTeY&OZ9o4lEHoGEWh3_eqKL)p0#G+Hxc3Kpv>*6{)$oe@&IYvZ|?-eh^KcQpZJeJAiVk) zfkZqAI0;)8jK-9Hix1lIpTr;*6s%04V2oAV_P{B$@(RRV^_V=#rjG08xgbU>7(3>9 z_^?cO#eaQ$Ep&VEau+Ohi+$vmG@WI_fUJyv`oA{K2g+dmTY40L*S!BXdCHI3iH-D5x$+m~tDs6Apmd=7fnMtZ)| z?^o+p=JLKXBPFe%!}&U&Z!W1;GRR(VhF$MqG2?5G)5!&FhOGs#`Q8DG2C#d^C=`>q zM^`(8_u!w>EsRvfnN4c11T@a_iY}gB%o-R=5CwchEYE$8_aCZuV^xJ0Cr{OyPUA%l zqY?EN^&%Z>w1L;MvLJ@t{I~PBo%ObX3CJCOANA-hrLqT`;MTtaiq<%n&I!3y2+e!4 zGRvXxa>~XJyc_#Xo4Iqiv$>=!ug;w|fZaWB$=j#dtH*RA^?DHE zA1THzpm4&m#b`2d_}4GF^?U7sGsn%|&@Ua2(-uBSY{L6OaC~~fIVkSB9odXUNZ*x< zYwr9S-B(W@Re8F6nxh3YKi6~$pBS;SVXa%n9n$IY=9=C{pB6-yOFms-&FI8@C^=y4 z2?NXB*n`x&VFR>@6%54RY`$_pC23S4@%GM6n2qcLrq;o{U))SP@Z{ZF%Hmlvb~&!f zu~pUz(0-FPg~*SLUH{cHIP&2Oyl3g^wl>x>gtR8pZWwb!3A<$O%jCupGpVvy~GYqc4)Vxq|a!@INNn^~D+V5%X|hcp>^j zDe?(F<#(;0-%GKsOJRYp>J)rXab{#|+F{(=oa8a)C#`a+$(~A(YrOTMm9j5bp(^bw zXR}tU)LcT8)Tde@Y|3_mG7$h?k(Bjzm>yf86<_#jU3vA@50T-Y?}p-JSD1P=9QgBx zDLCo($%82;1E9hB$5qMP_{Ei7oKD+~T@4NoJ`Wd`muFuzE;Ebp#!41rHwS*ugBj9f zQs)(e&df||RCts?&HL9A_)3gvR?xQYO;ih`@cnEeS$G9=iu%`G$#rA(FI>@;Xt=m; z(N!R7Sw9$i9RCKVvlDjr+fLJ1V(Cub9SI^3WnvF90|HAF8!g=t*N=^Yv)z4CWICvFMI`t2h%=WZikvU3@7z;x(5OxEGQa||{v#YW#9{t|`_sH!+;f7t zN3eBz37*lzMtN|bl}_x&iS0*P>3Za`vHLh5+Mb)(i);~fhNj&n=kQHf<6SL$Tmq=| zoQqKusUv!41=4>XxqQWBZAm}0iHOyOPKa=DGe-XQiD<~#gzsD?3WG#PmWcdXy{r9w z|KJ>Ng=ivDOy~N-hgJ;dm)>=dsxC!5>gR~`fzTZ6&5*G^Y z&lP4;z31ITlo3j|Id~a+c(m?uHD$`Nh6IR^U33pD=Kll;N`?Nmy7u*4yx=K?h@8DX zPXxaD0#x$e!fnl`@yQWEjjsbFvFl3u`ugeeQPv(OXS^pQw%{-pKk6Wp3lc>m*XOPt z9v=Qu`L%8!Or1(>_kez|1)$d&Pt1!N%KG~tn*u*xt<8QB5m6b89JhiYFkV|$2rntkpLzvs>1z&`|?%l$$OKrX~ z-$$aK(=We%3QVP2FzT+)U-LgYMk)R`M<(}}VY)4GabC1xj!Fj3L2abv1r0f{j#?6e2uuRW3u?z!=!R;9Qz>= zsP!>B=;T-sAefB<&An$$l5e;1F0jFojn3Q%Z4%c*OGj;eZ!^0>X)`pD z_=t2FMpQ#32f%GA^Y0z=a323mU1O(a>B(}2fmOLXheN~CtNJZ~n*Owp6k8Li|K+vI zuQdT1v~pdC*D+a}RzK%}fZh&+lyI9wAv>#|YfZ--yf>|h{;7|jKArusW1EcALTtWb z9wU0-QSi5D2gd~wuK@EPyX8Y)6mMR#dwZGVY{i}+1=-6x`~#OkQ}k#+rCGYOxYI|( z)n?O?3^q~ieY)3o&vgp6iXQ)8{hz+1bc?m%md)6HZ2Xt+v{C1o8YZ&3K9~)@ajgKr zQA>9Ts30x!!xMPobBd;`gID%`y#RiRC*h5mGMm(V;jKB5xcn^vgu9Lx!{n zt?_dkNp3$*Dz3*Gvpjl)v(Anr?QiJ@O*M|*1?V*w2#BME{2=(;}aQw^$v$6C- zh=OIdj?;`g{x3UmlYZ)5FLF7AB&i~2a&i^#Zz#+nZVMK)s}=pL`Iz7Q z@^1GJ`}72u|C+chEs#j0LuZW?%e~8i7imJ{oOk>x>-A_{`}3!z?OblSaL3zbj0Onw zWKpd%ZXbHx+AwcH?s>_aRA!&#GwLAQqMs;Lk$T!`3r0-cCZpaW26ftjQmsFq;bvt7 zI09!oihMLT&Z=X(LwQ%L|o?*@*?hcz;Zem=xp zQ6LETWM4--KHqw&7?aFL6STdZFsEl6{VXoWeCt--IG2*e;euIR2B|L!HNT;DZ@JO? zVKDK^TMzHzth!>4VtHyC|L6Va#ExEWv?N8uCJngif%l*K#m}e2OoUawze(zubRdon z)(u2%x4oSR0e0ALd(>W}5G5Op-Gt$x&8!m3G0o>HOMNS~T8mj>Z>nKsrrbRua+6O_ zwHI0d@GRypb-IJQs-}^~Fdf_soiCgsf^^_S=;}5;vzwv2p z8XvCQS8MS;cm9-?Iy1=Zz96kfGCi8kIu}b49c1u_UPL*d6r18rZJQ*g#WI7Ru8p7y zh#B|`5sb00YD)@ zcJrUputqmJbT+aS--;XTeyz@E)~}Gf5{$RJ6)kQ#{s@M&0I8*6$c|m(nC88> z{kf(f|0?Im8F8X_Z3R^$y<(SJRrtH<18oa^suGQOCf-fWD?A9Z*oIX*y0}IzL zdu>ukuTN&z4}H{bFt9qJm59@JZGD&nY}E{*aUElTk9(#KLzu}8?z<0&n^Bq6ai5X` zJLt2V0}P8Ex->a*a};0eVmxVJ8|Oi}OOF>OWQM(g0Vkt1*jI(F%IxTHo>n(E678Z{ zlv13G^`1hY+yKqCmRIy9@@|sQC*xc<7u_FsJt1Hn%0(-nWSkj=LIj!y=>e^i56`Nq zy0Bjb2KhB6iz2!bUwxIlz>%)$S&M7WV&WLsGR8EBv zAhc)v)1051lpHy03#Wg0zDMQNJ}jNpkX?$CEvb)9{8BH75wE~9qfOQS7--D$Q!jhJ z`jsor@`+{+Uu`}djKRmY3`{L~L1T9j+MR!<#nqrvz5~D4y1ZtnLCJ+ zp@XRh1Yl3Tloic56Js!?^EsnI=p80xHAKqE(UkF3l5j)O6sZq_Ds^N8gwgCit(&Mx z9XVEN!Q+oVWPdQO3b#T4i!BFg{oOHf0hZzeU8$;{J27vR8PRdidilS_dT8eI(~CBo zS|pnY*&4ZO!UErt4f880A4^a_ro>Q07X|cC7X-4oaouTTx?a{R8gRL-Y;8sMnQM+o zd`mCEEApLDA31-OHO&2Zo_6MJ`yrL2bniN8^)#W0F9(<5_(f^QWVK0)f~cPpI?uU% zq64GRM0>Tz#KlRY9CK2mO)-s%DBc8(0CM9(%wnxcuzs{uydyxJmTDyt96*|1F|s;cka|D1oU$}3-yOg_jE@LlXES> zPBQh;iRz9GWweF!n9LFMbR`W@n8eFQ(ACFJ-1cGw1G5NCsg+4KO0W zPr372x9cq3yADB;D1R}XMZ;&qPY|tPyX<0)X8WxAOm4t^@_vs=>E-XM;&%)YQ>{X= zkrh)vBMKzJ6-Y#6)QYTnnNxa7f(xh#>=$-{{wn(^Ah?Dr?KsdJY0g*DaO;w51by>_ zy9$27tq1=0-8zY_Mb;fdw9ngl@q)d_ooE5#kTs^2ZCm+YeOityJ>CDnBrNkYX&ek< zb)|Xv`7BPnu_3ybO%_hwG{0rCIZ#TjH}g*MKmjqei|!?*_)V_}cF>1J2@Su-k7jnm z3=t&(n&8J&m@G^AO5F65-PnsvjzPGPcjUgJE|Gh-y=#@DxxGQ4cGW z-RbURbdP$zEjF#t7JOm|)OdO@5`d2Uj8Fcbb4vFFs~#W4TG(Abg$Oc~3z$>C0`)+x z#*)duUd_z(`Rgei)Yi!$f#z-VOQSH-eN*M7?E&spF=L|jt~!Od*f!M1JF`k&WQPvlCm z$S$`%3Sql8U7P54iA21=uPq)j77D?MHD2@(Mfb!6QG?aZI6z4GFRr%@a&cGC*N-7k3zglAr9N*!>jS7LF_C!fQJ zjgl`%iAEpugG-E`BGQEkE;)@34G;6ZvnXs-5Ci#~UgSdTwG7e=K(4{$$v-S?|5O-6 zY*^jB`}N6U+oTLc0(^sb!|JWoVKsj!_L*|btEC2L{}mffuHD4f(&VAPs=Z>U3E+SL zxA@do;pX_Gn4`O)bt?qh&3ih=gH6`0aadpGmdAJR22!`(ehNa{dXL}6Fd+?OZP4g< zmyZ@D2pv9YgaT8MQ-DB8lAM$|wt)oMok6o)ACBac+ zH!{Q1Am@%b^-()UiY%xurxLKB>hy8}%6j*^;3D;-r}Kq3y0-m!#Q7Bq*1%PLDVA!5 zg}udwGAZT93^Q+9$DY+9)dlfNO6(9xf&dg!Ut8P0NA2*InY0Z}t^mZ$-S1vT6TZMN zCUEip>2#z@ienji`F?IwnpIgXGCSWqHN0#D-DNbcY+s+iDN9E2T+42zjGWH1Ee)Im zjaNtO!6cZ@yzC#eD;!a$-*lMZ`XJH?|5fntwE!$d6rj zfu{E3=O=Oz8%K4-=q}i5E>3=tfa~^m6#OPm4;9}5H&U#Xc5rZ;Vmv1eyp>j3ALnuULxGR6#0{AJ41_BI%(%L$ zYCp^mLza9tDbj!*y4?#}2X6!i=85TpdmRBf08t`*|9FKPVK7D$B>%3QT_29{e0#89p z7#kaVKNV(~)zX`-*L}ZkR)mhGya8dWBE$^A`D{NnY(NphiJ%yF5 z0Tl(UjbOsg_8P5q*-i#ItpXz?y}?0J z$y@*hYYi5oT=mgcqHQJY;^|6bo9h^7PL?08f_ zG%Eq%Y?CYGa%yD{j4O0rsrMkQreFK|`e0Gj3x>uk41GxF?j$i{=dVujVfje0v*LGX zE!KGE=vk&AnIGlJh1z$8fn}Sz}lJMV2OHYh>H5n&yjQ<5>GHUsV1-T$@n;xIVX>|iAD30cV6Mtumu;X;` zqaDj1Xq4s!Y%P8}n9Mua3zU(Y3YI+0=Y$crF ze#AhR;|r8KO-)U&rNi(hab>!Gv}a#WJvcW6+=|U$=OpZ>yVo4Y;g}F^S7ahLRaH?D z&y9VkTF^yv{jl!~HmR2_cwN*uASZGF(Fpo~a)i$!AgeTe@^3fY)h&WYzfnqZGD}`A zL}CP;x}H)8KCdw{`EY@GMY=}@px(^5c-HPbIzzKz!3dESy-_!fZ!&pHkMD0G|Agcn z8a%YmN}Z2BJ%80wEVz%inh?+zGeihC%!z@0Bnb6od(7 zCJ8t9KEs7rKTsA;HmZ3B(9n)KJ%?0r#G_8*mL@hHH=u16G7>0$e_SWuBGOO007 zUqGi^VLb8ePUB#P+o(=6rpEI6e~1hoG<#ct=0^EXn_1S$^yR^*|L(%V#htRpDmW*h znH|6Jh$gd+Cx7?uScMmz;9-10I#99)`PryqefAN_EwbVORRbmX-K$qPHvJ{;xF_pj zZ?*&CrUyySg~EadF28j<%>Io1uTZMm$KQsZa;kDFbE+y=e1k$x&S^ZZy|uOZ@k5H) z&Fz}uzlYiMO83Y~1h*V<{`Di>>Ghi*wxyOhK7oubmae0!zWf_&kWEE}d>Oo47YCSZ$!U^?Z%e|#peJh($6#PQWJ%kf=O7Ip6f^}K`h107}jeGXcuNDwdZ zMu;S>LKF6)KfXn=wO(d2vG1o5NjTvb`~)S_4i3-i75q@8=3QuGc`eFo9fBCO%52xv zb0K!|I3xc|hj6D8xpl>QU#um{)t(RCm-{pJ?S+}sK{f6=5k#+Qy^&;-c!x|7NTyFx zAPS-OJR75PvU?*FvknugP9rg#Z~tQti60>xTIfo$&FSQaIm8kx1QQ zz~br7==F!Fwq#m7>qXqGU5zdqo{n-Z8BChpJ1(XPBcUGSVEbJ{BlLd-ze)H$jxOeZ zFVjCl9qGH|SwGPCv#*8}Bt?1t_1*N`-0!3Yg?xC)GTk+sGZ(PEbS6y-neor^C`}!7 zK`vfYGbYXXIz4_y-=@puV>zuM>p#OP zv4`0oehClm=?+Y_>W8u0d&)(a#kuYQYf(U@n8%BY)z|>!rIuGFa!X8W&JawOadlis z?_%;Jx5MKhg}&1VcHPFv@UucBuHFxA))(LYyud)%vgL<$nHEc~(6PSY#MQ7i#{0jV ze@hM?<>%L3DRC(?I}&8p)cnTirFl$}*f9k`u4H#dD!EgZ!rArx-Qwgzmp%3QQ*8Md zpVF}6uvjEv%$0l45`(Bs=G|VO77d7v-J0aVQ;LQ5b`97nKcC0OFM0?sChMWy2cn(W z`KLGMlKy}Whpn}0=_OC6pyC;~=L)!Un)ZWD0^a<@jEs|l(F((-AHMxonwgnLBWPzt z+Klc;M;*EbmY-IPM2D|5)_WK8E7?uasYz{l<9=cM|kf)CHgil~7*Yu5?IW_KA<3 zB3z}grq7y9Tx)i+sF%>0dM+XtQa`{%IDd?hAb08eRv=g%ZkCy4c~<3D->~N_7-ZD2 z?;L5AhRMx+RfPt1FXaKDa-`{G?xQ=2g6kCDxdT><421N>hzri!KTF2JweoN>acyg` zktz)jm(y@;`A6bsUBqLd%QS)jD%q> zkom@TH(RXH%)`6@beluwkPywFuS9jCqv{}$)aWW!fGuXu~k z^0|y}3GcT8N}HMPT=>0XYtzt&fX`%3ZDQ0!CG`_VK08Ui#PgLoR`xVri$ob+-s->Y zxTOEEU|jyjlE=|a=`T-QXbX?(^LmA3HbyM`UGneL63?{3yj_$)m%WI~uUfwyHGXSs zn$h>(QgUy{gNl9OmMm_3R3N+9?Bjp4;Ie2w$))(z6EzWR4z}xLMws z&FbQ-)+rYN{;8}Z?9{tX-v(?#KC-wNT?t|+m9Z^;G?nZ;xZ*A#!~yk^8s2ZfiP{ul zLs}@_aMolNADp)HdL^kH*fWvTmXy{&Nsb`xM<>U`Mo!D)Uk-R^@DB6csTzs=+bkKQ zuK^HnH83myxkKcrs;X*g&Pw}9ZnBd#^}tnA>R~p}l?g@R4mNo$O**_SX^Z>>Vj6BvrTBQ(%-h1CChaKhZZES=ep{hHZODuuM_XY;`nkSJuz8;UfmeH;v_D@zf zX&N|6x9X#2dGSdnMw%T9f)^Yt!9~_OAV=Xyo+drX^NH~3(6sfap-oeXb7aJ$sZdn$ zF5;mwa0*M9tD-!@hvH_dhyIp#OaJ+u5u)NOf@jhYMa30m1{Dv(dx~Z|+pb*BG5!sM zu?p;-#KB-8SdzLSV^T&@`|yIvr$C`&vikPaP>H*0qlr^h557T1EOTlu(1}w&f6nd5 zVFHy(Wp0Mhl*c|qN+s{-l7<1ffUFEivx0P}c;0WK=zI!3&NZjW`Tm;S-oWE6x;KSA zP5*A^R^2R+8gyn%u%<1$_V)H#>z_eXbYFsjO^@3an{TbYJEdC%8 zt5@(wugaZ!4rI`mFW(^4dt{Kudb^uabN+Q}Ax=#=eg9{NFYFCWJ3HybsMUO9vU~N0 zoM*l<{{GvH-WlCwzJ*(#0#6F2=jTgQqG)8ew2Qx~eTe*~Pm=_qJ0)>)9x8 z!*Cw~H7A(HSx_qGR6PQJf19Vo21^PR38;8Rb{C{y#n87Y^G^!Z0to|gv;-h zza6%Z?smImbRQQicK&FU3un8J$}L8wA&!3UOo?JQGrDg`R<6A#J<$bi1#(gITuC?F z)N;HwGLg+h=^EcHrOH?SE}q19FRNeK$os-1pSvTQIvU0!M7v1m;xue!y5^T$6~mKw z-@57cI(24sUw3$7lf_@sgki^@1}%&=CqLVaM={VFNV5CK^DY|`;fMmJ$cLTW$SKv- zX*?m<=hdWk))n|@`a$Y>>a=@0GD*(=h`H8oi6{?P&lk8bF-{kV5k zZsp4?Ri;&5NG{g#a$#;yTXURKdv3y+yZSiF4xA~6hK3SGn^h%aSg~<3 z_6Pq3xqRql4s`i7HB>;IJ$ucS_IBQtB%mT9r*&N42$ffS&~E<%2xc=Alb73lMzw@E zUiVlw;7?c{IJ-a#dE5n?8umhy8v@NSdtYCa9r3|k*cS^<+g;EJ)`Z$M?3^ZC@W$63 zAr_}QWB<7|@L;=Jigyxuu_P)qLZ#JadMnz-D+681krK2Z9EV#vJBjDNcMNG9IE#v& z8q#om!-N&A^)}05iM%=`Nrg`{G&mR~q6(wzu@jdL?dkY9h4@|C+t~*J!Pc~HfBLc8 zCmrsFH?B?VTs4;>cfy(?LCE8JDvPQl+3}%{{g)=@6Q%Y?wzaH*?Eg1q_N*;Jl@^P{ z9!v6Q!p(W}nfa<6+7qjINyg3bifh5o1a_nB!Ou_Z^r!AOwk{7b@Sm1AMAJ>u;`Q7&te@o$nMA z6RS9HB&r5U^f2ktvp&^0*AQ1-=x5=9-$j_GhKAQ;Qe9F4qS`}jBdhZ^gt~g<6x$5n zcWgedGno*pQt5kej`zcfS6Eo+PA7-ky^an)CN_BE{2^0rTEk5}vgH2q6}NPw$VWZ* z=9}X}>tNLW(G^j*eNVQjH@J_e_0TR(YHG6#YrNDk{t6XN3lxI%(jj)v&TyXtidf0%+*ABC&sxt0i`38J-%KGq4T|69WHLl~t=yV4 zZ~bBI2UlN=L*~P@_!yh2SK4n8BUS;*+e8=h(F=IQtJ9vE!@W_hFc&`dom!dDs5>6! z^BOikZO-FtZ08a?&U}OHxcoNvCns}0FgN`YN{5=uZ>PiJ&k0#s0UL7%Dn#I)Ueo zgNmW4q)EX&xB-)OEknA@tAv|BYwIW}9A z`GzNK8d>1nxz0XT5�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 Date: Wed, 30 Jun 2021 15:29:05 -0400 Subject: [PATCH 03/50] Merge pull request #10760 from VOREStation/Arokha/fixemote Fix a couple cases of missing emotes --- code/modules/emotes/emote_mob.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index d017325872..31bb795b31 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -168,6 +168,8 @@ var/runemessage if(input) formatted = format_emote(src, message) + if(!islist(formatted)) + return message = formatted["pretext"] + formatted["nametext"] + formatted["subtext"] runemessage = formatted["subtext"] // This is just personal preference (but I'm objectively right) that custom emotes shouldn't have periods at the end in runechat From b6e1989a0109d38e5992d6c323cebedddc04970a Mon Sep 17 00:00:00 2001 From: Chompstation Bot Date: Wed, 30 Jun 2021 19:29:34 +0000 Subject: [PATCH 05/50] The One Where I Port Modals --- .../components/omni_devices/filter.dm | 4 +- code/ZAS/Diagnostic.dm | 2 +- code/ZAS/Variable Settings.dm | 5 +- code/__defines/misc.dm | 15 + code/_global_vars/lists/species.dm | 7 +- code/_helpers/_lists.dm | 21 +- code/_helpers/files.dm | 2 +- code/_helpers/global_lists.dm | 7 + code/_helpers/global_lists_vr.dm | 20 +- code/_helpers/sorts/comparators.dm | 10 + code/_helpers/unsorted.dm | 11 +- code/_onclick/hud/screen_objects.dm | 4 +- code/controllers/subsystems/game_master.dm | 2 +- code/controllers/subsystems/garbage.dm | 2 +- code/controllers/subsystems/media_tracks.dm | 4 +- code/controllers/subsystems/supply.dm | 8 +- code/controllers/subsystems/vote.dm | 2 +- code/controllers/subsystems/webhooks.dm | 2 +- code/controllers/verbs.dm | 2 +- code/datums/datumvars.dm | 4 +- code/datums/ghost_query.dm | 100 +- code/datums/locations/locations.dm | 40 +- code/datums/managed_browsers/feedback_form.dm | 4 +- code/datums/mind.dm | 7 +- code/datums/uplink/announcements.dm | 4 +- code/defines/obj.dm | 9 +- code/defines/obj/weapon.dm | 2 +- code/game/antagonist/antagonist_factions.dm | 2 +- code/game/antagonist/station/highlander.dm | 2 +- code/game/base_turf.dm | 4 +- .../gamemodes/changeling/changeling_powers.dm | 2 +- .../gamemodes/changeling/powers/fake_death.dm | 2 +- .../gamemodes/changeling/powers/hivemind.dm | 4 +- .../changeling/powers/lesser_form.dm | 2 +- .../gamemodes/changeling/powers/transform.dm | 2 +- .../changeling/powers/transform_sting.dm | 4 +- code/game/gamemodes/cult/ritual.dm | 10 +- code/game/gamemodes/cult/runes.dm | 6 +- code/game/gamemodes/cult/soulstone.dm | 2 +- code/game/gamemodes/game_mode.dm | 10 +- .../newmalf_ability_trees/HARDWARE.dm | 4 +- .../newmalf_ability_trees/HELPERS.dm | 9 +- .../tree_interdiction.dm | 14 +- .../tree_manipulation.dm | 2 +- .../newmalf_ability_trees/tree_networking.dm | 10 +- code/game/gamemodes/nuclear/pinpointer.dm | 8 +- code/game/gamemodes/objective.dm | 6 +- code/game/gamemodes/sandbox/h_sandbox.dm | 10 +- .../devices/disposable_teleporter.dm | 4 +- .../technomancer/spells/audible_deception.dm | 2 +- .../gamemodes/technomancer/spells/control.dm | 3 +- .../gamemodes/technomancer/spells/illusion.dm | 2 +- .../technomancer/spells/summon/summon.dm | 2 +- .../gamemodes/technomancer/spells/track.dm | 2 +- code/game/machinery/Sleeper.dm | 2 +- code/game/machinery/air_alarm.dm | 4 +- code/game/machinery/airconditioner_vr.dm | 2 +- code/game/machinery/atmoalter/canister.dm | 4 +- code/game/machinery/bioprinter.dm | 4 +- code/game/machinery/camera/camera_assembly.dm | 6 +- code/game/machinery/computer/ai_core.dm | 4 +- code/game/machinery/computer/arcade.dm | 2 +- code/game/machinery/computer/card.dm | 2 +- code/game/machinery/computer/guestpass.dm | 8 +- .../game/machinery/computer/id_restorer_vr.dm | 2 +- code/game/machinery/computer/message.dm | 2 +- code/game/machinery/computer/robot.dm | 4 +- code/game/machinery/computer/shuttle.dm | 4 +- code/game/machinery/computer/supply.dm | 6 +- .../machinery/computer3/computers/card.dm | 2 +- code/game/machinery/cryopod.dm | 2 +- code/game/machinery/deployable_vr.dm | 2 +- code/game/machinery/doors/firedoor.dm | 4 +- code/game/machinery/floorlayer.dm | 6 +- code/game/machinery/gear_dispenser.dm | 2 +- code/game/machinery/hologram.dm | 4 +- code/game/machinery/holoposter.dm | 2 +- code/game/machinery/navbeacon.dm | 10 +- code/game/machinery/newscaster.dm | 20 +- code/game/machinery/pipe/pipelayer.dm | 4 +- code/game/machinery/requests_console.dm | 4 +- code/game/machinery/status_display_ai.dm | 10 +- code/game/machinery/transportpod.dm | 2 +- .../machinery/virtual_reality/ar_console.dm | 4 +- .../machinery/virtual_reality/vr_console.dm | 6 +- code/game/machinery/wall_frames.dm | 4 +- code/game/magic/archived_book.dm | 5 +- code/game/mecha/combat/fighter.dm | 6 +- code/game/mecha/combat/phazon.dm | 2 +- code/game/mecha/mech_prosthetics.dm | 4 +- code/game/mecha/mecha.dm | 6 +- code/game/mecha/mecha_actions.dm | 2 +- code/game/mecha/medical/odysseus.dm | 2 +- code/game/mecha/space/shuttle.dm | 4 +- code/game/objects/buckling.dm | 2 +- .../game/objects/effects/decals/contraband.dm | 4 +- .../objects/effects/decals/posters/posters.dm | 4 +- .../objects/effects/spawners/bombspawner.dm | 6 +- code/game/objects/items/blueprints.dm | 4 +- code/game/objects/items/bodybag.dm | 3 +- code/game/objects/items/crayons.dm | 20 +- .../objects/items/devices/body_snatcher_vr.dm | 2 +- .../items/devices/communicator/messaging.dm | 2 +- .../items/devices/communicator/phone.dm | 5 +- .../objects/items/devices/denecrotizer_vr.dm | 62 +- .../objects/items/devices/floor_painter.dm | 10 +- code/game/objects/items/devices/gps.dm | 4 +- .../game/objects/items/devices/holowarrant.dm | 4 +- .../objects/items/devices/locker_painter.dm | 6 +- code/game/objects/items/devices/megaphone.dm | 6 +- code/game/objects/items/devices/multitool.dm | 2 +- code/game/objects/items/devices/paicard.dm | 6 +- .../objects/items/devices/pipe_painter.dm | 5 +- .../game/objects/items/devices/scanners_vr.dm | 6 +- code/game/objects/items/devices/spy_bug.dm | 2 +- code/game/objects/items/devices/translator.dm | 2 +- .../objects/items/devices/translocator_vr.dm | 64 +- code/game/objects/items/gunbox.dm | 2 +- code/game/objects/items/gunbox_vr.dm | 2 +- .../objects/items/stacks/marker_beacons.dm | 4 +- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/toys/godfigures.dm | 4 +- code/game/objects/items/toys/toys.dm | 4 +- code/game/objects/items/toys/toys_vr.dm | 2 +- code/game/objects/items/weapons/AI_modules.dm | 10 +- code/game/objects/items/weapons/RSF.dm | 2 +- .../weapons/circuitboards/computer/supply.dm | 2 +- .../items/weapons/id cards/syndicate_ids.dm | 2 +- .../objects/items/weapons/implants/implant.dm | 9 +- .../items/weapons/implants/implantaugment.dm | 2 +- .../items/weapons/implants/implantuplink.dm | 6 +- .../objects/items/weapons/melee/energy.dm | 2 +- code/game/objects/items/weapons/scrolls.dm | 7 +- code/game/objects/items/weapons/shields.dm | 2 +- code/game/objects/items/weapons/syndie.dm | 2 +- .../objects/items/weapons/teleportation.dm | 4 +- code/game/objects/structures/barsign.dm | 2 +- code/game/objects/structures/bonfire.dm | 2 +- .../objects/structures/ghost_pods/event_vr.dm | 8 +- .../structures/ghost_pods/ghost_pods.dm | 4 +- .../structures/ghost_pods/ghost_pods_vr.dm | 2 +- .../structures/ghost_pods/silicon_vr.dm | 2 +- .../objects/structures/kitchen_foodcart_vr.dm | 2 +- .../objects/structures/medical_stand_vr.dm | 6 +- code/game/objects/structures/mirror.dm | 2 +- .../objects/structures/props/beam_prism.dm | 14 +- code/game/objects/structures/signs.dm | 2 +- code/game/objects/structures/trash_pile_vr.dm | 4 +- .../game/objects/structures/under_wardrobe.dm | 2 +- code/game/objects/structures/watercloset.dm | 2 +- code/game/response_team.dm | 6 +- code/game/trader_visit.dm | 4 +- code/game/turfs/turf.dm | 2 +- code/modules/admin/DB ban/functions.dm | 8 +- code/modules/admin/ToRban.dm | 2 +- code/modules/admin/admin.dm | 46 +- code/modules/admin/admin_memo.dm | 2 +- code/modules/admin/admin_secrets.dm | 2 +- code/modules/admin/admin_verbs.dm | 44 +- code/modules/admin/callproc/callproc.dm | 10 +- code/modules/admin/ckey_vr.dm | 2 +- code/modules/admin/create_object.dm | 4 +- code/modules/admin/map_capture.dm | 2 +- code/modules/admin/player_notes.dm | 66 - code/modules/admin/player_panel.dm | 2 +- .../secrets/admin_secrets/alter_narsie.dm | 2 +- .../secrets/admin_secrets/jump_shuttle.dm | 10 +- .../secrets/admin_secrets/launch_shuttle.dm | 4 +- .../admin_secrets/launch_shuttle_forced.dm | 4 +- .../secrets/admin_secrets/move_shuttle.dm | 6 +- .../secrets/admin_secrets/show_game_mode.dm | 4 +- .../secrets/final_solutions/summon_narsie.dm | 2 +- .../final_solutions/supermatter_cascade.dm | 2 +- code/modules/admin/topic.dm | 140 +- code/modules/admin/verbs/adminhelp.dm | 4 +- code/modules/admin/verbs/adminhelp_vr.dm | 2 +- code/modules/admin/verbs/adminjump.dm | 418 +-- code/modules/admin/verbs/adminpm.dm | 2 +- code/modules/admin/verbs/atmosdebug.dm | 2 +- code/modules/admin/verbs/buildmode.dm | 24 +- code/modules/admin/verbs/change_appearance.dm | 26 +- code/modules/admin/verbs/cinematic.dm | 8 +- code/modules/admin/verbs/debug.dm | 44 +- code/modules/admin/verbs/debug_vr.dm | 4 +- code/modules/admin/verbs/diagnostics.dm | 4 +- code/modules/admin/verbs/dice.dm | 8 +- code/modules/admin/verbs/fps.dm | 4 +- code/modules/admin/verbs/getlogs.dm | 2 +- code/modules/admin/verbs/grief_fixers.dm | 2 +- code/modules/admin/verbs/lightning_strike.dm | 2 +- .../admin/verbs/map_template_loadverb.dm | 17 +- code/modules/admin/verbs/mapping.dm | 10 +- code/modules/admin/verbs/playsound.dm | 4 +- code/modules/admin/verbs/randomverbs.dm | 98 +- code/modules/admin/verbs/randomverbs_vr.dm | 10 +- code/modules/admin/verbs/smite.dm | 2 +- code/modules/admin/verbs/smite_vr.dm | 6 +- code/modules/admin/verbs/striketeam.dm | 8 +- .../admin/view_variables/admin_delete.dm | 2 +- .../admin/view_variables/get_variables.dm | 24 +- .../view_variables/mass_edit_variables.dm | 8 +- .../admin/view_variables/modify_variables.dm | 16 +- code/modules/admin/view_variables/topic.dm | 32 +- .../admin/view_variables/topic_list.dm | 2 +- code/modules/ai/ai_holder.dm | 2 +- code/modules/assembly/holder.dm | 4 +- .../awaymissions/bluespaceartillery.dm | 16 +- code/modules/client/client procs.dm | 19 +- .../preference_setup/antagonism/01_basic.dm | 4 +- .../preference_setup/general/01_basic.dm | 6 +- .../preference_setup/general/02_language.dm | 28 +- .../preference_setup/general/03_body.dm | 32 +- .../preference_setup/general/04_equipment.dm | 6 +- .../preference_setup/general/05_background.dm | 10 +- .../client/preference_setup/global/01_ui.dm | 4 +- .../preference_setup/loadout/gear_tweaks.dm | 42 +- .../preference_setup/occupation/occupation.dm | 2 +- .../client/preference_setup/skills/skills.dm | 2 +- .../volume_sliders/01_volume.dm | 2 +- .../volume_sliders/02_media.dm | 2 +- .../client/preference_setup/vore/02_size.dm | 2 +- .../client/preference_setup/vore/03_egg.dm | 2 +- .../client/preference_setup/vore/06_vantag.dm | 2 +- .../client/preference_setup/vore/07_traits.dm | 56 +- .../client/preference_setup/vore/09_misc.dm | 6 +- code/modules/client/preferences.dm | 4 +- code/modules/client/ui_style.dm | 4 +- .../client/verbs/character_directory.dm | 4 +- code/modules/client/verbs/suicide.dm | 10 +- code/modules/clothing/clothing.dm | 2192 +++++++++++++++ code/modules/clothing/clothing_accessories.dm | 2 +- code/modules/clothing/masks/monitor.dm | 2 +- .../clothing/spacesuits/rig/modules/ninja.dm | 2 +- .../rig/modules/specific/self_destruct.dm | 2 +- .../spacesuits/rig/modules/specific/voice.dm | 4 +- .../spacesuits/rig/modules/utility.dm | 4 +- .../clothing/spacesuits/rig/rig_attackby.dm | 4 +- .../clothing/spacesuits/rig/rig_verbs.dm | 6 +- .../clothing/spacesuits/void/ert_vr.dm | 2 +- code/modules/clothing/spacesuits/void/void.dm | 2 +- .../clothing/spacesuits/void/void_vr.dm | 2 +- .../clothing/spacesuits/void/zaddat.dm | 2 +- .../clothing/under/accessories/accessory.dm | 2 +- .../under/accessories/accessory_vr.dm | 6 +- .../clothing/under/miscellaneous_vr.dm | 2 +- code/modules/detectivework/tools/scanner.dm | 2 +- code/modules/detectivework/tools/swabs.dm | 2 +- code/modules/economy/ATM.dm | 6 +- code/modules/economy/Accounts_DB.dm | 4 +- code/modules/economy/EFTPOS.dm | 24 +- code/modules/economy/cash_register.dm | 12 +- code/modules/economy/retail_scanner.dm | 12 +- code/modules/economy/vending.dm | 2 +- code/modules/emotes/emote_mob.dm | 2 +- code/modules/events/event_container.dm | 2 +- code/modules/events/event_manager.dm | 14 +- code/modules/food/drinkingglass/extras.dm | 2 +- code/modules/food/food/drinks/bottle.dm | 2 +- code/modules/food/food/snacks.dm | 2 +- .../kitchen/cooking_machines/_appliance.dm | 4 +- .../food/kitchen/cooking_machines/_mixer.dm | 4 +- .../food/kitchen/cooking_machines/grill.dm | 172 ++ .../food/kitchen/smartfridge/smartfridge.dm | 2 +- code/modules/games/cards.dm | 12 +- code/modules/hydroponics/seed_machines.dm | 2 +- code/modules/hydroponics/trays/tray.dm | 4 +- code/modules/instruments/songs/editor.dm | 12 +- .../integrated_electronics/core/assemblies.dm | 4 +- .../core/integrated_circuit.dm | 2 +- .../integrated_electronics/core/pins.dm | 6 +- .../core/special_pins/char_pin.dm | 2 +- .../core/special_pins/color_pin.dm | 2 +- .../core/special_pins/dir_pin.dm | 2 +- .../core/special_pins/list_pin.dm | 8 +- .../core/special_pins/number_pin.dm | 2 +- .../core/special_pins/string_pin.dm | 2 +- .../integrated_electronics/core/tools.dm | 6 +- .../integrated_electronics/subtypes/memory.dm | 6 +- code/modules/library/lib_items.dm | 10 +- code/modules/library/lib_machines.dm | 70 +- code/modules/materials/materials/glass.dm | 2 +- code/modules/media/mediamanager.dm | 2 +- code/modules/mining/drilling/scanner.dm | 2 +- code/modules/mining/fulton.dm | 2 +- .../mining/machinery/machine_processing.dm | 2 +- .../equipment_vendor.dm | 2 +- code/modules/mob/dead/observer/free_vr.dm | 4 +- code/modules/mob/dead/observer/observer.dm | 1944 +++++++++++++ code/modules/mob/dead/observer/observer_vr.dm | 6 +- code/modules/mob/living/bot/mulebot.dm | 8 +- .../living/carbon/alien/diona/diona_powers.dm | 2 +- .../living/carbon/alien/diona/progression.dm | 2 +- .../living/carbon/alien/larva/progression.dm | 10 + .../mob/living/carbon/brain/posibrain.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/give.dm | 2 +- .../mob/living/carbon/human/emote_vr.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 34 +- .../carbon/human/human_modular_limbs.dm | 2 +- .../mob/living/carbon/human/human_powers.dm | 12 +- .../carbon/human/species/outsider/event.dm | 2 +- .../species/shadekin/shadekin_abilities.dm | 2 +- .../human/species/shadekin/shadekin_trait.dm | 1 + .../living/carbon/human/species/species.dm | 10 + .../human/species/species_shapeshift.dm | 22 +- .../human/species/species_shapeshift_vr.dm | 24 +- .../carbon/human/species/station/alraune.dm | 2 +- .../carbon/human/species/station/blank_vr.dm | 3 + .../station/protean_vr/protean_powers.dm | 18 +- .../station/station_special_abilities_vr.dm | 32 +- .../species/station/traits_vr/negative.dm | 50 +- .../species/station/traits_vr/neutral.dm | 44 +- .../species/station/traits_vr/positive.dm | 46 +- .../human/species/station/traits_vr/trait.dm | 17 +- .../species/station/xenochimera_trait_vr.dm | 5 + .../human/species/xenomorphs/alien_powers.dm | 6 +- code/modules/mob/living/living_vr.dm | 9 +- code/modules/mob/living/silicon/ai/ai.dm | 16 +- .../living/silicon/ai/ai_remote_control.dm | 2 +- .../modules/mob/living/silicon/ai/latejoin.dm | 3 +- code/modules/mob/living/silicon/pai/admin.dm | 2 +- code/modules/mob/living/silicon/pai/pai.dm | 48 +- code/modules/mob/living/silicon/pai/pai_vr.dm | 2 +- .../mob/living/silicon/pai/personality.dm | 2 +- .../modules/mob/living/silicon/pai/recruit.dm | 10 +- .../living/silicon/pai/software_modules.dm | 2 +- .../silicon/robot/dogborg/dog_modules_vr.dm | 8 +- .../silicon/robot/dogborg/dog_sleeper_vr.dm | 4 +- .../mob/living/silicon/robot/drone/drone.dm | 2 +- .../silicon/robot/drone/drone_abilities.dm | 2 +- .../silicon/robot/drone/drone_manufacturer.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 12 +- .../mob/living/silicon/robot/robot_items.dm | 15 +- .../mob/living/silicon/robot/robot_vr.dm | 2 +- .../thinktank/thinktank_interactions.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 2 +- .../mob/living/simple_mob/simple_mob_vr.dm | 2 +- .../simple_mob/subtypes/animal/borer/borer.dm | 2 +- .../subtypes/animal/borer/borer_powers.dm | 6 +- .../simple_mob/subtypes/animal/sif/kururak.dm | 4 +- .../simple_mob/subtypes/animal/sif/leech.dm | 8 +- .../simple_mob/subtypes/mechanical/golem.dm | 2 +- .../vore/mobs_monsters/clowns/hespawner.dm | 2 +- .../subtypes/vore/shadekin/ability_procs.dm | 2 +- code/modules/mob/login.dm | 2 +- code/modules/mob/mob.dm | 2468 +++++++++++++++++ code/modules/mob/mob_transformation_simple.dm | 2 +- code/modules/mob/new_player/new_player.dm | 10 +- code/modules/mob/new_player/new_player_vr.dm | 3 +- code/modules/mob/transform_procs.dm | 4 +- code/modules/mob/typing_indicator.dm | 4 +- .../computers/modular_computer/interaction.dm | 4 +- .../computers/subtypes/dev_telescreen.dm | 2 +- .../programs/generic/file_browser.dm | 2 +- .../programs/generic/wordprocessor.dm | 4 +- .../programs/research/email_administration.dm | 2 +- .../programs/research/ntmonitor.dm | 2 +- .../programs/security/digitalwarrant.dm | 14 +- .../modular_computers/laptop_vendor.dm | 2 +- code/modules/multiz/ladders.dm | 2 +- .../nifsoft/software/13_soulcatcher.dm | 14 +- code/modules/nifsoft/software/15_misc.dm | 2 +- code/modules/organs/internal/eyes.dm | 2 +- code/modules/overmap/bluespace_rift_vr.dm | 2 +- code/modules/overmap/champagne.dm | 2 +- .../overmap/disperser/disperser_console.dm | 6 +- .../overmap/ships/computers/engine_control.dm | 4 +- code/modules/overmap/ships/computers/helm.dm | 14 +- .../overmap/ships/computers/sensors.dm | 2 +- .../overmap/ships/computers/shuttle.dm | 2 +- code/modules/paperwork/adminpaper.dm | 6 +- code/modules/paperwork/faxmachine.dm | 2 +- code/modules/paperwork/paper.dm | 9 +- code/modules/paperwork/paper_sticky.dm | 2 +- code/modules/paperwork/paperbin.dm | 2 +- code/modules/paperwork/pen.dm | 6 +- code/modules/paperwork/photography.dm | 2 +- code/modules/paperwork/silicon_photography.dm | 2 +- code/modules/paperwork/stamps.dm | 2 +- code/modules/pda/core_apps.dm | 2 +- code/modules/pda/pda.dm | 2 +- code/modules/persistence/graffiti.dm | 2 +- code/modules/persistence/noticeboard.dm | 2 +- code/modules/power/cable.dm | 6 +- code/modules/power/fusion/_setup.dm | 2 +- code/modules/power/fusion/core/_core.dm | 2 +- .../modules/power/fusion/core/core_control.dm | 4 +- .../fusion/fuel_assembly/fuel_control.dm | 2 +- .../fusion/fuel_assembly/fuel_injector.dm | 2 +- .../modules/power/fusion/gyrotron/gyrotron.dm | 2 +- .../power/fusion/gyrotron/gyrotron_control.dm | 6 +- .../power/supermatter/setup_supermatter.dm | 2 +- code/modules/power/turbine.dm | 4 +- .../projectiles/guns/energy/special.dm | 2 +- .../projectiles/guns/launcher/pneumatic.dm | 2 +- .../projectiles/guns/projectile/pistol.dm | 4 +- .../projectiles/guns/projectile/revolver.dm | 6 +- code/modules/random_map/drop/droppod.dm | 12 +- code/modules/random_map/drop/supply.dm | 28 +- code/modules/random_map/random_map_verbs.dm | 30 +- code/modules/reagents/hoses/connector.dm | 6 +- code/modules/reagents/hoses/hose_connector.dm | 2 +- .../machinery/dispenser/dispenser2.dm | 2 +- .../machinery/dispenser/reagent_tank.dm | 944 +++++++ code/modules/reagents/machinery/distillery.dm | 2 +- .../reagent_containers/_reagent_containers.dm | 2 +- .../reagents/reagent_containers/spray.dm | 2 +- code/modules/recycling/sortingmachinery.dm | 4 +- code/modules/research/rdconsole_tgui.dm | 4 +- code/modules/research/server.dm | 4 +- code/modules/resleeving/computers.dm | 4 +- code/modules/resleeving/designer.dm | 2 +- code/modules/resleeving/infomorph.dm | 9 +- code/modules/shieldgen/shield_generator.dm | 4 +- code/modules/shuttles/shuttle_console.dm | 2 +- .../modules/shuttles/shuttle_console_multi.dm | 2 +- code/modules/shuttles/shuttles_web.dm | 4 +- code/modules/spells/general/area_teleport.dm | 2 +- code/modules/spells/spellbook.dm | 2 +- code/modules/spells/targeted/targeted.dm | 4 +- code/modules/surgery/organs_internal.dm | 8 +- code/modules/surgery/robotics.dm | 8 +- code/modules/telesci/gps_advanced.dm | 2 +- code/modules/tgui/external.dm | 6 +- .../tgui/modules/admin_shuttle_controller.dm | 6 +- code/modules/tgui/modules/agentcard.dm | 4 +- .../tgui/modules/appearance_changer.dm | 18 +- code/modules/tgui/modules/communications.dm | 10 +- code/modules/tgui/modules/crew_monitor.dm | 2 +- code/modules/tgui/modules/gyrotron_control.dm | 2 +- .../modules/tgui/modules/ntos-only/cardmod.dm | 2 +- code/modules/tgui/modules/ntos-only/email.dm | 2 +- code/modules/tgui/modules/overmap.dm | 20 +- code/modules/tgui/modules/rustcore_monitor.dm | 2 +- code/modules/tgui/modules/rustfuel_control.dm | 2 +- code/modules/tgui/modules/teleporter.dm | 2 +- code/modules/tgui/tgui_alert.dm | 169 ++ code/modules/tgui/tgui_input_list.dm | 195 ++ code/modules/vchat/vchat_client.dm | 5 +- code/modules/vehicles/bike.dm | 2 +- code/modules/vehicles/quad.dm | 4 +- code/modules/ventcrawl/ventcrawl.dm | 2 +- code/modules/virus2/admin.dm | 20 +- code/modules/vore/eating/living_vr.dm | 27 +- code/modules/vore/eating/silicon_vr.dm | 4 +- code/modules/vore/eating/simple_animal_vr.dm | 4 +- code/modules/vore/eating/vorepanel_vr.dm | 76 +- code/modules/vore/resizing/sizegun_vr.dm | 4 +- .../xenoarcheaology/artifacts/artifact.dm | 6 +- code/modules/xenoarcheaology/finds/fossils.dm | 2 +- .../tools/artifact_harvester.dm | 2 +- .../tools/geosample_scanner.dm | 4 +- .../xenoarcheaology/tools/tools_pickaxe.dm | 2 +- code/modules/xenobio/items/slime_objects.dm | 4 +- .../xenobio2/machinery/gene_manipulators.dm | 2 +- interface/interface.dm | 8 +- maps/gateway_archive_vr/wildwest.dm | 2 +- maps/gateway_vr/wildwest.dm | 2 +- maps/tether/tether_things.dm | 2 +- tgui/packages/tgui/hotkeys.ts | 4 +- tgui/packages/tgui/interfaces/AlertModal.js | 148 + tgui/packages/tgui/interfaces/ListInput.js | 209 ++ .../tgui/styles/interfaces/AlertModal.scss | 1 + .../tgui/styles/interfaces/ListInput.scss | 1 + tgui/public/tgui-common.bundle.js | 2 +- tgui/public/tgui.bundle.css | 2 +- tgui/public/tgui.bundle.js | 8 +- vorestation.dme | 2 + 468 files changed, 10519 insertions(+), 1808 deletions(-) create mode 100644 code/modules/tgui/tgui_alert.dm create mode 100644 code/modules/tgui/tgui_input_list.dm create mode 100644 tgui/packages/tgui/interfaces/AlertModal.js create mode 100644 tgui/packages/tgui/interfaces/ListInput.js diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index 00e2f9d5dc..dae4648790 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -181,7 +181,9 @@ if("switch_filter") if(!configuring || use_power) return - var/new_filter = input(usr,"Select filter mode:","Change filter",params["mode"]) in list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Phoron", "Nitrous Oxide") + var/new_filter = tgui_input_list(usr, "Select filter mode:", "Change filter", list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Phoron", "Nitrous Oxide")) + if(!new_filter) + return switch_filter(dir_flag(params["dir"]), mode_return_switch(new_filter)) . = TRUE diff --git a/code/ZAS/Diagnostic.dm b/code/ZAS/Diagnostic.dm index 7166b42dc6..fba2456802 100644 --- a/code/ZAS/Diagnostic.dm +++ b/code/ZAS/Diagnostic.dm @@ -50,7 +50,7 @@ "Down" = DOWN,\ #endif "N/A" = null) - var/direction = input("What direction do you wish to test?","Set direction") as null|anything in direction_list + var/direction = tgui_input_list(usr, "What direction do you wish to test?","Set direction", direction_list) if(!direction) return diff --git a/code/ZAS/Variable Settings.dm b/code/ZAS/Variable Settings.dm index f88e4816af..067fc6d1d8 100644 --- a/code/ZAS/Variable Settings.dm +++ b/code/ZAS/Variable Settings.dm @@ -96,7 +96,6 @@ var/global/vs_control/vsc = new settings -= "plc" /vs_control/proc/ChangeSettingsDialog(mob/user,list/L) - //var/which = input(user,"Choose a setting:") in L var/dat = "" for(var/ch in L) if(findtextEx(ch,"_RANDOM") || findtextEx(ch,"_DESC") || findtextEx(ch,"_METHOD") || findtextEx(ch,"_NAME")) continue @@ -150,7 +149,7 @@ var/global/vs_control/vsc = new if("Numeric") newvar = input(user,"Enter a number:","Settings",newvar) as num if("Bit Flag") - var/flag = input(user,"Toggle which bit?","Settings") in bitflags + var/flag = tgui_input_list(user,"Toggle which bit?","Settings", bitflags) flag = text2num(flag) if(newvar & flag) newvar &= ~flag @@ -194,7 +193,7 @@ var/global/vs_control/vsc = new /vs_control/proc/SetDefault(var/mob/user) var/list/setting_choices = list("Phoron - Standard", "Phoron - Low Hazard", "Phoron - High Hazard", "Phoron - Oh Shit!",\ "ZAS - Normal", "ZAS - Forgiving", "ZAS - Dangerous", "ZAS - Hellish", "ZAS/Phoron - Initial") - var/def = input(user, "Which of these presets should be used?") as null|anything in setting_choices + var/def = tgui_input_list(user, "Which of these presets should be used?", "Setting Choice", setting_choices) if(!def) return switch(def) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 7d35de8a18..3b2b1ad966 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -467,4 +467,19 @@ GLOBAL_LIST_INIT(all_volume_channels, list( #define DOCK_ATTEMPT_TIMEOUT 200 //how long in ticks we wait before assuming the docking controller is broken or blown up. #define SMES_TGUI_INPUT 1 +<<<<<<< HEAD #define SMES_TGUI_OUTPUT 2 +||||||| parent of f9e9aafd1d... Merge pull request #10756 from VOREStation/Arokha/fixes2 +#define SMES_TGUI_OUTPUT 2 +======= +#define SMES_TGUI_OUTPUT 2 + +#define TRAIT_SORT_NORMAL 1 +#define TRAIT_SORT_BODYTYPE 2 +#define TRAIT_SORT_SPECIES 3 + +#define SPECIES_SORT_NORMAL 1 +#define SPECIES_SORT_WHITELISTED 2 +#define SPECIES_SORT_RESTRICTED 3 +#define SPECIES_SORT_CUSTOM 4 +>>>>>>> f9e9aafd1d... Merge pull request #10756 from VOREStation/Arokha/fixes2 diff --git a/code/_global_vars/lists/species.dm b/code/_global_vars/lists/species.dm index f35568b07a..817f504f7f 100644 --- a/code/_global_vars/lists/species.dm +++ b/code/_global_vars/lists/species.dm @@ -1,10 +1,9 @@ //Languages/species/whitelist. GLOBAL_LIST_EMPTY_TYPED(all_species, /datum/species) +GLOBAL_LIST_EMPTY_TYPED(whitelisted_species, /datum/species) // Species that require a whitelist check. +GLOBAL_LIST_EMPTY_TYPED(playable_species, /datum/species) // A list of ALL playable species, whitelisted, latejoin or otherwise. + GLOBAL_LIST_EMPTY_TYPED(all_languages, /datum/language) GLOBAL_LIST_INIT(language_name_conflicts, list()) GLOBAL_LIST_INIT(language_keys, list()) // Table of say codes for all languages GLOBAL_LIST_INIT(language_key_conflicts, list()) -GLOBAL_LIST_INIT(whitelisted_species, list(SPECIES_HUMAN)) // Species that require a whitelist check. -// VOREStation edit - include custom species -GLOBAL_LIST_INIT(playable_species, list(SPECIES_HUMAN, SPECIES_CUSTOM)) // A list of ALL playable species, whitelisted, latejoin or otherwise. -// VOREStation edit end \ No newline at end of file diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index 0d1a46b2ea..d71897c466 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -306,12 +306,6 @@ This actually tests if they have the same entries and values. for(var/i=1, iVV window") @@ -68,7 +68,7 @@ names += componentsubtypes names += "---Elements---" names += sortTim(subtypesof(/datum/element), /proc/cmp_typepaths_asc) - var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names + var/result = input(usr, "Choose a component/element to add:", "Add Component/Element", names) if(!usr || !result || result == "---Components---" || result == "---Elements---") return if(QDELETED(src)) diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index f3a84d533d..d40ef7bab8 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -11,18 +11,13 @@ var/wait_time = 60 SECONDS // How long to wait until returning the list of candidates. var/cutoff_number = 0 // If above 0, when candidates list reaches this number, further potential candidates are rejected. +/// Begin the ghost asking /datum/ghost_query/proc/query() // First, ask all the ghosts who want to be asked. - for(var/mob/observer/dead/D in player_list) - if(!D.MayRespawn()) - continue // They can't respawn for whatever reason. - if(D.client) - if(be_special_flag && !(D.client.prefs.be_special & be_special_flag) ) - continue // They don't want to see the prompt. - for(var/ban in check_bans) - if(jobban_isbanned(D, ban)) - continue // They're banned from this role. - ask_question(D.client) + for(var/mob/observer/dead/D as anything in observer_mob_list) + if(evaluate_candidate(D)) + ask_question(D) + // Then wait awhile. while(!finished) sleep(1 SECOND) @@ -31,36 +26,73 @@ finished = TRUE // Prune the list after the wait, incase any candidates logged out. - for(var/mob/observer/dead/D in candidates) - if(!D.client || !D.key) - candidates.Remove(D) + for(var/mob/observer/dead/D as anything in candidates) + if(!evaluate_candidate(D)) + candidates -= D // Now we're done. finished = TRUE return candidates -/datum/ghost_query/proc/ask_question(var/client/C) - spawn(0) - if(!C) - return - window_flash(C) - if(query_sound) - SEND_SOUND(C, sound(query_sound)) - var/response = alert(C, question, "[role_name] request", "Yes", "No", "Never for this round") - if(response == "Yes") - response = alert(C, "Are you sure you want to play as a [role_name]?", "[role_name] request", "Yes", "No") // Protection from a misclick. - if(!C || !src) - return - if(response == "Yes") - if(finished || (cutoff_number && candidates.len >= cutoff_number) ) - to_chat(C, "Unfortunately, you were not fast enough, and there are no more available roles. Sorry.") - return - candidates.Add(C.mob) - if(cutoff_number && candidates.len >= cutoff_number) - finished = TRUE // Finish now if we're full. - else if(response == "Never for this round") +/// Test a candidate for allowance to join as this +/datum/ghost_query/proc/evaluate_candidate(mob/observer/dead/candidate) + if(!istype(candidate)) + return FALSE // Changed mobs or something who knows + if(!candidate.client) + return FALSE // No client to ask + if(!candidate.MayRespawn()) + return FALSE // They can't respawn for whatever reason. + if(be_special_flag && !(candidate.client.prefs.be_special & be_special_flag) ) + return FALSE // They don't want to see the prompt. + for(var/ban in check_bans) + if(jobban_isbanned(candidate, ban)) + return FALSE // They're banned from this role. + + return TRUE + +/// Send async alerts and ask for responses. Expects you to have tested D for client and type already +/datum/ghost_query/proc/ask_question(var/mob/observer/dead/D) + var/client/C = D.client + window_flash(C) + + if(query_sound) + SEND_SOUND(C, sound(query_sound)) + + tgui_alert_async(D, question, "[role_name] request", list("Yes", "No", "Never for this round"), CALLBACK(src, .proc/get_reply), wait_time SECONDS) + +/// Process an async alert response +/datum/ghost_query/proc/get_reply(response) + var/mob/observer/dead/D = usr + if(!D?.client) + return + + // Unhandled are "No" and "Nevermind" responses, which should just do nothing + + // This response is always fine, doesn't warrant retesting + switch(response) + if("Never for this round") if(be_special_flag) - C.prefs.be_special ^= be_special_flag + D.client.prefs.be_special ^= be_special_flag + to_chat(D, "You will not be prompted to join similar roles to [role_name] for the rest of this round. Note: If you save your character now, it will save this permanently.") + else + to_chat(D, "This type of ghost-joinable role doesn't have a role type flag associated with it, so I can't prevent future requests, sorry. Bug a dev!") + if("Yes") + if(!evaluate_candidate(D)) // Failed revalidation + to_chat(D, "Unfortunately, you no longer qualify for this role. Sorry.") + else if(finished) // Already finished candidate list + to_chat(D, "Unfortunately, you were not fast enough, and there are no more available roles. Sorry.") + else // Prompt a second time + tgui_alert_async(D, "Are you sure you want to play as a [role_name]?", "[role_name] request", list("I'm Sure", "Nevermind"), CALLBACK(src, .proc/get_reply), wait_time SECONDS) + + if("I'm Sure") + if(!evaluate_candidate(D)) // Failed revalidation + to_chat(D, "Unfortunately, you no longer qualify for this role. Sorry.") + else if(finished) // Already finished candidate list + to_chat(D, "Unfortunately, you were not fast enough, and there are no more available roles. Sorry.") + else // Accept their nomination + candidates.Add(D) + if(cutoff_number && candidates.len >= cutoff_number) + finished = TRUE // Finish now if we're full. // Normal things. /datum/ghost_query/promethean diff --git a/code/datums/locations/locations.dm b/code/datums/locations/locations.dm index 0081318eb0..a9cf9294fb 100644 --- a/code/datums/locations/locations.dm +++ b/code/datums/locations/locations.dm @@ -30,47 +30,11 @@ var/global/datum/locations/milky_way/all_locations = new() /proc/choose_location_datum(client/user) var/datum/locations/choice = all_locations while(length(choice.contents) > 0) //For some reason it wouldn't let me do contents.len even when I defined it as a list. - var/specific = alert(user, "The location currently selected is [choice.name]. More specific options exist, would you like to pick a more specific location?", - "Choose location", "Yes", "No") + var/specific = tgui_alert(user, "The location currently selected is [choice.name]. More specific options exist, would you like to pick a more specific location?", "Choose location", list("Yes", "No")) if(specific == "Yes" && length(choice.contents) > 0) - choice = input(user, "Please choose a location.","Locations") as null|anything in choice.contents + choice = tgui_input_list(user, "Please choose a location.", "Locations", choice.contents) else break to_chat(user,choice.name) to_chat(user,choice.desc) return choice - -// var/datum/locations/choice = input(user, "Please choose a location.","Locations") as null|anything in all_locations -// if(choice && choice.contents.len > 0) - - -/* -/datum/locations/proc/show_contents() -// to_world("[src]\n[desc]") - for(var/datum/locations/a in contents) - to_world("[a]\n[a.parent ? "Located in [a.parent]\n" : ""][a.desc]") - a.show_contents() - to_world("\n") - -/datum/locations/proc/count_locations() - var/i = 0 - for(var/datum/locations/a in contents) - i = i + a.count_locations() - return i - -/client/verb/show_locations() - set name = "Show Locations" - set category = "Debug" - locations.show_contents() - -/client/verb/debug_locations() - set name = "Debug Locations" - set category = "Debug" - debug_variables(locations) - -/client/verb/count_locations() - set name = "Count Locations" - set category = "Debug" - var/location_number = locations.count_locations() - to_world(location_number) -*/ diff --git a/code/datums/managed_browsers/feedback_form.dm b/code/datums/managed_browsers/feedback_form.dm index 00755c7624..b380018bea 100644 --- a/code/datums/managed_browsers/feedback_form.dm +++ b/code/datums/managed_browsers/feedback_form.dm @@ -112,7 +112,7 @@ GENERAL_PROTECT_DATUM(/datum/managed_browser/feedback_form) return if(href_list["feedback_choose_topic"]) - feedback_topic = input(my_client, "Choose the topic you want to submit your feedback under.", "Feedback Topic", feedback_topic) in config.sqlite_feedback_topics + feedback_topic = tgui_input_list(my_client, "Choose the topic you want to submit your feedback under.", "Feedback Topic", config.sqlite_feedback_topics) display() return @@ -129,7 +129,7 @@ GENERAL_PROTECT_DATUM(/datum/managed_browser/feedback_form) to_chat(my_client, span("warning", "It appears you didn't write anything, or it was invalid.")) return - if(alert(my_client, "Are you sure you want to submit your feedback?", "Confirm Submission", "No", "Yes") == "Yes") + if(tgui_alert(my_client, "Are you sure you want to submit your feedback?", "Confirm Submission", list("No", "Yes")) == "Yes") var/author_text = my_client.ckey if(can_be_private() && feedback_hide_author) author_text = md5(my_client.ckey + SSsqlite.get_feedback_pepper()) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index de91fd48ab..a35c23cd6b 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -122,7 +122,7 @@ /datum/mind/proc/edit_memory() if(!ticker || !ticker.mode) - alert("Not before round-start!", "Alert") + tgui_alert_async(usr, "Not before round-start!", "Alert") return var/out = "[name][(current&&(current.real_name!=name))?" (as [current.real_name])":""]
" @@ -220,7 +220,8 @@ if(!def_value)//If it's a custom objective, it will be an empty string. def_value = "custom" - var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "debrain", "protect", "prevent", "harm", "brig", "hijack", "escape", "survive", "steal", "download", "mercenary", "capture", "absorb", "custom") + var/list/choices = list("assassinate", "debrain", "protect", "prevent", "harm", "brig", "hijack", "escape", "survive", "steal", "download", "mercenary", "capture", "absorb", "custom") + var/new_obj_type = tgui_input_list(usr, "Select objective type:", "Objective type", choices, def_value) if (!new_obj_type) return var/datum/objective/new_objective = null @@ -242,7 +243,7 @@ if (objective&&(objective.type in objective_list) && objective.target) def_target = objective.target.current - var/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets + var/new_target = tgui_input_list(usr, "Select target:", "Objective target", possible_targets, def_target) if (!new_target) return var/objective_path = text2path("/datum/objective/[new_obj_type]") diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm index e85541a55d..f1db67a647 100644 --- a/code/datums/uplink/announcements.dm +++ b/code/datums/uplink/announcements.dm @@ -16,10 +16,10 @@ item_cost = 20 /datum/uplink_item/abstract/announcements/fake_centcom/extra_args(var/mob/user) - var/title = sanitize(input("Enter your announcement title.", "Announcement Title") as null|text) + var/title = sanitize(input(usr, "Enter your announcement title.", "Announcement Title") as null|text) if(!title) return - var/message = sanitize(input("Enter your announcement message.", "Announcement Title") as null|text) + var/message = sanitize(input(usr, "Enter your announcement message.", "Announcement Title") as null|text) if(!message) return return list("title" = title, "message" = message) diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 3a7517507d..e6228ab2e2 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -8,12 +8,9 @@ return attack_hand(user) /obj/structure/signpost/attack_hand(mob/user as mob) - switch(alert("Travel back to ss13?",,"Yes","No")) - if("Yes") - if(user.z != src.z) return - user.forceMove(pick(latejoin)) - if("No") - return + if(tgui_alert(user, "Travel back to ss13?","Return?",list("Yes","No")) == "Yes") + if(user.z != src.z) return + user.forceMove(pick(latejoin)) /obj/effect/mark var/mark = "" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index ac8176e910..5e4692557b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -257,7 +257,7 @@ for (var/obj/machinery/camera/C in cameras) friendly_cameras.Add(C.c_tag) - var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras + var/target = tgui_input_list(usr, "Select the camera to observe", "Select Camera", friendly_cameras) if (!target) return for (var/obj/machinery/camera/C in cameras) diff --git a/code/game/antagonist/antagonist_factions.dm b/code/game/antagonist/antagonist_factions.dm index 15191897ce..6e18b57a3b 100644 --- a/code/game/antagonist/antagonist_factions.dm +++ b/code/game/antagonist/antagonist_factions.dm @@ -34,7 +34,7 @@ message_admins("[src]([src.ckey]) attempted to convert [player.current].") player.rev_cooldown = world.time+100 - var/choice = alert(player.current,"Asked by [src]: Do you want to join the [faction.faction_descriptor]?","Join the [faction.faction_descriptor]?","No!","Yes!") + var/choice = tgui_alert(player.current, "Asked by [src]: Do you want to join the [faction.faction_descriptor]?", "Join the [faction.faction_descriptor]?", list("No!","Yes!")) if(choice == "Yes!" && faction.add_antagonist_mind(player, 0, faction.faction_role_text, faction.faction_welcome)) to_chat(src, "\The [player.current] joins the [faction.faction_descriptor]!") return diff --git a/code/game/antagonist/station/highlander.dm b/code/game/antagonist/station/highlander.dm index 708f047a57..9b54383278 100644 --- a/code/game/antagonist/station/highlander.dm +++ b/code/game/antagonist/station/highlander.dm @@ -56,7 +56,7 @@ var/datum/antagonist/highlander/highlanders /proc/only_one() if(!ticker) - alert("The game hasn't started yet!") + tgui_alert_async(usr,"The game hasn't started yet!") return for(var/mob/living/carbon/human/H in player_list) diff --git a/code/game/base_turf.dm b/code/game/base_turf.dm index 92bf5c9f8d..3f78c6fba4 100644 --- a/code/game/base_turf.dm +++ b/code/game/base_turf.dm @@ -19,11 +19,11 @@ if(!holder) return - var/choice = input("Which Z-level do you wish to set the base turf for?") as num|null + var/choice = input(usr, "Which Z-level do you wish to set the base turf for?") as num|null if(!choice) return - var/new_base_path = input("Please select a turf path (cancel to reset to /turf/space).") as null|anything in typesof(/turf) + var/new_base_path = tgui_input_list(usr, "Please select a turf path (cancel to reset to /turf/space).", "Set Base Turf", typesof(/turf)) if(!new_base_path) new_base_path = /turf/space using_map.base_turf_by_z["[choice]"] = new_base_path diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index f6d6695b19..54b1b4c1e0 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -221,7 +221,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E var/list/victims = list() for(var/mob/living/carbon/C in oview(changeling.sting_range)) victims += C - var/mob/living/carbon/T = input(src, "Who will we sting?") as null|anything in victims + var/mob/living/carbon/T = tgui_input_list(src, "Who will we sting?", "Sting!", victims) if(!T) return diff --git a/code/game/gamemodes/changeling/powers/fake_death.dm b/code/game/gamemodes/changeling/powers/fake_death.dm index 65fce3cecf..daa0b9e246 100644 --- a/code/game/gamemodes/changeling/powers/fake_death.dm +++ b/code/game/gamemodes/changeling/powers/fake_death.dm @@ -22,7 +22,7 @@ to_chat(src, "We have no genomes, not even our own, and cannot regenerate.") return 0 - if(!C.stat && alert("Are we sure we wish to regenerate? We will appear to be dead while doing so.","Revival","Yes","No") == "No") + if(!C.stat && tgui_alert(src, "Are we sure we wish to regenerate? We will appear to be dead while doing so.","Revival",list("Yes","No")) == "No") return to_chat(C, "We will attempt to regenerate our form.") diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/game/gamemodes/changeling/powers/hivemind.dm index 105de8f4f5..d07542875a 100644 --- a/code/game/gamemodes/changeling/powers/hivemind.dm +++ b/code/game/gamemodes/changeling/powers/hivemind.dm @@ -37,7 +37,7 @@ var/list/datum/dna/hivemind_bank = list() to_chat(src, "The airwaves already have all of our DNA.") return - var/S = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names + var/S = tgui_input_list(src, "Select a DNA to channel:", "Channel DNA", names) if(!S) return var/datum/absorbed_dna/chosen_dna = changeling.GetDNA(S) @@ -67,7 +67,7 @@ var/list/datum/dna/hivemind_bank = list() to_chat(src, "There's no new DNA to absorb from the air.") return - var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names + var/S = tgui_input_list(src, "Select a DNA to absorb:", "Absorb DNA", names) if(!S) return var/datum/absorbed_dna/chosen_dna = names[S] if(!chosen_dna) diff --git a/code/game/gamemodes/changeling/powers/lesser_form.dm b/code/game/gamemodes/changeling/powers/lesser_form.dm index ef82337d52..aa70756344 100644 --- a/code/game/gamemodes/changeling/powers/lesser_form.dm +++ b/code/game/gamemodes/changeling/powers/lesser_form.dm @@ -46,7 +46,7 @@ for(var/datum/dna/DNA in changeling.absorbed_dna) names += "[DNA.real_name]" - var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + var/S = tgui_input_list(src, "Select the target DNA:", "Target DNA", names) if(!S) return var/datum/dna/chosen_dna = changeling.GetDNA(S) diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index 6dd16061a1..535efbcac1 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -21,7 +21,7 @@ for(var/datum/absorbed_dna/DNA in changeling.absorbed_dna) names += "[DNA.name]" - var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + var/S = tgui_input_list(src, "Select the target DNA:", "Target DNA", names) if(!S) return var/datum/absorbed_dna/chosen_dna = changeling.GetDNA(S) diff --git a/code/game/gamemodes/changeling/powers/transform_sting.dm b/code/game/gamemodes/changeling/powers/transform_sting.dm index 1f6bc7b93d..f831f9eb17 100644 --- a/code/game/gamemodes/changeling/powers/transform_sting.dm +++ b/code/game/gamemodes/changeling/powers/transform_sting.dm @@ -16,13 +16,11 @@ if(!changeling) return 0 - - var/list/names = list() for(var/datum/dna/DNA in changeling.absorbed_dna) names += "[DNA.real_name]" - var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + var/S = tgui_input_list(src, "Select the target DNA:", "Target DNA", names) if(!S) return diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 4b095d2cd1..5a33a1d49a 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -330,10 +330,10 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," return if (C>=26 + runedec + cult.current_antagonists.len) //including the useless rune at the secret room, shouldn't count against the limit of 25 runes - Urist - alert("The cloth of reality can't take that much of a strain. Remove some runes first!") + tgui_alert_async(user, "The cloth of reality can't take that much of a strain. Remove some runes first!") return else - switch(alert("You open the tome",,"Read it","Scribe a rune", "Cancel")) + switch(tgui_alert(user, "You open the tome", "Tome", list("Read it","Scribe a rune","Cancel"))) if("Cancel") return if("Read it") @@ -448,7 +448,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," if (!istype(user.loc,/turf)) to_chat(user, "You do not have enough space to write a proper rune.") var/list/runes = list("teleport", "itemport", "tome", "armor", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun") - r = input("Choose a rune to scribe", "Rune Scribing") in runes //not cancellable. + r = input(usr, "Choose a rune to scribe", "Rune Scribing") in runes // Remains input() for extreme blocking var/obj/effect/rune/R = new /obj/effect/rune if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user @@ -461,7 +461,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri") var/beacon if(usr) - beacon = input("Select the last rune", "Rune Scribing") in words + beacon = input(usr, "Select the last rune", "Rune Scribing") in words // Remains input() for extreme blocking R.word1=cultwords["travel"] R.word2=cultwords["self"] R.word3=beacon @@ -471,7 +471,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri") var/beacon if(usr) - beacon = input("Select the last rune", "Rune Scribing") in words + beacon = input(usr, "Select the last rune", "Rune Scribing") in words // Remains input() for extreme blocking R.word1=cultwords["travel"] R.word2=cultwords["other"] R.word3=beacon diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 7526cecad5..fac7066de4 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -172,7 +172,7 @@ var/list/sacrificed = list() to_chat(target, "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs.") else spawn() - var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") + var/choice = tgui_alert(target,"Do you want to join the cult?","Submit to Nar'Sie",list("Resist","Submit")) waiting_for_input[target] = 0 if(choice == "Submit") //choosing 'Resist' does nothing of course. cult.add_antagonist(target.mind) @@ -826,7 +826,7 @@ var/list/sacrificed = list() users+=C var/dam = round(15 / users.len) if(users.len>=3) - var/mob/living/carbon/cultist = input("Choose the one who you want to free", "Followers of Geometer") as null|anything in (cultists - users) + var/mob/living/carbon/cultist = tgui_input_list(user, "Choose the one who you want to free", "Followers of Geometer", (cultists - users)) if(!cultist) return fizzle() if (cultist == user) //just to be sure. @@ -872,7 +872,7 @@ var/list/sacrificed = list() if(iscultist(C) && !C.stat) users += C if(users.len>=3) - var/mob/living/carbon/cultist = input("Choose the one who you want to summon", "Followers of Geometer") as null|anything in (cultists - user) + var/mob/living/carbon/cultist = tgui_input_list(user, "Choose the one who you want to summon", "Followers of Geometer", (cultists - user)) if(!cultist) return fizzle() if (cultist == user) //just to be sure. diff --git a/code/game/gamemodes/cult/soulstone.dm b/code/game/gamemodes/cult/soulstone.dm index 9c430d124c..3fbeb13a7f 100644 --- a/code/game/gamemodes/cult/soulstone.dm +++ b/code/game/gamemodes/cult/soulstone.dm @@ -183,7 +183,7 @@ if(!A) to_chat(U, "Capture failed!: The soul stone is empty! Go kill someone!") return; - var/construct_class = input(U, "Please choose which type of construct you wish to create.") as null|anything in possible_constructs + var/construct_class = tgui_input_list(U, "Please choose which type of construct you wish to create.", "Construct Type", possible_constructs) switch(construct_class) if("Juggernaut") var/mob/living/simple_mob/construct/juggernaut/Z = new /mob/living/simple_mob/construct/juggernaut (get_turf(T.loc)) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index a7559052bc..7201142678 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -59,23 +59,23 @@ var/global/list/additional_antag_types = list() var/choice = "" switch(href_list["set"]) if("shuttle_delay") - choice = input("Enter a new shuttle delay multiplier") as num + choice = input(usr, "Enter a new shuttle delay multiplier") as num if(!choice || choice < 1 || choice > 20) return shuttle_delay = choice if("antag_scaling") - choice = input("Enter a new antagonist cap scaling coefficient.") as num + choice = input(usr, "Enter a new antagonist cap scaling coefficient.") as num if(isnull(choice) || choice < 0 || choice > 100) return antag_scaling_coeff = choice if("event_modifier_moderate") - choice = input("Enter a new moderate event time modifier.") as num + choice = input(usr, "Enter a new moderate event time modifier.") as num if(isnull(choice) || choice < 0 || choice > 100) return event_delay_mod_moderate = choice refresh_event_modifiers() if("event_modifier_severe") - choice = input("Enter a new moderate event time modifier.") as num + choice = input(usr, "Enter a new moderate event time modifier.") as num if(isnull(choice) || choice < 0 || choice > 100) return event_delay_mod_major = choice @@ -99,7 +99,7 @@ var/global/list/additional_antag_types = list() additional_antag_types -= antag.id message_admins("Admin [key_name_admin(usr)] removed [antag.role_text] template from game mode.") else if(href_list["add_antag_type"]) - var/choice = input("Which type do you wish to add?") as null|anything in all_antag_types + var/choice = tgui_input_list(usr, "Which type do you wish to add?", "Select Antag Type", all_antag_types) if(!choice) return var/datum/antagonist/antag = all_antag_types[choice] diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/HARDWARE.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/HARDWARE.dm index c9b76400d9..df2d223c6e 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/HARDWARE.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/HARDWARE.dm @@ -23,7 +23,7 @@ user.bombing_core = 0 return - var/choice = alert("Really destroy core?", "Core self-destruct", "YES", "NO") + var/choice = tgui_alert(user, "Really destroy core?", "Core self-destruct", list("YES", "NO")) if(choice != "YES") return @@ -82,7 +82,7 @@ user.bombing_station = 0 return - var/choice = alert("Really destroy station?", "Station self-destruct", "YES", "NO") + var/choice = tgui_alert(user, "Really destroy station?", "Station self-destruct", list("YES", "NO")) if(choice != "YES") return if(!ability_prechecks(user, 0, 0)) diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm index 8c27df2732..677801f2c1 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm @@ -23,9 +23,8 @@ for(var/datum/malf_hardware/H in hardware_list) possible_choices += H.name - possible_choices += "CANCEL" - var/choice = input("Select desired hardware. You may only choose one hardware piece!: ") in possible_choices - if(choice == "CANCEL") + var/choice = tgui_input_list(user, "Select desired hardware. You may only choose one hardware piece!: ", "Hardware Choice", possible_choices) + if(!choice) return var/note = null @@ -47,7 +46,7 @@ error("Hardware without description: [C]") return - var/confirmation = alert("[note] - Is this what you want?", "Hardware selection", "Yes", "No") + var/confirmation = tgui_alert(user, "[note] - Is this what you want?", "Hardware selection", list("Yes", "No")) if(confirmation != "Yes") to_chat(user, "Selection cancelled. Use command again to select") return @@ -85,7 +84,7 @@ return var/datum/malf_research/res = user.research - var/datum/malf_research_ability/tar = input("Select your next research target") in res.available_abilities + var/datum/malf_research_ability/tar = tgui_input_list(user, "Select your next research target", "Select Research", res.available_abilities) if(!tar) return res.focus = tar diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm index aeb2439eeb..e4db9a662d 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm @@ -47,7 +47,7 @@ if(!ability_prechecks(user, price)) return - if (alert(user, "Really recall the shuttle?", "Recall Shuttle: ", "Yes", "No") != "Yes") + if (tgui_alert(user, "Really recall the shuttle?", "Recall Shuttle: ", list(list("Yes", "No"))) != "Yes") return if(!ability_pay(user, price)) @@ -95,14 +95,16 @@ return - var/targetname = input("Select unlock target: ") in robot_names + var/targetname = tgui_input_list(user, "Select unlock target:", "Unlock Target", robot_names) + if(!targetname) + return for(var/mob/living/silicon/robot/R in robots) if(targetname == R.name) target = R break if(target) - if(alert(user, "Really try to unlock cyborg [target.name]?", "Unlock Cyborg", "Yes", "No") != "Yes") + if(tgui_alert(user, "Really try to unlock cyborg [target.name]?", "Unlock Cyborg", list("Yes", "No")) != "Yes") return if(!ability_pay(user, price)) return @@ -153,7 +155,7 @@ return if(target) - if(alert(user, "Really try to hack cyborg [target.name]?", "Hack Cyborg", "Yes", "No") != "Yes") + if(tgui_alert(user, "Really try to hack cyborg [target.name]?", "Hack Cyborg", list("Yes", "No")) != "Yes") return if(!ability_pay(user, price)) return @@ -213,7 +215,7 @@ return if(target) - if(alert(user, "Really try to hack AI [target.name]?", "Hack AI", "Yes", "No") != "Yes") + if(tgui_alert(user, "Really try to hack AI [target.name]?", "Hack AI", list("Yes", "No")) != "Yes") return if(!ability_pay(user, price)) return @@ -248,7 +250,7 @@ to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.") return to_chat(user, "Hack succeeded. The AI is now under your exclusive control.") - to_chat(target, "SYSTEM LOG: System re¡3RT5§^#COMU@(#$)TED)@$") + to_chat(target, "SYSTEM LOG: System re�3RT5�^#COMU@(#$)TED)@$") for(var/i = 0, i < 5, i++) var/temptxt = pick("1101000100101001010001001001",\ "0101000100100100000100010010",\ diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm index 9d9bed799a..40023f2cbe 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm @@ -71,7 +71,7 @@ if(!ability_prechecks(user, price)) return - var/action = input("Select required action: ") in list("Reset", "Add X-Ray", "Add Motion Sensor", "Add EMP Shielding") + var/action = tgui_input_list(user, "Select required action:", "Hack Camera", list("Reset", "Add X-Ray", "Add Motion Sensor", "Add EMP Shielding")) if(!action || !target) return diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm index 03f7474380..d8229e1562 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm @@ -93,8 +93,8 @@ if(!ability_prechecks(user, price)) return - var/title = input("Select message title: ") - var/text = input("Select message text: ") + var/title = input(usr, "Select message title: ") + var/text = input(usr, "Select message text: ") if(!title || !text || !ability_pay(user, price)) to_chat(user, "Hack Aborted") return @@ -120,8 +120,8 @@ if(!ability_prechecks(user, price)) return - var/alert_target = input("Select new alert level:") in list("green", "yellow", "violet", "orange", "blue", "red", "delta", "CANCEL") - if(!alert_target || !ability_pay(user, price) || alert_target == "CANCEL") + var/alert_target = tgui_input_list(user, "Select new alert level:", "Alert Level", list("green", "yellow", "violet", "orange", "blue", "red", "delta")) + if(!alert_target || !ability_pay(user, price)) to_chat(user, "Hack Aborted") return @@ -140,7 +140,7 @@ set desc = "500 CPU - Begins hacking station's primary firewall, quickly overtaking remaining APC systems. When completed grants access to station's self-destruct mechanism. Network administrators will probably notice this." var/price = 500 var/mob/living/silicon/ai/user = usr - if (alert(user, "Begin system override? This cannot be stopped once started. The network administrators will probably notice this.", "System Override:", "Yes", "No") != "Yes") + if (tgui_alert(user, "Begin system override? This cannot be stopped once started. The network administrators will probably notice this.", "System Override:", list("Yes", "No")) != "Yes") return if (!ability_prechecks(user, price) || !ability_pay(user, price) || user.system_override) if(user.system_override) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 62406c3877..22cf1f7290 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -120,7 +120,7 @@ target=null location = null - switch(alert("Please select the mode you want to put the pinpointer in.", "Pinpointer Mode Select", "Location", "Disk Recovery", "Other Signature")) + switch(tgui_alert(usr, "Please select the mode you want to put the pinpointer in.", "Pinpointer Mode Select", list("Location", "Disk Recovery", "Other Signature"))) if("Location") mode = 1 @@ -145,12 +145,12 @@ if("Other Signature") mode = 2 - switch(alert("Search for item signature or DNA fragment?" , "Signature Mode Select" , "" , "Item" , "DNA")) + switch(tgui_alert(usr, "Search for item signature or DNA fragment?", "Signature Mode Select", list("Item", "DNA"))) if("Item") var/datum/objective/steal/itemlist itemlist = itemlist - var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in itemlist.possible_items + var/targetitem = tgui_input_list(usr, "Select item to search for.", "Item Mode Select", itemlist.possible_items) if(!targetitem) return target=locate(itemlist.possible_items[targetitem]) @@ -160,7 +160,7 @@ to_chat(usr, "You set the pinpointer to locate [targetitem]") if("DNA") - var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "") + var/DNAstring = input(usr, "Input DNA string to search for." , "Please Enter String." , "") if(!DNAstring) return for(var/mob/living/carbon/M in mob_list) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index d0c6e73573..326824ca77 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -473,15 +473,15 @@ var/global/list/all_objectives = list() /datum/objective/steal/proc/select_target() var/list/possible_items_all = possible_items+possible_items_special+"custom" - var/new_target = input("Select target:", "Objective target", steal_target) as null|anything in possible_items_all + var/new_target = tgui_input_list(usr, "Select target:", "Objective target", possible_items_all) if (!new_target) return if (new_target == "custom") - var/obj/item/custom_target = input("Select type:","Type") as null|anything in typesof(/obj/item) + var/obj/item/custom_target = tgui_input_list(usr, "Select type:", "Type", typesof(/obj/item)) if (!custom_target) return var/tmp_obj = new custom_target var/custom_name = tmp_obj:name qdel(tmp_obj) - custom_name = sanitize(input("Enter target name:", "Objective target", custom_name) as text|null) + custom_name = sanitize(input(usr, "Enter target name:", "Objective target", custom_name) as text|null) if (!custom_name) return target_name = custom_name steal_target = custom_target diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 76bceb2982..08340f5a76 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -99,15 +99,15 @@ mob hsb.req_access = list() var/accesses = get_all_accesses() for(var/A in accesses) - if(alert(usr, "Will this airlock require [get_access_desc(A)] access?", "Sandbox:", "Yes", "No") == "Yes") + if(tgui_alert(usr, "Will this airlock require [get_access_desc(A)] access?", "Sandbox:", list("Yes", "No")) == "Yes") LAZYADD(hsb.req_access, A) hsb.loc = usr.loc to_chat(usr, "Sandbox: Created an airlock.") if("hsbcanister") var/list/hsbcanisters = typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/ - var/hsbcanister = input(usr, "Choose a canister to spawn.", "Sandbox:") in hsbcanisters + "Cancel" - if(!(hsbcanister == "Cancel")) + var/hsbcanister = tgui_input_list(usr, "Choose a canister to spawn:", "Sandbox", hsbcanisters) + if(hsbcanister) new hsbcanister(usr.loc) if("hsbfueltank") //var/obj/hsb = new/obj/weldfueltank @@ -144,6 +144,6 @@ mob continue selectable += O - var/hsbitem = input(usr, "Choose an object to spawn.", "Sandbox:") in selectable + "Cancel" - if(hsbitem != "Cancel") + var/hsbitem = tgui_input_list(usr, "Choose an object to spawn:", "Sandbox", selectable) + if(hsbitem) new hsbitem(usr.loc) diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm index 82138988b5..a15fcd5b35 100644 --- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm +++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm @@ -31,7 +31,9 @@ to_chat(user, "\The [src] has ran out of uses, and is now useless to you!") return else - var/area_wanted = input(user, "Area to teleport to", "Teleportation") in teleportlocs + var/area_wanted = tgui_input_list(user, "Area to teleport to", "Teleportation", teleportlocs) + if(!area_wanted) + return var/area/A = teleportlocs[area_wanted] if(!A) return diff --git a/code/game/gamemodes/technomancer/spells/audible_deception.dm b/code/game/gamemodes/technomancer/spells/audible_deception.dm index fc67ba1ee3..ebd8974305 100644 --- a/code/game/gamemodes/technomancer/spells/audible_deception.dm +++ b/code/game/gamemodes/technomancer/spells/audible_deception.dm @@ -68,7 +68,7 @@ var/list/sound_options = available_sounds if(check_for_scepter()) sound_options["!!AIR HORN!!"] = 'sound/items/AirHorn.ogg' - var/new_sound = input("Select the sound you want to make.","Sounds") as null|anything in sound_options + var/new_sound = tgui_input_list(usr, "Select the sound you want to make.", "Sounds", sound_options) if(new_sound) selected_sound = sound_options[new_sound] diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm index 0e0cf5eb20..3ca26b3b04 100644 --- a/code/game/gamemodes/technomancer/spells/control.dm +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -88,8 +88,7 @@ /obj/item/weapon/spell/control/on_use_cast(mob/living/user) if(controlled_mobs.len != 0) - var/choice = alert(user,"Would you like to release control of the entities you are controlling? They won't be friendly \ - to you anymore if you do this, so be careful.","Release Control?","No","Yes") + var/choice = tgui_alert(user,"Would you like to release control of the entities you are controlling? They won't be friendly to you anymore if you do this, so be careful.","Release Control?",list("No","Yes")) if(choice == "Yes") for(var/mob/living/L in controlled_mobs) deselect(L) diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 5d626f7c47..dcadf53ffb 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -44,7 +44,7 @@ /obj/item/weapon/spell/illusion/on_use_cast(mob/user) if(illusion) - var/choice = alert(user, "Would you like to have \the [illusion] speak, or do an emote?", "Illusion", "Speak","Emote","Cancel") + var/choice = tgui_alert(user, "Would you like to have \the [illusion] speak, or do an emote?", "Illusion", list("Speak","Emote","Cancel")) switch(choice) if("Cancel") return diff --git a/code/game/gamemodes/technomancer/spells/summon/summon.dm b/code/game/gamemodes/technomancer/spells/summon/summon.dm index c7c94c0869..3f39f7d960 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon.dm @@ -34,7 +34,7 @@ /obj/item/weapon/spell/summon/on_use_cast(mob/living/user) if(summon_options.len) - var/choice = input(user, "Choose a creature to kidnap from somewhere!", "Summon") as null|anything in summon_options + var/choice = tgui_input_list(user, "Choose a creature to kidnap from somewhere!", "Summon", summon_options) if(choice) summoned_mob_type = summon_options[choice] diff --git a/code/game/gamemodes/technomancer/spells/track.dm b/code/game/gamemodes/technomancer/spells/track.dm index ae342a46a1..461c4e8391 100644 --- a/code/game/gamemodes/technomancer/spells/track.dm +++ b/code/game/gamemodes/technomancer/spells/track.dm @@ -44,7 +44,7 @@ var/list/technomancer_belongings = list() if(L == user) continue mob_choices += L - var/choice = input(user,"Decide what or who to track.","Tracking") as null|anything in object_choices + mob_choices + var/choice = tgui_input_list(user, "Decide what or who to track.", "Tracking", (object_choices + mob_choices)) if(choice) tracked = choice tracking = 1 diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 46f6710aaf..73c15fd667 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -326,7 +326,7 @@ if("ejectify") go_out() if("changestasis") - var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in stasis_choices + var/new_stasis = tgui_input_list(usr, "Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level", stasis_choices) if(new_stasis) stasis_level = stasis_choices[new_stasis] if("auto_eject_dead_on") diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 4c3b406fed..54ae1f942c 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -639,7 +639,7 @@ var/list/selected = TLV["temperature"] var/max_temperature = min(selected[3] - T0C, MAX_TEMPERATURE) var/min_temperature = max(selected[2] - T0C, MIN_TEMPERATURE) - var/input_temperature = input("What temperature would you like the system to mantain? (Capped between [min_temperature] and [max_temperature]C)", "Thermostat Controls", target_temperature - T0C) as num|null + var/input_temperature = input(usr, "What temperature would you like the system to mantain? (Capped between [min_temperature] and [max_temperature]C)", "Thermostat Controls", target_temperature - T0C) as num|null if(isnum(input_temperature)) if(input_temperature > max_temperature || input_temperature < min_temperature) to_chat(usr, "Temperature must be between [min_temperature]C and [max_temperature]C") @@ -693,7 +693,7 @@ var/env = params["env"] var/name = params["var"] - var/value = input("New [name] for [env]:", name, TLV[env][name]) as num|null + var/value = input(usr, "New [name] for [env]:", name, TLV[env][name]) as num|null if(!isnull(value) && !..()) if(value < 0) TLV[env][name] = -1 diff --git a/code/game/machinery/airconditioner_vr.dm b/code/game/machinery/airconditioner_vr.dm index 1aa2516085..4e9ce2d22b 100644 --- a/code/game/machinery/airconditioner_vr.dm +++ b/code/game/machinery/airconditioner_vr.dm @@ -47,7 +47,7 @@ turn_off() return if(istype(I, /obj/item/device/multitool)) - var/new_temp = input("Input a new target temperature, in degrees C.","Target Temperature", 20) as num + var/new_temp = input(usr, "Input a new target temperature, in degrees C.","Target Temperature", 20) as num if(!Adjacent(user) || user.incapacitated()) return new_temp = convert_c2k(new_temp) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 8895844b00..83fd594382 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -315,7 +315,7 @@ update_flag "\[Air\]" = "grey", \ "\[CAUTION\]" = "yellow", \ ) - var/label = input("Choose canister label", "Gas canister") as null|anything in colors + var/label = tgui_input_list(usr, "Choose canister label", "Gas canister", colors) if(label) canister_color = colors[label] icon_state = colors[label] @@ -332,7 +332,7 @@ update_flag pressure = 10*ONE_ATMOSPHERE . = TRUE else if(pressure == "input") - pressure = input("New release pressure ([ONE_ATMOSPHERE/10]-[10*ONE_ATMOSPHERE] kPa):", name, release_pressure) as num|null + pressure = input(usr, "New release pressure ([ONE_ATMOSPHERE/10]-[10*ONE_ATMOSPHERE] kPa):", name, release_pressure) as num|null if(!isnull(pressure) && !..()) . = TRUE else if(text2num(pressure) != null) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index 43cd3e0e2d..b951a3c396 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -132,7 +132,7 @@ return if(container) - var/response = alert(user, "What do you want to do?", "Bioprinter Menu", "Print Limbs", "Cancel") + var/response = tgui_alert(user, "What do you want to do?", list("Bioprinter Menu", "Print Limbs", "Cancel")) if(response == "Print Limbs") printing_menu(user) else @@ -149,7 +149,7 @@ if(anomalous_organs) possible_list |= anomalous_products - var/choice = input("What would you like to print?") as null|anything in possible_list + var/choice = tgui_input_list(usr, "What would you like to print?", "Print Choice", possible_list) if(!choice || printing || (stat & (BROKEN|NOPOWER))) return diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 17f82629d4..5cec5a5b42 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -101,16 +101,16 @@ C.auto_turn() - C.replace_networks(uniquelist(tempnetwork)) + C.replace_networks(uniqueList(tempnetwork)) C.c_tag = input for(var/i = 5; i >= 0; i -= 1) - var/direct = input(user, "Direction?", "Assembling Camera", null) in list("LEAVE IT", "NORTH", "EAST", "SOUTH", "WEST" ) + var/direct = tgui_input_list(user, "Direction?", "Assembling Camera", list("NORTH", "EAST", "SOUTH", "WEST", "LEAVE IT")) if(direct != "LEAVE IT") C.dir = text2dir(direct) if(i != 0) - var/confirm = alert(user, "Is this what you want? Chances Remaining: [i]", "Confirmation", "Yes", "No") + var/confirm = tgui_alert(user, "Is this what you want? Chances Remaining: [i]", "Confirmation", list("Yes", "No")) if(confirm == "Yes") break return diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 9fd6d026a0..5bb4d80194 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -168,7 +168,7 @@ playsound(src, P.usesound, 50, 1) to_chat(user, "You connect the monitor.") if(!brain) - var/open_for_latejoin = alert(user, "Would you like this core to be open for latejoining AIs?", "Latejoin", "Yes", "Yes", "No") == "Yes" + var/open_for_latejoin = tgui_alert(user, "Would you like this core to be open for latejoining AIs?", "Latejoin", list("Yes", "No")) == "Yes" var/obj/structure/AIcore/deactivated/D = new(loc) if(open_for_latejoin) empty_playable_ai_cores += D @@ -262,7 +262,7 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva for(var/obj/structure/AIcore/deactivated/D in GLOB.all_deactivated_AI_cores) cores["[D] ([D.loc.loc])"] = D - var/id = input("Which core?", "Toggle AI Core Latejoin", null) as null|anything in cores + var/id = tgui_input_list(usr, "Which core?", "Toggle AI Core Latejoin", cores) if(!id) return var/obj/structure/AIcore/deactivated/D = cores[id] diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 14fae598ff..059f058243 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1182,7 +1182,7 @@ // Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is // empty at high security levels if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + var/attempt_pin = input(usr, "Enter pin code", "Vendor transaction") as num customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) if(!customer_account) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 3473216a7b..58565ead6e 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -206,7 +206,7 @@ if(is_authenticated() && modify) var/t1 = params["assign_target"] if(t1 == "Custom") - var/temp_t = sanitize(input("Enter a custom job assignment.","Assignment"), 45) + var/temp_t = sanitize(input(usr, "Enter a custom job assignment.","Assignment"), 45) //let custom jobs function as an impromptu alt title, mainly for sechuds if(temp_t && modify) modify.assignment = temp_t diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index e2e1535728..283d86aeff 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -45,7 +45,7 @@ to_chat(user, "This guest pass is already deactivated!") return - var/confirm = alert("Do you really want to deactivate this guest pass? (you can't reactivate it)", "Confirm Deactivation", "Yes", "No") + var/confirm = tgui_alert(usr, "Do you really want to deactivate this guest pass? (you can't reactivate it)", "Confirm Deactivation", list("Yes", "No")) if(confirm == "Yes") //rip guest pass \The [user] deactivates \the [src].") @@ -162,15 +162,15 @@ mode = params["mode"] if("giv_name") - var/nam = sanitizeName(input("Person pass is issued to", "Name", giv_name) as text|null) + var/nam = sanitizeName(input(usr, "Person pass is issued to", "Name", giv_name) as text|null) if(nam) giv_name = nam if("reason") - var/reas = sanitize(input("Reason why pass is issued", "Reason", reason) as text|null) + var/reas = sanitize(input(usr, "Reason why pass is issued", "Reason", reason) as text|null) if(reas) reason = reas if("duration") - var/dur = input("Duration (in minutes) during which pass is valid (up to 360 minutes).", "Duration") as num|null //VOREStation Edit + var/dur = input(usr, "Duration (in minutes) during which pass is valid (up to 360 minutes).", "Duration") as num|null //VOREStation Edit if(dur) if(dur > 0 && dur <= 360) //VOREStation Edit duration = dur diff --git a/code/game/machinery/computer/id_restorer_vr.dm b/code/game/machinery/computer/id_restorer_vr.dm index af7f9304f9..c9bbf49a27 100644 --- a/code/game/machinery/computer/id_restorer_vr.dm +++ b/code/game/machinery/computer/id_restorer_vr.dm @@ -37,7 +37,7 @@ to_chat(user, "No ID is inserted.") return - var/choice = alert(user,"What do you want to do?","[src]","Restore ID access","Eject ID","Cancel") + var/choice = tgui_alert(user,"What do you want to do?","[src]",list("Restore ID access","Eject ID","Cancel")) if(user.incapacitated() || (get_dist(src, user) > 1)) return switch(choice) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 87b35e8cd0..b39e8513bf 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -198,7 +198,7 @@ //Find a server if("find") if(message_servers && message_servers.len > 1) - linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in message_servers + linkedServer = tgui_input_list(usr,"Please select a server.", "Select a server.", message_servers) set_temp("NOTICE: Server selected.", "alert") else if(message_servers && message_servers.len > 0) linkedServer = message_servers[1] diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 0a57a5e4c5..309453ee29 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -220,8 +220,8 @@ var/mob/living/silicon/robot/R = locate(params["ref"]) if(!can_hack(usr, R)) return - var/choice = input("Really hack [R.name]? This cannot be undone.") in list("Yes", "No") - if(choice != "Yes") + var/choice = tgui_alert(usr, "Really hack [R.name]? This cannot be undone.", "Hack?", list("Yes", "No")) + if(choice == "No") return log_game("[key_name(usr)] emagged [key_name(R)] using robotic console!") message_admins("[key_name_admin(usr)] emagged [key_name_admin(R)] using robotic console!") diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index d3de10cba1..d4e5867549 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -28,7 +28,7 @@ to_chat(user, "The access level of [W:registered_name]\'s card is not high enough. ") return 0 - var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort") + var/choice = tgui_alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", list("Authorize", "Repeal", "Abort")) if(emergency_shuttle.location() && user.get_active_hand() != W) return 0 switch(choice) @@ -58,7 +58,7 @@ src.authorized = list( ) else if (istype(W, /obj/item/weapon/card/emag) && !emagged) - var/choice = alert(user, "Would you like to launch the shuttle?","Shuttle control", "Launch", "Cancel") + var/choice = tgui_alert(user, "Would you like to launch the shuttle?", "Shuttle control", list("Launch", "Cancel")) if(!emagged && !emergency_shuttle.location() && user.get_active_hand() == W) switch(choice) diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index 6b9b0f7380..e805e151bd 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -169,7 +169,7 @@ "cost" = P.cost, "group" = P.group, "contraband" = P.contraband, - "manifest" = uniquelist(P.manifest), + "manifest" = uniqueList(P.manifest), "random" = P.num_contained, "ref" = "\ref[P]" ) @@ -201,7 +201,7 @@ var/list/payload = list( "name" = P.name, "cost" = P.cost, - "manifest" = uniquelist(P.manifest), + "manifest" = uniqueList(P.manifest), "ref" = "\ref[P]", "random" = P.num_contained, ) @@ -394,7 +394,7 @@ if(!(authorization & SUP_ACCEPT_ORDERS)) return FALSE var/list/L = E.contents[params["index"]] - var/field = alert(usr, "Select which field to edit", , "Name", "Quantity", "Value") + var/field = tgui_alert(usr, "Select which field to edit", "Field Choice", list("Name", "Quantity", "Value")) var/new_val = sanitize(input(usr, field, "Enter the new value for this field:", L[lowertext(field)]) as null|text) if(!new_val) diff --git a/code/game/machinery/computer3/computers/card.dm b/code/game/machinery/computer3/computers/card.dm index f9e43aaa7d..d2f6074c78 100644 --- a/code/game/machinery/computer3/computers/card.dm +++ b/code/game/machinery/computer3/computers/card.dm @@ -305,7 +305,7 @@ if(auth) var/t1 = href_list["assign"] if(t1 == "Custom") - var/temp_t = sanitize(input("Enter a custom job assignment.","Assignment")) + var/temp_t = sanitize(input(usr, "Enter a custom job assignment.","Assignment")) if(temp_t) t1 = temp_t set_default_access(t1) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 3cd05e69b5..51d97df592 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -664,7 +664,7 @@ var/willing = null //We don't want to allow people to be forced into despawning. if(M.client) - if(alert(M,"Would you like to enter long-term storage?",,"Yes","No") == "Yes") + if(tgui_alert(M,"Would you like to enter long-term storage?","Cryopod",list("Yes","No")) == "Yes") if(!M) return willing = 1 else diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm index 2f2f2f6adf..25fdd4ed60 100644 --- a/code/game/machinery/deployable_vr.dm +++ b/code/game/machinery/deployable_vr.dm @@ -71,7 +71,7 @@ /obj/structure/barricade/cutout/attackby(var/obj/I, var/mob/user) if(is_type_in_list(I, painters)) - var/choice = input(user, "What would you like to paint the cutout as?", "Cutout Painting") as null|anything in cutout_types + var/choice = tgui_input_list(user, "What would you like to paint the cutout as?", "Cutout Painting", cutout_types) if(!choice || !Adjacent(user, src) || I != user.get_active_hand()) return TRUE if(do_after(user, 10 SECONDS, src)) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index ed639f4288..1363148331 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -154,8 +154,8 @@ if(A.firedoors_closed) alarmed = 1 - var/answer = alert(user, "Would you like to [density ? "open" : "close"] this [src.name]?[ alarmed && density ? "\nNote that by doing so, you acknowledge any damages from opening this\n[src.name] as being your own fault, and you will be held accountable under the law." : ""]",\ - "\The [src]", "Yes, [density ? "open" : "close"]", "No") + var/answer = tgui_alert(user, "Would you like to [density ? "open" : "close"] this [src.name]?[ alarmed && density ? "\nNote that by doing so, you acknowledge any damages from opening this\n[src.name] as being your own fault, and you will be held accountable under the law." : ""]",\ + "\The [src]", list("Yes, [density ? "open" : "close"]", "No")) if(answer == "No") return if(user.incapacitated() || (get_dist(src, user) > 1 && !issilicon(user))) diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm index d8a2b463e2..c77dff55ec 100644 --- a/code/game/machinery/floorlayer.dm +++ b/code/game/machinery/floorlayer.dm @@ -35,7 +35,7 @@ /obj/machinery/floorlayer/attackby(var/obj/item/W as obj, var/mob/user as mob) if(W.is_wrench()) - var/m = input("Choose work mode", "Mode") as null|anything in mode + var/m = tgui_input_list(usr, "Choose work mode", "Mode", mode) mode[m] = !mode[m] var/O = mode[m] user.visible_message("[usr] has set \the [src] [m] mode [!O?"off":"on"].", "You set \the [src] [m] mode [!O?"off":"on"].") @@ -51,7 +51,7 @@ if(!length(contents)) to_chat(user, "\The [src] is empty.") else - var/obj/item/stack/tile/E = input("Choose remove tile type.", "Tiles") as null|anything in contents + var/obj/item/stack/tile/E = tgui_input_list(usr, "Choose remove tile type.", "Tiles", contents) if(E) to_chat(user, "You remove the [E] from \the [src].") E.loc = src.loc @@ -59,7 +59,7 @@ return if(W.is_screwdriver()) - T = input("Choose tile type.", "Tiles") as null|anything in contents + T = tgui_input_list(usr, "Choose tile type.", "Tiles", contents) return ..() diff --git a/code/game/machinery/gear_dispenser.dm b/code/game/machinery/gear_dispenser.dm index 28a7e93d96..562c9906f4 100644 --- a/code/game/machinery/gear_dispenser.dm +++ b/code/game/machinery/gear_dispenser.dm @@ -188,7 +188,7 @@ var/list/dispenser_presets = list() dispenser_flags &= ~GD_BUSY return - var/choice = input("Select equipment to dispense.", "Equipment Dispenser") as null|anything in gear_list + var/choice = tgui_input_list(usr, "Select equipment to dispense.", "Equipment Dispenser", gear_list) if(!choice) dispenser_flags &= ~GD_BUSY diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 4c283cd301..fa9ab86e54 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -54,7 +54,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED /obj/machinery/hologram/holopad/attack_hand(var/mob/living/carbon/human/user) //Carn: Hologram requests. if(!istype(user)) return - if(alert(user,"Would you like to request an AI's presence?",,"Yes","No") == "Yes") + if(tgui_alert(user,"Would you like to request an AI's presence?","Request AI",list("Yes","No")) == "Yes") if(last_request + 200 < world.time) //don't spam the AI with requests you jerk! last_request = world.time to_chat(user, "You request an AI's presence.") @@ -223,7 +223,7 @@ Holographic project of everything else. var/icon/flat_icon = icon(getFlatIcon(src,0))//Need to make sure it's a new icon so the old one is not reused. flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. flat_icon.ChangeOpacity(0.5)//Make it half transparent. - var/input = input("Select what icon state to use in effect.",,"") + var/input = input(usr, "Select what icon state to use in effect.",,"") if(input) var/icon/alpha_mask = new('icons/effects/effects.dmi', "[input]") flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. diff --git a/code/game/machinery/holoposter.dm b/code/game/machinery/holoposter.dm index a273cc1474..d52e10b57a 100644 --- a/code/game/machinery/holoposter.dm +++ b/code/game/machinery/holoposter.dm @@ -84,7 +84,7 @@ GLOBAL_LIST_EMPTY(holoposters) return if (W.is_multitool()) playsound(src, 'sound/items/penclick.ogg', 60, 1) - icon_state = input("Available Posters", "Holographic Poster") as null|anything in postertypes + "random" + icon_state = tgui_input_list(usr, "Available Posters", "Holographic Poster", postertypes + "random") if(!Adjacent(user)) return if(icon_state == "random") diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 6d4453d1f2..6a92186ac5 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -150,7 +150,7 @@ Transponder Codes: