From bda1572b30fec23fe6c7f35422ddbc80f2c8ce47 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sun, 1 Nov 2015 13:58:28 -0800 Subject: [PATCH 01/44] Footstep sounds This adds a system for footstep sounds - Only xenomorphs and humans currently use it, could expand to robutts and simple_animals easily, but haven't. - Only enabled for three turf types currently: - Plating (ala Maintnance) - Carpets - Wooden floors --- code/game/turfs/simulated/floor.dm | 17 ++++++++++++++- code/game/turfs/simulated/floor_types.dm | 15 +++++++++++++ code/game/turfs/turf.dm | 2 ++ code/modules/mob/living/carbon/alien/alien.dm | 13 ++++++++++++ .../mob/living/carbon/human/human_movement.dm | 20 +++++++++++++++++- code/modules/mob/living/living.dm | 8 +++++++ code/modules/mob/living/living_defines.dm | 3 ++- sound/effects/footstep/carpet_human.ogg | Bin 0 -> 12110 bytes sound/effects/footstep/carpet_xeno.ogg | Bin 0 -> 12764 bytes sound/effects/footstep/plating_human.ogg | Bin 0 -> 20009 bytes sound/effects/footstep/plating_xeno.ogg | Bin 0 -> 31986 bytes sound/effects/footstep/wood_all.ogg | Bin 0 -> 11813 bytes 12 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 sound/effects/footstep/carpet_human.ogg create mode 100644 sound/effects/footstep/carpet_xeno.ogg create mode 100644 sound/effects/footstep/plating_human.ogg create mode 100644 sound/effects/footstep/plating_xeno.ogg create mode 100644 sound/effects/footstep/wood_all.ogg diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 9b2e9b7064d..13b16f85692 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -115,6 +115,12 @@ var/list/wood_icons = list("wood","wood-broken") else if(is_plating()) if(!broken && !burnt) icon_state = icon_plating //Because asteroids are 'platings' too. + + footstep_sounds = list( + "human" = list('sound/effects/footstep/plating_human.ogg'), + "xeno" = list('sound/effects/footstep/plating_xeno.ogg') + ) + else if(is_light_floor()) var/obj/item/stack/tile/light/T = floor_tile if(T.on) @@ -193,11 +199,20 @@ var/list/wood_icons = list("wood","wood-broken") icon_state = "carpet[connectdir]-[diagonalconnect]" + footstep_sounds = list( + "human" = list('sound/effects/footstep/carpet_human.ogg'), + "xeno" = list('sound/effects/footstep/carpet_xeno.ogg') + ) + else if(is_wood_floor()) if(!broken && !burnt) if( !(icon_state in wood_icons) ) icon_state = "wood" - //world << "[icon_state]y's got [icon_state]" + + footstep_sounds = list( + "human" = list('sound/effects/footstep/wood_all.ogg'), //@RonaldVanWonderen of Freesound.org + "xeno" = list('sound/effects/footstep/wood_all.ogg') //@RonaldVanWonderen of Freesound.org + ) /turf/simulated/floor/return_siding_icon_state() diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 9c74178259f..7ed0795cf47 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -31,6 +31,11 @@ icon_state = "wood" floor_tile = new/obj/item/stack/tile/wood + footstep_sounds = list( + "human" = list('sound/effects/footstep/wood_all.ogg'), //@RonaldVanWonderen of Freesound.org + "xeno" = list('sound/effects/footstep/wood_all.ogg') //@RonaldVanWonderen of Freesound.org + ) + /turf/simulated/floor/vault icon_state = "rockvault" @@ -131,6 +136,11 @@ floor_tile = null intact = 0 + footstep_sounds = list( + "human" = list('sound/effects/footstep/plating_human.ogg'), + "xeno" = list('sound/effects/footstep/plating_xeno.ogg') + ) + /turf/simulated/floor/plating/airless icon_state = "plating" name = "airless plating" @@ -246,6 +256,11 @@ icon_state = "carpet" floor_tile = new/obj/item/stack/tile/carpet + footstep_sounds = list( + "human" = list('sound/effects/footstep/carpet_human.ogg'), + "xeno" = list('sound/effects/footstep/carpet_xeno.ogg') + ) + New() floor_tile.New() //I guess New() isn't ran on objects spawned without the definition of a turf to house them, ah well. if(!icon_state) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 8cd2500b0e0..3dce001a535 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -29,6 +29,8 @@ var/image/obscured //camerachunks + var/list/footstep_sounds = list() + /turf/New() ..() for(var/atom/movable/AM in src) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 88000afe32f..9ea86bcdd46 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -295,3 +295,16 @@ Des: Removes all infected images from the alien. #undef HEAT_DAMAGE_LEVEL_1 #undef HEAT_DAMAGE_LEVEL_2 #undef HEAT_DAMAGE_LEVEL_3 + +/mob/living/carbon/alien/handle_footstep(turf/T) + if(..()) + if(T.footstep_sounds["xeno"]) + var/S = pick(T.footstep_sounds["xeno"]) + if(S) + if(m_intent == "run") + if(!(step_count % 2)) //every other turf makes a sound + return 0 + if(leaping) + return 0 + playsound(T, S, 6, 1, -(world.view/2)) //xenos are quiet fuckers + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 55265498284..3dd146bf0bf 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -81,4 +81,22 @@ if(!has_gravity(loc)) return var/obj/item/clothing/shoes/S = shoes - S.step_action(src) \ No newline at end of file + S.step_action(src) + +/mob/living/carbon/human/handle_footstep(turf/T) + if(..()) + if(T.footstep_sounds["human"]) + var/S = pick(T.footstep_sounds["human"]) + if(S) + if(m_intent == "run") + if(!(step_count % 2)) //every other turf makes a sound + return 0 + playsound(T, S, shoes ? 15 : 7, 1, shoes ? 0 : -(world.view/2)) + //this looks insane but it actually is quite simple + //play sound at turf T, using sound S + //volume = 15 w/ shoes, volume = 7 w/o shoes + //do use vary + //add negative world.view/2 if not wearing shoes + return 1 + + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9806145854b..87aeab88fa6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -492,10 +492,18 @@ if (s_active && !( s_active in contents ) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. s_active.close(src) + handle_footstep(loc) + step_count++ + if(update_slimes) for(var/mob/living/carbon/slime/M in view(1,src)) M.UpdateFeed(src) +/mob/living/proc/handle_footstep(turf/T) + if(istype(T)) + return 1 + return 0 + /*////////////////////// START RESIST PROCS */////////////////////// diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 08a99c0dba2..f21d2a2d954 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -51,4 +51,5 @@ var/list/icon/pipes_shown = list() var/last_played_vent - var/list/datum/action/actions = list() \ No newline at end of file + var/list/datum/action/actions = list() + var/step_count = 0 \ No newline at end of file diff --git a/sound/effects/footstep/carpet_human.ogg b/sound/effects/footstep/carpet_human.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0de0190ba1dd2440d15ed768f6182b85514b476f GIT binary patch literal 12110 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 NQ=$Pm%%jwf&_Pm;KAK3!Ciy92X`IhY{>Jx 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 literal 0 HcmV?d00001 diff --git a/sound/effects/footstep/plating_xeno.ogg b/sound/effects/footstep/plating_xeno.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f38a1eb5c3f627277210e61607cd5e3eb6bae1d5 GIT binary patch literal 31986 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 literal 0 HcmV?d00001 diff --git a/sound/effects/footstep/wood_all.ogg b/sound/effects/footstep/wood_all.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ab6fed9e81d9a2dce2533e70fa78b81a6efc3de9 GIT binary patch literal 11813 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 Date: Sun, 1 Nov 2015 19:56:24 -0800 Subject: [PATCH 02/44] Stepsound "BALANCING" Changes: Humans now use the following ranges: - range(6) for running + shoes - range(5) for running OR shoes - range(4) for not running AND no shoes Humans use the following volumes: - 13 for running + shoes - 9 for running OR shoes - 5 for not running AND no shoes Humans have special modifiers on steps: - Shoes being 'silent' = Silent - Noslip shoes are silent by default. - You can make any shoe silent by tablecrafting shoe wraps with 10 ducttape and a wirecutter at a table. - Species being 'silent' = Silent - Currently, shadowlings use this. - Buckled, lying, or being thrown = Silent - No feet = Silent - No gravity = Footsteps every 3 turfs instead of every 2. Xenomorphs now use the following ranges: - range(4) at all times. Xenomorphs use the following volumes: - 5 at all times. Xenomorphs have special modifiers on steps: - Walking = Silent - Buckled, lying, being thrown = Silent - No gravity = Footsteps every 3 turfs instead of every 2. --- code/game/gamemodes/shadowling/shadowling.dm | 2 + code/game/objects/items/weapons/misc.dm | 1 + code/modules/clothing/clothing.dm | 1 + code/modules/clothing/shoes/miscellaneous.dm | 23 ++++++++++ code/modules/mob/living/carbon/alien/alien.dm | 20 +++++++-- .../mob/living/carbon/human/human_movement.dm | 45 ++++++++++++++++--- .../living/carbon/human/species/species.dm | 1 + 7 files changed, 84 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 05d778c8b5a..5c9b3252b84 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -307,6 +307,8 @@ Made by Xhuis flags = NO_BLOOD | NO_BREATHE | NO_SCAN | NO_INTORGANS burn_mod = 1.5 //1.5x burn damage, 2x is excessive + silent_steps = 1 + /datum/game_mode/proc/update_shadow_icons_added(datum/mind/shadow_mind) spawn(0) for(var/datum/mind/shadowling in shadows) diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index 90191efbf70..c4675fb814d 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -13,6 +13,7 @@ Newton Cradle PAI cable Red Phone + Shoe Silencer */ /obj/item/weapon/balltoy diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index a642bb0e823..504ae451799 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -304,6 +304,7 @@ BLIND // can't see anything body_parts_covered = FEET slot_flags = SLOT_FEET + var/silence_steps = 0 permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 46df4374a99..2c7dd1eeccc 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -11,6 +11,7 @@ var/list/clothing_choices = list() siemens_coefficient = 0.8 species_restricted = null + silence_steps = 1 /obj/item/clothing/shoes/mime name = "mime shoes" @@ -165,3 +166,25 @@ icon_state = "noble_boot" item_color = "noble_boot" item_state = "noble_boot" + + +/obj/item/clothing/shoes/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/shoe_silencer)) + silence_steps = 1 + user.unEquip(I) + qdel(I) + else . = ..() + +/obj/item/shoe_silencer + name = "shoe rags" + desc = "Looks sneaky." + icon_state = "sheet-cloth" + +/datum/table_recipe/shoe_rags + name = "Shoe Rags" + + result = /obj/item/shoe_silencer + reqs = list(/obj/item/stack/tape_roll = 10) + tools = list(/obj/item/weapon/wirecutters) + + time = 40 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 9ea86bcdd46..b281fcfe519 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -304,7 +304,21 @@ Des: Removes all infected images from the alien. if(m_intent == "run") if(!(step_count % 2)) //every other turf makes a sound return 0 - if(leaping) - return 0 - playsound(T, S, 6, 1, -(world.view/2)) //xenos are quiet fuckers + + var/range = -(world.view - 2) + range -= 0.666 //-(7 - 2) = (-5) = -5 | -5 - (0.666) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) + var/volume = 5 + + if(m_intent == "walk") + return 0 //silent when walking + + if(buckled || lying || throwing) + return 0 //people flying, lying down or sitting do not step + + if(!has_gravity(src)) + if(step_count % 3) //this basically says, every three moves make a noise + return 0 //1st - none, 1%3==1, 2nd - none, 2%3==2, 3rd - noise, 3%3==0 + + playsound(T, S, volume, 1, range) + return 1 return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 3dd146bf0bf..1c458b6638e 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -91,12 +91,45 @@ if(m_intent == "run") if(!(step_count % 2)) //every other turf makes a sound return 0 - playsound(T, S, shoes ? 15 : 7, 1, shoes ? 0 : -(world.view/2)) - //this looks insane but it actually is quite simple - //play sound at turf T, using sound S - //volume = 15 w/ shoes, volume = 7 w/o shoes - //do use vary - //add negative world.view/2 if not wearing shoes + + var/range = -(world.view - 2) + if(m_intent == "walk") + range -= 0.333 + if(!shoes) + range -= 0.333 + + //shoes + running + //-(7 - 2) = -(5) = -5 | -5 - 0 = -5 | (7 + -5) = 2 | 2 * 3 = 6 | range(6) = range(6) + //running OR shoes + //-(7 - 2) = (-5) = -5 | -5 - 0.333 = -5.333 | (7 + -5.333) = 1.667 | 1.667 * 3 = 5.001 | range(5.001) = range(5) + //walking AND no shoes + //-(7 - 2) = (-5) = -5 | -5 - (0.333 * 2) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) + + var/volume = 13 + if(m_intent == "walk") + volume -= 4 + if(!shoes) + volume -= 4 + + if(istype(shoes, /obj/item/clothing/shoes)) + var/obj/item/clothing/shoes/shooess = shoes + if(shooess.silence_steps) + return 0 //silent + + if(!has_organ("l_foot") && !has_organ("r_foot")) + return 0 //no feet no footsteps + + if(buckled || lying || throwing) + return 0 //people flying, lying down or sitting do not step + + if(!has_gravity(src)) + if(step_count % 3) //this basically says, every three moves make a noise + return 0 //1st - none, 1%3==1, 2nd - none, 2%3==2, 3rd - noise, 3%3==0 + + if(species.silent_steps) + return 0 //species is silent + + playsound(T, S, volume, 1, range) return 1 return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 1ed4360db60..18a9fa264ef 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -23,6 +23,7 @@ var/unarmed //For empty hand harm-intent attack var/unarmed_type = /datum/unarmed_attack var/slowdown = 0 // Passive movement speed malus (or boost, if negative) + var/silent_steps = 0 // Stops step noises var/breath_type = "oxygen" // Non-oxygen gas breathed, if any. var/poison_type = "plasma" // Poisonous air. From 7ab485c3cf3a14972b69707e2d54ff9759c20dbf Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 14 Nov 2015 08:56:21 -0800 Subject: [PATCH 03/44] whoops --- code/game/objects/items/weapons/misc.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index c4675fb814d..90191efbf70 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -13,7 +13,6 @@ Newton Cradle PAI cable Red Phone - Shoe Silencer */ /obj/item/weapon/balltoy From 58195b8e856f3d03fe721569ed2e29fd476675e6 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 29 Nov 2015 07:04:21 -0500 Subject: [PATCH 04/44] Screen object cleanup --- code/_onclick/hud/ai.dm | 176 +++++++- code/_onclick/hud/alien.dm | 34 +- code/_onclick/hud/alien_larva.dm | 6 +- code/_onclick/hud/human.dm | 43 +- code/_onclick/hud/monkey.dm | 10 +- code/_onclick/hud/robot.dm | 98 ++++- code/_onclick/hud/screen_objects.dm | 645 ++++++++++------------------ 7 files changed, 539 insertions(+), 473 deletions(-) diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 76bb71e296a..aaf80865f4c 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -1,3 +1,143 @@ +/obj/screen/ai + icon = 'icons/mob/screen_ai.dmi' + +/obj/screen/ai/aicore + name = "AI core" + icon_state = "ai_core" + +/obj/screen/ai/aicore/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.view_core() + +/obj/screen/ai/camera_list + name = "Show Camera List" + icon_state = "camera" + +/obj/screen/ai/camera_list/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/camera = input(AI) in AI.get_camera_list() + AI.ai_camera_list(camera) + +/obj/screen/ai/camera_track + name = "Track With Camera" + icon_state = "track" + +/obj/screen/ai/camera_track/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/target_name = input(AI) in AI.trackable_mobs() + AI.ai_camera_track(target_name) + +/obj/screen/ai/camera_light + name = "Toggle Camera Light" + icon_state = "camera_light" + +/obj/screen/ai/camera_light/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.toggle_camera_light() + +/obj/screen/ai/crew_monitor + name = "Crew Monitoring Console" + icon_state = "crew_monitor" + +/obj/screen/ai/crew_monitor/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_crew_monitor() + +/obj/screen/ai/crew_manifest + name = "Crew Manifest" + icon_state = "manifest" + +/obj/screen/ai/crew_manifest/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_roster() + +/obj/screen/ai/alerts + name = "Show Alerts" + icon_state = "alerts" + +/obj/screen/ai/alerts/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_alarm_monitor() + +/obj/screen/ai/announcement + name = "Make Announcement" + icon_state = "announcement" + +/obj/screen/ai/announcement/Click() + var/mob/living/silicon/ai/AI = usr + AI.announcement() + +/obj/screen/ai/call_shuttle + name = "Call Emergency Shuttle" + icon_state = "call_shuttle" + +/obj/screen/ai/call_shuttle/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_call_shuttle() + +/obj/screen/ai/state_laws + name = "State Laws" + icon_state = "state_laws" + +/obj/screen/ai/state_laws/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_law_manager() + +/obj/screen/ai/pda_msg_send + name = "PDA - Send Message" + icon_state = "pda_send" + +/obj/screen/ai/pda_msg_send/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.cmd_send_pdamesg(usr) + +/obj/screen/ai/pda_msg_show + name = "PDA - Show Message Log" + icon_state = "pda_receive" + +/obj/screen/ai/pda_msg_show/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.cmd_show_message_log(usr) + +/obj/screen/ai/image_take + name = "Take Image" + icon_state = "take_picture" + +/obj/screen/ai/image_take/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.toggle_camera_mode() + +/obj/screen/ai/image_view + name = "View Images" + icon_state = "view_images" + +/obj/screen/ai/image_view/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.viewpictures() + +/obj/screen/ai/sensors + name = "Sensor Augmentation" + icon_state = "ai_sensor" + +/obj/screen/ai/sensors/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.sensor_mode() + + /datum/hud/proc/ai_hud() adding = list() other = list() @@ -5,7 +145,7 @@ var/obj/screen/using //AI core - using = new /obj/screen() + using = new /obj/screen/ai/aicore() using.name = "AI Core" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "ai_core" @@ -14,7 +154,7 @@ adding += using //Camera list - using = new /obj/screen() + using = new /obj/screen/ai/camera_list() using.name = "Show Camera List" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "camera" @@ -23,7 +163,7 @@ adding += using //Track - using = new /obj/screen() + using = new /obj/screen/ai/camera_track() using.name = "Track With Camera" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "track" @@ -32,7 +172,7 @@ adding += using //Camera light - using = new /obj/screen() + using = new /obj/screen/ai/camera_light() using.name = "Toggle Camera Light" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "camera_light" @@ -41,7 +181,7 @@ adding += using //Crew Monitorting - using = new /obj/screen() + using = new /obj/screen/ai/crew_monitor() using.name = "Crew Monitoring" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "crew_monitor" @@ -50,7 +190,7 @@ adding += using //Crew Manifest - using = new /obj/screen() + using = new /obj/screen/ai/crew_manifest() using.name = "Show Crew Manifest" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "manifest" @@ -59,7 +199,7 @@ adding += using //Alerts - using = new /obj/screen() + using = new /obj/screen/ai/alerts() using.name = "Show Alerts" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "alerts" @@ -68,7 +208,7 @@ adding += using //Announcement - using = new /obj/screen() + using = new /obj/screen/ai/announcement() using.name = "Announcement" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "announcement" @@ -77,7 +217,7 @@ adding += using //Shuttle - using = new /obj/screen() + using = new /obj/screen/ai/announcement() using.name = "Call Emergency Shuttle" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "call_shuttle" @@ -86,7 +226,7 @@ adding += using //Laws - using = new /obj/screen() + using = new /obj/screen/ai/state_laws() using.name = "Law Manager" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "state_laws" @@ -95,7 +235,7 @@ adding += using //PDA message - using = new /obj/screen() + using = new /obj/screen/ai/pda_msg_send() using.name = "PDA - Send Message" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "pda_send" @@ -104,7 +244,7 @@ adding += using //PDA log - using = new /obj/screen() + using = new /obj/screen/ai/pda_msg_show() using.name = "PDA - Show Message Log" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "pda_receive" @@ -113,7 +253,7 @@ adding += using //Take image - using = new /obj/screen() + using = new /obj/screen/ai/image_take() using.name = "Take Image" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "take_picture" @@ -122,21 +262,21 @@ adding += using //View images - using = new /obj/screen() + using = new /obj/screen/ai/image_view() using.name = "View Images" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "view_images" using.screen_loc = ui_ai_view_images using.layer = 20 adding += using - + //Medical/Security sensors - using = new /obj/screen() + using = new /obj/screen/ai/sensors() using.name = "Set Sensor Augmentation" using.icon = 'icons/mob/screen_ai.dmi' - using.icon_state = "ai_sensor" + using.icon_state = "ai_sensor" using.screen_loc = ui_ai_sensor - using.layer = 20 + using.layer = 20 adding += using mymob.client.screen += adding + other diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 763269c2af7..568ffa084f2 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -1,3 +1,23 @@ +/obj/screen/alien + icon = 'icons/mob/screen_alien.dmi' + +/obj/screen/alien/leap + name = "toggle leap" + icon_state = "leap_off" + +/obj/screen/alien/leap/Click() + if(istype(usr, /mob/living/carbon/alien/humanoid)) + var/mob/living/carbon/alien/humanoid/hunter/AH = usr + AH.toggle_leap() + +/obj/screen/alien/nightvision + name = "toggle night-vision" + icon_state = "nightvision1" + +/obj/screen/alien/nightvision/Click() + var/mob/living/carbon/alien/humanoid/A = usr + A.nightvisiontoggle() + /datum/hud/proc/embryo_hud() return @@ -8,7 +28,7 @@ var/obj/screen/using var/obj/screen/inventory/inv_box - using = new /obj/screen() + using = new /obj/screen/act_intent() using.name = "act_intent" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_alien.dmi' @@ -18,7 +38,7 @@ src.adding += using action_intent = using - using = new /obj/screen() + using = new /obj/screen/mov_intent() using.name = "mov_intent" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_alien.dmi' @@ -29,7 +49,7 @@ move_intent = using if(istype(mymob, /mob/living/carbon/alien/humanoid/hunter)) - mymob.leap_icon = new /obj/screen() + mymob.leap_icon = new /obj/screen/alien/leap() mymob.leap_icon.icon = 'icons/mob/screen1_alien.dmi' mymob.leap_icon.name = "toggle leap" mymob.leap_icon.icon_state = "leap_off" @@ -83,7 +103,7 @@ //end of equippable shit - using = new /obj/screen() + using = new /obj/screen/resist() using.name = "resist" using.icon = 'icons/mob/screen1_alien.dmi' using.icon_state = "act_resist" @@ -91,7 +111,7 @@ using.layer = 19 src.adding += using - using = new /obj/screen() + using = new /obj/screen/drop() using.name = "drop" using.icon = 'icons/mob/screen1_alien.dmi' using.icon_state = "act_drop" @@ -99,7 +119,7 @@ using.layer = 19 src.adding += using - mymob.throw_icon = new /obj/screen() + mymob.throw_icon = new /obj/screen/throw_catch() mymob.throw_icon.icon = 'icons/mob/screen1_alien.dmi' mymob.throw_icon.icon_state = "act_throw_off" mymob.throw_icon.name = "throw" @@ -129,7 +149,7 @@ mymob.healths.name = "health" mymob.healths.screen_loc = ui_alien_health - nightvisionicon = new /obj/screen() + nightvisionicon = new /obj/screen/alien/nightvision() nightvisionicon.icon = 'icons/mob/screen1_alien.dmi' nightvisionicon.icon_state = "nightvision1" nightvisionicon.name = "night vision" diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 4c9b7b651c1..18c2d344f53 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -4,7 +4,7 @@ var/obj/screen/using - using = new /obj/screen() + using = new /obj/screen/act_intent() using.name = "act_intent" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_alien.dmi' @@ -14,7 +14,7 @@ src.adding += using action_intent = using - using = new /obj/screen() + using = new /obj/screen/mov_intent() using.name = "mov_intent" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_alien.dmi' @@ -50,7 +50,7 @@ mymob.healths.name = "health" mymob.healths.screen_loc = ui_alien_health - nightvisionicon = new /obj/screen() + nightvisionicon = new /obj/screen/alien/nightvision() nightvisionicon.icon = 'icons/mob/screen1_alien.dmi' nightvisionicon.icon_state = "nightvision1" nightvisionicon.name = "night vision" diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index f55951b5f37..6e6f1d0e651 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -1,3 +1,30 @@ +/obj/screen/human + icon = 'icons/mob/screen1_midnight.dmi' + +/obj/screen/human/toggle + name = "toggle" + icon_state = "toggle" + +/obj/screen/human/toggle/Click() + if(usr.hud_used.inventory_shown) + usr.hud_used.inventory_shown = 0 + usr.client.screen -= usr.hud_used.other + else + usr.hud_used.inventory_shown = 1 + usr.client.screen += usr.hud_used.other + + usr.hud_used.hidden_inventory_update() + +/obj/screen/human/equip + name = "equip" + icon_state = "act_equip" + +/obj/screen/human/equip/Click() + if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return 1 + var/mob/living/carbon/human/H = usr + H.quick_equip() + /datum/hud/proc/human_hud(var/ui_style='icons/mob/screen1_White.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255) src.adding = list() @@ -7,7 +34,7 @@ var/obj/screen/using var/obj/screen/inventory/inv_box - using = new /obj/screen() + using = new /obj/screen/act_intent() using.name = "act_intent" using.dir = SOUTHWEST using.icon = ui_style @@ -72,7 +99,7 @@ //end intent small hud objects - using = new /obj/screen() + using = new /obj/screen/mov_intent() using.name = "mov_intent" using.dir = SOUTHWEST using.icon = ui_style @@ -84,7 +111,7 @@ src.adding += using move_intent = using - using = new /obj/screen() + using = new /obj/screen/drop() using.name = "drop" using.icon = ui_style using.icon_state = "act_drop" @@ -252,7 +279,7 @@ inv_box.alpha = ui_alpha src.adding += inv_box - using = new /obj/screen() + using = new /obj/screen/resist() using.name = "resist" using.icon = ui_style using.icon_state = "act_resist" @@ -262,7 +289,7 @@ using.alpha = ui_alpha src.hotkeybuttons += using - using = new /obj/screen() + using = new /obj/screen/human/toggle() using.name = "toggle" using.icon = ui_style using.icon_state = "other" @@ -272,7 +299,7 @@ using.alpha = ui_alpha src.adding += using - using = new /obj/screen() + using = new /obj/screen/human/equip() using.name = "equip" using.icon = ui_style using.icon_state = "act_equip" @@ -359,7 +386,7 @@ inv_box.alpha = ui_alpha src.adding += inv_box - mymob.throw_icon = new /obj/screen() + mymob.throw_icon = new /obj/screen/throw_catch() mymob.throw_icon.icon = ui_style mymob.throw_icon.icon_state = "act_throw_off" mymob.throw_icon.name = "throw" @@ -386,7 +413,7 @@ mymob.toxin.name = "toxin" mymob.toxin.screen_loc = ui_toxin - mymob.internals = new /obj/screen() + mymob.internals = new /obj/screen/internals() mymob.internals.icon = ui_style mymob.internals.icon_state = "internal0" mymob.internals.name = "internal" diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index fce38a8b465..09a2dce5b4f 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -7,7 +7,7 @@ var/obj/screen/using var/obj/screen/inventory/inv_box - using = new /obj/screen() + using = new /obj/screen/act_intent() using.name = "act_intent" using.dir = SOUTHWEST using.icon = ui_style @@ -72,7 +72,7 @@ //end intent small hud objects - using = new /obj/screen() + using = new /obj/screen/mov_intent() using.name = "mov_intent" using.dir = SOUTHWEST using.icon = ui_style @@ -84,7 +84,7 @@ src.adding += using move_intent = using - using = new /obj/screen() + using = new /obj/screen/drop() using.name = "drop" using.icon = ui_style using.icon_state = "act_drop" @@ -170,7 +170,7 @@ inv_box.alpha = ui_alpha src.adding += inv_box - mymob.throw_icon = new /obj/screen() + mymob.throw_icon = new /obj/screen/throw_catch() mymob.throw_icon.icon = ui_style mymob.throw_icon.icon_state = "act_throw_off" mymob.throw_icon.name = "throw" @@ -197,7 +197,7 @@ mymob.toxin.name = "toxin" mymob.toxin.screen_loc = ui_toxin - mymob.internals = new /obj/screen() + mymob.internals = new /obj/screen/internals() mymob.internals.icon = ui_style mymob.internals.icon_state = "internal0" mymob.internals.name = "internal" diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index bd782657ce9..bfde0049cbd 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -1,3 +1,83 @@ +/obj/screen/robot + icon = 'icons/mob/screen1_robot.dmi' + +/obj/screen/robot/module + name = "cyborg module" + icon_state = "nomod" + +/obj/screen/robot/module/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + if(R.module) + R.hud_used.toggle_show_robot_modules() + return 1 + R.pick_module() + +/obj/screen/robot/module1 + name = "module1" + icon_state = "inv1" + +/obj/screen/robot/module1/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.toggle_module(1) + +/obj/screen/robot/module2 + name = "module2" + icon_state = "inv2" + +/obj/screen/robot/module2/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.toggle_module(2) + +/obj/screen/robot/module3 + name = "module3" + icon_state = "inv3" + +/obj/screen/robot/module3/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.toggle_module(3) + + +/obj/screen/robot/radio + name = "radio" + icon_state = "radio" + +/obj/screen/robot/radio/Click() + if(issilicon(usr)) + var/mob/living/silicon/robot/R = usr + R.radio_menu() + +/obj/screen/robot/store + name = "store" + icon_state = "store" + +/obj/screen/robot/store/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.uneq_active() + R.hud_used.update_robot_modules_display() + +/obj/screen/robot/lamp + name = "headlamp" + icon_state = "lamp0" + +/obj/screen/robot/lamp/Click() + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.control_headlamp() + +/obj/screen/robot/panel + name = "installed modules" + icon_state = "panel" + +/obj/screen/robot/panel/Click() + if(issilicon(usr)) + var/mob/living/silicon/robot/R = usr + R.installed_modules() + /datum/hud/proc/robot_hud() src.adding = list() @@ -7,7 +87,7 @@ //Radio - using = new /obj/screen() + using = new /obj/screen/robot/radio() using.name = "radio" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_robot.dmi' @@ -18,7 +98,7 @@ //Module select - using = new /obj/screen() + using = new /obj/screen/robot/module1() using.name = "module1" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_robot.dmi' @@ -28,7 +108,7 @@ src.adding += using mymob:inv1 = using - using = new /obj/screen() + using = new /obj/screen/robot/module2() using.name = "module2" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_robot.dmi' @@ -38,7 +118,7 @@ src.adding += using mymob:inv2 = using - using = new /obj/screen() + using = new /obj/screen/robot/module3() using.name = "module3" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_robot.dmi' @@ -51,7 +131,7 @@ //End of module select //Sec/Med HUDs - using = new /obj/screen() + using = new /obj/screen/ai/sensors() using.name = "Toggle Sensor Augmentation" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "ai_sensor" @@ -60,7 +140,7 @@ adding += using //Intent - using = new /obj/screen() + using = new /obj/screen/act_intent() using.name = "act_intent" using.dir = SOUTHWEST using.icon = 'icons/mob/screen1_robot.dmi' @@ -85,7 +165,7 @@ mymob.healths.screen_loc = ui_borg_health //Installed Module - mymob.hands = new /obj/screen() + mymob.hands = new /obj/screen/robot/module() mymob.hands.icon = 'icons/mob/screen1_robot.dmi' mymob.hands.icon_state = "nomod" mymob.hands.name = "module" @@ -93,14 +173,14 @@ //Store - mymob.throw_icon = new /obj/screen() + mymob.throw_icon = new /obj/screen/robot/store() mymob.throw_icon.icon = 'icons/mob/screen1_robot.dmi' mymob.throw_icon.icon_state = "store" mymob.throw_icon.name = "store" mymob.throw_icon.screen_loc = ui_borg_store //Headlamp - mymob:lamp_button = new /obj/screen() + mymob:lamp_button = new /obj/screen/robot/lamp() mymob:lamp_button.icon = 'icons/mob/screen1_robot.dmi' mymob:lamp_button.icon_state = "lamp0" mymob:lamp_button.name = "Toggle Headlamp" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index cf0f56cdad9..0041e1d4bbc 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -41,6 +41,15 @@ S.close(usr) return 1 +/obj/screen/drop + name = "drop" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_drop" + layer = 19 + +/obj/screen/drop/Click() + usr.drop_item_v() + /obj/screen/grab name = "grab" @@ -54,7 +63,198 @@ /obj/screen/grab/attackby() return +/obj/screen/act_intent + name = "intent" + icon_state = "help" +/obj/screen/act_intent/Click(location, control, params) + usr.a_intent_change("right") + if("help") + usr.a_intent = I_HELP + usr.hud_used.action_intent.icon_state = "intent_help" + if("harm") + usr.a_intent = I_HARM + usr.hud_used.action_intent.icon_state = "intent_harm" + if("grab") + usr.a_intent = I_GRAB + usr.hud_used.action_intent.icon_state = "intent_grab" + if("disarm") + usr.a_intent = I_DISARM + usr.hud_used.action_intent.icon_state = "intent_disarm" + +/obj/screen/internals + name = "toggle internals" + icon_state = "internal0" + +/obj/screen/internals/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) + if(C.internal) + C.internal = null + C << "No longer running on internals." + if(C.internals) + C.internals.icon_state = "internal0" + else + + var/no_mask + if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!(H.head && H.head.flags & AIRTIGHT)) + no_mask = 1 + + if(no_mask) + C << "You are not wearing a suitable mask or helmet." + return 1 + else + var/list/nicename = null + var/list/tankcheck = null + var/breathes = "oxygen" //default, we'll check later + var/list/contents = list() + var/from = "on" + + if(ishuman(C)) + var/mob/living/carbon/human/H = C + breathes = H.species.breath_type + nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") + tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) + else + nicename = list("right hand", "left hand", "back") + tankcheck = list(C.r_hand, C.l_hand, C.back) + + // Rigs are a fucking pain since they keep an air tank in nullspace. + if(istype(C.back,/obj/item/weapon/rig)) + var/obj/item/weapon/rig/rig = C.back + if(rig.air_supply) + from = "in" + nicename |= "hardsuit" + tankcheck |= rig.air_supply + + for(var/i=1, i bestcontents) + best = i + bestcontents = contents[i] + + + //We've determined the best container now we set it as our internals + + if(best) + C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." + C.internal = tankcheck[best] + + + if(C.internal) + if(C.internals) + C.internals.icon_state = "internal1" + else + C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." + + +/obj/screen/mov_intent + name = "run/walk toggle" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "running" + +/obj/screen/mov_intent/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(C.legcuffed) + C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" + C.m_intent = "walk" //Just incase + C.hud_used.move_intent.icon_state = "walking" + return 1 + switch(usr.m_intent) + if("run") + usr.m_intent = "walk" + usr.hud_used.move_intent.icon_state = "walking" + if("walk") + usr.m_intent = "run" + usr.hud_used.move_intent.icon_state = "running" + if(istype(usr,/mob/living/carbon/alien/humanoid)) + usr.update_icons() + +/obj/screen/pull + name = "stop pulling" + icon = 'icons/mob/screen1_Midnight.dmi' + icon_state = "pull" + +/obj/screen/pull/Click() + usr.stop_pulling() + +/obj/screen/pull/update_icon(mob/mymob) + if(!mymob) return + if(mymob.pulling) + icon_state = "pull" + else + icon_state = "pull0" + +/obj/screen/resist + name = "resist" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_resist" + layer = 19 + +/obj/screen/resist/Click() + if(isliving(usr)) + var/mob/living/L = usr + L.resist() + +/obj/screen/throw_catch + name = "throw/catch" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_throw_off" + +/obj/screen/throw_catch/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.toggle_throw_mode() /obj/screen/storage name = "storage" @@ -72,33 +272,6 @@ master.attackby(I, usr, params) return 1 -/obj/screen/gun - name = "gun" - icon = 'icons/mob/screen1.dmi' - master = null - dir = 2 - - /*move - name = "Allow Walking" - icon_state = "no_walk0" - screen_loc = ui_gun2 - - run - name = "Allow Running" - icon_state = "no_run0" - screen_loc = ui_gun3*/ - - item - name = "Allow Item Use" - icon_state = "no_item0" - screen_loc = ui_gun1 - - mode - name = "Toggle Gun Mode" - icon_state = "gun0" - screen_loc = ui_gun_select - //dir = 1 - /obj/screen/zone_sel name = "damage zone" icon_state = "zone_sel" @@ -170,407 +343,33 @@ overlays.Cut() overlays += image('icons/mob/zone_sel.dmi', "[selecting]") -/obj/screen/pull - name = "stop pulling" - icon = 'icons/mob/screen1_Midnight.dmi' - icon_state = "pull" +/obj/screen/gun + name = "gun" + icon = 'icons/mob/screen1.dmi' + master = null + dir = 2 -/obj/screen/pull/Click() - usr.stop_pulling() + /*move + name = "Allow Walking" + icon_state = "no_walk0" + screen_loc = ui_gun2 -/obj/screen/pull/update_icon(mob/mymob) - if(!mymob) return - if(mymob.pulling) - icon_state = "pull" - else - icon_state = "pull0" + run + name = "Allow Running" + icon_state = "no_run0" + screen_loc = ui_gun3*/ + item + name = "Allow Item Use" + icon_state = "no_item0" + screen_loc = ui_gun1 -/obj/screen/Click(location, control, params) - if(!usr) return 1 + mode + name = "Toggle Gun Mode" + icon_state = "gun0" + screen_loc = ui_gun_select + //dir = 1 - switch(name) - if("toggle") - if(usr.hud_used.inventory_shown) - usr.hud_used.inventory_shown = 0 - usr.client.screen -= usr.hud_used.other - else - usr.hud_used.inventory_shown = 1 - usr.client.screen += usr.hud_used.other - - usr.hud_used.hidden_inventory_update() - - if("equip") - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return 1 - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - H.quick_equip() - - if("resist") - if(isliving(usr)) - var/mob/living/L = usr - L.resist() - - if("mov_intent") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(C.legcuffed) - C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" - C.m_intent = "walk" //Just incase - C.hud_used.move_intent.icon_state = "walking" - return 1 - switch(usr.m_intent) - if("run") - usr.m_intent = "walk" - usr.hud_used.move_intent.icon_state = "walking" - if("walk") - usr.m_intent = "run" - usr.hud_used.move_intent.icon_state = "running" - if(istype(usr,/mob/living/carbon/alien/humanoid)) - usr.update_icons() - if("m_intent") - if(!usr.m_int) - switch(usr.m_intent) - if("run") - usr.m_int = "13,14" - if("walk") - usr.m_int = "14,14" - if("face") - usr.m_int = "15,14" - else - usr.m_int = null - if("walk") - usr.m_intent = "walk" - usr.m_int = "14,14" - if("face") - usr.m_intent = "face" - usr.m_int = "15,14" - if("run") - usr.m_intent = "run" - usr.m_int = "13,14" - if("Reset Machine") - usr.unset_machine() - if("internal") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) - if(C.internal) - C.internal = null - C << "No longer running on internals." - if(C.internals) - C.internals.icon_state = "internal0" - else - - var/no_mask - if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(!(H.head && H.head.flags & AIRTIGHT)) - no_mask = 1 - - if(no_mask) - C << "You are not wearing a suitable mask or helmet." - return 1 - else - var/list/nicename = null - var/list/tankcheck = null - var/breathes = "oxygen" //default, we'll check later - var/list/contents = list() - var/from = "on" - - if(ishuman(C)) - var/mob/living/carbon/human/H = C - breathes = H.species.breath_type - nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") - tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) - else - nicename = list("right hand", "left hand", "back") - tankcheck = list(C.r_hand, C.l_hand, C.back) - - // Rigs are a fucking pain since they keep an air tank in nullspace. - if(istype(C.back,/obj/item/weapon/rig)) - var/obj/item/weapon/rig/rig = C.back - if(rig.air_supply) - from = "in" - nicename |= "hardsuit" - tankcheck |= rig.air_supply - - for(var/i=1, i bestcontents) - best = i - bestcontents = contents[i] - - - //We've determined the best container now we set it as our internals - - if(best) - C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." - C.internal = tankcheck[best] - - - if(C.internal) - if(C.internals) - C.internals.icon_state = "internal1" - else - C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." - if("act_intent") - usr.a_intent_change("right") - if("help") - usr.a_intent = I_HELP - usr.hud_used.action_intent.icon_state = "intent_help" - if("harm") - usr.a_intent = I_HARM - usr.hud_used.action_intent.icon_state = "intent_harm" - if("grab") - usr.a_intent = I_GRAB - usr.hud_used.action_intent.icon_state = "intent_grab" - if("disarm") - usr.a_intent = I_DISARM - usr.hud_used.action_intent.icon_state = "intent_disarm" - if("throw") - if(!usr.stat && isturf(usr.loc) && !usr.restrained()) - usr:toggle_throw_mode() - if("drop") - usr.drop_item_v() - - if("module") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - if(R.module) - R.hud_used.toggle_show_robot_modules() - return 1 - R.pick_module() - - if("radio") - if(issilicon(usr)) - usr:radio_menu() - if("panel") - if(issilicon(usr)) - usr:installed_modules() - - if("store") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.uneq_active() - R.hud_used.update_robot_modules_display() - - if("Toggle Sensor Augmentation") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.sensor_mode() - - if("Toggle Headlamp") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.control_headlamp() - - if("module1") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(1) - - if("module2") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(2) - - if("module3") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(3) - - /*if("Allow Walking") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetMove() - gun_click_time = world.time - - if("Disallow Walking") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetMove() - gun_click_time = world.time - - if("Allow Running") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetRun() - gun_click_time = world.time - - if("Disallow Running") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetRun() - gun_click_time = world.time*/ - - if("Allow Item Use") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time - - - if("Disallow Item Use") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time - - if("Toggle Gun Mode") - usr.client.ToggleGunMode() - - if("AI Core") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.view_core() - - if("Show Camera List") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - var/camera = input(AI) in AI.get_camera_list() - AI.ai_camera_list(camera) - - if("Track With Camera") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - var/target_name = input(AI) in AI.trackable_mobs() - AI.ai_camera_track(target_name) - - if("Toggle Camera Light") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.toggle_camera_light() - - if("Crew Monitoring") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_crew_monitor() - - if("Show Crew Manifest") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.ai_roster() - - if("Show Alerts") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_alarm_monitor() - - if("Announcement") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.announcement() - - if("Call Emergency Shuttle") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.ai_call_shuttle() - - if("Law Manager") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_law_manager() - - if("PDA - Send Message") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.cmd_send_pdamesg(usr) - - if("PDA - Show Message Log") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.cmd_show_message_log(usr) - - if("Take Image") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.aiCamera.toggle_camera_mode() - - if("View Images") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.aiCamera.viewpictures() - - if("Set Sensor Augmentation") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.sensor_mode() - - // Alien - if("night vision") - var/mob/living/carbon/alien/humanoid/A = usr - A.nightvisiontoggle() - - if("toggle leap") - if(istype(usr, /mob/living/carbon/alien/humanoid)) - var/mob/living/carbon/alien/humanoid/hunter/AH = usr - AH.toggle_leap() - - else - return 0 - return 1 /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else From a451932e74c1efdcb8e2c049e78ab00cc835b2ce Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Mon, 30 Nov 2015 00:17:38 -0500 Subject: [PATCH 05/44] Fized intents, gun toggle is odd... --- code/_onclick/hud/human.dm | 3 +- code/_onclick/hud/monkey.dm | 4 +- code/_onclick/hud/screen_objects.dm | 61 ++++++++++++++++------------- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 6e6f1d0e651..aa9da33ca78 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -47,7 +47,7 @@ action_intent = using //intent small hud objects - var/icon/ico +/* var/icon/ico ico = new(ui_style, "black") ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) @@ -96,6 +96,7 @@ using.layer = 21 src.adding += using hurt_intent = using +*/ //end intent small hud objects diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 09a2dce5b4f..85f91e53e30 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -20,7 +20,7 @@ action_intent = using //intent small hud objects - var/icon/ico +/* var/icon/ico ico = new(ui_style, "black") ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) @@ -69,7 +69,7 @@ using.layer = 21 src.adding += using hurt_intent = using - +*/ //end intent small hud objects using = new /obj/screen/mov_intent() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 0041e1d4bbc..d06ae59ab87 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -68,19 +68,22 @@ icon_state = "help" /obj/screen/act_intent/Click(location, control, params) - usr.a_intent_change("right") - if("help") - usr.a_intent = I_HELP - usr.hud_used.action_intent.icon_state = "intent_help" - if("harm") - usr.a_intent = I_HARM - usr.hud_used.action_intent.icon_state = "intent_harm" - if("grab") - usr.a_intent = I_GRAB - usr.hud_used.action_intent.icon_state = "intent_grab" - if("disarm") - usr.a_intent = I_DISARM - usr.hud_used.action_intent.icon_state = "intent_disarm" + if(ishuman(usr)) + var/_x = text2num(params2list(params)["icon-x"]) + var/_y = text2num(params2list(params)["icon-y"]) + + if(_x<=16 && _y<=16) + usr.a_intent_change(I_HARM) + else if(_x<=16 && _y>=17) + usr.a_intent_change(I_HELP) + else if(_x>=17 && _y<=16) + usr.a_intent_change(I_GRAB) + + else if(_x>=17 && _y>=17) + usr.a_intent_change(I_DISARM) + + else + usr.a_intent_change("right") /obj/screen/internals name = "toggle internals" @@ -196,7 +199,6 @@ else C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." - /obj/screen/mov_intent name = "run/walk toggle" icon = 'icons/mob/screen1_midnight.dmi' @@ -220,6 +222,8 @@ if(istype(usr,/mob/living/carbon/alien/humanoid)) usr.update_icons() + + /obj/screen/pull name = "stop pulling" icon = 'icons/mob/screen1_Midnight.dmi' @@ -349,26 +353,27 @@ master = null dir = 2 - /*move - name = "Allow Walking" - icon_state = "no_walk0" - screen_loc = ui_gun2 +/obj/screen/gun/mode + name = "Toggle Gun Mode" + icon_state = "gun0" + screen_loc = ui_gun_select - run - name = "Allow Running" - icon_state = "no_run0" - screen_loc = ui_gun3*/ +/obj/screen/gun/mode/Click() + usr.client.ToggleGunMode() - item +/obj/screen/gun/item name = "Allow Item Use" icon_state = "no_item0" screen_loc = ui_gun1 - mode - name = "Toggle Gun Mode" - icon_state = "gun0" - screen_loc = ui_gun_select - //dir = 1 +/obj/screen/gun/item/Click() + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetClick() + gun_click_time = world.time /obj/screen/inventory/Click() From 0e485cd893f9afe6c3b20e913a6f85abbe0b19ce Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Wed, 2 Dec 2015 00:21:20 -0500 Subject: [PATCH 06/44] conflicts --- code/_onclick/hud/screen_objects.dm | 651 ++++++++++++++++++---------- 1 file changed, 424 insertions(+), 227 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index d06ae59ab87..27fdd64cd75 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -41,15 +41,6 @@ S.close(usr) return 1 -/obj/screen/drop - name = "drop" - icon = 'icons/mob/screen1_midnight.dmi' - icon_state = "act_drop" - layer = 19 - -/obj/screen/drop/Click() - usr.drop_item_v() - /obj/screen/grab name = "grab" @@ -63,202 +54,7 @@ /obj/screen/grab/attackby() return -/obj/screen/act_intent - name = "intent" - icon_state = "help" -/obj/screen/act_intent/Click(location, control, params) - if(ishuman(usr)) - var/_x = text2num(params2list(params)["icon-x"]) - var/_y = text2num(params2list(params)["icon-y"]) - - if(_x<=16 && _y<=16) - usr.a_intent_change(I_HARM) - else if(_x<=16 && _y>=17) - usr.a_intent_change(I_HELP) - else if(_x>=17 && _y<=16) - usr.a_intent_change(I_GRAB) - - else if(_x>=17 && _y>=17) - usr.a_intent_change(I_DISARM) - - else - usr.a_intent_change("right") - -/obj/screen/internals - name = "toggle internals" - icon_state = "internal0" - -/obj/screen/internals/Click() - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) - if(C.internal) - C.internal = null - C << "No longer running on internals." - if(C.internals) - C.internals.icon_state = "internal0" - else - - var/no_mask - if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(!(H.head && H.head.flags & AIRTIGHT)) - no_mask = 1 - - if(no_mask) - C << "You are not wearing a suitable mask or helmet." - return 1 - else - var/list/nicename = null - var/list/tankcheck = null - var/breathes = "oxygen" //default, we'll check later - var/list/contents = list() - var/from = "on" - - if(ishuman(C)) - var/mob/living/carbon/human/H = C - breathes = H.species.breath_type - nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") - tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) - else - nicename = list("right hand", "left hand", "back") - tankcheck = list(C.r_hand, C.l_hand, C.back) - - // Rigs are a fucking pain since they keep an air tank in nullspace. - if(istype(C.back,/obj/item/weapon/rig)) - var/obj/item/weapon/rig/rig = C.back - if(rig.air_supply) - from = "in" - nicename |= "hardsuit" - tankcheck |= rig.air_supply - - for(var/i=1, i bestcontents) - best = i - bestcontents = contents[i] - - - //We've determined the best container now we set it as our internals - - if(best) - C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." - C.internal = tankcheck[best] - - - if(C.internal) - if(C.internals) - C.internals.icon_state = "internal1" - else - C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." - -/obj/screen/mov_intent - name = "run/walk toggle" - icon = 'icons/mob/screen1_midnight.dmi' - icon_state = "running" - -/obj/screen/mov_intent/Click() - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(C.legcuffed) - C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" - C.m_intent = "walk" //Just incase - C.hud_used.move_intent.icon_state = "walking" - return 1 - switch(usr.m_intent) - if("run") - usr.m_intent = "walk" - usr.hud_used.move_intent.icon_state = "walking" - if("walk") - usr.m_intent = "run" - usr.hud_used.move_intent.icon_state = "running" - if(istype(usr,/mob/living/carbon/alien/humanoid)) - usr.update_icons() - - - -/obj/screen/pull - name = "stop pulling" - icon = 'icons/mob/screen1_Midnight.dmi' - icon_state = "pull" - -/obj/screen/pull/Click() - usr.stop_pulling() - -/obj/screen/pull/update_icon(mob/mymob) - if(!mymob) return - if(mymob.pulling) - icon_state = "pull" - else - icon_state = "pull0" - -/obj/screen/resist - name = "resist" - icon = 'icons/mob/screen1_midnight.dmi' - icon_state = "act_resist" - layer = 19 - -/obj/screen/resist/Click() - if(isliving(usr)) - var/mob/living/L = usr - L.resist() - -/obj/screen/throw_catch - name = "throw/catch" - icon = 'icons/mob/screen1_midnight.dmi' - icon_state = "act_throw_off" - -/obj/screen/throw_catch/Click() - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - C.toggle_throw_mode() /obj/screen/storage name = "storage" @@ -276,6 +72,33 @@ master.attackby(I, usr, params) return 1 +/obj/screen/gun + name = "gun" + icon = 'icons/mob/screen1.dmi' + master = null + dir = 2 + + /*move + name = "Allow Walking" + icon_state = "no_walk0" + screen_loc = ui_gun2 + + run + name = "Allow Running" + icon_state = "no_run0" + screen_loc = ui_gun3*/ + + item + name = "Allow Item Use" + icon_state = "no_item0" + screen_loc = ui_gun1 + + mode + name = "Toggle Gun Mode" + icon_state = "gun0" + screen_loc = ui_gun_select + //dir = 1 + /obj/screen/zone_sel name = "damage zone" icon_state = "zone_sel" @@ -347,34 +170,408 @@ overlays.Cut() overlays += image('icons/mob/zone_sel.dmi', "[selecting]") -/obj/screen/gun - name = "gun" - icon = 'icons/mob/screen1.dmi' - master = null - dir = 2 +/obj/screen/pull + name = "stop pulling" + icon = 'icons/mob/screen1_Midnight.dmi' + icon_state = "pull" -/obj/screen/gun/mode - name = "Toggle Gun Mode" - icon_state = "gun0" - screen_loc = ui_gun_select +/obj/screen/pull/Click() + usr.stop_pulling() -/obj/screen/gun/mode/Click() - usr.client.ToggleGunMode() +/obj/screen/pull/update_icon(mob/mymob) + if(!mymob) return + if(mymob.pulling) + icon_state = "pull" + else + icon_state = "pull0" -/obj/screen/gun/item - name = "Allow Item Use" - icon_state = "no_item0" - screen_loc = ui_gun1 -/obj/screen/gun/item/Click() - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time +/obj/screen/Click(location, control, params) + if(!usr) return 1 + switch(name) + if("toggle") + if(usr.hud_used.inventory_shown) + usr.hud_used.inventory_shown = 0 + usr.client.screen -= usr.hud_used.other + else + usr.hud_used.inventory_shown = 1 + usr.client.screen += usr.hud_used.other + + usr.hud_used.hidden_inventory_update() + + if("equip") + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return 1 + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + H.quick_equip() + + if("resist") + if(isliving(usr)) + var/mob/living/L = usr + L.resist() + + if("mov_intent") + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(C.legcuffed) + C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" + C.m_intent = "walk" //Just incase + C.hud_used.move_intent.icon_state = "walking" + return 1 + switch(usr.m_intent) + if("run") + usr.m_intent = "walk" + usr.hud_used.move_intent.icon_state = "walking" + if("walk") + usr.m_intent = "run" + usr.hud_used.move_intent.icon_state = "running" + if(istype(usr,/mob/living/carbon/alien/humanoid)) + usr.update_icons() + if("m_intent") + if(!usr.m_int) + switch(usr.m_intent) + if("run") + usr.m_int = "13,14" + if("walk") + usr.m_int = "14,14" + if("face") + usr.m_int = "15,14" + else + usr.m_int = null + if("walk") + usr.m_intent = "walk" + usr.m_int = "14,14" + if("face") + usr.m_intent = "face" + usr.m_int = "15,14" + if("run") + usr.m_intent = "run" + usr.m_int = "13,14" + if("Reset Machine") + usr.unset_machine() + if("internal") + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) + if(C.internal) + C.internal = null + C << "No longer running on internals." + if(C.internals) + C.internals.icon_state = "internal0" + else + + var/no_mask + if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!(H.head && H.head.flags & AIRTIGHT)) + no_mask = 1 + + if(no_mask) + C << "You are not wearing a suitable mask or helmet." + return 1 + else + var/list/nicename = null + var/list/tankcheck = null + var/breathes = "oxygen" //default, we'll check later + var/list/contents = list() + var/from = "on" + + if(ishuman(C)) + var/mob/living/carbon/human/H = C + breathes = H.species.breath_type + nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") + tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) + else + nicename = list("right hand", "left hand", "back") + tankcheck = list(C.r_hand, C.l_hand, C.back) + + // Rigs are a fucking pain since they keep an air tank in nullspace. + if(istype(C.back,/obj/item/weapon/rig)) + var/obj/item/weapon/rig/rig = C.back + if(rig.air_supply) + from = "in" + nicename |= "hardsuit" + tankcheck |= rig.air_supply + + for(var/i=1, i bestcontents) + best = i + bestcontents = contents[i] + + + //We've determined the best container now we set it as our internals + + if(best) + C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." + C.internal = tankcheck[best] + + + if(C.internal) + if(C.internals) + C.internals.icon_state = "internal1" + else + C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." + if("act_intent") + usr.a_intent_change("right") + if("help") + usr.a_intent = I_HELP + usr.hud_used.action_intent.icon_state = "intent_help" + if("harm") + usr.a_intent = I_HARM + usr.hud_used.action_intent.icon_state = "intent_harm" + if("grab") + usr.a_intent = I_GRAB + usr.hud_used.action_intent.icon_state = "intent_grab" + if("disarm") + usr.a_intent = I_DISARM + usr.hud_used.action_intent.icon_state = "intent_disarm" + if("throw") + if(!usr.stat && isturf(usr.loc) && !usr.restrained()) + usr:toggle_throw_mode() + if("drop") + usr.drop_item_v() + + if("module") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + if(R.module) + R.hud_used.toggle_show_robot_modules() + return 1 + R.pick_module() + + if("radio") + if(issilicon(usr)) + usr:radio_menu() + if("panel") + if(issilicon(usr)) + usr:installed_modules() + + if("store") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.uneq_active() + R.hud_used.update_robot_modules_display() + + if("Toggle Sensor Augmentation") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.sensor_mode() + + if("Toggle Headlamp") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.control_headlamp() + + if("module1") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(1) + + if("module2") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(2) + + if("module3") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(3) + + /*if("Allow Walking") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.equipped(),/obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetMove() + gun_click_time = world.time + + if("Disallow Walking") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.equipped(),/obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetMove() + gun_click_time = world.time + + if("Allow Running") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.equipped(),/obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetRun() + gun_click_time = world.time + + if("Disallow Running") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.equipped(),/obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetRun() + gun_click_time = world.time*/ + + if("Allow Item Use") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetClick() + gun_click_time = world.time + + + if("Disallow Item Use") + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetClick() + gun_click_time = world.time + + if("Toggle Gun Mode") + usr.client.ToggleGunMode() + + if("AI Core") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.view_core() + + if("Show Camera List") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/camera = input(AI) in AI.get_camera_list() + AI.ai_camera_list(camera) + + if("Track With Camera") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/target_name = input(AI) as null|anything in AI.trackable_mobs() + if(target_name) + AI.ai_camera_track(target_name) + + if("Toggle Camera Light") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.toggle_camera_light() + + if("Crew Monitoring") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_crew_monitor() + + if("Show Crew Manifest") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_roster() + + if("Show Alerts") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_alarm_monitor() + + if("Announcement") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.announcement() + + if("Call Emergency Shuttle") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_call_shuttle() + + if("Law Manager") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_law_manager() + + if("PDA - Send Message") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.cmd_send_pdamesg(usr) + + if("PDA - Show Message Log") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.cmd_show_message_log(usr) + + if("Take Image") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.toggle_camera_mode() + + if("View Images") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.viewpictures() + + if("Set Sensor Augmentation") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.sensor_mode() + + // Alien + if("night vision") + var/mob/living/carbon/alien/humanoid/A = usr + A.nightvisiontoggle() + + if("toggle leap") + if(istype(usr, /mob/living/carbon/alien/humanoid)) + var/mob/living/carbon/alien/humanoid/hunter/AH = usr + AH.toggle_leap() + + else + return 0 + return 1 /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else From 42f912e2386c7b18a8523ffdc00bfe0ba4f89ce7 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Wed, 2 Dec 2015 00:54:10 -0500 Subject: [PATCH 07/44] Conflict fixes --- code/_onclick/hud/ai.dm | 5 +- code/_onclick/hud/screen_objects.dm | 651 ++++++++++------------------ 2 files changed, 230 insertions(+), 426 deletions(-) diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index aaf80865f4c..aac2893b049 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -27,8 +27,9 @@ /obj/screen/ai/camera_track/Click() if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - var/target_name = input(AI) in AI.trackable_mobs() - AI.ai_camera_track(target_name) + var/target_name = input(AI) as null|anything in AI.trackable_mobs() + if(target_name) + AI.ai_camera_track(target_name) /obj/screen/ai/camera_light name = "Toggle Camera Light" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 27fdd64cd75..d06ae59ab87 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -41,6 +41,15 @@ S.close(usr) return 1 +/obj/screen/drop + name = "drop" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_drop" + layer = 19 + +/obj/screen/drop/Click() + usr.drop_item_v() + /obj/screen/grab name = "grab" @@ -54,7 +63,202 @@ /obj/screen/grab/attackby() return +/obj/screen/act_intent + name = "intent" + icon_state = "help" +/obj/screen/act_intent/Click(location, control, params) + if(ishuman(usr)) + var/_x = text2num(params2list(params)["icon-x"]) + var/_y = text2num(params2list(params)["icon-y"]) + + if(_x<=16 && _y<=16) + usr.a_intent_change(I_HARM) + else if(_x<=16 && _y>=17) + usr.a_intent_change(I_HELP) + else if(_x>=17 && _y<=16) + usr.a_intent_change(I_GRAB) + + else if(_x>=17 && _y>=17) + usr.a_intent_change(I_DISARM) + + else + usr.a_intent_change("right") + +/obj/screen/internals + name = "toggle internals" + icon_state = "internal0" + +/obj/screen/internals/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) + if(C.internal) + C.internal = null + C << "No longer running on internals." + if(C.internals) + C.internals.icon_state = "internal0" + else + + var/no_mask + if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!(H.head && H.head.flags & AIRTIGHT)) + no_mask = 1 + + if(no_mask) + C << "You are not wearing a suitable mask or helmet." + return 1 + else + var/list/nicename = null + var/list/tankcheck = null + var/breathes = "oxygen" //default, we'll check later + var/list/contents = list() + var/from = "on" + + if(ishuman(C)) + var/mob/living/carbon/human/H = C + breathes = H.species.breath_type + nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") + tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) + else + nicename = list("right hand", "left hand", "back") + tankcheck = list(C.r_hand, C.l_hand, C.back) + + // Rigs are a fucking pain since they keep an air tank in nullspace. + if(istype(C.back,/obj/item/weapon/rig)) + var/obj/item/weapon/rig/rig = C.back + if(rig.air_supply) + from = "in" + nicename |= "hardsuit" + tankcheck |= rig.air_supply + + for(var/i=1, i bestcontents) + best = i + bestcontents = contents[i] + + + //We've determined the best container now we set it as our internals + + if(best) + C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." + C.internal = tankcheck[best] + + + if(C.internal) + if(C.internals) + C.internals.icon_state = "internal1" + else + C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." + +/obj/screen/mov_intent + name = "run/walk toggle" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "running" + +/obj/screen/mov_intent/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(C.legcuffed) + C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" + C.m_intent = "walk" //Just incase + C.hud_used.move_intent.icon_state = "walking" + return 1 + switch(usr.m_intent) + if("run") + usr.m_intent = "walk" + usr.hud_used.move_intent.icon_state = "walking" + if("walk") + usr.m_intent = "run" + usr.hud_used.move_intent.icon_state = "running" + if(istype(usr,/mob/living/carbon/alien/humanoid)) + usr.update_icons() + + + +/obj/screen/pull + name = "stop pulling" + icon = 'icons/mob/screen1_Midnight.dmi' + icon_state = "pull" + +/obj/screen/pull/Click() + usr.stop_pulling() + +/obj/screen/pull/update_icon(mob/mymob) + if(!mymob) return + if(mymob.pulling) + icon_state = "pull" + else + icon_state = "pull0" + +/obj/screen/resist + name = "resist" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_resist" + layer = 19 + +/obj/screen/resist/Click() + if(isliving(usr)) + var/mob/living/L = usr + L.resist() + +/obj/screen/throw_catch + name = "throw/catch" + icon = 'icons/mob/screen1_midnight.dmi' + icon_state = "act_throw_off" + +/obj/screen/throw_catch/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.toggle_throw_mode() /obj/screen/storage name = "storage" @@ -72,33 +276,6 @@ master.attackby(I, usr, params) return 1 -/obj/screen/gun - name = "gun" - icon = 'icons/mob/screen1.dmi' - master = null - dir = 2 - - /*move - name = "Allow Walking" - icon_state = "no_walk0" - screen_loc = ui_gun2 - - run - name = "Allow Running" - icon_state = "no_run0" - screen_loc = ui_gun3*/ - - item - name = "Allow Item Use" - icon_state = "no_item0" - screen_loc = ui_gun1 - - mode - name = "Toggle Gun Mode" - icon_state = "gun0" - screen_loc = ui_gun_select - //dir = 1 - /obj/screen/zone_sel name = "damage zone" icon_state = "zone_sel" @@ -170,408 +347,34 @@ overlays.Cut() overlays += image('icons/mob/zone_sel.dmi', "[selecting]") -/obj/screen/pull - name = "stop pulling" - icon = 'icons/mob/screen1_Midnight.dmi' - icon_state = "pull" +/obj/screen/gun + name = "gun" + icon = 'icons/mob/screen1.dmi' + master = null + dir = 2 -/obj/screen/pull/Click() - usr.stop_pulling() +/obj/screen/gun/mode + name = "Toggle Gun Mode" + icon_state = "gun0" + screen_loc = ui_gun_select -/obj/screen/pull/update_icon(mob/mymob) - if(!mymob) return - if(mymob.pulling) - icon_state = "pull" - else - icon_state = "pull0" +/obj/screen/gun/mode/Click() + usr.client.ToggleGunMode() +/obj/screen/gun/item + name = "Allow Item Use" + icon_state = "no_item0" + screen_loc = ui_gun1 -/obj/screen/Click(location, control, params) - if(!usr) return 1 +/obj/screen/gun/item/Click() + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. + return + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetClick() + gun_click_time = world.time - switch(name) - if("toggle") - if(usr.hud_used.inventory_shown) - usr.hud_used.inventory_shown = 0 - usr.client.screen -= usr.hud_used.other - else - usr.hud_used.inventory_shown = 1 - usr.client.screen += usr.hud_used.other - - usr.hud_used.hidden_inventory_update() - - if("equip") - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return 1 - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - H.quick_equip() - - if("resist") - if(isliving(usr)) - var/mob/living/L = usr - L.resist() - - if("mov_intent") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(C.legcuffed) - C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!" - C.m_intent = "walk" //Just incase - C.hud_used.move_intent.icon_state = "walking" - return 1 - switch(usr.m_intent) - if("run") - usr.m_intent = "walk" - usr.hud_used.move_intent.icon_state = "walking" - if("walk") - usr.m_intent = "run" - usr.hud_used.move_intent.icon_state = "running" - if(istype(usr,/mob/living/carbon/alien/humanoid)) - usr.update_icons() - if("m_intent") - if(!usr.m_int) - switch(usr.m_intent) - if("run") - usr.m_int = "13,14" - if("walk") - usr.m_int = "14,14" - if("face") - usr.m_int = "15,14" - else - usr.m_int = null - if("walk") - usr.m_intent = "walk" - usr.m_int = "14,14" - if("face") - usr.m_intent = "face" - usr.m_int = "15,14" - if("run") - usr.m_intent = "run" - usr.m_int = "13,14" - if("Reset Machine") - usr.unset_machine() - if("internal") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) - if(C.internal) - C.internal = null - C << "No longer running on internals." - if(C.internals) - C.internals.icon_state = "internal0" - else - - var/no_mask - if(!(C.wear_mask && C.wear_mask.flags & AIRTIGHT)) - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(!(H.head && H.head.flags & AIRTIGHT)) - no_mask = 1 - - if(no_mask) - C << "You are not wearing a suitable mask or helmet." - return 1 - else - var/list/nicename = null - var/list/tankcheck = null - var/breathes = "oxygen" //default, we'll check later - var/list/contents = list() - var/from = "on" - - if(ishuman(C)) - var/mob/living/carbon/human/H = C - breathes = H.species.breath_type - nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") - tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) - else - nicename = list("right hand", "left hand", "back") - tankcheck = list(C.r_hand, C.l_hand, C.back) - - // Rigs are a fucking pain since they keep an air tank in nullspace. - if(istype(C.back,/obj/item/weapon/rig)) - var/obj/item/weapon/rig/rig = C.back - if(rig.air_supply) - from = "in" - nicename |= "hardsuit" - tankcheck |= rig.air_supply - - for(var/i=1, i bestcontents) - best = i - bestcontents = contents[i] - - - //We've determined the best container now we set it as our internals - - if(best) - C << "You are now running on internals from [tankcheck[best]] [from] your [nicename[best]]." - C.internal = tankcheck[best] - - - if(C.internal) - if(C.internals) - C.internals.icon_state = "internal1" - else - C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." - if("act_intent") - usr.a_intent_change("right") - if("help") - usr.a_intent = I_HELP - usr.hud_used.action_intent.icon_state = "intent_help" - if("harm") - usr.a_intent = I_HARM - usr.hud_used.action_intent.icon_state = "intent_harm" - if("grab") - usr.a_intent = I_GRAB - usr.hud_used.action_intent.icon_state = "intent_grab" - if("disarm") - usr.a_intent = I_DISARM - usr.hud_used.action_intent.icon_state = "intent_disarm" - if("throw") - if(!usr.stat && isturf(usr.loc) && !usr.restrained()) - usr:toggle_throw_mode() - if("drop") - usr.drop_item_v() - - if("module") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - if(R.module) - R.hud_used.toggle_show_robot_modules() - return 1 - R.pick_module() - - if("radio") - if(issilicon(usr)) - usr:radio_menu() - if("panel") - if(issilicon(usr)) - usr:installed_modules() - - if("store") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.uneq_active() - R.hud_used.update_robot_modules_display() - - if("Toggle Sensor Augmentation") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.sensor_mode() - - if("Toggle Headlamp") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.control_headlamp() - - if("module1") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(1) - - if("module2") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(2) - - if("module3") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(3) - - /*if("Allow Walking") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetMove() - gun_click_time = world.time - - if("Disallow Walking") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetMove() - gun_click_time = world.time - - if("Allow Running") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetRun() - gun_click_time = world.time - - if("Disallow Running") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.equipped(),/obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetRun() - gun_click_time = world.time*/ - - if("Allow Item Use") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time - - - if("Disallow Item Use") - if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. - return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time - - if("Toggle Gun Mode") - usr.client.ToggleGunMode() - - if("AI Core") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.view_core() - - if("Show Camera List") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - var/camera = input(AI) in AI.get_camera_list() - AI.ai_camera_list(camera) - - if("Track With Camera") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - var/target_name = input(AI) as null|anything in AI.trackable_mobs() - if(target_name) - AI.ai_camera_track(target_name) - - if("Toggle Camera Light") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.toggle_camera_light() - - if("Crew Monitoring") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_crew_monitor() - - if("Show Crew Manifest") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.ai_roster() - - if("Show Alerts") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_alarm_monitor() - - if("Announcement") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.announcement() - - if("Call Emergency Shuttle") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.ai_call_shuttle() - - if("Law Manager") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_law_manager() - - if("PDA - Send Message") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.cmd_send_pdamesg(usr) - - if("PDA - Show Message Log") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.cmd_show_message_log(usr) - - if("Take Image") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.aiCamera.toggle_camera_mode() - - if("View Images") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.aiCamera.viewpictures() - - if("Set Sensor Augmentation") - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.sensor_mode() - - // Alien - if("night vision") - var/mob/living/carbon/alien/humanoid/A = usr - A.nightvisiontoggle() - - if("toggle leap") - if(istype(usr, /mob/living/carbon/alien/humanoid)) - var/mob/living/carbon/alien/humanoid/hunter/AH = usr - AH.toggle_leap() - - else - return 0 - return 1 /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else From cfdc4eb63f3574e74fae909633b4e0635ede1750 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 4 Dec 2015 00:33:56 -0800 Subject: [PATCH 08/44] Adds newlines to make smartfridge nicer-looking --- nano/templates/smartfridge.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nano/templates/smartfridge.tmpl b/nano/templates/smartfridge.tmpl index cc25d760ce0..f1acf955e84 100644 --- a/nano/templates/smartfridge.tmpl +++ b/nano/templates/smartfridge.tmpl @@ -15,7 +15,7 @@ {{for data.contents}}
{{:value.display_name}} ({{:value.quantity}} available) -
Vend: 
{{:helper.link('x1', 'circle-arrow-s', { "vend" : value.vend, "amount" : 1 }, null, 'statusValue')}} +
Vend: 
{{:helper.link('x1', 'circle-arrow-s', { "vend" : value.vend, "amount" : 1 }, null, 'statusValue')}} {{if value.quantity >= 5}} {{:helper.link('x5', 'circle-arrow-s', { "vend" : value.vend, "amount" : 5 }, null, 'statusValue')}} {{/if}} From 039f0b5442c95a5862cb7d2b70f50b1df6ca9e17 Mon Sep 17 00:00:00 2001 From: Crazylemon Date: Fri, 4 Dec 2015 17:29:28 -0800 Subject: [PATCH 09/44] Posibrains have their mind cleared, so that no badness happens No more cultist ghosts yelling about deconverting when borged --- code/modules/mob/living/carbon/brain/posibrain.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 1f584b97c35..3cd7e511369 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -72,9 +72,7 @@ /obj/item/device/mmi/posibrain/proc/transfer_personality(var/mob/candidate) src.searching = 0 - src.brainmob.mind = candidate.mind - //src.brainmob.key = candidate.key - src.brainmob.ckey = candidate.ckey + src.brainmob.key = candidate.key src.name = "positronic brain ([src.brainmob.name])" src.brainmob << "You are a positronic brain, brought into existence on [station_name()]." From 29eba99eeb39b7e0f0f58726dddfb46970ca909f Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 4 Dec 2015 22:34:25 -0500 Subject: [PATCH 10/44] FUCK YOU FUN CODE --- code/_onclick/hud/human.dm | 52 ----------------------------- code/_onclick/hud/robot.dm | 19 ++++++----- code/_onclick/hud/screen_objects.dm | 10 +++--- 3 files changed, 15 insertions(+), 66 deletions(-) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index aa9da33ca78..0c36b29db06 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -46,59 +46,7 @@ src.adding += using action_intent = using -//intent small hud objects -/* var/icon/ico - ico = new(ui_style, "black") - ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) - ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height()) - using = new /obj/screen( src ) - using.name = "help" - using.icon = ico - using.screen_loc = ui_acti - using.alpha = ui_alpha - using.layer = 21 - src.adding += using - help_intent = using - - ico = new(ui_style, "black") - ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) - ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height()) - using = new /obj/screen( src ) - using.name = "disarm" - using.icon = ico - using.screen_loc = ui_acti - using.alpha = ui_alpha - using.layer = 21 - src.adding += using - disarm_intent = using - - ico = new(ui_style, "black") - ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) - ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2) - using = new /obj/screen( src ) - using.name = "grab" - using.icon = ico - using.screen_loc = ui_acti - using.alpha = ui_alpha - using.layer = 21 - src.adding += using - grab_intent = using - - ico = new(ui_style, "black") - ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) - ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2) - using = new /obj/screen( src ) - using.name = "harm" - using.icon = ico - using.screen_loc = ui_acti - using.alpha = ui_alpha - using.layer = 21 - src.adding += using - hurt_intent = using -*/ - -//end intent small hud objects using = new /obj/screen/mov_intent() using.name = "mov_intent" diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index bfde0049cbd..78ee883960c 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -232,15 +232,16 @@ //Handle the gun settings buttons mymob.gun_setting_icon = new /obj/screen/gun/mode(null) - if (mymob.client) - if (mymob.client.gun_mode) // If in aim mode, correct the sprite - mymob.gun_setting_icon.dir = 2 - for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons - if (G.target) - mymob.item_use_icon = new /obj/screen/gun/item(null) - if (mymob.client.target_can_click) - mymob.item_use_icon.dir = 1 - src.adding += mymob.item_use_icon + mymob.item_use_icon = new /obj/screen/gun/item(null) + //if (mymob.client) + // if (mymob.client.gun_mode) // If in aim mode, correct the sprite + // mymob.gun_setting_icon.dir = 2 + //for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons + // if (G.target) + // mymob.item_use_icon = new /obj/screen/gun/item(null) + // if (mymob.client.target_can_click) + // mymob.item_use_icon.dir = 1 + //src.adding += mymob.item_use_icon /*mymob.gun_move_icon = new /obj/screen/gun/move(null) if (mymob.client.target_can_move) mymob.gun_move_icon.dir = 1 diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index d06ae59ab87..68ed970a55d 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -369,11 +369,11 @@ /obj/screen/gun/item/Click() if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "You need your gun in your active hand to do that!" - return - usr.client.AllowTargetClick() - gun_click_time = world.time + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "You need your gun in your active hand to do that!" + return + usr.client.AllowTargetClick() + gun_click_time = world.time /obj/screen/inventory/Click() From 22d8c8bd93a560cf464c672633049e39c6b78c1b Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 5 Dec 2015 00:27:26 -0500 Subject: [PATCH 11/44] Raanged guardian click delay --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 5acf61d6813..f640f90fa93 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -456,6 +456,7 @@ projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' ranged = 1 range = 13 + ranged_cooldown_cap = 1 playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit." magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." From 9241442cc6cab80b187aed7396da27a85e2fd989 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 5 Dec 2015 01:35:59 -0800 Subject: [PATCH 12/44] Some fixes to robotics surgery Internal organ fixing surgery will now work correctly on robotic organs, using nanopaste in place of trauma kits Defibs also don't need the body to be past the point of deadness to work Kitchen utensils should now properly work as surgery tools where given in code IPC thralls can now be dethralled by performing the surgery on where their brain is, in this case their chest. This will also work for any species that has a brain anywhere else in their body. --- code/game/objects/items/weapons/defib.dm | 8 +-- code/game/objects/items/weapons/kitchen.dm | 3 + .../mob/living/carbon/human/human_organs.dm | 11 ++++ code/modules/organs/organ_external.dm | 6 ++ code/modules/surgery/organs_internal.dm | 22 ++++--- code/modules/surgery/robotics.dm | 59 +++++++++++-------- 6 files changed, 71 insertions(+), 38 deletions(-) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 0e16bfe18ae..0cef06f2fa2 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -366,8 +366,8 @@ for(var/obj/item/organ/external/O in H.organs) total_brute += O.brute_dam total_burn += O.burn_dam - if(H.health <= config.health_threshold_dead && total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) - tobehealed = health + threshold + if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) + tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived H.adjustOxyLoss(tobehealed) H.adjustToxLoss(tobehealed) @@ -475,8 +475,8 @@ for(var/obj/item/organ/external/O in H.organs) total_brute += O.brute_dam total_burn += O.burn_dam - if(H.health <= config.health_threshold_dead && total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) - tobehealed = health + threshold + if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) + tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived H.adjustOxyLoss(tobehealed) H.adjustToxLoss(tobehealed) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index ae796523aa9..64a5ad53948 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -63,6 +63,9 @@ overlays.Cut() return + if (can_operate(M)) + do_surgery(M, user, src) + /obj/item/weapon/kitchen/utensil/fork name = "fork" desc = "It's a fork. Sure is pointy." diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index c891c9e2cd2..28879225b39 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -150,3 +150,14 @@ var/list/all_bits = internal_organs|organs for(var/obj/item/organ/O in all_bits) O.set_dna(dna) + +/* +Given the name of an organ, returns the external organ it's contained in +I use this to standardize shadowling dethrall code +-- Crazylemon +*/ +/mob/living/carbon/human/proc/named_organ_parent(var/organ_name) + if (!(organ_name in internal_organs_by_name)) + return null + var/obj/item/organ/O = internal_organs_by_name[organ_name] + return O.parent_organ \ No newline at end of file diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index ca625443893..1c6ca1d176b 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -139,6 +139,9 @@ //robot limbs take reduced damage brute_mod = 0.66 burn_mod = 0.66 + // Robot parts also lack bones + // This is so surgery isn't kaput, let's see how this does + encased = null /**************************************************** DAMAGE PROCS @@ -820,6 +823,9 @@ Note that amputating the affected organ does in fact remove the infection from t H.drop_item() W.loc = owner +/obj/item/organ/external/proc/open_enough_for_surgery() + return (encased ? (open == 3) : (open == 2)) + /obj/item/organ/external/removed(var/mob/living/user, var/ignore_children) if(!owner) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 6b29f969743..96344a40a16 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -10,7 +10,7 @@ return 0 var/obj/item/organ/external/affected = target.get_organ(target_zone) - return affected && affected.open == (affected.encased ? 3 : 2) + return affected && affected.open_enough_for_surgery() ////////////////////////////////////////////////////////////////// // Dethrall Shadowling // @@ -29,25 +29,29 @@ if (!hasorgans(target)) return var/obj/item/organ/external/affected = target.get_organ(target_zone) - return ..() && affected && is_thrall(target) && affected.open == 3 && target_zone == "head" + return ..() && affected && is_thrall(target) && affected.open_enough_for_surgery() && target_zone == target.named_organ_parent("brain") begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] begins looking around in [target]'s head.", "You begin looking for foreign influences on [target]'s brain...") + var/braincase = target.named_organ_parent("brain") + user.visible_message("[user] begins looking around in [target]'s [braincase].", "You begin looking for foreign influences on [target]'s brain...") user << "You locate a small, pulsing black tumor on the side of [target]'s brain and begin to remove it." - target << "A small part of your head pulses with agony as the light impacts it." - user.visible_message("[user] begins removing something from [target]'s head.", \ + target << "A small part of your [braincase] pulses with agony as the light impacts it." + user.visible_message("[user] begins removing something from [target]'s [braincase].", \ "You begin carefully extracting the tumor...") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/braincase = target.named_organ_parent("brain") user.visible_message("[user] carefully extracts the tumor from [target]'s brain!", \ - "You extract the black tumor from [target]'s head. It quickly shrivels and burns away.") + "You extract the black tumor from [target]'s [braincase]. It quickly shrivels and burns away.") ticker.mode.remove_thrall(target.mind,0) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/braincase = target.named_organ_parent("brain") if(prob(50)) - user.visible_message("[user] slips and rips the tumor out from [target]'s head!", \ + user.visible_message("[user] slips and rips the tumor out from [target]'s [braincase]!", \ "You fumble and tear out [target]'s tumor!") + target.adjustBrainLoss(150) // This is so you can't just defib'n go ticker.mode.remove_thrall(target.mind,1) else user.visible_message("[user]'s hand slips and fumbles! Luckily, they didn't damage anything!") @@ -75,7 +79,7 @@ if (!hasorgans(target)) return var/obj/item/organ/external/affected = target.get_organ(target_zone) - return ..() && affected && embryo && affected.open == 3 && target_zone == "chest" + return ..() && affected && embryo && affected.open_enough_for_surgery() && target_zone == "chest" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/msg = "[user] starts to pull something out from [target]'s ribcage with \the [tool]." @@ -113,7 +117,7 @@ return var/is_organ_damaged = 0 for(var/obj/item/organ/I in affected.internal_organs) - if(I.damage > 0) + if(I.damage > 0 && I.robotic < 2) is_organ_damaged = 1 break return ..() && is_organ_damaged diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index df0e5608221..fa6fd6f215f 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -3,25 +3,34 @@ // COMMON STEPS // ////////////////////////////////////////////////////////////////// -/datum/surgery_step/robotics/ +/datum/surgery_step/robotics can_infect = 0 - can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if (isslime(target)) - return 0 - if (target_zone == "eyes") //there are specific steps for eye surgery - return 0 - if (!hasorgans(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(target_zone) - if (affected == null) - return 0 - if (affected.status & ORGAN_DESTROYED) - return 0 - if (!(affected.status & ORGAN_ROBOT)) - return 0 - return 1 -/datum/surgery_step/robotics/unscrew_hatch +/datum/surgery_step/robotics/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (isslime(target)) + return 0 + if (target_zone == "eyes") //there are specific steps for eye surgery + return 0 + if (!hasorgans(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(target_zone) + if (affected == null) + return 0 + if (affected.status & ORGAN_DESTROYED) + return 0 + return 1 + +/datum/surgery_step/robotics/external + +/datum/surgery_step/robotics/external/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!..()) + return 0 + var/obj/item/organ/external/affected = target.get_organ(target_zone) + if (!(affected.status & ORGAN_ROBOT)) + return 0 + return 1 + +/datum/surgery_step/robotics/external/unscrew_hatch allowed_tools = list( /obj/item/weapon/screwdriver = 100, /obj/item/weapon/coin = 50, @@ -53,7 +62,7 @@ user.visible_message("\red [user]'s [tool.name] slips, failing to unscrew [target]'s [affected.name].", \ "\red Your [tool] slips, failing to unscrew [target]'s [affected.name].") -/datum/surgery_step/robotics/open_hatch +/datum/surgery_step/robotics/external/open_hatch allowed_tools = list( /obj/item/weapon/retractor = 100, /obj/item/weapon/crowbar = 100, @@ -85,7 +94,7 @@ user.visible_message("\red [user]'s [tool.name] slips, failing to open the hatch on [target]'s [affected.name].", "\red Your [tool] slips, failing to open the hatch on [target]'s [affected.name].") -/datum/surgery_step/robotics/close_hatch +/datum/surgery_step/robotics/external/close_hatch allowed_tools = list( /obj/item/weapon/retractor = 100, /obj/item/weapon/crowbar = 100, @@ -118,7 +127,7 @@ user.visible_message("\red [user]'s [tool.name] slips, failing to close the hatch on [target]'s [affected.name].", "\red Your [tool.name] slips, failing to close the hatch on [target]'s [affected.name].") -/datum/surgery_step/robotics/repair_brute +/datum/surgery_step/robotics/external/repair_brute allowed_tools = list( /obj/item/weapon/weldingtool = 100, /obj/item/weapon/gun/energy/plasmacutter = 50 @@ -154,7 +163,7 @@ "\red Your [tool.name] slips, damaging the internal structure of [target]'s [affected.name].") target.apply_damage(rand(5,10), BURN, affected) -/datum/surgery_step/robotics/repair_burn +/datum/surgery_step/robotics/external/repair_burn allowed_tools = list( /obj/item/stack/cable_coil = 100 ) @@ -215,7 +224,7 @@ if(I.damage > 0 && I.robotic >= 2) is_organ_damaged = 1 break - return affected.open == 2 && is_organ_damaged + return affected.open_enough_for_surgery() && is_organ_damaged begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -276,7 +285,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(!(affected && (affected.status & ORGAN_ROBOT))) return 0 - if(affected.open != 2) + if(!affected.open_enough_for_surgery()) return 0 target.op_stage.current_organ = null @@ -325,7 +334,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(!(affected && (affected.status & ORGAN_ROBOT))) return 0 - if(affected.open != 2) + if(!affected.open_enough_for_surgery()) return 0 target.op_stage.current_organ = null @@ -375,7 +384,7 @@ var/obj/item/device/mmi/M = tool var/obj/item/organ/external/affected = target.get_organ(target_zone) - if(!(affected && affected.open == 2)) + if(!(affected && affected.open_enough_for_surgery())) return 0 if(!istype(M)) From 897d4fa7ee4026ec656c59b001d33e77f07d03c1 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 5 Dec 2015 01:48:02 -0800 Subject: [PATCH 13/44] You can now resist to escape an odysseus' sleeper There's a bit of snowflaking; though I hope the method can be extended to something more than just that single thing in the future --- code/game/mecha/equipment/tools/medical_tools.dm | 3 +++ code/modules/mob/living/living.dm | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index a32e32c1075..bf4568703ce 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -198,6 +198,9 @@ update_equip_info() return + proc/on_resist(var/mob/living/L) + go_out() + update_equip_info() if(..()) send_byjax(chassis.occupant,"msleeper.browser","lossinfo",get_occupant_dam()) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index dc23580c131..d4d3ca1fdb3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -515,6 +515,10 @@ if(loc && (istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) resist_tray(L) + // The doctor left the odysseus unlocked again + if(src.loc && (istype(loc, /obj/item/mecha_parts/mecha_equipment/tool/sleeper))) + resist_mecha() + //unbuckling yourself if(L.buckled && (L.last_special <= world.time) ) resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' @@ -621,6 +625,17 @@ for(var/mob/O in viewers(usr, null)) O.show_message(text("\red [] resists!", L), 1) +/* +resist_mecha allows a mob to attempt to escape an exosuit's equipment +if the doctor let a graytide get in the odysseus, for example +*/ +/mob/living/proc/resist_mecha() + // I don't like anything so special-case as this, but I'll try to leave it as extensible as I can + // --Crazylemon + if(istype(src.loc, /obj/item/mecha_parts/mecha_equipment/tool/sleeper)) + var/obj/item/mecha_parts/mecha_equipment/tool/sleeper/prison = src.loc + prison.on_resist(src) + /* resist_buckle allows a mob that is bucklecuffed to break free of the chair/bed/whatever *///// /mob/living/proc/resist_buckle(var/mob/living/L) From b5bd0f1f0e80c350c945bd0e4edb297cecf99b2e Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 5 Dec 2015 02:38:06 -0800 Subject: [PATCH 14/44] Pull no longer works bad with medical machines Mousedropping mobs into them now cancels your pull, so you don't, for example, start pulling around your surgery patient on accident, or have a funny pull that you need to use on something else, for sleepers. Walking while inside of a sleeper will also let you exit it easily --- code/game/dna/dna_modifier.dm | 6 +----- code/game/machinery/OpTable.dm | 2 ++ code/game/machinery/Sleeper.dm | 11 ++++++----- code/game/machinery/cryo.dm | 6 +----- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index b0dcf14933f..f0afc49aa57 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -174,10 +174,6 @@ if(occupant) user << "\blue The DNA Scanner is already occupied!" return -/* if(isrobot(user)) - if(!istype(user:module, /obj/item/weapon/robot_module/medical)) - user << "You do not have the means to do this!" - return*/ var/mob/living/L = O if(!istype(L) || L.buckled) return @@ -193,7 +189,7 @@ visible_message("[user] puts [L.name] into the DNA Scanner.") put_in(L) if(user.pulling == L) - user.pulling = null + user.stop_pulling() /obj/machinery/dna_scannernew/attackby(var/obj/item/weapon/item as obj, var/mob/user as mob, params) if(istype(item, /obj/item/weapon/screwdriver)) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 6a0bd412e8f..96849a2905d 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -98,6 +98,8 @@ C.client.eye = src C.resting = 1 C.loc = src.loc + if (user.pulling == C) + user.stop_pulling() for(var/obj/O in src) O.loc = src.loc src.add_fingerprint(user) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 0035170d4dd..bc4b732d047 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -322,6 +322,11 @@ max_chem = E * 20 min_health = -E * 25 +/obj/machinery/sleeper/relaymove(mob/user as mob) + if(user.incapacitated()) + return 0 //maybe they should be able to get out with cuffs, but whatever + go_out() + /obj/machinery/sleeper/process() if(filtering > 0) if(beaker) @@ -566,10 +571,6 @@ if(occupant) user << "The sleeper is already occupied!" return -/* if(isrobot(user)) - if(!istype(user:module, /obj/item/weapon/robot_module/medical)) - user << "You do not have the means to do this!" - return*/ var/mob/living/L = O if(!istype(L) || L.buckled) return @@ -600,7 +601,7 @@ L << "You feel cool air surround you. You go numb as your senses turn inward." src.add_fingerprint(user) if(user.pulling == L) - user.pulling = null + user.stop_pulling() return return diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 8419189dee3..9b4bec6516d 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -97,10 +97,6 @@ if(occupant) user << "\blue The cryo cell is already occupied!" return -/* if(isrobot(user)) - if(!istype(user:module, /obj/item/weapon/robot_module/medical)) - user << "You do not have the means to do this!" - return*/ var/mob/living/L = O if(!istype(L) || L.buckled) return @@ -117,7 +113,7 @@ else visible_message("[user] puts [L.name] into the cryo cell.") if(user.pulling == L) - user.pulling = null + user.stop_pulling() /obj/machinery/atmospherics/unary/cryo_cell/process() ..() From 16cdea3a2bb1b5b1a35246651a073c1b4d721c7e Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 5 Dec 2015 08:14:28 -0500 Subject: [PATCH 15/44] Changes underpred projectile cap Adds communication changes based on Ponies feedback --- .../living/simple_animal/guardian/guardian.dm | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index f640f90fa93..d7ee81f49c7 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -130,10 +130,12 @@ if(!input) return for(var/mob/M in mob_list) - if(M == summoner || (M in dead_mob_list)) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [input]") + if(M == summoner) + M << "[src]: [input]" + else if (M in dead_mob_list) + M << "Guardian Communication from [src] ([ghost_follow_link(src, ghost=M)]): [input]" + src << "[src]: [input]" + log_say("Guardian Communication: [src.real_name]/[src.key] : [input]") /mob/living/simple_animal/hostile/guardian/proc/ToggleMode() src << "You dont have another mode!" @@ -150,11 +152,11 @@ if(istype (M, /mob/living/simple_animal/hostile/guardian)) var/mob/living/simple_animal/hostile/guardian/G = M if(G.summoner == src) - G << "[src]: [input]" + G << "[src]: [input]" else if (M in dead_mob_list) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [text]") + M << "Guardian Communication from [src] ([ghost_follow_link(src, ghost=M)]): [input]" + src << "[src]: [input]" + log_say("Guardian Communication: [src.real_name]/[src.key] : [text]") /mob/living/proc/guardian_recall() set name = "Recall Guardian" @@ -452,11 +454,10 @@ melee_damage_upper = 10 damage_transfer = 0.9 projectiletype = /obj/item/projectile/guardian - ranged_cooldown_cap = 0 + ranged_cooldown_cap = 1 projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' ranged = 1 range = 13 - ranged_cooldown_cap = 1 playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit." magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." From 1efea2dd4654eb402c3db991ffa95d34d8ffee2b Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 5 Dec 2015 10:45:28 -0800 Subject: [PATCH 16/44] Relaymove added to DNA machine --- code/game/dna/dna_modifier.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index f0afc49aa57..948645e0567 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -239,6 +239,11 @@ qdel(G) return +/obj/machinery/sleeper/relaymove(mob/user as mob) + if(user.incapacitated()) + return 0 //maybe they should be able to get out with cuffs, but whatever + go_out() + /obj/machinery/dna_scannernew/proc/put_in(var/mob/M) if(M.client) M.client.perspective = EYE_PERSPECTIVE From fab7f1f6b0624a788e1d2788aabdda063b6284be Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sat, 5 Dec 2015 16:46:07 -0500 Subject: [PATCH 17/44] exotic blood changes --- code/__DEFINES/flags.dm | 3 +-- code/datums/datacore.dm | 2 +- .../living/carbon/human/species/species.dm | 2 +- .../living/carbon/human/species/station.dm | 4 +-- .../mob/new_player/preferences_setup.dm | 2 +- code/modules/organs/blood.dm | 26 +++++++------------ code/modules/reagents/Chemistry-Holder.dm | 3 +++ .../reagents/reagent_containers/syringes.dm | 4 +-- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index ff9d805a138..20930f1cdb8 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -54,8 +54,6 @@ #define HAS_UNDERSHIRT 2 #define HAS_SOCKS 4 -//Species Blood Flags -#define BLOOD_SLIME 1 //Species Body Flags #define FEET_CLAWS 1 #define FEET_PADDED 2 @@ -64,6 +62,7 @@ #define HAS_SKIN_TONE 16 #define HAS_SKIN_COLOR 32 #define TAIL_WAGGING 64 +#define NO_EYES 128 //Species Diet Flags #define DIET_CARN 1 diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 97de7c19e51..7f0e58d3bbb 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -312,7 +312,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H) else clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if(!H.species.bloodflags & BLOOD_SLIME) + if(!H.species.bodyflags & NO_EYES) preview_icon.Blend(eyes_s, ICON_OVERLAY) if(clothes_s) preview_icon.Blend(clothes_s, ICON_OVERLAY) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 6462d413e7b..6c12bc9b5a7 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -62,7 +62,7 @@ var/flags = 0 // Various specific features. var/clothing_flags = 0 // Underwear and socks. - var/bloodflags = 0 + var/exotic_blood var/bodyflags = 0 var/dietflags = 0 // Make sure you set this, otherwise it won't be able to digest a lot of foods diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 9f9c0642988..1e85a1e2e52 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -319,10 +319,10 @@ flags = IS_WHITELISTED | NO_BREATHE | HAS_LIPS | NO_INTORGANS | NO_SCAN clothing_flags = HAS_SOCKS - bodyflags = HAS_SKIN_COLOR - bloodflags = BLOOD_SLIME + bodyflags = HAS_SKIN_COLOR | NO_EYES dietflags = DIET_CARN reagent_tag = PROCESS_ORG + exotic_blood = "water" //ventcrawler = 1 //ventcrawling commented out has_organ = list( diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index c6f9c2814c7..969bf2aebcb 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -804,7 +804,7 @@ datum/preferences else if(backbag == 3 || backbag == 4) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) - if(!current_species.bloodflags & BLOOD_SLIME) + if(!current_species.bodyflags & NO_EYES) preview_icon.Blend(eyes_s, ICON_OVERLAY) if(underwear_s) preview_icon.Blend(underwear_s, ICON_OVERLAY) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index e65ed5bb870..f3f9c48b614 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -19,14 +19,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 vessel = new/datum/reagents(600) vessel.my_atom = src - if(species && species.flags & NO_BLOOD) //In case of transformation to IPC - if(vessel.has_reagent("water") || vessel.has_reagent("blood")) - var/water = vessel.get_reagent_amount("water") - var/blood = vessel.get_reagent_amount("blood") - vessel.remove_reagent("water",water) - vessel.remove_reagent("blood",blood) - if(species.bloodflags & BLOOD_SLIME) - vessel.add_reagent("water",560) + if(species && species.exotic_blood) + vessel.add_reagent(species.exotic_blood,560) else vessel.add_reagent("blood",560) spawn(1) @@ -46,8 +40,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(species && species.flags & NO_BLOOD) return if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. - if(species.bloodflags &BLOOD_SLIME) - blood_volume = round(vessel.get_reagent_amount("water")) + if(species.exotic_blood) + blood_volume = round(vessel.get_reagent_amount(species.exotic_blood)) if(blood_volume < 560 && blood_volume) var/datum/reagent/water/W = locate() in vessel.reagent_list //Grab some blood if(W) // Make sure there's some blood at all @@ -180,8 +174,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 var/amm = 0.1 * amt var/turf/T = get_turf(src) - if(src.species.bloodflags &BLOOD_SLIME) - vessel.remove_reagent("water",amm) + if(src.species.exotic_blood) + vessel.remove_reagent(species.exotic_blood,amm) vessel.reaction(T, TOUCH, amm) return @@ -227,10 +221,10 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 //For humans, blood does not appear from blue, it comes from vessels. /mob/living/carbon/human/take_blood(obj/item/weapon/reagent_containers/container, var/amount) - if(src.species.bloodflags &BLOOD_SLIME) - if(vessel.get_reagent_amount("water") < amount) + if(src.species.exotic_blood) + if(vessel.get_reagent_amount(src.species.exotic_blood) < amount) return null - var/datum/reagent/W = new /datum/reagent/water + var/datum/reagent/W = new /datum/reagent W.holder = container W.volume += amount var/list/temp_chem = list() @@ -238,7 +232,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 temp_chem += R.id temp_chem[R.id] = R.volume W.data["trace_chem"] = list2params(temp_chem) - vessel.remove_reagent("water",amount) // Removes blood if human + vessel.remove_reagent(src.species.exotic_blood,amount) // Removes blood if human return W if(species && species.flags & NO_BLOOD) return null diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 47e1546de1a..084883d55f9 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -371,6 +371,9 @@ var/const/INGEST = 2 //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO)) can_process = 1 + if(H.species && H.species.exotic_blood) + if(R.id == H.species.exotic_blood) + can_process = 0 //We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption) else if(R.process_flags != SYNTHETIC) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index a9bbdb68de6..ee90720d0bc 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -97,7 +97,7 @@ var/time = 30 //Injecting through a hardsuit takes longer due to needing to find a port. if(istype(target,/mob/living/carbon/human)) var/mob/living/carbon/human/H = T - if((H.species.bloodflags & BLOOD_SLIME) || (H.species.flags & NO_BLOOD)) + if(H.species.flags & NO_BLOOD) usr << "You are unable to locate any blood." return if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space)) @@ -118,7 +118,7 @@ var/datum/reagent/B if(istype(T,/mob/living/carbon/human)) var/mob/living/carbon/human/H = T - if(H.species && H.species.flags & NO_BLOOD) + if(H.species && H.species.exotic_blood && H.reagents.total_volume) H.reagents.trans_to(src,amount) else B = T.take_blood(src,amount) From cc16f034ee8c8b3836e2c830d28ea6a707a199dc Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 5 Dec 2015 19:01:51 -0500 Subject: [PATCH 18/44] Fixes Records --- code/datums/mixed.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index df066541633..31f7d67af36 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -23,6 +23,9 @@ size = 5.0 var/list/fields = list( ) +/datum/data/record/Destroy() + ..() + return QDEL_HINT_HARDDEL_NOW /datum/data/text name = "text" From 3b783a9cb2119f9fad50cc4d74043d83328a4a70 Mon Sep 17 00:00:00 2001 From: IAmBigCoat Date: Sat, 5 Dec 2015 21:43:20 -0500 Subject: [PATCH 19/44] Fixed num2hex for large numbers. ID numbers are larger than the bitwise operators allow, which gave everyone one of about sixteen ID #s. Not sure what or if this actually fixes anything mechanically, but ID #s are pretty again. --- code/__HELPERS/type2type.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 311ef87f57d..2421c64b62f 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -50,16 +50,14 @@ var/hex = "" while(num) - var/val = num & 15 - num >>= 4 + var/val = num % 16 + num = round(num / 16) if(val > 9) val = ascii2text(55 + val) // 65 - 70 correspond to "A" - "F" hex = "[val][hex]" - while(length(hex) < placeholder) hex = "0[hex]" - return hex || "0" // Concatenates a list of strings into a single string. A seperator may optionally be provided. From 4530b6b4cf45efadbca7159819b10bc027d9f205 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 6 Dec 2015 01:35:04 -0500 Subject: [PATCH 20/44] Fairy head sprite fix --- icons/mob/head.dmi | Bin 247788 -> 247960 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index ba76739718dfca5f8826487f6a53926c74138e55..33e1e3dcaa4af173aad898e71fa383c92276985f 100644 GIT binary patch delta 17082 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

@>YWE8Z6{ehDjOg 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 Date: Sun, 6 Dec 2015 02:33:30 -0500 Subject: [PATCH 21/44] Adds small delay to healer heal clicking. --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index d7ee81f49c7..9b29d835fa5 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -349,6 +349,7 @@ src << "You must be manifested to heal!" return if(iscarbon(target)) + src.changeNext_move(CLICK_CD_MELEE) var/mob/living/carbon/C = target C.adjustBruteLoss(-5) C.adjustFireLoss(-5) From 5698509581e2a76cecd7825792a176b1775cbd51 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 6 Dec 2015 02:38:31 -0500 Subject: [PATCH 22/44] Heal Delay --- .../mob/living/simple_animal/guardian/guardian.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 9b29d835fa5..9d5d0fb82fb 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -331,6 +331,7 @@ melee_damage_lower = 0 melee_damage_upper = 0 melee_damage_type = STAMINA + var/heal_cooldown = 0 adminseal = TRUE @@ -350,11 +351,13 @@ return if(iscarbon(target)) src.changeNext_move(CLICK_CD_MELEE) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) - C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) + if(heal_cooldown <= world.time && !stat) + var/mob/living/carbon/C = target + C.adjustBruteLoss(-5) + C.adjustFireLoss(-5) + C.adjustOxyLoss(-5) + C.adjustToxLoss(-5) + heal_cooldown = world.time + 20 /mob/living/simple_animal/hostile/guardian/healer/ToggleMode() if(src.loc == summoner) From 6fed7d7648edc1333f35a90179cfea2e40c1227b Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 6 Dec 2015 00:17:25 -0800 Subject: [PATCH 23/44] Somewhat desnowflaked resistance --- .../mecha/equipment/tools/medical_tools.dm | 2 +- code/game/objects/objs.dm | 3 + .../structures/crates_lockers/closets.dm | 39 +++++ .../closets/secure/secure_closets.dm | 47 +++++- code/game/objects/structures/morgue.dm | 23 ++- code/modules/mob/holder.dm | 19 +++ code/modules/mob/living/living.dm | 134 +----------------- 7 files changed, 134 insertions(+), 133 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index bf4568703ce..f566b41bf2a 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -198,7 +198,7 @@ update_equip_info() return - proc/on_resist(var/mob/living/L) + container_resist(var/mob/living/L) go_out() update_equip_info() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index bc65d324d82..a6e8ef3ca57 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -256,3 +256,6 @@ a { anchored = 0 step_towards(src,S) else step_towards(src,S) + +/obj/proc/container_resist(var/mob/living) + return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 1c8498c6cee..752d3dcb083 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -365,3 +365,42 @@ open() if(AM.loc == src) return 0 return 1 + +/obj/structure/closet/container_resist(var/mob/living/L) + var/breakout_time = 2 //2 minutes by default + if(opened) + if (L.loc == src) + L.forceMove(get_turf(src)) // Let's just be safe here + return //Door's open... wait, why are you in it's contents then? + if(!welded) + return //closed but not welded... + // else Meh, lets just keep it at 2 minutes for now + // breakout_time++ //Harder to get out of welded lockers than locked lockers + + //okay, so the closet is either welded or locked... resist!!! + L.changeNext_move(CLICK_CD_BREAKOUT) + L.last_special = world.time + CLICK_CD_BREAKOUT + L << "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)" + for(var/mob/O in viewers(usr.loc)) + O.show_message("The [src] begins to shake violently!", 1) + + + spawn(0) + if(do_after(L,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + if(!src || !L || L.stat != CONSCIOUS || L.loc != src || opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened + return + + //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... + if(!welded) + return + + //Well then break it! + welded = 0 + update_icon() + usr << "You successfully break out!" + for(var/mob/O in viewers(L.loc)) + O.show_message("\the [usr] successfully broke out of \the [src]!", 1) + if(istype(src.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above + var/obj/structure/bigDelivery/BD = src.loc + BD.attack_hand(usr) + open() \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index db95e1d7b3c..1c2a34c719d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -127,4 +127,49 @@ if(welded) overlays += "welded" else - icon_state = icon_opened \ No newline at end of file + icon_state = icon_opened + +/obj/structure/closet/secure_closet/container_resist(var/mob/living/L) + var/breakout_time = 2 //2 minutes by default + if(opened) + if (L.loc == src) + L.forceMove(get_turf(src)) // Let's just be safe here + return //Door's open... wait, why are you in it's contents then? + if(!locked && !welded) + return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist' + + //okay, so the closet is either welded or locked... resist!!! + L.changeNext_move(CLICK_CD_BREAKOUT) + L.last_special = world.time + CLICK_CD_BREAKOUT + L << "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)" + for(var/mob/O in viewers(src)) + O.show_message("The [src] begins to shake violently!", 1) + + + spawn(0) + if(do_after(usr,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + if(!src || !L || L.stat != CONSCIOUS || L.loc != src || opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened + return + + //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... + if(!locked && !welded) + return + + //Well then break it! + desc = "It appears to be broken." + icon_state = icon_off + flick(icon_broken, src) + sleep(10) + flick(icon_broken, src) + sleep(10) + broken = 1 + locked = 0 + welded = 0 + update_icon() + usr << "\red You successfully break out!" + for(var/mob/O in viewers(L.loc)) + O.show_message("\the [usr] successfully broke out of \the [src]!", 1) + if(istype(src.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace) + var/obj/structure/bigDelivery/BD = src.loc + BD.attack_hand(usr) + open() \ No newline at end of file diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index d23de20410c..fedce12962c 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -143,6 +143,16 @@ connected = null return ..() +/obj/structure/morgue/container_resist(var/mob/living/L) + var/mob/living/carbon/CM = L + if(!istype(CM)) + return + if (CM.stat || CM.restrained()) + return + + CM << "You attempt to slide yourself out of \the [src]..." + src.attack_hand(CM) + /* * Morgue tray @@ -314,12 +324,12 @@ if(contents.len <= 0) for (var/mob/M in viewers(src)) - M.show_message("\red You hear a hollow crackle.", 1) + M.show_message("You hear a hollow crackle.", 1) return else for (var/mob/M in viewers(src)) - M.show_message("\red You hear a roar as the crematorium activates.", 1) + M.show_message("You hear a roar as the crematorium activates.", 1) cremating = 1 locked = 1 @@ -355,6 +365,15 @@ connected = null return ..() +/obj/structure/crematorium/container_resist(var/mob/living/L) + var/mob/living/carbon/CM = L + if(!istype(CM)) + return + if (CM.stat || CM.restrained()) + return + + CM << "You attempt to slide yourself out of \the [src]..." + src.attack_hand(CM) /* * Crematorium tray diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 20f82d3a0bc..6b4de5b9c50 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -34,6 +34,25 @@ for(var/mob/living/M in contents) M.show_message(message,m_type) +/obj/item/weapon/holder/container_resist(var/mob/living/L) + var/mob/M = src.loc //Get our mob holder (if any). + + if(istype(M)) + M.unEquip(src) + M << "[src] wriggles out of your grip!" + src << "You wriggle out of [M]'s grip!" + else if(istype(src.loc,/obj/item)) + src << "You struggle free of [src.loc]." + src.forceMove(get_turf(src)) + + if(istype(M)) + for(var/atom/A in M.contents) + if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) + return + M.status_flags &= ~PASSEMOTES + + return + //Mob procs and vars for scooping up /mob/living/var/holder_type diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d4d3ca1fdb3..1826658faba 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -499,10 +499,6 @@ var/mob/living/L = usr - //Getting out of someone's inventory. - if(istype(src.loc,/obj/item/weapon/holder)) - resist_holder() - //Resisting control by an alien mind. if(istype(src.loc,/mob/living/simple_animal/borer)) resist_borer() @@ -511,21 +507,15 @@ if ((!(L.stat) && !(L.restrained()))) resist_grab(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' - // Sliding out of a morgue/crematorium - if(loc && (istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) - resist_tray(L) - - // The doctor left the odysseus unlocked again - if(src.loc && (istype(loc, /obj/item/mecha_parts/mecha_equipment/tool/sleeper))) - resist_mecha() - //unbuckling yourself if(L.buckled && (L.last_special <= world.time) ) resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' - //Breaking out of a locker? - else if(src.loc && (istype(src.loc, /obj/structure/closet))) - resist_closet() + //Breaking out of an object? + else if(src.loc && istype(src.loc, /obj) && (!isturf(src.loc))) + if(stat == CONSCIOUS && !stunned && !weakened && !paralysis) + var/obj/C = loc + C.container_resist(L) //breaking out of handcuffs else if(iscarbon(L)) @@ -544,28 +534,6 @@ RESIST SUBPROCS *///////////////////// -/* resist_holder allows small mobs that can be picked up to get out of their holder, so they aren't stuck forever. -*///// -/mob/living/proc/resist_holder() - var/obj/item/weapon/holder/H = src.loc //Get our item holder. - var/mob/M = H.loc //Get our mob holder (if any). - - if(istype(M)) - M.unEquip(H) - M << "[H] wriggles out of your grip!" - src << "You wriggle out of [M]'s grip!" - else if(istype(H.loc,/obj/item)) - src << "You struggle free of [H.loc]." - H.forceMove(get_turf(H)) - - if(istype(M)) - for(var/atom/A in M.contents) - if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) - return - M.status_flags &= ~PASSEMOTES - - return - /* resist_borer allows a mob to regain control of their body after a borer has assumed control. *///// /mob/living/proc/resist_borer() @@ -625,17 +593,6 @@ for(var/mob/O in viewers(usr, null)) O.show_message(text("\red [] resists!", L), 1) -/* -resist_mecha allows a mob to attempt to escape an exosuit's equipment -if the doctor let a graytide get in the odysseus, for example -*/ -/mob/living/proc/resist_mecha() - // I don't like anything so special-case as this, but I'll try to leave it as extensible as I can - // --Crazylemon - if(istype(src.loc, /obj/item/mecha_parts/mecha_equipment/tool/sleeper)) - var/obj/item/mecha_parts/mecha_equipment/tool/sleeper/prison = src.loc - prison.on_resist(src) - /* resist_buckle allows a mob that is bucklecuffed to break free of the chair/bed/whatever *///// /mob/living/proc/resist_buckle(var/mob/living/L) @@ -662,87 +619,6 @@ if the doctor let a graytide get in the odysseus, for example else L.buckled.user_unbuckle_mob(L,L) -/* resist_closet() allows a mob to break out of a welded/locked closet -*///// -/mob/living/proc/resist_closet() - var/breakout_time = 2 //2 minutes by default - var/mob/living/L = src - var/obj/structure/closet/C = L.loc - if(C.opened) - return //Door's open... wait, why are you in it's contents then? - if(istype(L.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - if(!SC.locked && !SC.welded) - return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist' - else - if(!C.welded) - return //closed but not welded... - // else Meh, lets just keep it at 2 minutes for now - // breakout_time++ //Harder to get out of welded lockers than locked lockers - - //okay, so the closet is either welded or locked... resist!!! - L.changeNext_move(CLICK_CD_BREAKOUT) - L.last_special = world.time + CLICK_CD_BREAKOUT - L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)" - for(var/mob/O in viewers(usr.loc)) - O.show_message("\red The [L.loc] begins to shake violently!", 1) - - - spawn(0) - if(do_after(usr,(breakout_time*60*10), target = C)) //minutes * 60seconds * 10deciseconds - if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened - return - - //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... - if(istype(L.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - if(!SC.locked && !SC.welded) - return - else - if(!C.welded) - return - - //Well then break it! - if(istype(usr.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - SC.desc = "It appears to be broken." - SC.icon_state = SC.icon_off - flick(SC.icon_broken, SC) - sleep(10) - flick(SC.icon_broken, SC) - sleep(10) - SC.broken = 1 - SC.locked = 0 - SC.update_icon() - usr << "\red You successfully break out!" - for(var/mob/O in viewers(L.loc)) - O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1) - if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace) - var/obj/structure/bigDelivery/BD = SC.loc - BD.attack_hand(usr) - SC.open() - else - C.welded = 0 - C.update_icon() - usr << "\red You successfully break out!" - for(var/mob/O in viewers(L.loc)) - O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1) - if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above - var/obj/structure/bigDelivery/BD = C.loc - BD.attack_hand(usr) - C.open() - -// resist_tray allows a mob to slide themselves out of a morgue or crematorium -/mob/living/proc/resist_tray(var/mob/living/carbon/CM) - if(!istype(CM)) - return - if (usr.stat || usr.restrained()) - return - - usr << "You attempt to slide yourself out of \the [loc]..." - var/obj/structure/S = loc - S.attack_hand(src) - /* resist_stop_drop_roll allows a mob to stop, drop, and roll in order to put out a fire burning on them. *///// /mob/living/proc/resist_stop_drop_roll(var/mob/living/carbon/CM) From 63e0eed2f2b6d5a081d8762158b295df2e7eb740 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 6 Dec 2015 00:20:14 -0800 Subject: [PATCH 24/44] Fixes a major dumb I made in my last commit --- code/game/dna/dna_modifier.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 948645e0567..41ce133403b 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -239,7 +239,7 @@ qdel(G) return -/obj/machinery/sleeper/relaymove(mob/user as mob) +/obj/machinery/dna_scannernew/relaymove(mob/user as mob) if(user.incapacitated()) return 0 //maybe they should be able to get out with cuffs, but whatever go_out() From bdb1c34a8ed5c2e9af53706c3e19efabf07489c2 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 6 Dec 2015 00:21:33 -0800 Subject: [PATCH 25/44] Intensive care can now rescue dethrall malpractice --- code/modules/surgery/organs_internal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 96344a40a16..b0b840d138c 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -51,7 +51,7 @@ if(prob(50)) user.visible_message("[user] slips and rips the tumor out from [target]'s [braincase]!", \ "You fumble and tear out [target]'s tumor!") - target.adjustBrainLoss(150) // This is so you can't just defib'n go + target.adjustBrainLoss(110) // This is so you can't just defib'n go ticker.mode.remove_thrall(target.mind,1) else user.visible_message("[user]'s hand slips and fumbles! Luckily, they didn't damage anything!") From 38862b14370483828aea973442e04e0ad8118ea4 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 6 Dec 2015 00:39:40 -0800 Subject: [PATCH 26/44] Cyborgs only die once when dead, and don't break binary talk --- code/modules/mob/living/silicon/robot/life.dm | 21 ++++++++----------- .../mob/living/silicon/robot/robot_damage.dm | 7 +++++++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 533bc1f7a2b..a6ce6632258 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -21,15 +21,17 @@ ear_deaf = 0 -/mob/living/silicon/robot/proc/use_power() - if (is_component_functioning("power cell") && cell) +/mob/living/silicon/robot/proc/use_power() + if (stat == DEAD) + return + else if (is_component_functioning("power cell") && cell) if(module) for(var/obj/item/borg/B in module.modules) if(B.powerneeded) if((cell.charge * 100 / cell.maxcharge) < B.powerneeded) src << "Deactivating [B.name] due to lack of power!" - unEquip(B) - if(cell.charge <= 0) + unEquip(B) + if(cell.charge <= 0) uneq_all() update_headlamp(1) stat = UNCONSCIOUS @@ -60,7 +62,9 @@ if(!is_component_functioning("actuator")) Paralyse(3) eye_blind = 0 - stat = 0 + // Please, PLEASE be careful with statements like this - make sure they're not + // dead beforehand, for example -- Crazylemon + stat = CONSCIOUS has_power = 1 else uneq_all() @@ -68,13 +72,6 @@ update_headlamp(1) Paralyse(3) -/mob/living/silicon/robot/updatehealth() - if(status_flags & GODMODE) - health = maxHealth - stat = CONSCIOUS - return - health = maxHealth - (getOxyLoss() + getFireLoss() + getBruteLoss()) - /mob/living/silicon/robot/handle_regular_status_updates() . = ..() diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 6628841fa40..bbeff3b6e3a 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -4,8 +4,15 @@ stat = CONSCIOUS return health = maxHealth - (getBruteLoss() + getFireLoss()) + if (stat == DEAD && health > 0) + update_revive() + var/mob/dead/observer/ghost = get_ghost() + if(ghost) + ghost << "Your cyborg shell has been repaired, re-enter if you want to continue! (Verbs -> Ghost -> Re-enter corpse)" + ghost << sound('sound/effects/genetics.ogg') return + /mob/living/silicon/robot/getBruteLoss() var/amount = 0 for(var/V in components) From fc3d211aa2150c65592b5aee556c96f05e8620f1 Mon Sep 17 00:00:00 2001 From: Certh Date: Sun, 6 Dec 2015 17:15:27 +0100 Subject: [PATCH 27/44] Fixes issues with two handed weapon sprites --- code/game/objects/items/weapons/twohanded.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index d8256e6e983..2cc2f739dcc 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -4,6 +4,11 @@ * Fireaxe * Double-Bladed Energy Swords * Spears + * Kidan spear + * Chainsaw + * Singularity hammer + * Mjolnnir + * Knighthammer */ /*################################################################## @@ -34,6 +39,9 @@ else //something wrong name = "[initial(name)]" update_icon() + if(user) + user.update_inv_r_hand() + user.update_inv_l_hand() if(isrobot(user)) user << "You free up your module." else @@ -59,6 +67,9 @@ force = force_wielded name = "[name] (Wielded)" update_icon() + if(user) + user.update_inv_r_hand() + user.update_inv_l_hand() if(isrobot(user)) user << "You dedicate your module to [name]." else From c931c9f6be25efde0c4611e6f909e6ef6d589197 Mon Sep 17 00:00:00 2001 From: orelbon Date: Sun, 6 Dec 2015 12:51:34 -0500 Subject: [PATCH 28/44] Changes Laser gun energy consumption --- code/modules/projectiles/guns/energy/laser.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index afde00f4aed..ed4ca6eeeed 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -4,7 +4,7 @@ icon_state = "laser" item_state = "laser" fire_sound = 'sound/weapons/Laser.ogg' - charge_cost = 830 + charge_cost = 760 w_class = 3.0 materials = list(MAT_METAL=2000) origin_tech = "combat=3;magnets=2" From 8f52b540c7781c13fe3beda992fac738f86f706e Mon Sep 17 00:00:00 2001 From: Crazylemon Date: Sun, 6 Dec 2015 09:58:43 -0800 Subject: [PATCH 29/44] robot/updatehealth now factors in oxyloss --- code/modules/mob/living/silicon/robot/robot_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index bbeff3b6e3a..58021c4193b 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -1,9 +1,9 @@ -/mob/living/silicon/robot/updatehealth() +mob/living/silicon/robot/updatehealth() if(status_flags & GODMODE) health = maxHealth stat = CONSCIOUS return - health = maxHealth - (getBruteLoss() + getFireLoss()) + health = maxHealth - (getOxyLoss() + getFireLoss() + getBruteLoss()) if (stat == DEAD && health > 0) update_revive() var/mob/dead/observer/ghost = get_ghost() From 6265c8e6c1e634f9817c359938b90200c0cfccdf Mon Sep 17 00:00:00 2001 From: Crazylemon Date: Sun, 6 Dec 2015 10:25:48 -0800 Subject: [PATCH 30/44] DEATH TO THE RELATIVE PATHING SCUM --- code/modules/mob/living/silicon/robot/robot_damage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 58021c4193b..a8bd77155fa 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -1,4 +1,4 @@ -mob/living/silicon/robot/updatehealth() +/mob/living/silicon/robot/updatehealth() if(status_flags & GODMODE) health = maxHealth stat = CONSCIOUS From 39cc526e469e34a3fca02fac99a092c12156d310 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Mon, 7 Dec 2015 00:01:34 -0500 Subject: [PATCH 31/44] SSHOVE THIS IN YOUR FACE TRAVIS --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 9d5d0fb82fb..d8c6fabb5fe 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -316,6 +316,7 @@ var/turf/simulated/floor/beacon var/beacon_cooldown = 0 var/toggle = FALSE + var/heal_cooldown = 0 /mob/living/simple_animal/hostile/guardian/healer/sealhealer name = "Seal Sprit" @@ -331,7 +332,6 @@ melee_damage_lower = 0 melee_damage_upper = 0 melee_damage_type = STAMINA - var/heal_cooldown = 0 adminseal = TRUE From 6e2288fbb820c14b29cd9dacd516bc9f13ba0495 Mon Sep 17 00:00:00 2001 From: Certh Date: Mon, 7 Dec 2015 14:11:58 +0100 Subject: [PATCH 32/44] bugfixed writing in blood --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index fa1d21e3bd5..8b453e8f100 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1583,7 +1583,7 @@ src << "You ran out of blood to write with!" var/obj/effect/decal/cleanable/blood/writing/W = new(T) - + W.message = message W.add_fingerprint(src) // Allows IPC's to change their monitor display From 1c3012edd7c880138d23a419e463692cd07f5de7 Mon Sep 17 00:00:00 2001 From: Certh Date: Mon, 7 Dec 2015 14:31:07 +0100 Subject: [PATCH 33/44] - Oil-covered clothing no longer shows as blood when examining a player - Examining now also shows any bloody/oily feet when not wearing shoes --- .../mob/living/carbon/human/examine.dm | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 183640bb45b..15791ddd85a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -64,62 +64,60 @@ tie_msg += " with [english_accessory_list(U)]" if(w_uniform.blood_DNA) - msg += "[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!\n" + msg += "[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [w_uniform.blood_color != "#030303" ? "blood-stained":"oil-stained"] [w_uniform.name][tie_msg]!\n" else msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n" //head if(head) if(head.blood_DNA) - msg += "[t_He] [t_is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on [t_his] head!\n" + msg += "[t_He] [t_is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [head.blood_color != "#030303" ? "blood-stained":"oil-stained"] [head.name] on [t_his] head!\n" else msg += "[t_He] [t_is] wearing \icon[head] \a [head] on [t_his] head.\n" //suit/armour if(wear_suit) if(wear_suit.blood_DNA) - msg += "[t_He] [t_is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!\n" + msg += "[t_He] [t_is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [wear_suit.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_suit.name]!\n" else msg += "[t_He] [t_is] wearing \icon[wear_suit] \a [wear_suit].\n" //suit/armour storage if(s_store && !skipsuitstorage) if(s_store.blood_DNA) - msg += "[t_He] [t_is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!\n" + msg += "[t_He] [t_is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [s_store.blood_color != "#030303" ? "blood-stained":"oil-stained"] [s_store.name] on [t_his] [wear_suit.name]!\n" else msg += "[t_He] [t_is] carrying \icon[s_store] \a [s_store] on [t_his] [wear_suit.name].\n" //back if(back) if(back.blood_DNA) - msg += "[t_He] [t_has] \icon[back] [back.gender==PLURAL?"some":"a"] blood-stained [back] on [t_his] back.\n" + msg += "[t_He] [t_has] \icon[back] [back.gender==PLURAL?"some":"a"] [back.blood_color != "#030303" ? "blood-stained":"oil-stained"] [back] on [t_his] back.\n" else msg += "[t_He] [t_has] \icon[back] \a [back] on [t_his] back.\n" //left hand if(l_hand && !(l_hand.flags & ABSTRACT)) if(l_hand.blood_DNA) - msg += "[t_He] [t_is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] blood-stained [l_hand.name] in [t_his] left hand!\n" + msg += "[t_He] [t_is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [l_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [l_hand.name] in [t_his] left hand!\n" else msg += "[t_He] [t_is] holding \icon[l_hand] \a [l_hand] in [t_his] left hand.\n" //right hand if(r_hand && !(r_hand.flags & ABSTRACT)) if(r_hand.blood_DNA) - msg += "[t_He] [t_is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] blood-stained [r_hand.name] in [t_his] right hand!\n" + msg += "[t_He] [t_is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [r_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [r_hand.name] in [t_his] right hand!\n" else msg += "[t_He] [t_is] holding \icon[r_hand] \a [r_hand] in [t_his] right hand.\n" //gloves if(gloves && !skipgloves) if(gloves.blood_DNA) - msg += "[t_He] [t_has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] blood-stained [gloves.name] on [t_his] hands!\n" + msg += "[t_He] [t_has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [gloves.blood_color != "#030303" ? "blood-stained":"oil-stained"] [gloves.name] on [t_his] hands!\n" else msg += "[t_He] [t_has] \icon[gloves] \a [gloves] on [t_his] hands.\n" else if(blood_DNA) - msg += "[t_He] [t_has] blood-stained hands!\n" - - //handcuffed? + msg += "[t_He] [t_has] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!\n" //handcuffed? if(handcuffed) @@ -133,28 +131,31 @@ //belt if(belt) if(belt.blood_DNA) - msg += "[t_He] [t_has] \icon[belt] [belt.gender==PLURAL?"some":"a"] blood-stained [belt.name] about [t_his] waist!\n" + msg += "[t_He] [t_has] \icon[belt] [belt.gender==PLURAL?"some":"a"] [belt.blood_color != "#030303" ? "blood-stained":"oil-stained"] [belt.name] about [t_his] waist!\n" else msg += "[t_He] [t_has] \icon[belt] \a [belt] about [t_his] waist.\n" //shoes if(shoes && !skipshoes) if(shoes.blood_DNA) - msg += "[t_He] [t_is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] blood-stained [shoes.name] on [t_his] feet!\n" + msg += "[t_He] [t_is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [shoes.blood_color != "#030303" ? "blood-stained":"oil-stained"] [shoes.name] on [t_his] feet!\n" else msg += "[t_He] [t_is] wearing \icon[shoes] \a [shoes] on [t_his] feet.\n" + else if (blood_DNA) + msg += "[t_He] [t_has] [feet_blood_color != "#030303" ? "blood-stained":"oil-stained"] feet!\n" + //mask if(wear_mask && !skipmask) if(wear_mask.blood_DNA) - msg += "[t_He] [t_has] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] blood-stained [wear_mask.name] on [t_his] face!\n" + msg += "[t_He] [t_has] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] [wear_mask.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_mask.name] on [t_his] face!\n" else msg += "[t_He] [t_has] \icon[wear_mask] \a [wear_mask] on [t_his] face.\n" //eyes if(glasses && !skipeyes) if(glasses.blood_DNA) - msg += "[t_He] [t_has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] blood-stained [glasses] covering [t_his] eyes!\n" + msg += "[t_He] [t_has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [glasses.blood_color != "#030303" ? "blood-stained":"oil-stained"] [glasses] covering [t_his] eyes!\n" else msg += "[t_He] [t_has] \icon[glasses] \a [glasses] covering [t_his] eyes.\n" From 591daf04d2b0ae4260bb1010375efe27e24a55b1 Mon Sep 17 00:00:00 2001 From: Certh Date: Mon, 7 Dec 2015 16:14:26 +0100 Subject: [PATCH 34/44] Corrected the capitalization of a large amount of machines and items. This will also cause BYOND to use the correct articles (a/an). Also corrected some periods, spelling errors etc. along the way. If this PR seems familiar, a part of this is of an earlier PR that I messed up. --- .../components/unary_devices/vent_pump.dm | 7 +- code/game/dna/dna_modifier.dm | 2 +- code/game/machinery/adv_med.dm | 2 +- code/game/machinery/ai_slipper.dm | 2 +- code/game/machinery/atmo_control.dm | 2 +- .../atmoalter/area_atmos_computer.dm | 2 +- code/game/machinery/bees_items.dm | 2 +- code/game/machinery/biogenerator.dm | 2 +- .../machinery/computer/HolodeckControl.dm | 2 +- code/game/machinery/computer/Operating.dm | 2 +- code/game/machinery/computer/aifixer.dm | 2 +- code/game/machinery/computer/atmos_alert.dm | 2 +- code/game/machinery/computer/atmos_control.dm | 4 +- code/game/machinery/computer/camera.dm | 10 +- code/game/machinery/computer/card.dm | 4 +- code/game/machinery/computer/cloning.dm | 2 +- .../game/machinery/computer/communications.dm | 2 +- code/game/machinery/computer/hologram.dm | 2 +- code/game/machinery/computer/honkputer.dm | 2 +- code/game/machinery/computer/law.dm | 4 +- code/game/machinery/computer/medical.dm | 6 +- code/game/machinery/computer/message.dm | 4 +- code/game/machinery/computer/pod.dm | 10 +- .../computer/pod_tracking_console.dm | 10 +- code/game/machinery/computer/prisoner.dm | 2 +- code/game/machinery/computer/prisonshuttle.dm | 2 +- code/game/machinery/computer/security.dm | 4 +- code/game/machinery/computer/shuttle.dm | 2 +- code/game/machinery/computer/skills.dm | 2 +- .../machinery/computer/specops_shuttle.dm | 2 +- code/game/machinery/computer/station_alert.dm | 2 +- code/game/machinery/computer/store.dm | 2 +- .../computer/syndicate_specops_shuttle.dm | 2 +- .../machinery/computer/telecrystalconsoles.dm | 4 +- code/game/machinery/kitchen/microwave.dm | 2 +- code/game/machinery/slotmachine.dm | 2 +- code/game/machinery/telecomms/logbrowser.dm | 2 +- code/game/machinery/telecomms/telemonitor.dm | 2 +- .../machinery/telecomms/traffic_control.dm | 2 +- code/game/machinery/teleporter.dm | 2 +- code/game/machinery/vending.dm | 92 +++++++++---------- code/game/mecha/mech_bay.dm | 2 +- code/game/mecha/mecha_control_console.dm | 2 +- code/game/objects/items/random_items.dm | 12 +-- code/game/objects/items/weapons/lighters.dm | 10 +- .../crates_lockers/closets/fireaxe.dm | 2 +- .../crates_lockers/closets/job_closets.dm | 2 +- .../crates_lockers/closets/secure/bar.dm | 2 +- .../crates_lockers/closets/secure/cargo.dm | 4 +- .../closets/secure/engineering.dm | 10 +- .../crates_lockers/closets/secure/freezer.dm | 8 +- .../closets/secure/hydroponics.dm | 2 +- .../crates_lockers/closets/secure/medical.dm | 22 ++--- .../closets/secure/scientist.dm | 6 +- .../crates_lockers/closets/secure/security.dm | 26 +++--- .../structures/crates_lockers/crates.dm | 22 ++--- .../structures/crates_lockers/crittercrate.dm | 2 +- .../structures/crates_lockers/walllocker.dm | 2 +- code/game/objects/structures/flora.dm | 4 +- code/game/supplyshuttle.dm | 4 +- code/game/turfs/simulated/floor_types.dm | 14 +-- code/modules/awaymissions/exile.dm | 4 +- code/modules/clothing/glasses/hud.dm | 14 +-- .../computer3/computers/HolodeckControl.dm | 2 +- code/modules/computer3/computers/camera.dm | 32 +++---- code/modules/computer3/computers/crew.dm | 2 +- code/modules/computer3/computers/law.dm | 4 +- code/modules/computer3/lapvend.dm | 2 +- code/modules/economy/ATM.dm | 2 +- code/modules/library/lib_machines.dm | 6 +- code/modules/mining/laborcamp/laborshuttle.dm | 4 +- code/modules/mining/mine_items.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- .../silicon/robot/drone/drone_console.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 6 +- .../reagents/reagent_containers/dropper.dm | 4 +- .../reagent_containers/food/condiment.dm | 6 +- .../reagent_containers/food/drinks.dm | 26 +++--- .../reagent_containers/food/drinks/bottle.dm | 38 ++++---- code/modules/research/rdconsole.dm | 10 +- code/modules/research/server.dm | 4 +- .../xenoarchaeology/genetics/reconstitutor.dm | 4 +- .../machinery/artifact_analyser.dm | 2 +- .../machinery/artifact_harvester.dm | 2 +- .../machinery/artifact_scanner.dm | 2 +- code/modules/research/xenoarchaeology/misc.dm | 6 +- code/modules/shuttles/antagonist.dm | 14 +-- code/modules/shuttles/departmental.dm | 10 +- code/modules/telesci/telesci_computer.dm | 2 +- code/modules/virus2/centrifuge.dm | 2 +- code/modules/virus2/curer.dm | 2 +- code/modules/virus2/diseasesplicer.dm | 2 +- 92 files changed, 297 insertions(+), 298 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 3df03bebde7..e6731d4ea17 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -10,7 +10,7 @@ name = "air vent" desc = "Has a valve and pump attached to it" use_power = 1 - + can_unwrench = 1 var/area/initial_loc @@ -68,7 +68,7 @@ ..() /obj/machinery/atmospherics/unary/vent_pump/high_volume - name = "Large Air Vent" + name = "large air vent" power_channel = EQUIP /obj/machinery/atmospherics/unary/vent_pump/high_volume/New() @@ -184,7 +184,7 @@ if(frequency != 1439) initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag - name = "Vent Pump" + name = "vent pump" else broadcast_status() @@ -399,4 +399,3 @@ initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag return ..() - \ No newline at end of file diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 41ce133403b..ae432ee7336 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -335,7 +335,7 @@ return 0 /obj/machinery/computer/scan_consolenew - name = "DNA Modifier Access Console" + name = "\improper DNA Modifier access console" desc = "Allows you to scan and modify DNA." icon = 'icons/obj/computer.dmi' icon_screen = "dna" diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 9662358a32f..53e49224c6c 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -1,7 +1,7 @@ /obj/machinery/bodyscanner var/mob/living/carbon/occupant var/locked - name = "Body Scanner" + name = "body scanner" icon = 'icons/obj/Cryogenic2.dmi' icon_state = "bodyscanner-open" density = 1 diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 17ee041e81b..54fd1edeaf3 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -1,5 +1,5 @@ /obj/machinery/ai_slipper - name = "AI Liquid Dispenser" + name = "\improper AI liquid dispenser" icon = 'icons/obj/device.dmi' icon_state = "motion3" layer = 3 diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index fbe43b8095b..97a99e7899d 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -1,7 +1,7 @@ obj/machinery/air_sensor icon = 'icons/obj/stationobjs.dmi' icon_state = "gsensor1" - name = "Gas Sensor" + name = "gas sensor" req_one_access_txt = "24;10" anchored = 1 diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index 948de84f89f..0b1be444c7c 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/area_atmos - name = "Area Air Control" + name = "area air control" desc = "A computer used to control the stationary scrubbers and pumps in the area." icon_screen = "area_atmos" icon_keyboard = "atmos_key" diff --git a/code/game/machinery/bees_items.dm b/code/game/machinery/bees_items.dm index 0a008eb819e..41540788bb7 100644 --- a/code/game/machinery/bees_items.dm +++ b/code/game/machinery/bees_items.dm @@ -29,7 +29,7 @@ /obj/item/weapon/bee_net/verb/empty_bees() set src in usr - set name = "Empty bee net" + set name = "empty bee net" set category = "Object" var/mob/living/carbon/M if(iscarbon(usr)) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index c91fa3a8597..f63f4e333c1 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -1,5 +1,5 @@ /obj/machinery/biogenerator - name = "Biogenerator" + name = "biogenerator" desc = "Converts plants into biomass, which can be used to construct useful items." icon = 'icons/obj/biogenerator.dmi' icon_state = "biogen-empty" diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index bd0da6f8fc2..6f0af9e4923 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/HolodeckControl - name = "Holodeck Control Computer" + name = "holodeck control computer" desc = "A computer used to control a nearby holodeck." icon_keyboard = "tech_key" icon_screen = "holocontrol" diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 1daf3be5714..f3e6de46321 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/operating - name = "Operating Computer" + name = "operating computer" density = 1 anchored = 1.0 icon_keyboard = "med_key" diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index a95627913f0..74ea7609137 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/aifixer - name = "AI System Integrity Restorer" + name = "\improper AI system integrity restorer" icon = 'icons/obj/computer.dmi' icon_keyboard = "rd_key" icon_screen = "ai-fixer" diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 6cbd71cf35a..cecf755b37d 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -5,7 +5,7 @@ var/global/list/minor_air_alarms = list() /obj/machinery/computer/atmos_alert - name = "Atmospheric Alert Computer" + name = "atmospheric alert computer" desc = "Used to access the station's atmospheric sensors." circuit = /obj/item/weapon/circuitboard/atmos_alert icon_keyboard = "atmos_key" diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 3c0b46e6813..197008c40f7 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -12,8 +12,8 @@ var/datum/nano_module/atmos_control/atmos_control /obj/machinery/computer/atmoscontrol/laptop - name = "Atmospherics Laptop" - desc = "Cheap Nanotrasen Laptop." + name = "atmospherics laptop" + desc = "Cheap Nanotrasen laptop." icon_state = "medlaptop" density = 0 diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index c70ac8d37cc..1e6c8c2f5a6 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -280,7 +280,7 @@ // Other computer monitors. /obj/machinery/computer/security/telescreen - name = "Telescreen" + name = "\improper Telescreen" desc = "Used for watching camera networks." icon = 'icons/obj/stationobjs.dmi' icon_state = "telescreen" @@ -295,7 +295,7 @@ return /obj/machinery/computer/security/telescreen/entertainment - name = "Entertainment Monitor" + name = "entertainment monitor" desc = "Damn, they better have Paradise TV on these things." icon = 'icons/obj/status_display.dmi' icon_state = "entertainment" @@ -305,7 +305,7 @@ luminosity = 0 /obj/machinery/computer/security/wooden_tv - name = "Security Camera Monitor" + name = "security camera monitor" desc = "An old TV hooked into the stations camera network." icon_state = "television" icon_keyboard = null @@ -315,7 +315,7 @@ network = list("SS13") /obj/machinery/computer/security/mining - name = "Outpost Camera Monitor" + name = "outpost camera monitor" desc = "Used to access the various cameras on the outpost." icon_keyboard = "mining_key" icon_screen = "mining" @@ -323,7 +323,7 @@ network = list("Mining Outpost") /obj/machinery/computer/security/engineering - name = "Engineering Camera Monitor" + name = "engineering camera monitor" desc = "Used to monitor fires and breaches." icon_keyboard = "power_key" icon_screen = "engie_cams" diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 020969521a1..4e7dd4e28cf 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -3,7 +3,7 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card - name = "Identification Computer" + name = "identification computer" desc = "Terminal for programming Nanotrasen employee ID cards to access parts of the station." icon_keyboard = "id_key" icon_screen = "id" @@ -428,6 +428,6 @@ var/time_last_changed_position = 0 return 1 /obj/machinery/computer/card/centcom - name = "CentCom Identification Computer" + name = "\improper CentCom identification computer" circuit = /obj/item/weapon/circuitboard/card/centcom req_access = list(access_cent_commander) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 6031cce4552..4873fd9ca80 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/cloning - name = "Cloning Console" + name = "cloning console" icon = 'icons/obj/computer.dmi' icon_keyboard = "med_key" icon_screen = "dna" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 44e6d95de53..2f064f238a9 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -34,7 +34,7 @@ var/shuttle_call/shuttle_calls[0] // The communications computer /obj/machinery/computer/communications - name = "Communications Console" + name = "communications console" desc = "This can be used for various important functions. Still under developement." icon_keyboard = "tech_key" icon_screen = "comm" diff --git a/code/game/machinery/computer/hologram.dm b/code/game/machinery/computer/hologram.dm index bfd95d46457..2b5f0b92296 100644 --- a/code/game/machinery/computer/hologram.dm +++ b/code/game/machinery/computer/hologram.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/hologram_comp - name = "Hologram Computer" + name = "hologram computer" desc = "Rumoured to control holograms." icon = 'icons/obj/stationobjs.dmi' icon_keyboard = "tech_key" diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm index 0b31b365033..06e5d102fb2 100644 --- a/code/game/machinery/computer/honkputer.dm +++ b/code/game/machinery/computer/honkputer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/HONKputer - name = "HONKputer Mark I" + name = "\improper HONKputer Mark I" desc = "A yellow computer used in case of critically low levels of HONK." icon = 'icons/obj/machines/HONKputer.dmi' icon_state = "honkputer" diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 383c01a519f..f3ddbe5bb0d 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/aiupload - name = "AI Upload" + name = "\improper AI upload console" desc = "Used to upload laws to the AI." icon_screen = "command" icon_keyboard = "med_key" @@ -64,7 +64,7 @@ return 1 /obj/machinery/computer/borgupload - name = "Cyborg Upload" + name = "cyborg upload console" desc = "Used to upload laws to Cyborgs." icon_screen = "command" icon_keyboard = "med_key" diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 5c47e0f923f..2e1853c598f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/med_data//TODO:SANITY - name = "Medical Records" + name = "medical records console" desc = "This can be used to check medical records." icon_keyboard = "med_key" icon_screen = "medcomp" @@ -517,8 +517,8 @@ /obj/machinery/computer/med_data/laptop - name = "Medical Laptop" - desc = "Cheap Nanotrasen Laptop." + name = "medical laptop" + desc = "Cheap Nanotrasen laptop." icon_state = "laptop" icon_keyboard = "laptop_key" icon_screen = "medlaptop" diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index e8a975d27b1..0ebb13efcd6 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -5,8 +5,8 @@ /obj/machinery/computer/message_monitor - name = "Message Monitor Console" - desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." + name = "message monitoring console" + desc = "Used to monitor the crew's messages that are sent via PDA. It can also be used to view Request Console messages." icon_screen = "comm_logs" light_color = LIGHT_COLOR_GREEN var/hack_icon = "tcboss" diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index a34db3d1526..20509af301d 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,8 +1,8 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/pod - name = "Mass Drivers and Pod Doors Control" - desc = "A controll for launching pods. Some people prefer firing Mechas." + name = "mass drivers and pod doors control" + desc = "A control for launching pods. Some people prefer firing Mechas." icon_screen = "mass_driver" light_color = "#555555" circuit = /obj/item/weapon/circuitboard/pod @@ -268,7 +268,7 @@ /obj/machinery/computer/pod/old/syndicate - name = "External Airlock Controls" + name = "external airlock controls" desc = "The Syndicate operate on a tight budget. Operates external airlocks." req_access = list(access_syndicate) circuit = /obj/item/weapon/circuitboard/syndicatedoor @@ -282,7 +282,7 @@ ..() /obj/machinery/computer/pod/old/swf - name = "Magix System IV" + name = "\improper Magix System IV" desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" circuit = /obj/item/weapon/circuitboard/swfdoor @@ -315,7 +315,7 @@ P.failchance = 0//So it has no fail chance when teleporting. P.target = pick(spawn_marauder)//Where the marauder will arrive. spawn_marauder.Remove(P.target) - + for(var/obj/machinery/door/poddoor/M in world) if(M.z != src.z) continue if(M.id_tag == ident_tag) diff --git a/code/game/machinery/computer/pod_tracking_console.dm b/code/game/machinery/computer/pod_tracking_console.dm index 060b58eda90..5ac31a0f567 100644 --- a/code/game/machinery/computer/pod_tracking_console.dm +++ b/code/game/machinery/computer/pod_tracking_console.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/podtracker - name = "Pod Tracking Console" + name = "pod tracking console" icon = 'icons/obj/computer.dmi' icon_keyboard = "tech_key" icon_screen = "rdcomp" @@ -9,10 +9,10 @@ /obj/machinery/computer/podtracker/attack_ai(var/mob/user as mob) return attack_hand(user) - + /obj/machinery/computer/podtracker/attack_hand(user as mob) ui_interact(user) - + /obj/machinery/computer/podtracker/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/data[0] var/list/pods[0] @@ -28,7 +28,7 @@ if(myPod.occupant2) occupant2 = myPod.occupant2.name pods.Add(list(list("pod" = "\ref[myPod]", "name" = podname, "occupant" = occupant, "occupant2" = occupant2, "x" = myPod.x, "y" = myPod.y, "z" = myPod.z))) - + data["pods"] = pods ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -42,6 +42,6 @@ /obj/machinery/computer/podtracker/Topic(href, href_list) if(..()) return 1 - + if(href_list["refresh"]) nanomanager.update_uis(src) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index ac5d15fc392..6c67ddd71cc 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/prisoner - name = "Prisoner Management" + name = "prisoner management console" icon = 'icons/obj/computer.dmi' icon_keyboard = "security_key" icon_screen = "explosive" diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 3e860928ef9..4a70b1f74f2 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -11,7 +11,7 @@ var/prison_shuttle_time = 0 var/prison_shuttle_timeleft = 0 /obj/machinery/computer/prison_shuttle - name = "Prison Shuttle Console" + name = "prison shuttle console" icon = 'icons/obj/computer.dmi' icon_keyboard = "security_key" icon_screen = "syndishuttle" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 017702d67fa..9498a070d98 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -1,8 +1,8 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/secure_data//TODO:SANITY - name = "Security Records" - desc = "Used to view and edit personnel's security records" + name = "security records" + desc = "Used to view and edit personnel's security records." icon_keyboard = "security_key" icon_screen = "security" req_one_access = list(access_security, access_forensics_lockers) diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 28125a24c96..c2dcd3270a0 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/shuttle - name = "Shuttle" + name = "shuttle control conse" desc = "For shuttle control." icon_keyboard = "tech_key" icon_screen = "shuttle" diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index a2adae97cf3..3dc5a599a6e 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/skills//TODO:SANITY - name = "Employment Records" + name = "employment records console" desc = "Used to view personnel's employment records" icon_state = "laptop" icon_keyboard = "laptop_key" diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index 6bd58e74e4f..5d7c67d29ee 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -12,7 +12,7 @@ var/specops_shuttle_time = 0 var/specops_shuttle_timeleft = 0 /obj/machinery/computer/specops_shuttle - name = "Spec. Ops. Shuttle Console" + name = "\improper Spec. Ops. shuttle console" icon = 'icons/obj/computer.dmi' icon_keyboard = "security_key" icon_screen = "syndishuttle" diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 9f1238c56d2..c40e7968145 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/station_alert - name = "Station Alert Console" + name = "station alert console" desc = "Used to access the station's automated alert system." icon_keyboard = "tech_key" icon_screen = "alert:0" diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm index 5beab8b5d1e..001578d1fcd 100644 --- a/code/game/machinery/computer/store.dm +++ b/code/game/machinery/computer/store.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/merch - name = "Merch Computer" + name = "merch computer" icon = 'icons/obj/computer.dmi' icon_screen = "comm_logs" circuit = /obj/item/weapon/circuitboard/merch diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index a0bcff2139a..76d7bf83a6a 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -11,7 +11,7 @@ var/syndicate_elite_shuttle_time = 0 var/syndicate_elite_shuttle_timeleft = 0 /obj/machinery/computer/syndicate_elite_shuttle - name = "Elite Syndicate Squad Shuttle Console" + name = "\improper Elite Syndicate Squad shuttle console" icon = 'icons/obj/computer.dmi' icon_keyboard = "syndie_key" icon_screen = "syndishuttle" diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 84b99e4dfe5..d154a09b02e 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -4,12 +4,12 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F /obj/machinery/computer/telecrystals - name = "\improper Telecrystal assignment station" + name = "telecrystal assignment station" desc = "A device used to manage telecrystals during group operations. You shouldn't be looking at this particular one..." ///////////////////////////////////////////// /obj/machinery/computer/telecrystals/uplinker - name = "\improper Telecrystal upload/recieve station" + name = "telecrystal upload/recieve station" desc = "A device used to manage telecrystals during group operations. To use, simply insert your uplink. With your uplink installed \ you can upload your telecrystals to the group's pool using the console, or be assigned additional telecrystals by your lieutenant." icon_state = "tcstation" diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 988edaf8580..e560f12e8db 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -1,6 +1,6 @@ /obj/machinery/kitchen_machine/microwave - name = "Microwave" + name = "microwave" desc = "A microwave, perfect for reheating things with radiation." icon = 'icons/obj/kitchen.dmi' icon_state = "mw" diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index 54355179c8e..192d2355656 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -1,6 +1,6 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0) /obj/machinery/slot_machine - name = "Slot Machine" + name = "slot machine" desc = "Gambling for the antisocial." icon = 'icons/obj/objects.dmi' icon_state = "slots-off" diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 9bc3e77fa1e..a16bbe7b870 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -4,7 +4,7 @@ light_color = LIGHT_COLOR_DARKGREEN /obj/machinery/computer/telecomms/server - name = "Telecommunications Server Monitor" + name = "telecommunications server monitor" icon_screen = "comm_logs" diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 1bd424c0142..f966f477057 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -8,7 +8,7 @@ /obj/machinery/computer/telecomms/monitor - name = "Telecommunications Monitor" + name = "telecommunications monitor" icon_screen = "comm_monitor" var/screen = 0 // the screen number: diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 6e93ab8b7c6..878f39b0394 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/telecomms/traffic - name = "Telecommunications Traffic Control" + name = "telecommunications traffic control" var/screen = 0 // the screen number: var/list/servers = list() // the servers located by the computer diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index d0b62cef441..2df044d7e8a 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/teleporter - name = "Teleporter Control Console" + name = "teleporter control console" desc = "Used to control a linked teleportation Hub and Station." icon_screen = "teleport" icon_keyboard = "teleport_key" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index eddbff40b5f..8d414c2168a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -35,7 +35,7 @@ * A vending machine */ /obj/machinery/vending - name = "Vendomat" + name = "\improper Vendomat" desc = "A generic vending machine." icon = 'icons/obj/vending.dmi' icon_state = "generic" @@ -697,7 +697,7 @@ /* /obj/machinery/vending/atmospherics //Commenting this out until someone ponies up some actual working, broken, and unpowered sprites - Quarxink - name = "Tank Vendor" + name = "\improper Tank Vendor" desc = "A vendor with a wide variety of masks and gas tanks." icon = 'icons/obj/objects.dmi' icon_state = "dispenser" @@ -707,7 +707,7 @@ */ /obj/machinery/vending/boozeomat - name = "Booze-O-Mat" + name = "\improper Booze-O-Mat" desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles icon_deny = "boozeomat-deny" @@ -743,7 +743,7 @@ component_parts += new /obj/item/weapon/vending_refill/boozeomat(0) /obj/machinery/vending/coffee - name = "Hot Drinks machine" + name = "\improper Hot Drinks machine" desc = "A vending machine which dispenses hot drinks." product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies" icon_state = "coffee" @@ -767,8 +767,8 @@ component_parts += new /obj/item/weapon/vending_refill/coffee(0) /obj/machinery/vending/snack - name = "Getmore Chocolate Corp" - desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" + name = "\improper Getmore Chocolate Corp" + desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars." product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" @@ -792,8 +792,8 @@ component_parts += new /obj/item/weapon/vending_refill/snack(0) /obj/machinery/vending/chinese - name = "Mr. Chang" - desc = "A self-serving chinese food machine, for all your chinese food needs." + name = "\improper Mr. Chang" + desc = "A self-serving Chinese food machine, for all your Chinese food needs." product_slogans = "Taste 5000 years of culture!" icon_state = "snack" products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 5, @@ -802,8 +802,8 @@ /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 50) /obj/machinery/vending/cola - name = "Robust Softdrinks" - desc = "A softdrink vendor provided by Robust Industries, LLC." + name = "\improper Robust Softdrinks" + desc = "A soft drink vendor provided by Robust Industries, LLC." icon_state = "Cola_Machine" product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!" product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space." @@ -829,8 +829,8 @@ //This one's from bay12 /obj/machinery/vending/cart - name = "PTech" - desc = "Cartridges for PDAs" + name = "\improper PTech" + desc = "Cartridges for PDA's." product_slogans = "Carts to go!" icon_state = "cart" icon_deny = "cart-deny" @@ -859,8 +859,8 @@ contraband = list(/obj/item/clothing/under/patriotsuit = 1,/obj/item/weapon/bedsheet/patriot = 3) /obj/machinery/vending/cigarette - name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating - desc = "If you want to get cancer, might as well do it in style" + name = "cigarette machine" + desc = "If you want to get cancer, might as well do it in style." product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!" product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs." vend_delay = 34 @@ -882,7 +882,7 @@ component_parts += new /obj/item/weapon/vending_refill/cigarette(0) /obj/machinery/vending/medical - name = "NanoMed Plus" + name = "\improper NanoMed Plus" desc = "Medical drug dispenser." icon_state = "med" icon_deny = "med-deny" @@ -898,7 +898,7 @@ //This one's from bay12 /obj/machinery/vending/plasmaresearch - name = "Toximate 3000" + name = "\improper Toximate 3000" desc = "All the fine parts you need in one vending machine!" products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6, /obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6, @@ -906,7 +906,7 @@ contraband = list(/obj/item/device/assembly/health = 3) /obj/machinery/vending/wallmed1 - name = "NanoMed" + name = "\improper NanoMed" desc = "Wall-mounted Medical Equipment dispenser." product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?" icon_state = "wallmed" @@ -917,7 +917,7 @@ contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1) /obj/machinery/vending/wallmed2 - name = "NanoMed" + name = "\improper NanoMed" desc = "Wall-mounted Medical Equipment dispenser." icon_state = "wallmed" icon_deny = "wallmed-deny" @@ -928,7 +928,7 @@ contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3) /obj/machinery/vending/wallmed1/syndicate - name = "SyndiMed Plus" + name = "\improper SyndiMed Plus" desc = "EVIL wall-mounted Medical Equipment dispenser." icon_state = "syndimed" icon_deny = "syndimed-deny" @@ -938,8 +938,8 @@ contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1) /obj/machinery/vending/security - name = "SecTech" - desc = "A security equipment vendor" + name = "\improper SecTech" + desc = "A security equipment vendor." product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" icon_state = "sec" icon_deny = "sec-deny" @@ -949,7 +949,7 @@ contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2,/obj/item/device/hailer = 5) /obj/machinery/vending/hydronutrients - name = "NutriMax" + name = "\improper NutriMax" desc = "A plant nutrients vendor" product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!" product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." @@ -962,7 +962,7 @@ ///obj/item/beezeez = 45, /obj/machinery/vending/hydroseeds - name = "MegaSeed Servitor" + name = "\improper MegaSeed Servitor" desc = "When you need seeds fast!" product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!" product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!" @@ -1007,7 +1007,7 @@ src.product_records.Add(product) /obj/machinery/vending/magivend - name = "MagiVend" + name = "\improper MagiVend" desc = "A magic vending machine." icon_state = "MagiVend" product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!" @@ -1056,8 +1056,8 @@ component_parts += new /obj/item/weapon/vending_refill/autodrobe(0) /obj/machinery/vending/dinnerware - name = "Dinnerware" - desc = "A kitchen and restaurant equipment vendor" + name = "\improper Dinnerware" + desc = "A kitchen and restaurant equipment vendor." product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6, @@ -1072,15 +1072,15 @@ contraband = list(/obj/item/weapon/kitchen/utensil/spoon = 2,/obj/item/weapon/kitchen/utensil/knife = 2,/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/butch = 2) /obj/machinery/vending/sovietsoda - name = "BODA" - desc = "Old sweet water vending machine" + name = "\improper BODA" + desc = "Old sweet water vending machine." icon_state = "sovietsoda" product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." products = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda = 30) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola = 20) /obj/machinery/vending/tool - name = "YouTool" + name = "\improper YouTool" desc = "Tools for tools." icon_state = "tool" icon_deny = "tool-deny" @@ -1091,7 +1091,7 @@ premium = list(/obj/item/clothing/gloves/color/yellow = 1) /obj/machinery/vending/engivend - name = "Engi-Vend" + name = "\improper Engi-Vend" desc = "Spare tool vending. What? Did you expect some witty description?" icon_state = "engivend" icon_deny = "engivend-deny" @@ -1102,7 +1102,7 @@ //This one's from bay12 /obj/machinery/vending/engineering - name = "Robco Tool Maker" + name = "\improper Robco Tool Maker" desc = "Everything you need for do-it-yourself station repair." icon_state = "engi" icon_deny = "engi-deny" @@ -1119,7 +1119,7 @@ //This one's from bay12 /obj/machinery/vending/robotics - name = "Robotech Deluxe" + name = "\improper Robotech Deluxe" desc = "All the tools you need to create your own robot army." icon_state = "robotics" icon_deny = "robotics-deny" @@ -1132,7 +1132,7 @@ /obj/machinery/vending/eva - name = "Hardsuit Kits" + name = "\improper Hardsuit Kits" desc = "Conversion kits for your alien hardsuit needs." products = list(/obj/item/device/modkit = 6,/obj/item/device/modkit/tajaran = 6,/obj/item/device/modkit/unathi = 6,/obj/item/device/modkit/skrell = 6,/obj/item/device/modkit/vox = 6) @@ -1149,20 +1149,20 @@ contraband = list(/obj/item/weapon/kitchen/utensil/knife = 6) /obj/machinery/vending/hatdispenser - name = "Hatlord 9000" - desc = "It doesn't seem the slightist bit unusual. This frustrates you immensly." + name = "\improper Hatlord 9000" + desc = "It doesn't seem the slightest bit unusual. This frustrates you immensely." icon_state = "hats" - product_ads = "Warning, not all hats are dog/monkey compatable. Apply forcefully with care.;Apply directly to the forehead.;Who doesn't love spending cash on hats?!;From the people that brought you collectable hat crates, Hatlord!" + product_ads = "Warning, not all hats are dog/monkey compatible. Apply forcefully with care.;Apply directly to the forehead.;Who doesn't love spending cash on hats?!;From the people that brought you collectable hat crates, Hatlord!" products = list(/obj/item/clothing/head/bowlerhat = 10,/obj/item/clothing/head/beaverhat = 10,/obj/item/clothing/head/boaterhat = 10,/obj/item/clothing/head/fedora = 10,/obj/item/clothing/head/fez = 10) contraband = list(/obj/item/clothing/head/bearpelt = 5) premium = list(/obj/item/clothing/head/soft/rainbow = 1) refill_canister = /obj/item/weapon/vending_refill/hatdispenser /obj/machinery/vending/suitdispenser - name = "Suitlord 9000" + name = "\improper Suitlord 9000" desc = "You wonder for a moment why all of your shirts and pants come conjoined. This hurts your head and you stop thinking about it." icon_state = "suits" - product_ads = "Pre-Ironed, Pre-Washed, Pre-Wor-*BZZT*;Blood of your enemys washes right out!;Who are YOU wearing?;Look dapper! Look like an idiot!;Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*" + product_ads = "Pre-Ironed, Pre-Washed, Pre-Wor-*BZZT*;Blood of your enemies washes right out!;Who are YOU wearing?;Look dapper! Look like an idiot!;Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*" products = list(/obj/item/clothing/under/color/black = 10,/obj/item/clothing/under/color/blue = 10,/obj/item/clothing/under/color/green = 10,/obj/item/clothing/under/color/grey = 10,/obj/item/clothing/under/color/pink = 10,/obj/item/clothing/under/color/red = 10, /obj/item/clothing/under/color/white = 10, /obj/item/clothing/under/color/yellow = 10,/obj/item/clothing/under/color/lightblue = 10,/obj/item/clothing/under/color/aqua = 10,/obj/item/clothing/under/color/purple = 10,/obj/item/clothing/under/color/lightgreen = 10, /obj/item/clothing/under/color/lightblue = 10,/obj/item/clothing/under/color/lightbrown = 10,/obj/item/clothing/under/color/brown = 10,/obj/item/clothing/under/color/yellowgreen = 10,/obj/item/clothing/under/color/darkblue = 10,/obj/item/clothing/under/color/lightred = 10, /obj/item/clothing/under/color/darkred = 10) @@ -1171,8 +1171,8 @@ refill_canister = /obj/item/weapon/vending_refill/suitdispenser /obj/machinery/vending/shoedispenser - name = "Shoelord 9000" - desc = "Wow, hatlord looked fancy, suitlord looked streamlined, and this is just normal. The guy who disigned these must be an idiot." + name = "\improper Shoelord 9000" + desc = "Wow, hatlord looked fancy, suitlord looked streamlined, and this is just normal. The guy who designed these must be an idiot." icon_state = "shoes" product_ads = "Put your foot down!;One size fits all!;IM WALKING ON SUNSHINE!;No hobbits allowed.;NO PLEASE WILLY, DONT HURT ME- *BZZT*" products = list(/obj/item/clothing/shoes/black = 10,/obj/item/clothing/shoes/brown = 10,/obj/item/clothing/shoes/blue = 10,/obj/item/clothing/shoes/green = 10,/obj/item/clothing/shoes/yellow = 10,/obj/item/clothing/shoes/purple = 10,/obj/item/clothing/shoes/red = 10,/obj/item/clothing/shoes/white = 10,/obj/item/clothing/shoes/sandal=10) @@ -1181,7 +1181,7 @@ refill_canister = /obj/item/weapon/vending_refill/shoedispenser /obj/machinery/vending/syndicigs - name = "Suspicious Cigarette Machine" + name = "\improper Suspicious Cigarette Machine" desc = "Smoke 'em if you've got 'em." product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!" product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs." @@ -1190,7 +1190,7 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes/syndicate = 10,/obj/item/weapon/lighter/random = 5) /obj/machinery/vending/syndisnack - name = "Getmore Chocolate Corp" + name = "\improper Getmore Chocolate Corp" desc = "A modified snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" @@ -1202,7 +1202,7 @@ //This one's from NTstation //don't forget to change the refill size if you change the machine's contents! /obj/machinery/vending/clothing - name = "ClothesMate" //renamed to make the slogan rhyme + name = "\improper ClothesMate" //renamed to make the slogan rhyme desc = "A vending machine for clothing." icon_state = "clothes" product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!" @@ -1239,7 +1239,7 @@ component_parts += new /obj/item/weapon/vending_refill/clothing(0) /obj/machinery/vending/artvend - name = "ArtVend" + name = "\improper ArtVend" desc = "A vending machine for art supplies." product_slogans = "Stop by for all your artistic needs!;Color the floors with crayons, not blood!;Don't be a starving artist, use ArtVend. ;Don't fart, do art!" product_ads = "Just like Kindergarten!;Now with 1000% more vibrant colors!;Screwing with the janitor was never so easy!;Creativity is at the heart of every spessman." @@ -1254,7 +1254,7 @@ premium = list(/obj/item/weapon/contraband/poster = 5) /obj/machinery/vending/crittercare - name = "CritterCare" + name = "\improper CritterCare" desc = "A vending machine for pet supplies." product_slogans = "Stop by for all your animal's needs!;Cuddly pets deserve a stylish collar!;Pets in space, what could be more adorable?;Freshest fish eggs in the system!;Rocks are the perfect pet, buy one today!" product_ads = "House-training costs extra!;Now with 1000% more cat hair!;Allergies are a sign of weakness!;Dogs are man's best friend. Remember that Vulpkanin!; Heat lamps for Unathi!; Vox-y want a cracker?" @@ -1282,4 +1282,4 @@ component_parts += V component_parts += new /obj/item/weapon/vending_refill/crittercare(0) component_parts += new /obj/item/weapon/vending_refill/crittercare(0) - component_parts += new /obj/item/weapon/vending_refill/crittercare(0) \ No newline at end of file + component_parts += new /obj/item/weapon/vending_refill/crittercare(0) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index f50bc1327dd..7a01a53a8b9 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -198,7 +198,7 @@ return /obj/machinery/computer/mech_bay_power_console - name = "Mech Bay Power Control Console" + name = "mech bay power control console" density = 1 anchored = 1 icon = 'icons/obj/computer.dmi' diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index f85a1586d26..6cc31ad8136 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/mecha - name = "Exosuit Control" + name = "exosuit control console" icon = 'icons/obj/computer.dmi' icon_keyboard = "rd_key" icon_screen = "mecha" diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index b08245b010f..9aa4263859a 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -27,7 +27,7 @@ /obj/item/stack/sheet/animalhide/random - name = "Random animal hide" + name = "random animal hide" New() ..() spawn(1) @@ -80,7 +80,7 @@ name = "unlabelled bottle" pixel_x = rand(-10,10) pixel_y = rand(-10,10) - + /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink name = "unlabelled drink" icon = 'icons/obj/drinks.dmi' @@ -96,7 +96,7 @@ icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red") pixel_x = rand(-5,5) pixel_y = rand(-5,5) - + /obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container name = "unlabelled drink?" icon = 'icons/obj/drinks.dmi' @@ -146,7 +146,7 @@ // ------------------------------------- /obj/structure/closet/crate/secure/unknownchemicals - name = "Grey-market Chemicals Grab Pack" + name = "grey-market chemicals grab pack" desc = "Crate full of chemicals of unknown type and value from a 'trusted' source." req_one_access = list(access_chemistry,access_research,access_qm) // the qm knows a guy, you see. @@ -172,7 +172,7 @@ return /obj/structure/closet/crate/secure/chemicals - name = "Chemical Supply Kit" + name = "chemical supply kit" desc = "Full of basic chemistry supplies." req_one_access = list(access_chemistry,access_research) @@ -229,7 +229,7 @@ */ /obj/structure/closet/secure_closet/random_drinks - name = "Unlabelled Booze" + name = "unlabelled booze closet" req_access = list(access_bar) icon_state = "cabinetdetective_locked" icon_closed = "cabinetdetective" diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index 31df6806d10..d40799ef1b9 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -17,7 +17,7 @@ var/lit = 0 /obj/item/weapon/lighter/zippo - name = "Zippo lighter" + name = "zippo lighter" desc = "The zippo." icon_state = "zippo" item_state = "zippo" @@ -101,7 +101,7 @@ icon_state = "zippo_nt_off" icon_on = "zippo_nt_on" icon_off = "zippo_nt_off" - + /obj/item/weapon/lighter/zippo/blue name = "blue zippo lighter" desc = "A zippo lighter made of some blue metal." @@ -109,20 +109,20 @@ icon_on = "bluezippoon" icon_off = "bluezippo" -/obj/item/weapon/lighter/zippo/black +/obj/item/weapon/lighter/zippo/black name = "black zippo lighter" desc = "A black zippo lighter." icon_state = "blackzippo" icon_on = "blackzippoon" icon_off = "blackzippo" -/obj/item/weapon/lighter/zippo/engraved +/obj/item/weapon/lighter/zippo/engraved name = "engraved zippo lighter" desc = "A intricately engraved zippo lighter." icon_state = "engravedzippo" icon_on = "engravedzippoon" icon_off = "engravedzippo" - + /obj/item/weapon/lighter/zippo/gonzofist name = "Gonzo Fist zippo" desc = "A Zippo lighter with the iconic Gonzo Fist on a matte black finish." diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index 22ea8981563..82897dfe61a 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -1,6 +1,6 @@ //I still dont think this should be a closet but whatever /obj/structure/closet/fireaxecabinet - name = "Fire Axe Cabinet" + name = "fire axe cabinet" desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." var/obj/item/weapon/twohanded/fireaxe/fireaxe = new/obj/item/weapon/twohanded/fireaxe icon_state = "fireaxe1000" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 05f0b653e13..908a8dc26c4 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -120,7 +120,7 @@ //Paramedic /obj/structure/closet/paramedic - name = "Paramedic Wardrobe" + name = "paramedic wardrobe" desc = "It's a storage unit for paramedic equipment." icon_state = "blue" icon_closed = "blue" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index 95ac7f0c949..38321723e2a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/bar - name = "Booze" + name = "Booze cabinet" req_access = list(access_bar) icon_state = "cabinetdetective_locked" icon_closed = "cabinetdetective" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index c410617775c..e7d23c4a795 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/cargotech - name = "Cargo Technician's Locker" + name = "cargo technician's locker" req_access = list(access_cargo) icon_state = "securecargo1" icon_closed = "securecargo" @@ -20,7 +20,7 @@ return /obj/structure/closet/secure_closet/quartermaster - name = "Quartermaster's Locker" + name = "quartermaster's locker" req_access = list(access_qm) icon_state = "secureqm1" icon_closed = "secureqm" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 7dcc838b66f..0ce79c29b17 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/engineering_chief - name = "Chief Engineer's Locker" + name = "chief engineer's locker" req_access = list(access_ce) icon_state = "securece1" icon_closed = "securece" @@ -35,7 +35,7 @@ return /obj/structure/closet/secure_closet/engineering_electrical - name = "Electrical Supplies" + name = "electrical supplies locker" req_access = list(access_engine_equip) icon_state = "secureengelec1" icon_closed = "secureengelec" @@ -65,7 +65,7 @@ /obj/structure/closet/secure_closet/engineering_welding - name = "Welding Supplies" + name = "welding supplies locker" req_access = list(access_engine_equip) icon_state = "secureengweld1" icon_closed = "secureengweld" @@ -89,7 +89,7 @@ /obj/structure/closet/secure_closet/engineering_personal - name = "Engineer's Locker" + name = "engineer's locker" req_access = list(access_engine_equip) icon_state = "secureeng1" icon_closed = "secureeng" @@ -119,7 +119,7 @@ return /obj/structure/closet/secure_closet/atmos_personal - name = "Technician's Locker" + name = "technician's locker" req_access = list(access_atmospherics) icon_state = "secureeng1" icon_closed = "secureeng" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index ef44ad76adc..9342b704087 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -24,7 +24,7 @@ return /obj/structure/closet/secure_closet/freezer/kitchen - name = "Kitchen Cabinet" + name = "kitchen cabinet" req_access = list(access_kitchen) New() @@ -43,7 +43,7 @@ /obj/structure/closet/secure_closet/freezer/meat - name = "Meat Fridge" + name = "meat fridge" icon_state = "fridge1" icon_closed = "fridge" icon_locked = "fridge1" @@ -62,7 +62,7 @@ /obj/structure/closet/secure_closet/freezer/fridge - name = "Refrigerator" + name = "refrigerator" icon_state = "fridge1" icon_closed = "fridge" icon_locked = "fridge1" @@ -85,7 +85,7 @@ /obj/structure/closet/secure_closet/freezer/money - name = "Freezer" + name = "freezer" icon_state = "fridge1" icon_closed = "fridge" icon_locked = "fridge1" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index fa15c6926e2..c661f3bead0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/hydroponics - name = "Botanist's locker" + name = "botanist's locker" req_access = list(access_hydroponics) icon_state = "hydrosecure1" icon_closed = "hydrosecure" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index a2bc3cc0f80..2de9a2adf45 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/medical1 - name = "Medicine Closet" + name = "medicine closet" desc = "Filled with medical junk." icon_state = "medical1" icon_closed = "medical" @@ -28,7 +28,7 @@ /obj/structure/closet/secure_closet/medical2 - name = "Anesthetic" + name = "anesthetic locker" desc = "Used to knock people out." icon_state = "medical1" icon_closed = "medical" @@ -53,7 +53,7 @@ /obj/structure/closet/secure_closet/medical3 - name = "Medical Doctor's Locker" + name = "medical doctor's locker" req_access = list(access_surgery) icon_state = "securemed1" icon_closed = "securemed" @@ -82,7 +82,7 @@ //Exam Room /obj/structure/closet/secure_closet/exam - name = "Exam Room Closet" + name = "exam room closet" desc = "Filled with exam room materials." icon_state = "medical1" icon_closed = "medical" @@ -126,7 +126,7 @@ new /obj/item/weapon/reagent_containers/pill/methamphetamine(src) /obj/structure/closet/secure_closet/psychiatrist - name = "Psychiatrist's Locker" + name = "psychiatrist's locker" req_access = list(access_psychiatrist) icon_state = "securemed1" icon_closed = "securemed" @@ -146,7 +146,7 @@ return /obj/structure/closet/secure_closet/CMO - name = "Chief Medical Officer's Locker" + name = "chief medical officer's locker" req_access = list(access_cmo) icon_state = "cmosecure1" icon_closed = "cmosecure" @@ -190,7 +190,7 @@ /obj/structure/closet/secure_closet/animal - name = "Animal Control" + name = "animal control locker" req_access = list(access_surgery) @@ -206,7 +206,7 @@ /obj/structure/closet/secure_closet/chemical - name = "Chemical Closet" + name = "chemical closet" desc = "Store dangerous chemicals in here." icon_state = "medical1" icon_closed = "medical" @@ -225,7 +225,7 @@ return /obj/structure/closet/secure_closet/medical_wall - name = "First Aid Closet" + name = "first aid closet" desc = "It's a secure wall-mounted storage unit for first aid supplies." icon_state = "medical_wall_locked" icon_closed = "medical_wall_unlocked" @@ -251,7 +251,7 @@ icon_state = icon_opened /obj/structure/closet/secure_closet/paramedic - name = "Paramedic EVA gear" + name = "paramedic EVA gear" desc = "A locker with a Paramedic EVA suit." icon_state = "medical1" icon_closed = "medical" @@ -272,7 +272,7 @@ return /obj/structure/closet/secure_closet/reagents - name = "Chemical Storage Closet" + name = "chemical storage closet" desc = "Store dangerous chemicals in here." icon_state = "chemical1" icon_closed = "chemical" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index c97e60a07e1..01526c99976 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/scientist - name = "Scientist's Locker" + name = "scientist's locker" req_access = list(access_tox_storage) icon_state = "secureres1" icon_closed = "secureres" @@ -25,7 +25,7 @@ /obj/structure/closet/secure_closet/RD - name = "Research Director's Locker" + name = "research director's locker" req_access = list(access_rd) icon_state = "rdsecure1" icon_closed = "rdsecure" @@ -53,7 +53,7 @@ return /obj/structure/closet/secure_closet/research_reagents - name = "Research Chemical Storage Closet" + name = "research chemical storage closet" desc = "Store dangerous chemicals in here." icon_state = "rchemical1" icon_closed = "rchemical" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 6b2da40c7f5..31c67ddc9b5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -1,5 +1,5 @@ /obj/structure/closet/secure_closet/captains - name = "Captain's Locker" + name = "captain's locker" req_access = list(access_captain) icon_state = "capsecure1" icon_closed = "capsecure" @@ -32,7 +32,7 @@ /obj/structure/closet/secure_closet/hop - name = "Head of Personnel's Locker" + name = "head of personnel's locker" req_access = list(access_hop) icon_state = "hopsecure1" icon_closed = "hopsecure" @@ -58,7 +58,7 @@ return /obj/structure/closet/secure_closet/hop2 - name = "Head of Personnel's Attire" + name = "head of personnel's attire" req_access = list(access_hop) icon_state = "hopsecure1" icon_closed = "hopsecure" @@ -87,7 +87,7 @@ /obj/structure/closet/secure_closet/hos - name = "Head of Security's Locker" + name = "head of security's locker" req_access = list(access_hos) icon_state = "hossecure1" icon_closed = "hossecure" @@ -126,7 +126,7 @@ /obj/structure/closet/secure_closet/warden - name = "Warden's Locker" + name = "warden's locker" req_access = list(access_armory) icon_state = "wardensecure1" icon_closed = "wardensecure" @@ -166,7 +166,7 @@ /obj/structure/closet/secure_closet/security - name = "Security Officer's Locker" + name = "security officer's locker" req_access = list(access_security) icon_state = "sec1" icon_closed = "sec" @@ -197,7 +197,7 @@ return /obj/structure/closet/secure_closet/brigdoc - name = "Brig Physician's Locker" + name = "brig physician's locker" req_access = list(access_security) icon_state = "securemed1" icon_closed = "securemed" @@ -227,7 +227,7 @@ return /obj/structure/closet/secure_closet/blueshield - name = "Blueshield's Locker" + name = "blueshield's locker" req_access = list(access_blueshield) icon_state = "bssecure1" icon_closed = "bssecure" @@ -258,7 +258,7 @@ return /obj/structure/closet/secure_closet/ntrep - name = "Nanotrasen Representative's Locker" + name = "\improper Nanotrasen Representative's locker" req_access = list(access_ntrep) icon_state = "ntsecure1" icon_closed = "ntsecure" @@ -317,7 +317,7 @@ /obj/structure/closet/secure_closet/detective - name = "Detective's Cabinet" + name = "detective's cabinet" req_access = list(access_forensics_lockers) icon_state = "cabinetdetective_locked" icon_closed = "cabinetdetective" @@ -361,7 +361,7 @@ icon_state = icon_opened /obj/structure/closet/secure_closet/injection - name = "Lethal Injections" + name = "lethal injections locker" req_access = list(access_captain) @@ -375,7 +375,7 @@ /obj/structure/closet/secure_closet/brig - name = "Brig Locker" + name = "brig locker" req_access = list(access_brig) anchored = 1 var/id = null @@ -388,7 +388,7 @@ /obj/structure/closet/secure_closet/courtroom - name = "Courtroom Locker" + name = "courtroom locker" req_access = list(access_court) New() diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index fad18f5e176..7e37c7a8988 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -347,14 +347,14 @@ /obj/structure/closet/crate/internals desc = "A internals crate." - name = "Internals crate" + name = "internals crate" icon_state = "o2crate" icon_opened = "o2crateopen" icon_closed = "o2crate" /obj/structure/closet/crate/trashcart desc = "A heavy, metal trashcart with wheels." - name = "Trash Cart" + name = "trash Cart" icon_state = "trashcart" icon_opened = "trashcartopen" icon_closed = "trashcart" @@ -377,14 +377,14 @@ /obj/structure/closet/crate/medical desc = "A medical crate." - name = "Medical crate" + name = "medical crate" icon_state = "medicalcrate" icon_opened = "medicalcrateopen" icon_closed = "medicalcrate" /obj/structure/closet/crate/rcd desc = "A crate for the storage of the RCD." - name = "RCD crate" + name = "\improper RCD crate" icon_state = "crate" icon_opened = "crateopen" icon_closed = "crate" @@ -426,14 +426,14 @@ /obj/structure/closet/crate/bin desc = "A large bin." - name = "Large bin" + name = "large bin" icon_state = "largebin" icon_opened = "largebinopen" icon_closed = "largebin" /obj/structure/closet/crate/radiation desc = "A crate with a radiation sign on it." - name = "Radioactive gear crate" + name = "radioactive gear crate" icon_state = "radiation" icon_opened = "radiationopen" icon_closed = "radiation" @@ -451,21 +451,21 @@ /obj/structure/closet/crate/secure/weapon desc = "A secure weapons crate." - name = "Weapons crate" + name = "weapons crate" icon_state = "weaponcrate" icon_opened = "weaponcrateopen" icon_closed = "weaponcrate" /obj/structure/closet/crate/secure/plasma desc = "A secure plasma crate." - name = "Plasma crate" + name = "plasma crate" icon_state = "plasmacrate" icon_opened = "plasmacrateopen" icon_closed = "plasmacrate" /obj/structure/closet/crate/secure/gear desc = "A secure gear crate." - name = "Gear crate" + name = "gear crate" icon_state = "secgearcrate" icon_opened = "secgearcrateopen" icon_closed = "secgearcrate" @@ -479,7 +479,7 @@ /obj/structure/closet/crate/secure/bin desc = "A secure bin." - name = "Secure bin" + name = "secure bin" icon_state = "largebins" icon_opened = "largebinsopen" icon_closed = "largebins" @@ -550,7 +550,7 @@ icon_closed = "largermetal" /obj/structure/closet/crate/hydroponics - name = "Hydroponics crate" + name = "hydroponics crate" desc = "All you need to destroy those pesky weeds and pests." icon_state = "hydrocrate" icon_opened = "hydrocrateopen" diff --git a/code/game/objects/structures/crates_lockers/crittercrate.dm b/code/game/objects/structures/crates_lockers/crittercrate.dm index e0c07307373..b3f9dac3d04 100644 --- a/code/game/objects/structures/crates_lockers/crittercrate.dm +++ b/code/game/objects/structures/crates_lockers/crittercrate.dm @@ -92,5 +92,5 @@ amount = 50 /obj/structure/closet/critter/deer - name = "Deer crate" + name = "deer crate" content_mob = /mob/living/simple_animal/deer \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/walllocker.dm b/code/game/objects/structures/crates_lockers/walllocker.dm index 4cf3bcf979d..2937e7b58ac 100644 --- a/code/game/objects/structures/crates_lockers/walllocker.dm +++ b/code/game/objects/structures/crates_lockers/walllocker.dm @@ -3,7 +3,7 @@ /obj/structure/closet/walllocker desc = "A wall mounted storage locker." - name = "Wall Locker" + name = "wall locker" icon = 'icons/obj/walllocker.dmi' icon_state = "wall-locker" density = 0 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 1dc18de23ba..2a33289d811 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -192,7 +192,7 @@ /obj/structure/flora/kirbyplants - name = "Potted plant" + name = "potted plant" icon = 'icons/obj/flora/plants.dmi' icon_state = "plant-1" anchored = 0 @@ -205,7 +205,7 @@ icon_state = "plant-36" /obj/structure/flora/kirbyplants/dead - name = "RD's potted plant" + name = "/improper RD's potted plant" desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..." icon_state = "plant-dead" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index a9f9fa6f26b..770beebd933 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -101,7 +101,7 @@ var/list/mechtoys = list( return 0 /obj/machinery/computer/supplycomp - name = "Supply Shuttle Console" + name = "supply shuttle console" desc = "Used to order supplies." icon = 'icons/obj/computer.dmi' icon_screen = "supply" @@ -115,7 +115,7 @@ var/list/mechtoys = list( var/datum/supply_packs/content_pack /obj/machinery/computer/ordercomp - name = "Supply Ordering Console" + name = "supply ordering console" desc = "Used to order supplies from cargo staff." icon = 'icons/obj/computer.dmi' icon_screen = "request" diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 9c74178259f..b9279f779cb 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -195,7 +195,7 @@ nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD /turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph - name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle. + name = "brig floor" // Also added it into the 2x3 brig area of the shuttle. icon_state = "floor4" /turf/simulated/shuttle/floor4/vox //Vox skipjack floors @@ -204,20 +204,20 @@ nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD /turf/simulated/floor/beach - name = "Beach" + name = "beach" icon = 'icons/misc/beach.dmi' /turf/simulated/floor/beach/sand - name = "Sand" + name = "sand" icon_state = "sand" /turf/simulated/floor/beach/coastline - name = "Coastline" + name = "coastline" icon = 'icons/misc/beach2.dmi' icon_state = "sandwater" /turf/simulated/floor/beach/water - name = "Water" + name = "water" icon_state = "water" /turf/simulated/floor/beach/water/New() @@ -225,7 +225,7 @@ overlays += image("icon"='icons/misc/beach.dmi',"icon_state"="water5","layer"=MOB_LAYER+0.1) /turf/simulated/floor/grass - name = "Grass patch" + name = "grass patch" icon_state = "grass1" floor_tile = new/obj/item/stack/tile/grass @@ -242,7 +242,7 @@ FF.update_icon() //so siding get updated properly /turf/simulated/floor/carpet - name = "Carpet" + name = "carpet" icon_state = "carpet" floor_tile = new/obj/item/stack/tile/carpet diff --git a/code/modules/awaymissions/exile.dm b/code/modules/awaymissions/exile.dm index 7699d653833..09003df1a4d 100644 --- a/code/modules/awaymissions/exile.dm +++ b/code/modules/awaymissions/exile.dm @@ -23,7 +23,7 @@ return dat /obj/item/weapon/implantcase/exile - name = "Glass Case- 'Exile'" + name = "/improper Glass Case- 'Exile'" desc = "A case containing an exile implant." icon = 'icons/obj/items.dmi' icon_state = "implantcase-r" @@ -36,7 +36,7 @@ /obj/structure/closet/secure_closet/exile - name = "Exile Implants" + name = "exile implants" req_access = list(access_hos) New() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 28672d724d5..1d852ed6257 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -1,5 +1,5 @@ /obj/item/clothing/glasses/hud - name = "HUD" + name = "/improper HUD" desc = "A heads-up display that provides important info in (almost) real time." flags = null //doesn't protect eyes because it's a monocle, duh origin_tech = "magnets=3;biotech=2" @@ -9,20 +9,20 @@ /obj/item/clothing/glasses/hud/health - name = "Health Scanner HUD" + name = "/improper Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." icon_state = "healthhud" HUDType = MEDHUD /obj/item/clothing/glasses/hud/health_advanced - name = "Advanced Health Scanner HUD" + name = "/improper Advanced Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. Includes anti-flash filter." icon_state = "advmedhud" flash_protect = 1 HUDType = MEDHUD /obj/item/clothing/glasses/hud/health/night - name = "Night Vision Health Scanner HUD" + name = "/improper Night Vision Health Scanner HUD" desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." icon_state = "healthhudnight" item_state = "glasses" @@ -32,14 +32,14 @@ /obj/item/clothing/glasses/hud/security - name = "Security HUD" + name = "/improper Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records." icon_state = "securityhud" var/global/list/jobs[0] flash_protect = 1 /obj/item/clothing/glasses/hud/security/jensenshades - name = "Augmented shades" + name = "augmented shades" desc = "Polarized bioneural eyewear, designed to augment your vision." icon_state = "jensenshades" item_state = "jensenshades" @@ -47,7 +47,7 @@ invisa_view = 2 /obj/item/clothing/glasses/hud/security/night - name = "Night Vision Security HUD" + name = "/improper Night Vision Security HUD" desc = "An advanced heads-up display which provides id data and vision in complete darkness." icon_state = "securityhudnight" darkness_view = 8 diff --git a/code/modules/computer3/computers/HolodeckControl.dm b/code/modules/computer3/computers/HolodeckControl.dm index cb492c6991b..2b59985bc83 100644 --- a/code/modules/computer3/computers/HolodeckControl.dm +++ b/code/modules/computer3/computers/HolodeckControl.dm @@ -10,7 +10,7 @@ /datum/file/program/holodeck - name = "Holodeck Control Console" + name = "holodeck control console" desc = "Used to control a nearby holodeck." active_state = "holocontrol" var/area/linkedholodeck = null diff --git a/code/modules/computer3/computers/camera.dm b/code/modules/computer3/computers/camera.dm index ddf583888fd..d2180c174a8 100644 --- a/code/modules/computer3/computers/camera.dm +++ b/code/modules/computer3/computers/camera.dm @@ -14,7 +14,7 @@ /obj/machinery/computer3/security/wooden_tv - name = "security cameras" + name = "security cameras console" desc = "An old TV hooked into the stations camera network." icon = 'icons/obj/computer.dmi' icon_state = "security_det" @@ -30,7 +30,7 @@ /obj/machinery/computer3/security/mining - name = "Outpost Cameras" + name = "outpost cameras console" desc = "Used to access the various cameras on the outpost." spawn_files = list(/datum/file/camnet_key/miningoutpost) @@ -80,14 +80,14 @@ name = "Telecomms Network Key" title = "telecommunications satellite" desc = "Connects to telecommunications satellite security cameras." - networks = list("Telecomms") - + networks = list("Telecomms") + /datum/file/camnet_key/researchoutpost name = "Research Outpost Network Key" title = "research outpost" desc = "Connects to research outpost security cameras." networks = list("Research Outpost") - + /datum/file/camnet_key/miningoutpost name = "Mining Outpost Network Key" title = "mining outpost" @@ -100,67 +100,67 @@ title = "research" desc = "Connects to research security cameras." networks = list("Research") - + /datum/file/camnet_key/prison name = "Prison Network Key" title = "prison" desc = "Connects to prison security cameras." networks = list("Prison") - + /datum/file/camnet_key/interrogation name = "Interrogation Network Key" title = "interrogation" desc = "Connects to interrogation security cameras." networks = list("Interrogation") - + /datum/file/camnet_key/supermatter name = "Supermatter Network Key" title = "supermatter" desc = "Connects to supermatter security cameras." networks = list("Supermatter") - + /datum/file/camnet_key/singularity name = "Singularity Network Key" title = "singularity" desc = "Connects to singularity security cameras." networks = list("Singularity") - + /datum/file/camnet_key/anomalyisolation name = "Anomaly Isolation Network Key" title = "anomalyisolation" desc = "Connects to interrogation security cameras." networks = list("Anomaly Isolation") - + /datum/file/camnet_key/toxins name = "Toxins Network Key" title = "toxins" desc = "Connects to toxins security cameras." networks = list("Toxins") - + /datum/file/camnet_key/telepad name = "Telepad Network Key" title = "telepad" desc = "Connects to telepad security cameras." networks = list("Telepad") - + /datum/file/camnet_key/ert name = "Emergency Response Team Network Key" title = "emergency response team" desc = "Connects to emergency response team security cameras." networks = list("ERT") - + /datum/file/camnet_key/centcom name = "Central Command Network Key" title = "central command" desc = "Connects to central command security cameras." networks = list("CentCom") - + /datum/file/camnet_key/thunderdome name = "Thunderdome Network Key" title = "thunderdome" desc = "Connects to thunderdome security cameras." networks = list("Thunderdome") - + /datum/file/camnet_key/entertainment name = "Entertainment Network Key" title = "entertainment" diff --git a/code/modules/computer3/computers/crew.dm b/code/modules/computer3/computers/crew.dm index 2d89b336f80..cbd4f11a67c 100644 --- a/code/modules/computer3/computers/crew.dm +++ b/code/modules/computer3/computers/crew.dm @@ -4,7 +4,7 @@ icon_state = "frame-med" /datum/file/program/crew - name = "Crew Monitoring Console" + name = "crew monitoring console" desc = "Used to monitor active health sensors built into most of the crew's uniforms." active_state = "crew" var/list/tracked = list( ) diff --git a/code/modules/computer3/computers/law.dm b/code/modules/computer3/computers/law.dm index 1ee99e5b9cb..1520f889ee5 100644 --- a/code/modules/computer3/computers/law.dm +++ b/code/modules/computer3/computers/law.dm @@ -1,7 +1,7 @@ /obj/machinery/computer3/aiupload - name = "AI Upload" + name = "\improper AI upload console" desc = "Used to upload laws to the AI." icon_state = "frame-rnd" var/mob/living/silicon/ai/current = null @@ -52,7 +52,7 @@ /obj/machinery/computer3/borgupload - name = "Cyborg Upload" + name = "cyborg upload console" desc = "Used to upload laws to Cyborgs." icon_state = "frame-rnd" var/mob/living/silicon/robot/current = null diff --git a/code/modules/computer3/lapvend.dm b/code/modules/computer3/lapvend.dm index 4d96d94878e..7e4a0f1769e 100644 --- a/code/modules/computer3/lapvend.dm +++ b/code/modules/computer3/lapvend.dm @@ -1,5 +1,5 @@ /obj/machinery/lapvend - name = "Laptop Vendor" + name = "laptop vendor" desc = "A generic vending machine." icon = 'icons/obj/vending.dmi' icon_state = "robotics" diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 31ad003135e..d73e93e782f 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -14,7 +14,7 @@ log transactions #define PRINT_DELAY 100 /obj/machinery/atm - name = "Nanotrasen Automatic Teller Machine" + name = "Nanotrasen automatic teller machine" desc = "For all your monetary needs!" icon = 'icons/obj/terminals.dmi' icon_state = "atm" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index befef4ed4d6..76e3bd4dd15 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -114,7 +114,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f // TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such // It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. /obj/machinery/librarycomp - name = "Check-In/Out Computer" + name = "check-in/out computer" icon = 'icons/obj/library.dmi' icon_state = "computer" anchored = 1 @@ -473,7 +473,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f qdel(O) else ..() - + /client/proc/delbook() set name = "Delete Book" set desc = "Permamently deletes a book from the database." @@ -485,7 +485,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/isbn = input("ISBN number?", "Delete Book") as num | null if(!isbn) return - + var/DBQuery/query_delbook = dbcon.NewQuery("DELETE FROM [format_table_name("library")] WHERE id=[isbn]") if(!query_delbook.Execute()) var/err = query_delbook.ErrorMsg() diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index e9566668b21..12521684dc9 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -66,7 +66,7 @@ proc/move_labor_shuttle() //TODO: Security Access only; add moving the shuttle t return /obj/machinery/computer/labor_shuttle - name = "Labor Shuttle Console" + name = "labor shuttle console" icon = 'icons/obj/computer.dmi' icon_state = "shuttle" circuit = /obj/item/weapon/circuitboard/labor_shuttle @@ -112,7 +112,7 @@ proc/move_labor_shuttle() //TODO: Security Access only; add moving the shuttle t /obj/machinery/computer/labor_shuttle/one_way - name = "Prisoner Shuttle Console" + name = "prisoner shuttle console" desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way req_access = list( ) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 377c66c1b89..e9e925983b8 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -169,7 +169,7 @@ /obj/structure/closet/crate/miningcar desc = "A mining car. This one doesn't work on rails, but has to be dragged." - name = "Mining car (not for rails)" + name = "mining car (not for rails)" icon = 'icons/obj/storage.dmi' icon_state = "miningcar" density = 1 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index c9aafbe2804..92d1c1cdff3 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -238,7 +238,7 @@ var/list/ai_verbs_default = list( The alternative was to rewrite a bunch of AI code instead here we are. */ /obj/machinery/ai_powersupply - name="Power Supply" + name="\improper AI power supply" active_power_usage=1000 use_power = 2 power_channel = EQUIP diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index b59f69ec3c0..34f98cb5893 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/drone_control - name = "Maintenance Drone Control" + name = "maintenance drone control console" desc = "Used to monitor the station's drone population and the assembler that services them." icon_screen = "power" icon_keyboard = "power_key" diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 7f090a72be6..0e7199645c9 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -378,7 +378,7 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /obj/machinery/chem_master - name = "ChemMaster 3000" + name = "\improper ChemMaster 3000" density = 1 anchored = 1 icon = 'icons/obj/chemical.dmi' @@ -756,12 +756,12 @@ /obj/machinery/chem_master/condimaster - name = "CondiMaster 3000" + name = "\improper CondiMaster 3000" condi = 1 /obj/machinery/reagentgrinder - name = "All-In-One Grinder" + name = "\improper All-In-One Grinder" icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" layer = 2.9 diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 0097cf45907..1526ebcb695 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -2,7 +2,7 @@ /// Droppers. //////////////////////////////////////////////////////////////////////////////// /obj/item/weapon/reagent_containers/dropper - name = "Dropper" + name = "dropper" desc = "A dropper. Transfers 5 units." icon = 'icons/obj/chemical.dmi' icon_state = "dropper" @@ -121,7 +121,7 @@ //////////////////////////////////////////////////////////////////////////////// /obj/item/weapon/reagent_containers/dropper/precision - name = "Pipette" + name = "pipette" desc = "A high precision pippette. Holds 1 unit." icon = 'icons/obj/chemical.dmi' icon_state = "pipette" diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 910860e1b2d..3e97194174e 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -171,7 +171,7 @@ reagents.add_reagent("rice", 30) /obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then - name = "Salt Shaker" // a large one. + name = "salt shaker" // a large one. desc = "Salt. From space oceans, presumably." icon_state = "saltshakersmall" possible_transfer_amounts = list(1,20) //for clown turning the lid off @@ -184,7 +184,7 @@ reagents.add_reagent("sodiumchloride", 20) /obj/item/weapon/reagent_containers/food/condiment/peppermill - name = "Pepper Mill" + name = "pepper mill" desc = "Often used to flavor food or make people sneeze." icon_state = "peppermillsmall" possible_transfer_amounts = list(1,20) //for clown turning the lid off @@ -197,7 +197,7 @@ reagents.add_reagent("blackpepper", 20) /obj/item/weapon/reagent_containers/food/condiment/syndisauce - name = "Chef Excellence's Special Sauce" + name = "/improper Chef Excellence's Special Sauce" desc = "A potent sauce extracted from the potent amanita mushrooms. Death never tasted quite so delicious." amount_per_transfer_from_this = 5 volume = 50 diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 5d4c986539a..663158d0757 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -191,7 +191,7 @@ // Formatting is the same as food. /obj/item/weapon/reagent_containers/food/drinks/milk - name = "Space Milk" + name = "\improper Space Milk" desc = "It's milk. White and nutritious goodness!" icon_state = "milk" item_state = "carton" @@ -216,7 +216,7 @@ */ /obj/item/weapon/reagent_containers/food/drinks/soymilk - name = "SoyMilk" + name = "\improper SoyMilk" desc = "It's soy milk. White and nutritious goodness!" icon_state = "soymilk" item_state = "carton" @@ -227,7 +227,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/coffee - name = "Robust Coffee" + name = "\improper Robust Coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" New() @@ -237,7 +237,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/tea - name = "Duke Purple Tea" + name = "\improper Duke Purple Tea" desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." icon_state = "teacup" item_state = "coffee" @@ -250,7 +250,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/mugwort - name = "Mugwort Tea" + name = "\improper Mugwort Tea" desc = "A bitter herbal tea." icon_state = "manlydorfglass" item_state = "coffee" @@ -261,7 +261,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/ice - name = "Ice Cup" + name = "\improper Ice Cup" desc = "Careful, cold ice, do not chew." icon_state = "coffee" New() @@ -271,7 +271,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/h_chocolate - name = "Dutch Hot Coco" + name = "\improper Dutch Hot Coco" desc = "Made in Space South America." icon_state = "hot_coco" item_state = "coffee" @@ -282,7 +282,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/chocolate - name = "Hot Chocolate" + name = "\improper Hot Chocolate" desc = "Made in Space Switzerland." icon_state = "hot_coco" item_state = "coffee" @@ -293,7 +293,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/weightloss - name = "Weight-Loss Shake" + name = "\improper Weight-Loss Shake" desc = "A shake designed to cause weight loss. The package proudly proclaims that it is 'tapeworm free.'" icon_state = "coffee" item_state = "coffee" @@ -306,7 +306,7 @@ /obj/item/weapon/reagent_containers/food/drinks/dry_ramen - name = "Cup Ramen" + name = "\improper Cup Ramen" desc = "Just add 10ml water, self heats! A taste that reminds you of your school years." icon_state = "ramen" New() @@ -318,7 +318,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/chicken_soup - name = "Cup Chicken Soup" + name = "\improper Cup Chicken Soup" desc = "A delicious and soothing cup of chicken noodle soup; just like spessmom used to make it." icon_state = "ramen" New() @@ -328,7 +328,7 @@ src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/sillycup - name = "Paper Cup" + name = "paper cup" desc = "A paper water cup." icon_state = "water_cup_e" possible_transfer_amounts = null @@ -349,7 +349,7 @@ // icon states. /obj/item/weapon/reagent_containers/food/drinks/shaker - name = "Shaker" + name = "shaker" desc = "A metal shaker to mix drinks in." icon_state = "shaker" amount_per_transfer_from_this = 10 diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index aa304ca9bdc..17b52aaf5a7 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -120,7 +120,7 @@ //Keeping this here for now, I'll ask if I should keep it here. /obj/item/weapon/broken_bottle - name = "Broken Bottle" + name = "broken bottle" desc = "A bottle with a sharp broken bottom." icon = 'icons/obj/drinks.dmi' icon_state = "broken_bottle" @@ -136,7 +136,7 @@ var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") /obj/item/weapon/reagent_containers/food/drinks/bottle/gin - name = "Griffeater Gin" + name = "\improper Griffeater Gin" desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" New() @@ -144,7 +144,7 @@ reagents.add_reagent("gin", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey - name = "Uncle Git's Special Reserve" + name = "\improper Uncle Git's Special Reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" New() @@ -152,7 +152,7 @@ reagents.add_reagent("whiskey", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka - name = "Tunguska Triple Distilled" + name = "\improper Tunguska Triple Distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" New() @@ -160,7 +160,7 @@ reagents.add_reagent("vodka", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla - name = "Caccavo Guaranteed Quality Tequilla" + name = "\improper Caccavo Guaranteed Quality Tequilla" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequillabottle" New() @@ -168,7 +168,7 @@ reagents.add_reagent("tequilla", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing - name = "Bottle of Nothing" + name = "\improper Bottle of Nothing" desc = "A bottle filled with nothing" icon_state = "bottleofnothing" New() @@ -176,7 +176,7 @@ reagents.add_reagent("nothing", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/patron - name = "Wrapp Artiste Patron" + name = "\improper Wrapp Artiste Patron" desc = "Silver laced tequilla, served in space night clubs across the galaxy." icon_state = "patronbottle" New() @@ -184,7 +184,7 @@ reagents.add_reagent("patron", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/rum - name = "Captain Pete's Cuban Spiced Rum" + name = "\improper Captain Pete's Cuban Spiced Rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" New() @@ -192,7 +192,7 @@ reagents.add_reagent("rum", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater - name = "Flask of Holy Water" + name = "\improper Flask of Holy Water" desc = "A flask of the chaplain's holy water." icon_state = "holyflask" New() @@ -200,7 +200,7 @@ reagents.add_reagent("holywater", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth - name = "Goldeneye Vermouth" + name = "\improper Goldeneye Vermouth" desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" New() @@ -208,7 +208,7 @@ reagents.add_reagent("vermouth", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua - name = "Robert Robust's Coffee Liqueur" + name = "\improper Robert Robust's Coffee Liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK" icon_state = "kahluabottle" New() @@ -216,7 +216,7 @@ reagents.add_reagent("kahlua", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager - name = "College Girl Goldschlager" + name = "\improper College Girl Goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" New() @@ -224,7 +224,7 @@ reagents.add_reagent("goldschlager", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac - name = "Chateau De Baton Premium Cognac" + name = "\improper Chateau De Baton Premium Cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" New() @@ -232,7 +232,7 @@ reagents.add_reagent("cognac", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/wine - name = "Doublebeard Bearded Special Wine" + name = "\improper Doublebeard Bearded Special Wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "winebottle" New() @@ -240,7 +240,7 @@ reagents.add_reagent("wine", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe - name = "Jailbreaker Verte" + name = "\improper Jailbreaker Verte" desc = "One sip of this and you just know you're gonna have a good time." icon_state = "absinthebottle" New() @@ -250,7 +250,7 @@ //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice - name = "Orange Juice" + name = "orange juice" desc = "Full of vitamins and deliciousness!" icon_state = "orangejuice" item_state = "carton" @@ -260,7 +260,7 @@ reagents.add_reagent("orangejuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/cream - name = "Milk Cream" + name = "milk cream" desc = "It's cream. Made from milk. What else did you think you'd find in there?" icon_state = "cream" item_state = "carton" @@ -270,7 +270,7 @@ reagents.add_reagent("cream", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice - name = "Tomato Juice" + name = "tomato juice" desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." icon_state = "tomatojuice" item_state = "carton" @@ -280,7 +280,7 @@ reagents.add_reagent("tomatojuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice - name = "Lime Juice" + name = "lime juice" desc = "Sweet-sour goodness." icon_state = "limejuice" item_state = "carton" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index f0e7a0ddf69..c733e715398 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -32,7 +32,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, */ /obj/machinery/computer/rdconsole - name = "R&D Console" + name = "\improper R&D console" icon_screen = "rdcomp" icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE @@ -1117,23 +1117,23 @@ proc/CallMaterialName(ID) return dat /obj/machinery/computer/rdconsole/core - name = "Core R&D Console" + name = "core R&D console" desc = "A console used to interface with R&D tools." id = 1 /obj/machinery/computer/rdconsole/robotics - name = "Robotics R&D Console" + name = "robotics R&D console" desc = "A console used to interface with R&D tools." id = 2 req_access = list(access_robotics) /obj/machinery/computer/rdconsole/experiment - name = "E.X.P.E.R.I-MENTOR R&D Console" + name = "\improper E.X.P.E.R.I-MENTOR R&D console" desc = "A console used to interface with R&D tools." id = 3 /obj/machinery/computer/rdconsole/mechanics - name = "Mechanics R&D Console" + name = "mechanics R&D console" desc = "A console used to interface with R&D tools." id = 4 req_access = list(access_mechanic) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index a520fe6ec92..c539b0c958f 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -187,7 +187,7 @@ /obj/machinery/computer/rdservercontrol - name = "R&D Server Controller" + name = "\improper R&D server controller" icon_screen = "rdcomp" icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE @@ -335,7 +335,7 @@ emagged = 1 user << "\blue You you disable the security protocols" src.updateUsrDialog() - + /obj/machinery/r_n_d/server/core name = "Core R&D Server" id_with_upload_string = "1;3" diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm index dc6bdc70521..53f219f7ca4 100644 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm @@ -11,7 +11,7 @@ datum/genesequence #define SCANFOSSIL_RETVAL_SUCCESS 4 /obj/machinery/computer/reconstitutor - name = "Flora reconstitution console" + name = "flora reconstitution console" icon = 'icons/obj/computer.dmi' icon_keyboard = "med_key" icon_screen = "dna" @@ -39,7 +39,7 @@ datum/genesequence ..() /obj/machinery/computer/reconstitutor/animal - name = "Fauna reconstitution console" + name = "fauna reconstitution console" accepted_fossil_types = list(/obj/item/weapon/fossil/bone,/obj/item/weapon/fossil/shell,/obj/item/weapon/fossil/skull) pod1 = null circuit = /obj/item/weapon/circuitboard/reconstitutor/animal diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm index cbc755e2c22..130fd8faa05 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_analyser - name = "Anomaly Analyser" + name = "anomaly analyser" desc = "Studies the emissions of anomalous materials to discover their uses." icon = 'icons/obj/virology.dmi' icon_state = "isolator" diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 1c772d33bf0..ee22edf2fbd 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_harvester - name = "Exotic Particle Harvester" + name = "exotic particle harvester" icon = 'icons/obj/virology.dmi' icon_state = "incubator" //incubator_on anchored = 1 diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm b/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm index 3d440bf85ab..a93c92a176e 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_scanpad - name = "Anomaly Scanner Pad" + name = "anomaly scanner pad" desc = "Place things here for scanning." icon = 'icons/obj/stationobjs.dmi' icon_state = "tele0" diff --git a/code/modules/research/xenoarchaeology/misc.dm b/code/modules/research/xenoarchaeology/misc.dm index df6628c6ae7..06f466ec72a 100644 --- a/code/modules/research/xenoarchaeology/misc.dm +++ b/code/modules/research/xenoarchaeology/misc.dm @@ -36,7 +36,7 @@ P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" P.stamp(stamp) src.contents += P - + qdel(stamp) //---- Bookcase @@ -57,7 +57,7 @@ //---- Lockers and closets /obj/structure/closet/secure_closet/xenoarchaeologist - name = "Xenoarchaeologist Locker" + name = "xenoarchaeologist locker" req_access = list(access_tox_storage) icon_state = "secureres1" icon_closed = "secureres" @@ -79,7 +79,7 @@ return /obj/structure/closet/excavation - name = "Excavation tools" + name = "excavation tools closet" icon_state = "toolcloset" icon_closed = "toolcloset" icon_opened = "toolclosetopen" diff --git a/code/modules/shuttles/antagonist.dm b/code/modules/shuttles/antagonist.dm index 13cccbc900f..da51366b448 100644 --- a/code/modules/shuttles/antagonist.dm +++ b/code/modules/shuttles/antagonist.dm @@ -10,7 +10,7 @@ return 1 /obj/machinery/computer/shuttle_control/multi/syndicate - name = "Syndicate control console" + name = "\improper Syndicate control console" req_access = list(access_syndicate) shuttle_tag = "Syndicate" is_syndicate = 1 @@ -18,13 +18,13 @@ /obj/machinery/computer/shuttle_control/multi/syndicate/attack_ai(user as mob) user << "Access Denied." return 1 - + /obj/machinery/computer/shuttle_control/multi/xenos name = "alien control console" shuttle_tag = "Xenomorph" icon_keyboard = "telesci_key" icon_screen = "telesci" - + /obj/machinery/computer/shuttle_control/multi/xenos/attack_hand(user as mob) user << "You do not know how to operate this machinery." return 1 @@ -32,18 +32,18 @@ /obj/machinery/computer/shuttle_control/multi/xenos/attack_ai(user as mob) user << "Access Denied." return 1 - + /obj/machinery/computer/shuttle_control/multi/xenos/attack_ghost(user as mob) ui_interact(user) /obj/machinery/computer/shuttle_control/multi/xenos/attack_alien(user as mob) ui_interact(user) - + /obj/machinery/computer/shuttle_control/multi/xenos/CanUseTopic(mob/user) if(isalien(user)) return STATUS_INTERACTIVE - + if(ishuman(user)) return STATUS_CLOSE - + return ..() \ No newline at end of file diff --git a/code/modules/shuttles/departmental.dm b/code/modules/shuttles/departmental.dm index e6cfb06c910..9211130ee1d 100644 --- a/code/modules/shuttles/departmental.dm +++ b/code/modules/shuttles/departmental.dm @@ -1,28 +1,28 @@ /obj/machinery/computer/shuttle_control/mining - name = "Mining Shuttle Console" + name = "mining shuttle console" shuttle_tag = "Mining" req_access = list() circuit = /obj/item/weapon/circuitboard/mining_shuttle /obj/machinery/computer/shuttle_control/engineering - name = "Engineering Shuttle Console" + name = "engineering shuttle console" shuttle_tag = "Engineering" req_one_access_txt = "10;24" circuit = /obj/item/weapon/circuitboard/engineering_shuttle /obj/machinery/computer/shuttle_control/research - name = "Research Shuttle Console" + name = "research shuttle console" shuttle_tag = "Research" req_access = list(access_xenoarch) circuit = /obj/item/weapon/circuitboard/research_shuttle /obj/machinery/computer/shuttle_control/labor_camp - name = "Labor Camp Shuttle Console" + name = "labor camp shuttle console" shuttle_tag = "Labor" req_access = list(access_brig) /obj/machinery/computer/shuttle_control/labor_camp/one_way - name = "Prisoner Shuttle Console" + name = "prisoner shuttle console" req_access = list() /obj/machinery/computer/shuttle_control/labor_camp/one_way/launch() diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 33e86061f5d..a060b0619d4 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/telescience - name = "\improper Telepad Control Console" + name = "telepad control console" desc = "Used to teleport objects to and from the telescience telepad." icon_keyboard = "telesci_key" icon_screen = "telesci" diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm index 79c7096ec64..30805f8c28a 100644 --- a/code/modules/virus2/centrifuge.dm +++ b/code/modules/virus2/centrifuge.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/centrifuge - name = "Isolation Centrifuge" + name = "isolation centrifuge" desc = "Used to separate things with different weight. Spin 'em round, round, right round." icon = 'icons/obj/virology.dmi' icon_state = "centrifuge" diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm index 1db66e49fa4..f298f8a3379 100644 --- a/code/modules/virus2/curer.dm +++ b/code/modules/virus2/curer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/curer - name = "Cure Research Machine" + name = "cure research machine" icon = 'icons/obj/computer.dmi' icon_state = "dna" circuit = /obj/item/weapon/circuitboard/curefab diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm index 7173b063b73..4129e77ecf6 100644 --- a/code/modules/virus2/diseasesplicer.dm +++ b/code/modules/virus2/diseasesplicer.dm @@ -1,5 +1,5 @@ /obj/machinery/computer/diseasesplicer - name = "Disease Splicer" + name = "disease splicer console" icon = 'icons/obj/computer.dmi' icon_screen = "crew" icon_keyboard = "med_key" From 6bdad2a9d9cf09dcc03565dcb20b340d95556dc5 Mon Sep 17 00:00:00 2001 From: Certh Date: Mon, 7 Dec 2015 16:33:44 +0100 Subject: [PATCH 35/44] The examine line of the safe was broken due to w_class being above 5. Tuned it down to 5 (huge item) --- code/game/objects/items/weapons/storage/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 42641e5cb00..22899fe36d4 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -197,7 +197,7 @@ icon_locking = "safeb" icon_sparking = "safespark" force = 8.0 - w_class = 8.0 + w_class = 5.0 max_w_class = 8 anchored = 1.0 density = 0 From 438f6d9a8cbdf8c903bb18c8eb77fec2b558c8cf Mon Sep 17 00:00:00 2001 From: Crazylemon Date: Mon, 7 Dec 2015 09:42:12 -0800 Subject: [PATCH 36/44] Corgis and mice will now heal when eating As things stood, they just modified the current registered value of health, which would immediately be recalculate. This makes this less stupid. --- code/modules/reagents/reagent_containers/food/snacks.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 101b7a772f9..a033b45682e 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -245,7 +245,8 @@ M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")].","You swallow up the last part of \the [src].") playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) var/mob/living/simple_animal/pet/corgi/C = M - C.health = min(C.health + 5, C.maxHealth) + C.adjustBruteLoss(-5) + C.adjustFireLoss(-5) qdel(src) else M.visible_message("[M] takes a bite of \the [src].","You take a bite of \the [src].") @@ -257,7 +258,8 @@ if(prob(50)) N.visible_message("[N] nibbles away at [src].", "") //N.emote("nibbles away at the [src]") - N.health = min(N.health + 1, N.maxHealth) + N.adjustBruteLoss(-1) + N.adjustFireLoss(-1) //////////////////////////////////////////////////////////////////////////////// From 00800803fff039f818d0a1dc7ca871380f7c0b6d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 7 Dec 2015 19:11:24 -0500 Subject: [PATCH 37/44] Backpack Fixes and Port --- code/game/jobs/job/medical.dm | 8 ++-- code/game/jobs/job/science.dm | 4 +- code/game/jobs/job/support.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 36 +++++++++++++++--- .../closets/secure/scientist.dm | 1 + .../crates_lockers/closets/wardrobe.dm | 10 +++++ icons/mob/back.dmi | Bin 77711 -> 84356 bytes icons/obj/storage.dmi | Bin 76841 -> 78375 bytes 8 files changed, 49 insertions(+), 12 deletions(-) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 666023d0af8..cbfb8549923 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -120,7 +120,7 @@ if(!H) return 0 switch(H.backbag) if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_chem(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) @@ -151,7 +151,7 @@ if(!H) return 0 switch(H.backbag) if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/genetics(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_gen(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_l_ear) @@ -181,8 +181,8 @@ if(!H) return 0 H.equip_or_collect(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) switch(H.backbag) - if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic(H), slot_back) - if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/virology(H), slot_back) + if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_vir(H), slot_back) if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) H.equip_or_collect(new /obj/item/device/pda/viro(H), slot_wear_pda) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 2f57243382f..5247727034a 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -27,7 +27,7 @@ if(!H) return 0 switch(H.backbag) if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/science(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_tox(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear) @@ -65,7 +65,7 @@ if(!H) return 0 switch(H.backbag) if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/science(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_tox(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 30b3e89e496..156ca4c29f4 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -90,7 +90,7 @@ if(!H) return 0 switch(H.backbag) if(1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back) + if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/botany(H), slot_back) if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_hyd(H), slot_back) if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 5c5953d4085..37f7fccbc94 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -120,6 +120,36 @@ icon_state = "engiepack" item_state = "engiepack" +/obj/item/weapon/storage/backpack/botany + name = "botany backpack" + desc = "It's a backpack made of all-natural fibers." + icon_state = "botpack" + item_state = "botpack" + +/obj/item/weapon/storage/backpack/chemistry + name = "chemistry backpack" + desc = "A backpack specially designed to repel stains and hazardous liquids." + icon_state = "chempack" + item_state = "chempack" + +/obj/item/weapon/storage/backpack/genetics + name = "genetics backpack" + desc = "A bag designed to be super tough, just in case someone hulks out on you." + icon_state = "genepack" + item_state = "genepack" + +/obj/item/weapon/storage/backpack/science + name = "science backpack" + desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." + icon_state = "toxpack" + item_state = "toxpack" + +/obj/item/weapon/storage/backpack/virology + name = "virology backpack" + desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey." + icon_state = "viropack" + item_state = "viropack" + /* * Satchel Types */ @@ -149,13 +179,11 @@ name = "industrial satchel" desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" - item_state = "engiepack" /obj/item/weapon/storage/backpack/satchel_med name = "medical satchel" desc = "A sterile satchel used in medical departments." icon_state = "satchel-med" - item_state = "medicalpack" /obj/item/weapon/storage/backpack/satchel_vir name = "virologist satchel" @@ -181,18 +209,16 @@ name = "security satchel" desc = "A robust satchel for security related needs." icon_state = "satchel-sec" - item_state = "securitypack" /obj/item/weapon/storage/backpack/satchel_hyd name = "hydroponics satchel" desc = "A green satchel for plant related work." - icon_state = "satchel_hyd" + icon_state = "satchel-hyd" /obj/item/weapon/storage/backpack/satchel_cap name = "captain's satchel" desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" - item_state = "captainpack" /obj/item/weapon/storage/backpack/satchel_flat name = "smuggler's satchel" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index c97e60a07e1..454c3ef292f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -11,6 +11,7 @@ New() ..() sleep(2) + new /obj/item/weapon/storage/backpack/science(src) new /obj/item/weapon/storage/backpack/satchel_tox(src) new /obj/item/clothing/under/rank/scientist(src) //new /obj/item/clothing/suit/labcoat/science(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index b5680be43bc..7304681bf6b 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -373,6 +373,8 @@ new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/suit/storage/labcoat/chemist(src) new /obj/item/clothing/suit/storage/labcoat/chemist(src) + new /obj/item/weapon/storage/backpack/chemistry(src) + new /obj/item/weapon/storage/backpack/chemistry(src) new /obj/item/weapon/storage/backpack/satchel_chem(src) new /obj/item/weapon/storage/backpack/satchel_chem(src) new /obj/item/weapon/storage/bag/chemistry(src) @@ -394,6 +396,10 @@ new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/suit/storage/labcoat/genetics(src) new /obj/item/clothing/suit/storage/labcoat/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) return @@ -413,6 +419,10 @@ new /obj/item/clothing/suit/storage/labcoat/virologist(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/clothing/mask/surgical(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) return diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 96b0f22f29fbf49d2715d8f56cfa460726046145..0866d0b087947d0c000e698620ea830ec2d8925a 100644 GIT binary patch literal 84356 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

)EVh$H*^ZHfLiA3td49hs4wbqT{kULv5+$ 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θIC_ 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%0Dm5=`_FAfG{c-lejhZa*s``kXXfi$no=S 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 Lr}jm~I`n@43lLk# literal 77711 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%0D%F^eSC-0^oQs~`0N%Y^cY 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�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 delta 36085 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 From 2c4549d7ac1958a20157ac56c3e2ff042b122d63 Mon Sep 17 00:00:00 2001 From: TheDZD Date: Mon, 7 Dec 2015 21:25:42 -0500 Subject: [PATCH 38/44] Revert "Make color dialogs appear with current color." This reverts commit af94d1bf6fe57bd834c8d72b21a5bf3fe09e48a6. --- code/__HELPERS/mobs.dm | 44 ++++++------------- code/modules/client/preferences.dm | 27 +++--------- .../mob/new_player/preferences_setup.dm | 6 +-- .../mob/new_player/sprite_accessories.dm | 29 +++++++++--- 4 files changed, 45 insertions(+), 61 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index cc6d6f9c621..fe27e399c84 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -1,38 +1,20 @@ -proc/random_underwear(gender, species = "Human") - var/list/pick_list = list() +/proc/random_underwear(var/gender) switch(gender) - if(MALE) pick_list = underwear_m - if(FEMALE) pick_list = underwear_f - else pick_list = underwear_list - return pick_species_allowed_underwear(pick_list, species) + if(MALE) return pick(underwear_m) + if(FEMALE) return pick(underwear_f) + else return pick(underwear_list) -proc/random_undershirt(gender, species = "Human") - var/list/pick_list = list() +/proc/random_undershirt(var/gender) switch(gender) - if(MALE) pick_list = undershirt_m - if(FEMALE) pick_list = undershirt_f - else pick_list = undershirt_list - return pick_species_allowed_underwear(pick_list, species) + if(MALE) return pick(undershirt_m) + if(FEMALE) return pick(undershirt_f) + else return pick(undershirt_list) -proc/random_socks(gender, species = "Human") - var/list/pick_list = list() +/proc/random_socks(gender) switch(gender) - if(MALE) pick_list = socks_m - if(FEMALE) pick_list = socks_f - else pick_list = socks_list - return pick_species_allowed_underwear(pick_list, species) - -proc/pick_species_allowed_underwear(list/all_picks, species) - var/list/valid_picks = list() - for(var/test in all_picks) - var/datum/sprite_accessory/S = all_picks[test] - if(!(species in S.species_allowed)) - continue - valid_picks += test - - if(!valid_picks.len) valid_picks += "Nude" - - return pick(valid_picks) + if(MALE) return pick(socks_m) + if(FEMALE) return pick(socks_f) + else return pick(socks_list) proc/random_hair_style(var/gender, species = "Human") var/h_style = "Bald" @@ -53,7 +35,7 @@ proc/random_hair_style(var/gender, species = "Human") return h_style -proc/GetOppositeDir(var/dir) +/proc/GetOppositeDir(var/dir) switch(dir) if(NORTH) return SOUTH if(SOUTH) return NORTH diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 324b5e7b427..d301db27226 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1040,7 +1040,7 @@ datum/preferences if("input") switch(href_list["preference"]) if("name") - var/raw_name = input(user, "Choose your character's name:", "Character Preference") as text|null + var/raw_name = input(user, "Choose your character's name:", "Character Preference") as text|null if (!isnull(raw_name)) // Check to ensure that the user entered text (rather than cancel.) var/new_name = reject_bad_name(raw_name) if(new_name) @@ -1108,19 +1108,6 @@ datum/preferences //this shouldn't happen f_style = facial_hair_styles_list["Shaved"] - // Don't wear another species' underwear! - var/datum/sprite_accessory/S = underwear_list[underwear] - if(!(species in S.species_allowed)) - underwear = random_underwear(gender, species) - - S = undershirt_list[undershirt] - if(!(species in S.species_allowed)) - undershirt = random_undershirt(gender, species) - - S = socks_list[socks] - if(!(species in S.species_allowed)) - socks = random_socks(gender, species) - //reset hair colour and skin colour r_hair = 0//hex2num(copytext(new_hair, 2, 4)) g_hair = 0//hex2num(copytext(new_hair, 4, 6)) @@ -1169,7 +1156,7 @@ datum/preferences var/input = "Choose your character's hair colour:" if(species == "Machine") input = "Choose your character's frame colour:" - var/new_hair = input(user, input, "Character Preference", rgb(r_hair, g_hair, b_hair)) as color|null + var/new_hair = input(user, input, "Character Preference") as color|null if(new_hair) r_hair = hex2num(copytext(new_hair, 2, 4)) g_hair = hex2num(copytext(new_hair, 4, 6)) @@ -1206,7 +1193,7 @@ datum/preferences body_accessory = (new_body_accessory == "None") ? null : new_body_accessory if("facial") - var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", rgb(r_facial, g_facial, b_facial)) as color|null + var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference") as color|null if(new_facial) r_facial = hex2num(copytext(new_facial, 2, 4)) g_facial = hex2num(copytext(new_facial, 4, 6)) @@ -1268,7 +1255,7 @@ datum/preferences socks = new_socks if("eyes") - var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", rgb(r_eyes, g_eyes, b_eyes)) as color|null + var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null if(new_eyes) r_eyes = hex2num(copytext(new_eyes, 2, 4)) g_eyes = hex2num(copytext(new_eyes, 4, 6)) @@ -1283,7 +1270,7 @@ datum/preferences if("skin") if((species in list("Unathi", "Tajaran", "Skrell", "Slime People", "Vulpkanin", "Machine")) || body_accessory_by_species[species] || check_rights(R_ADMIN, 0, user)) - var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", rgb(r_skin, g_skin, b_skin)) as color|null + var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null if(new_skin) r_skin = hex2num(copytext(new_skin, 2, 4)) g_skin = hex2num(copytext(new_skin, 4, 6)) @@ -1291,7 +1278,7 @@ datum/preferences if("ooccolor") - var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference", ooccolor) as color|null + var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null if(new_ooccolor) ooccolor = new_ooccolor @@ -1436,7 +1423,7 @@ datum/preferences UI_style = "Midnight" if("UIcolor") - var/UI_style_color_new = input(user, "Choose your UI color, dark colors are not recommended!", UI_style_color) as color|null + var/UI_style_color_new = input(user, "Choose your UI color, dark colors are not recommended!") as color|null if(!UI_style_color_new) return UI_style_color = UI_style_color_new diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 969bf2aebcb..c0d89f12417 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -5,9 +5,9 @@ datum/preferences gender = gender_override else gender = pick(MALE, FEMALE) - underwear = random_underwear(gender, species) - undershirt = random_undershirt(gender, species) - socks = random_socks(gender, species) + underwear = random_underwear(gender) + undershirt = random_undershirt(gender) + socks = random_socks(gender) if(species == "Human") s_tone = random_skin_tone() h_style = random_hair_style(gender, species) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 50183e4e506..f543fe28b4a 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -28,11 +28,11 @@ L[D.name] = D switch(D.gender) - if(MALE) male[D.name] = D - if(FEMALE) female[D.name] = D + if(MALE) male += D.name + if(FEMALE) female += D.name else - male[D.name] = D - female[D.name] = D + male += D.name + female += D.name return L /datum/sprite_accessory @@ -1019,7 +1019,7 @@ /datum/sprite_accessory/underwear icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skellington") + species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skellington") nude name = "Nude" @@ -1092,7 +1092,7 @@ /datum/sprite_accessory/undershirt icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skellington") + species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skellington") /datum/sprite_accessory/undershirt/nude name = "Nude" @@ -1331,7 +1331,6 @@ /////////////////////// /datum/sprite_accessory/socks icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/nude name = "Nude" @@ -1344,95 +1343,111 @@ name = "Normal White" icon_state = "white_norm" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_norm name = "Normal Black" icon_state = "black_norm" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_short name = "Short White" icon_state = "white_short" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_short name = "Short Black" icon_state = "black_short" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_knee name = "Knee-high White" icon_state = "white_knee" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_knee name = "Knee-high Black" icon_state = "black_knee" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/thin_knee name = "Knee-high Thin" icon_state = "thin_knee" gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/striped_knee name = "Knee-high Striped" icon_state = "striped_knee" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/rainbow_knee name = "Knee-high Rainbow" icon_state = "rainbow_knee" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_thigh name = "Thigh-high White" icon_state = "white_thigh" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_thigh name = "Thigh-high Black" icon_state = "black_thigh" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/thin_thigh name = "Thigh-high Thin" icon_state = "thin_thigh" gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/striped_thigh name = "Thigh-high Striped" icon_state = "striped_thigh" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/rainbow_thigh name = "Thigh-high Rainbow" icon_state = "rainbow_thigh" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/pantyhose name = "Pantyhose" icon_state = "pantyhose" gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_fishnet name = "Black Fishnet" icon_state = "black_fishnet" gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/vox_white name = "Vox White" From 7c6aa94e219df81993fed764cf4eeb0dc53966b2 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 7 Dec 2015 21:47:58 -0500 Subject: [PATCH 39/44] Slot Machine Refactor --- code/game/machinery/slotmachine.dm | 135 ++++++++++++++--------------- 1 file changed, 66 insertions(+), 69 deletions(-) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index 54355179c8e..edc8fedcf0e 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -1,4 +1,5 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0) + /obj/machinery/slot_machine name = "Slot Machine" desc = "Gambling for the antisocial." @@ -6,77 +7,73 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0) icon_state = "slots-off" anchored = 1 density = 1 -// mats = 10 - var/money = 25000 var/plays = 0 var/working = 0 var/balance=0 - attack_hand(var/mob/user as mob) - if(user.mind) - if(user.mind.initial_account) - balance = user.mind.initial_account.money - user.machine = src - if (src.working) - var/dat = {"Slot Machine
-



- Please wait!
"} - user << browse(dat, "window=slotmachine;size=450x500") - onclose(user, "slotmachine") - else - var/dat = {"Slot Machine
-

- Five credits to play!
- Prize Money Available: [src.money]
- Credits Remaining: [balance]
- [src.plays] players have tried their luck today!
-

-
Play!
"} - user << browse(dat, "window=slotmachine;size=400x500") - onclose(user, "slotmachine") +/obj/machinery/slot_machine/attack_hand(var/mob/user as mob) + if(user.mind) + if(user.mind.initial_account) + balance = user.mind.initial_account.money + user.machine = src + if (working) + var/dat = {"Slot Machine
+

+ Please wait!
"} + user << browse(dat, "window=slotmachine;size=450x500") + onclose(user, "slotmachine") + else + var/dat = {"Slot Machine
+

+ Five credits to play!
+ Credits Remaining: [balance]
+ [plays] players have tried their luck today!
+

+
Play!
"} + user << browse(dat, "window=slotmachine;size=400x500") + onclose(user, "slotmachine") - Topic(href, href_list) - if(href_list["ops"]) - var/operation = text2num(href_list["ops"]) - if(operation == 1) // Play -/* if (src.working == 1) - usr << "\red You need to wait until the machine stops spinning!" - return */ - if (balance < 5) - usr << "\red Insufficient money to play!" - return - usr.mind.initial_account.money -= 5 - src.money += 5 - src.plays += 1 - src.working = 1 - src.icon_state = "slots-on" - usr << "Let's roll!" - var/roll = rand(1,10000) - spawn(100) - if (roll == 1) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'JACKPOT! You win [src.money]!'", src), 1) - slotmachine_announcement.Announce("Congratulations [usr.name] on winning the Jackpot!", "Jackpot Winner") - usr.mind.initial_account.money += src.money - src.money = 0 - else if (roll > 1 && roll <= 10) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'Big Winner! You win five thousand credits!'", src), 1) - usr.mind.initial_account.money += 5000 - src.money -= 5000 - else if (roll > 10 && roll <= 100) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'Winner! You win five hundred credits!'", src), 1) - usr.mind.initial_account.money += 500 - src.money -= 500 - else if (roll > 100 && roll <= 1000) - usr << "\blue You win a free game!" - usr.mind.initial_account.money += 5 - src.money -= 5 - else - usr << "\red No luck!" - src.working = 0 - src.icon_state = "slots-off" - src.add_fingerprint(usr) - src.updateUsrDialog() - return +/obj/machinery/slot_machine/Topic(href, href_list) + if(href_list["ops"]) + var/operation = text2num(href_list["ops"]) + if(operation == 1) // Play + if (working == 1) + usr << "You need to wait until the machine stops spinning!" + return + if (balance < 5) + usr << "Insufficient money to play!" + return + usr.mind.initial_account.money -= 5 + plays += 1 + working = 1 + icon_state = "slots-on" + var/roll = rand(1,10000) + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + spawn(30) + if (roll == 1) + playsound(src.loc, 'sound/effects/engine_alert2.ogg', 50, 0) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'JACKPOT! You win 25,000!'", src), 1) + slotmachine_announcement.Announce("Congratulations [usr.name] on winning the Jackpot!", "Jackpot Winner") + usr.mind.initial_account.money += 25000 + else if (roll > 1 && roll <= 10) + playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Big Winner! You win five thousand credits!'", src), 1) + usr.mind.initial_account.money += 5000 + else if (roll > 10 && roll <= 100) + playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Winner! You win five hundred credits!'", src), 1) + usr.mind.initial_account.money += 500 + else if (roll > 100 && roll <= 1000) + playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) + usr << "You win 5 credits!" + usr.mind.initial_account.money += 5 + else + usr << "No luck!" + working = 0 + icon_state = "slots-off" + add_fingerprint(usr) + updateUsrDialog() + return From 87f6ccb61c197aae3549abdfe065810ca997988a Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 7 Dec 2015 22:40:10 -0500 Subject: [PATCH 40/44] visible message and jackpot --- code/game/machinery/slotmachine.dm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index edc8fedcf0e..26b990d76d2 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -52,19 +52,16 @@ var/datum/announcement/minor/slotmachine_announcement = new(do_log = 0) spawn(30) if (roll == 1) playsound(src.loc, 'sound/effects/engine_alert2.ogg', 50, 0) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'JACKPOT! You win 25,000!'", src), 1) - slotmachine_announcement.Announce("Congratulations [usr.name] on winning the Jackpot!", "Jackpot Winner") - usr.mind.initial_account.money += 25000 + visible_message("[src] says, 'JACKPOT! [usr.name] has won two hundred and fifty thousand credits!'") + slotmachine_announcement.Announce("Congratulations to [usr.name] on winning the jackpot of two hundred and fifty thousand credits!", "Jackpot Winner") + usr.mind.initial_account.money += 250000 else if (roll > 1 && roll <= 10) playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'Big Winner! You win five thousand credits!'", src), 1) + visible_message("[src] says, 'Big Winner! [usr.name] has won five thousand credits!'") usr.mind.initial_account.money += 5000 else if (roll > 10 && roll <= 100) playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) - for(var/mob/O in hearers(src, null)) - O.show_message(text("[] says, 'Winner! You win five hundred credits!'", src), 1) + visible_message("[src] says, 'Winner! [usr.name] has won win five hundred credits!'") usr.mind.initial_account.money += 500 else if (roll > 100 && roll <= 1000) playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) From d77c7854319f4c13f4c0c84dcfe00b22a6da21d3 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 7 Dec 2015 21:20:57 -0800 Subject: [PATCH 41/44] Entirely arbitrary level adjusting --- sound/effects/footstep/carpet_human.ogg | Bin 12110 -> 12099 bytes sound/effects/footstep/wood_all.ogg | Bin 11813 -> 12320 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/effects/footstep/carpet_human.ogg b/sound/effects/footstep/carpet_human.ogg index 0de0190ba1dd2440d15ed768f6182b85514b476f..8e7d16e6810e02286b16bbd65958b0a612174a31 100644 GIT binary patch delta 7794 zcmV-&9*yD7Uc+7*PiJRS00IC200000002zpo=5-y002t#0Mn5gE(}cOo=5=z003~{ zG;^_3IS_wL=AK9b0000C+?(GUa&%>5U0!2tW^i(DYi(@*|Hl9SnE(Hf|NoAZ>8j&p zG>asAzwx)0MUE`Hr^hMt6t zCF3q_Ngetn>4nyE7jjp8?^0XSEF-2lOC32`x(9!{`@2FiTYiU0S$KI<)LnVINk_Q9 z`O~j<9vNiyly&xlJU9X59`Na>*7=$ zPeJ!l;#5aaqxH%J70c*;Jye9Lcw2*|t{lDy&5hV-hGK%TU?3}A_1S+r%VwYD&I~rE zOq;KDg=oP`<_II^MPN4utmy)94+B*%fRul&d;curAm_gM)`^{|&5ie}Q}yG$(97oL z7W2+vZ>Me1l~5F}b?~20z5Q?e5Kncv ziaC7_BDuBW{&)Zel<7dwQC1>J&>i>aRL`kCjJ&eF-u`&CbF6nG?*09~YrpB<)e?X6 z*uD{;!*NgeKc5!^`gV2kOv5Y(*TF({V@#yG73fK_aVT#iUZb@*h`mt+AK&f`{j`<= zT>_l#fRO=Y;B@cS(*>p}@AipJmm9kYIS%qsg3Z`Fb8LQ;i%oWJCX`qzlt0TR?SEYN zmvhw@aB+5fnf3FB;+dvx(gIkIIuw6u`(im39EgJ1m|Ss?+=xEtimFk80zBHP^-_TY zw;#Eb`408Y-RP9rnWxxi&~!J8GMLk@CD zCmS@{vR4jZRA+NomgM8D4$5|7W$8AZ)YkR=IpudrQ*(R1vb=getTZ1E-vFE{pQMan zIpFudc`X!Q_j+w!4vt=X*~fq1uA_6_lF!Zja$vpA&gk~HBLhur_w?WM{^1GVkNVKr*7eT0w}+>Blj_TQ^Im`3-O2G~)M9d& zw4~rwvP3=vz9$t-dKjy=r4p8II%k_v^+^9U|Kp%;3zh~#nOW}TL`ZGK(t8fi@=Bj5 z6#zsA9S6?kl;nc0|K6#dRqw(6$L{%q{?qo4*F3&7-EZ-+K7M>!&o%S!^-I5sKC)s@{<({$J{#)pSZ+oyQzazi`@7ExIjM(N-Vj=g_!N-{R(=)(Vo?8t!V zjoFdH!e3T(nWHO@F{YYŻUd=7^LS(BA({~Hc4%whFMm2L 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 E0KO3vxc~qF delta 7810 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 U`0XPx^|{Pt^9!NfJShh{03?P~g8%>k diff --git a/sound/effects/footstep/wood_all.ogg b/sound/effects/footstep/wood_all.ogg index ab6fed9e81d9a2dce2533e70fa78b81a6efc3de9..72628a8eaeabb7f0e9db711808ff40bd324d0b19 100644 GIT binary patch delta 8308 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 NjMJv4nIBPr{{hb^BWnNv delta 7800 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 xH0Au@Zv!=EuAm)~-T$NauPe9Qg_ Date: Tue, 8 Dec 2015 02:06:20 -0500 Subject: [PATCH 42/44] Fixed pipes being captured by photo cameras --- code/ATMOSPHERICS/datum_icon_manager.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ATMOSPHERICS/datum_icon_manager.dm b/code/ATMOSPHERICS/datum_icon_manager.dm index bf514607b31..75cb0fce8ce 100644 --- a/code/ATMOSPHERICS/datum_icon_manager.dm +++ b/code/ATMOSPHERICS/datum_icon_manager.dm @@ -186,9 +186,9 @@ var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_ var/cache_name = state for(var/D in cardinal) - var/image/I = image('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D) + var/image/I = image(icon('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D)) underlays[cache_name + "[D]"] = I for(var/pipe_color in pipe_colors) - I = image('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D) + I = image(icon('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D)) I.color = pipe_colors[pipe_color] underlays[state + "[D]" + "[pipe_colors[pipe_color]]"] = I From d665bb07293e8a7b8e5cbc105f26c8fa26bd2735 Mon Sep 17 00:00:00 2001 From: Certh Date: Tue, 8 Dec 2015 10:37:42 +0100 Subject: [PATCH 43/44] Fixes mistakes with using /improper instead of \improper --- code/game/objects/structures/flora.dm | 2 +- code/modules/awaymissions/exile.dm | 2 +- code/modules/clothing/glasses/hud.dm | 12 ++++++------ .../reagents/reagent_containers/food/condiment.dm | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 2a33289d811..f0747bc2f89 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -205,7 +205,7 @@ icon_state = "plant-36" /obj/structure/flora/kirbyplants/dead - name = "/improper RD's potted plant" + name = "\improper RD's potted plant" desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..." icon_state = "plant-dead" diff --git a/code/modules/awaymissions/exile.dm b/code/modules/awaymissions/exile.dm index 09003df1a4d..d0cdce5b7f4 100644 --- a/code/modules/awaymissions/exile.dm +++ b/code/modules/awaymissions/exile.dm @@ -23,7 +23,7 @@ return dat /obj/item/weapon/implantcase/exile - name = "/improper Glass Case- 'Exile'" + name = "\improper Glass Case- 'Exile'" desc = "A case containing an exile implant." icon = 'icons/obj/items.dmi' icon_state = "implantcase-r" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 1d852ed6257..7c152804e4c 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -1,5 +1,5 @@ /obj/item/clothing/glasses/hud - name = "/improper HUD" + name = "\improper HUD" desc = "A heads-up display that provides important info in (almost) real time." flags = null //doesn't protect eyes because it's a monocle, duh origin_tech = "magnets=3;biotech=2" @@ -9,20 +9,20 @@ /obj/item/clothing/glasses/hud/health - name = "/improper Health Scanner HUD" + name = "\improper Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." icon_state = "healthhud" HUDType = MEDHUD /obj/item/clothing/glasses/hud/health_advanced - name = "/improper Advanced Health Scanner HUD" + name = "\improper Advanced Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. Includes anti-flash filter." icon_state = "advmedhud" flash_protect = 1 HUDType = MEDHUD /obj/item/clothing/glasses/hud/health/night - name = "/improper Night Vision Health Scanner HUD" + name = "\improper Night Vision Health Scanner HUD" desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." icon_state = "healthhudnight" item_state = "glasses" @@ -32,7 +32,7 @@ /obj/item/clothing/glasses/hud/security - name = "/improper Security HUD" + name = "\improper Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records." icon_state = "securityhud" var/global/list/jobs[0] @@ -47,7 +47,7 @@ invisa_view = 2 /obj/item/clothing/glasses/hud/security/night - name = "/improper Night Vision Security HUD" + name = "\improper Night Vision Security HUD" desc = "An advanced heads-up display which provides id data and vision in complete darkness." icon_state = "securityhudnight" darkness_view = 8 diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 3e97194174e..5cb063ee86f 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -197,7 +197,7 @@ reagents.add_reagent("blackpepper", 20) /obj/item/weapon/reagent_containers/food/condiment/syndisauce - name = "/improper Chef Excellence's Special Sauce" + name = "\improper Chef Excellence's Special Sauce" desc = "A potent sauce extracted from the potent amanita mushrooms. Death never tasted quite so delicious." amount_per_transfer_from_this = 5 volume = 50 From 522a7b7ac5c98ea533cc482071811dd62821f35f Mon Sep 17 00:00:00 2001 From: Certh Date: Tue, 8 Dec 2015 16:45:27 +0100 Subject: [PATCH 44/44] bugfix: inflatable doors no longer disappear when deflating non-violently --- code/game/objects/structures/inflatable.dm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index a23ba5ac92e..7c6de0f828f 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -35,7 +35,7 @@ /obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) return 0 - + /obj/structure/inflatable/CanAtmosPass(turf/T) return !density @@ -75,15 +75,15 @@ user.visible_message("[user] tears at [src]!") /obj/structure/inflatable/attack_alien(mob/user as mob) - if(islarva(user)) + if(islarva(user)) return attack_generic(user, 15) /obj/structure/inflatable/attack_animal(mob/user as mob) - if(!isanimal(user)) + if(!isanimal(user)) return var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0) + if(M.melee_damage_upper <= 0) return attack_generic(M, M.melee_damage_upper) @@ -94,7 +94,7 @@ attack_generic(user, rand(10, 15)) /obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(!istype(W)) + if(!istype(W)) return if (can_puncture(W)) visible_message("\red [user] pierces [src] with [W]!") @@ -119,7 +119,6 @@ src.transfer_fingerprints_to(R) qdel(src) else - //user << "\blue You slowly deflate the inflatable wall." visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/R = new /obj/item/inflatable(loc) @@ -178,16 +177,16 @@ if(istype(mover, /obj/effect/beam)) return !opacity return !density - + /obj/structure/inflatable/door/CanAtmosPass(turf/T) return !density /obj/structure/inflatable/door/proc/TryToSwitchState(atom/user) - if(isSwitchingStates) + if(isSwitchingStates) return if(ismob(user)) var/mob/M = user - if(world.time - user.last_bumped <= 60) + if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? if(M.client) if(iscarbon(M)) @@ -240,14 +239,14 @@ visible_message("[src] rapidly deflates!") var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) src.transfer_fingerprints_to(R) + qdel(src) else visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) src.transfer_fingerprints_to(R) - + qdel(src) air_update_turf(1) - qdel(src) /obj/item/inflatable/torn name = "torn inflatable wall"