From 65ac3d97d01e96bb5a0017f5bdfaa7c39c9effb4 Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 22 Jul 2015 15:14:40 +0100 Subject: [PATCH 01/15] Revert "get rid of mob.see_in_dark and species.darksight" This reverts commit 278a4c38eca99fffd0a74f813b8bf4543cf254cd. --- code/game/gamemodes/events.dm | 4 ++-- code/game/machinery/wishgranter.dm | 3 ++- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 3 +-- code/modules/mob/death.dm | 1 + code/modules/mob/freelook/eye.dm | 1 + code/modules/mob/living/blob/blob.dm | 1 + code/modules/mob/living/carbon/alien/life.dm | 2 ++ code/modules/mob/living/carbon/brain/life.dm | 4 +++- code/modules/mob/living/carbon/human/life.dm | 4 ++++ .../living/carbon/human/species/outsider/shadow.dm | 3 ++- .../mob/living/carbon/human/species/species.dm | 1 + .../mob/living/carbon/human/species/station/slime.dm | 1 + .../living/carbon/human/species/station/station.dm | 2 ++ code/modules/mob/living/carbon/metroid/metroid.dm | 3 ++- code/modules/mob/living/silicon/ai/ai.dm | 1 - code/modules/mob/living/silicon/ai/life.dm | 11 +++++++---- code/modules/mob/living/silicon/robot/life.dm | 2 ++ .../mob/living/simple_animal/constructs/constructs.dm | 2 ++ code/modules/mob/living/simple_animal/friendly/cat.dm | 1 + .../mob/living/simple_animal/friendly/corgi.dm | 1 + .../mob/living/simple_animal/friendly/farm_animals.dm | 2 ++ .../mob/living/simple_animal/friendly/mouse.dm | 1 + code/modules/mob/living/simple_animal/hostile/bear.dm | 1 + .../mob/living/simple_animal/hostile/giant_spider.dm | 3 ++- code/modules/mob/living/simple_animal/kobold.dm | 1 + code/modules/mob/mob_defines.dm | 1 - code/modules/spells/spellbook.dm | 1 + maps/RandomZLevels/wildwest.dm | 3 ++- 30 files changed, 50 insertions(+), 18 deletions(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index cc6722f8a5..d49247263f 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -324,7 +324,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is //AI laws for(var/mob/living/silicon/ai/M in living_mob_list) - if(M.stat != 2 && M.has_power) + if(M.stat != 2 && M.see_in_dark != 0) var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS") var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS") var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN") @@ -468,4 +468,4 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is world << "Ion Storm Main Done" - */ + */ \ No newline at end of file diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 3fd4fae3e8..71b7de64c0 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -45,6 +45,7 @@ if (!(XRAY in user.mutations)) user.mutations.Add(XRAY) user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO if (!(COLD_RESISTANCE in user.mutations)) @@ -66,4 +67,4 @@ show_objectives(user.mind) user << "You have a very bad feeling about this." - return + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 8acd6bd09f..f620fd64e9 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -40,7 +40,7 @@ AI MODULES if (comp.current.stat == 2 || comp.current.control_disabled == 1) usr << "Upload failed. No signal is being detected from the AI." - else if (!comp.current.has_power) + else if (comp.current.see_in_dark == 0) usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power." else src.transmitInstructions(comp.current, usr) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index e1ce028c13..5534997731 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -468,7 +468,7 @@ Traitors and the like can also be revived with the previous role mostly intact. for(var/mob/living/silicon/ai/M in mob_list) if (M.stat == 2) usr << "Upload failed. No signal is being detected from the AI." - else if (!M.has_power) + else if (M.see_in_dark == 0) usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power." else M.add_ion_law(input) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 49557b9d40..176e837f94 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -34,6 +34,7 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images /mob/dead/observer/New(mob/body) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_INVISIBLE_OBSERVER + see_in_dark = 100 verbs += /mob/dead/observer/proc/dead_tele stat = DEAD @@ -634,12 +635,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/proc/updateghostsight() if (!seedarkness) see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING - see_in_dark = 100 else see_invisible = SEE_INVISIBLE_OBSERVER if (!ghostvision) see_invisible = SEE_INVISIBLE_LIVING; - see_in_dark = 0 updateghostimages() /proc/updateallghostimages() diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 5341bd7616..07cd8f19ff 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -70,6 +70,7 @@ blind.layer = 0 sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO drop_r_hand() diff --git a/code/modules/mob/freelook/eye.dm b/code/modules/mob/freelook/eye.dm index e77084553d..fb2b04a434 100644 --- a/code/modules/mob/freelook/eye.dm +++ b/code/modules/mob/freelook/eye.dm @@ -15,6 +15,7 @@ var/acceleration = 1 var/owner_follows_eye = 0 + see_in_dark = 7 status_flags = GODMODE invisibility = INVISIBILITY_EYE diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm index 959e6ed379..8bbf517e60 100644 --- a/code/modules/mob/living/blob/blob.dm +++ b/code/modules/mob/living/blob/blob.dm @@ -4,6 +4,7 @@ icon = 'icons/mob/blob.dmi' icon_state = "blob_spore_temp" pass_flags = PASSBLOB + see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO var/ghost_name = "Unknown" var/creating_blob = 0 diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 672e448531..6e206ff10e 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -120,11 +120,13 @@ sight |= SEE_TURFS sight |= SEE_MOBS sight |= SEE_OBJS + see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (stat != 2) sight &= ~SEE_TURFS sight &= ~SEE_MOBS sight &= ~SEE_OBJS + see_in_dark = 2 see_invisible = SEE_INVISIBLE_LIVING if (healths) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 868dd79a0c..dee4fe60a6 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -204,11 +204,13 @@ sight |= SEE_TURFS sight |= SEE_MOBS sight |= SEE_OBJS + see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (stat != 2) sight &= ~SEE_TURFS sight &= ~SEE_MOBS sight &= ~SEE_OBJS + see_in_dark = 2 see_invisible = SEE_INVISIBLE_LIVING if (healths) @@ -271,4 +273,4 @@ emp_damage += rand(10,20) if(3) emp_damage += rand(0,10) - ..()*/ + ..()*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index acbafdd268..e92f2ad95a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1206,6 +1206,7 @@ if( stat == DEAD ) sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO if(healths) healths.icon_state = "health7" //DEAD healthmeter if(client) @@ -1228,9 +1229,12 @@ else sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = species.darksight + see_invisible = see_in_dark>2 ? SEE_INVISIBLE_LEVEL_ONE : SEE_INVISIBLE_LIVING if(XRAY in mutations) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO if(seer==1) diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm index cf2295a98c..dd614bb55b 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm @@ -8,6 +8,7 @@ language = "Sol Common" //todo? unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp) light_dam = 2 + darksight = 8 has_organ = list() siemens_coefficient = 0 @@ -22,4 +23,4 @@ /datum/species/shadow/handle_death(var/mob/living/carbon/human/H) spawn(1) new /obj/effect/decal/cleanable/ash(H.loc) - qdel(H) + qdel(H) \ 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 3f4432a817..74e55ec2f7 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -99,6 +99,7 @@ var/list/inherent_verbs // Species-specific verbs. var/has_fine_manipulation = 1 // Can use small items. var/siemens_coefficient = 1 // The lower, the thicker the skin and better the insulation. + var/darksight = 2 // Native darksight distance. var/flags = 0 // Various specific features. var/slowdown = 0 // Passive movement speed malus (or boost, if negative) var/primitive_form // Lesser form, if any (ie. monkey for humans) diff --git a/code/modules/mob/living/carbon/human/species/station/slime.dm b/code/modules/mob/living/carbon/human/species/station/slime.dm index b34aaa5b8e..6d5e918a95 100644 --- a/code/modules/mob/living/carbon/human/species/station/slime.dm +++ b/code/modules/mob/living/carbon/human/species/station/slime.dm @@ -10,6 +10,7 @@ unarmed_types = list(/datum/unarmed_attack/slime_glomp) flags = IS_RESTRICTED | NO_BLOOD | NO_SCAN | NO_SLIP | NO_BREATHE siemens_coefficient = 3 + darksight = 3 blood_color = "#05FF9B" flesh_color = "#05FFFB" diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 44536478a7..a6b39ba38b 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -22,6 +22,7 @@ tail_animation = 'icons/mob/species/unathi/tail.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) primitive_form = "Stok" + darksight = 3 gluttonous = 1 blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \ @@ -72,6 +73,7 @@ tail = "tajtail" tail_animation = 'icons/mob/species/tajaran/tail.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) + darksight = 8 slowdown = -1 brute_mod = 1.2 diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 0b19dd2b5f..c2e41118b5 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -14,6 +14,7 @@ update_icon = 0 nutrition = 700 + see_in_dark = 8 update_slimes = 0 // canstun and canweaken don't affect slimes because they ignore stun and weakened variables @@ -410,4 +411,4 @@ /mob/living/carbon/slime/cannot_use_vents() if(Victim) return "You cannot ventcrawl while feeding." - ..() + ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d17a76db2f..878fcbf667 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -49,7 +49,6 @@ var/list/ai_verbs_default = list( var/list/network = list("Exodus") var/obj/machinery/camera/camera = null var/list/connected_robots = list() - var/has_power = 0 var/aiRestorePowerRoutine = 0 var/viewalerts = 0 var/icon/holo_icon//Default is assigned when AI is created. diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 19da6665bf..3cdb3c802c 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -38,18 +38,19 @@ src << "APU GENERATOR FAILURE! (System Damaged)" stop_apu(1) - has_power = 1 + var/blind = 0 var/area/loc = null if (istype(T, /turf)) loc = T.loc if (istype(loc, /area)) if (!loc.power_equip && !istype(src.loc,/obj/item) && !APU_power) - has_power = 0 + blind = 1 - if (has_power) + if (!blind) src.sight |= SEE_TURFS src.sight |= SEE_MOBS src.sight |= SEE_OBJS + src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_LIVING if (aiRestorePowerRoutine==2) @@ -76,10 +77,12 @@ //Blind the AI src.blind.screen_loc = "1,1 to 15,15" - + if (src.blind.layer!=18) + src.blind.layer = 18 src.sight = src.sight&~SEE_TURFS src.sight = src.sight&~SEE_MOBS src.sight = src.sight&~SEE_OBJS + src.see_in_dark = 0 src.see_invisible = SEE_INVISIBLE_LIVING //Now to tell the AI why they're blind and dying slowly. diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index b7e32bb931..cde2092520 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -162,11 +162,13 @@ see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGTHERM) src.sight |= SEE_MOBS + src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (src.stat != 2) src.sight &= ~SEE_MOBS src.sight &= ~SEE_TURFS src.sight &= ~SEE_OBJS + src.see_in_dark = 8 // see_in_dark means you can FAINTLY see in the dark, humans have a range of 3 or so, tajaran have it at 8 src.see_invisible = SEE_INVISIBLE_LIVING // This is normal vision (25), setting it lower for normal vision means you don't "see" things like darkness since darkness // has a "invisible" value of 15 diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 65bf148ae4..7781a26744 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -150,6 +150,7 @@ attacktext = "slashed" speed = -1 environment_smash = 1 + see_in_dark = 7 attack_sound = 'sound/weapons/rapidslice.ogg' construct_spells = list(/spell/targeted/ethereal_jaunt/shift) @@ -227,6 +228,7 @@ attacktext = "violently stabbed" speed = -1 environment_smash = 1 + see_in_dark = 7 attack_sound = 'sound/weapons/pierce.ogg' construct_spells = list( diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 9c78b95522..3197c6023c 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -11,6 +11,7 @@ emote_see = list("shakes their head", "shivers") speak_chance = 1 turns_per_move = 5 + see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index e5a670d472..322d08dc9f 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -17,6 +17,7 @@ response_help = "pets" response_disarm = "bops" response_harm = "kicks" + see_in_dark = 5 mob_size = 8 var/obj/item/inventory_head diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index c619250388..60ddd0638b 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -11,6 +11,7 @@ emote_see = list("shakes its head", "stamps a foot", "glares around") speak_chance = 1 turns_per_move = 5 + see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 4 response_help = "pets" @@ -95,6 +96,7 @@ emote_see = list("shakes its head") speak_chance = 1 turns_per_move = 5 + see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 6 response_help = "pets" diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 5229524857..23b9f8a0f8 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -13,6 +13,7 @@ small = 1 speak_chance = 1 turns_per_move = 5 + see_in_dark = 6 maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index b673aee9f0..73de95acee 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -12,6 +12,7 @@ emote_see = list("stares ferociously", "stomps") speak_chance = 1 turns_per_move = 5 + see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index ed3d451e20..4d7a8f7e3a 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -15,6 +15,7 @@ emote_hear = list("chitters") speak_chance = 5 turns_per_move = 5 + see_in_dark = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat response_help = "pets" response_disarm = "gently pushes aside" @@ -198,4 +199,4 @@ #undef SPINNING_WEB #undef LAYING_EGGS #undef MOVING_TO_TARGET -#undef SPINNING_COCOON +#undef SPINNING_COCOON \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/kobold.dm b/code/modules/mob/living/simple_animal/kobold.dm index f634bd70f1..3e52a40874 100644 --- a/code/modules/mob/living/simple_animal/kobold.dm +++ b/code/modules/mob/living/simple_animal/kobold.dm @@ -12,6 +12,7 @@ emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.") speak_chance = 15 turns_per_move = 5 + see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 4ee12cad52..109e29f036 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -2,7 +2,6 @@ density = 1 layer = 4.0 animate_movement = 2 - see_in_dark = 0 // flags = NOREACT var/datum/mind/mind diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 7823a7b602..7bb6629bfa 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -252,6 +252,7 @@ if (!(XRAY in H.mutations)) H.mutations.Add(XRAY) H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + H.see_in_dark = 8 H.see_invisible = SEE_INVISIBLE_LEVEL_TWO H << "\blue The walls suddenly disappear." temp = "You have purchased a scrying orb, and gained x-ray vision." diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm index f4221c9faa..d2935b69f6 100644 --- a/maps/RandomZLevels/wildwest.dm +++ b/maps/RandomZLevels/wildwest.dm @@ -55,6 +55,7 @@ if (!(XRAY in user.mutations)) user.mutations.Add(XRAY) user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO user << "\blue The walls suddenly disappear." user.dna.mutantrace = "shadow" @@ -170,4 +171,4 @@ C << "You have regenerated." C.visible_message("[usr] appears to wake from the dead, having healed all wounds.") C.update_canmove() - return 1 + return 1 \ No newline at end of file From 26a4e12cd202421c974ad2d8501dfbdac8118911 Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 22 Jul 2015 16:22:28 +0100 Subject: [PATCH 02/15] make lighting falloff a macro and optimize turfs-in-view Signed-off-by: Mloc --- code/__HELPERS/unsorted.dm | 20 +++++----- code/modules/lighting/light_source.dm | 53 ++++++++++++++++----------- code/setup.dm | 4 ++ 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ecfb96d562..98f487a71b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1299,24 +1299,26 @@ var/list/WALLITEMS = list( colour += temp_col return colour +var/mob/dview/dview_mob = new + //Version of view() which ignores darkness, because BYOND doesn't have it. /proc/dview(var/range = world.view, var/center, var/invis_flags = 0) if(!center) return - var/global/mob/dview/DV - if(!DV) - DV = new + dview_mob.loc = center - DV.loc = center + dview_mob.see_invisible = invis_flags - DV.see_in_dark = range - DV.see_invisible = invis_flags - - . = view(range, DV) - DV.loc = null + . = view(range, dview_mob) + dview_mob.loc = null /mob/dview invisibility = 101 density = 0 + anchored = 1 + simulated = 0 + + see_in_dark = 1e6 + diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index a54b2f0f84..1ee235fa6f 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -127,32 +127,35 @@ lum_g = 1 lum_b = 1 -/datum/light_source/proc/falloff(atom/movable/lighting_overlay/O) - #if LIGHTING_FALLOFF == 1 // circular - . = (O.x - source_turf.x)**2 + (O.y - source_turf.y)**2 + LIGHTING_HEIGHT - - #if LIGHTING_LAMBERTIAN == 1 - . = CLAMP01((1 - CLAMP01(sqrt(.) / light_range)) * (1 / (sqrt(. + 1)))) - #else - . = 1 - CLAMP01(sqrt(.) / light_range) - #endif - - #elif LIGHTING_FALLOFF == 2 // square - . = abs(O.x - source_turf.x) + abs(O.y - source_turf.y) + LIGHTING_HEIGHT - - #if LIGHTING_LAMBERTIAN == 1 - . = CLAMP01((1 - CLAMP01(. / light_range)) * (1 / (sqrt(.)**2 + ))) - #else - . = 1 - CLAMP01(. / light_range) - #endif +#if LIGHTING_FALLOFF == 1 //circular + #define LUM_DISTANCE(swapvar, O, T) swapvar = (O.x - T.x)**2 + (O.y - T.y)**2 + LIGHTING_HEIGHT + #if LIGHTING_LAMBERTIAN == 1 + #define LUM_ATTENUATION(swapvar) swapvar = CLAMP01((1 - CLAMP01(sqrt(swapvar) / light_range)) * (1 / sqrt(swapvar + 1))) + #else + #define LUM_ATTENUATION(swapvar) swapvar = 1 - CLAMP01(sqrt(swapvar) / light_range) #endif +#elif LIGHTING_FALLOFF == 2 //square + #define LUM_DISTANCE(swapvar, O, T) swapvar = abs(O.x - T.x) + abs(O.y - T.y) + LIGHTING_HEIGHT + #if LIGHTING_LAMBERTIAN == 1 + #define LUM_ATTENUATION(swapvar) swapvar = CLAMP01((1 - CLAMP01(swapvar / light_range)) * (1 / sqrt(swapvar**2 + 1))) + #else + #define LUM_ATTENUATION(swapvar) swapvar = CLAMP01(swapvar / light_range) + #endif +#endif + +#define LUM_FALLOFF(swapvar, O, T) \ + LUM_DISTANCE(swapvar, O, T); \ + LUM_ATTENUATION(swapvar); /datum/light_source/proc/apply_lum() applied = 1 if(istype(source_turf)) - for(var/turf/T in dview(light_range, source_turf, INVISIBILITY_LIGHTING)) + FOR_DVIEW(var/turf/T, light_range, source_turf, INVISIBILITY_LIGHTING) if(T.lighting_overlay) - var/strength = light_power * falloff(T.lighting_overlay) + var/strength + LUM_FALLOFF(strength, T, source_turf) + strength *= light_power + if(!strength) //Don't add turfs that aren't affected to the affected turfs. continue @@ -196,7 +199,7 @@ //Stupid dumb copy pasta because BYOND and speed. /datum/light_source/proc/smart_vis_update() var/list/view[0] - for(var/turf/T in dview(light_range, source_turf, INVISIBILITY_LIGHTING)) + FOR_DVIEW(var/turf/T, light_range, source_turf, INVISIBILITY_LIGHTING) view += T //Filter out turfs. //This is the part where we calculate new turfs (if any) @@ -204,7 +207,9 @@ for(var/turf/T in new_turfs) //Big huge copy paste from apply_lum() incoming because screw unreadable defines and screw proc call overhead. if(T.lighting_overlay) - . = light_power * falloff(T.lighting_overlay) + LUM_FALLOFF(., T, source_turf) + . *= light_power + if(!.) //Don't add turfs that aren't affected to the affected turfs. continue @@ -240,3 +245,7 @@ effect_turf.Cut(idx, idx + 1) effect_str.Cut(idx, idx + 1) + +#undef LUM_FALLOFF +#undef LUM_DISTANCE +#undef LUM_ATTENUATION diff --git a/code/setup.dm b/code/setup.dm index 6d49d591b3..2035c842dc 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -986,3 +986,7 @@ var/list/be_special_flags = list( #define TABLE_BRITTLE_MATERIAL_MULTIPLIER 4 // Amount table damage is multiplied by if it is made of a brittle material (e.g. glass) +#define FOR_DVIEW(type, range, center, invis_flags) \ + dview_mob.loc = center; \ + dview_mob.see_invisible = invis_flags; \ + for(type in view(range, dview_mob)) From 167b1183ef50f4ed7380abf53c9cdbeb46b0efaa Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sun, 26 Jul 2015 05:47:04 +0100 Subject: [PATCH 03/15] Fixes 'Fixes sealed rig removal exploit' --- code/modules/mob/living/carbon/human/inventory.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index c7940cd7ab..29cad675bf 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -772,11 +772,15 @@ It can still be worn/put on as normal. if(slot_to_process) if(strip_item) //Stripping an item from the mob var/obj/item/W = strip_item - target.unEquip(W) + if(W.canremove) + target.remove_from_mob(W) W.add_fingerprint(source) if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;) if(target.r_store) - target.u_equip(target.r_store) //At this stage l_store is already processed by the code above, we only need to process r_store. + W = target.r_store + if(W.canremove) + target.remove_from_mob(W) //At this stage l_store is already processed by the code above, we only need to process r_store. + W.add_fingerprint(source) else if(item && target.has_organ_for_slot(slot_to_process)) //Placing an item on the mob if(item.mob_can_equip(target, slot_to_process, 0)) From 2d24960603ca4a31fe88578b54c1ce13ef6b5af9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 26 Jul 2015 10:45:05 +0200 Subject: [PATCH 04/15] Fixes #9894 some more. Ensures the vote sanity check is done first, before any change of vote counts. --- code/controllers/voting.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 707880ff55..2bd56163d5 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -188,9 +188,9 @@ datum/controller/vote if(mode) if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) return 0 - if(current_votes[ckey]) - choices[choices[current_votes[ckey]]]-- - if(vote && 1<=vote && vote<=choices.len) + if(vote && vote >= 1 && vote <= choices.len) + if(current_votes[ckey]) + choices[choices[current_votes[ckey]]]-- voted += usr.ckey choices[choices[vote]]++ //check this current_votes[ckey] = vote From 984d5ee3374c090c0c18fe95785882b6a1e86af8 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 26 Jul 2015 10:37:11 +0200 Subject: [PATCH 05/15] More #10285 fixes. This one is dev-freeze only. Adds another sanity check to trans_to_holder to avoid runtime issues. --- code/modules/reagents/Chemistry-Holder.dm | 50 +++++++++++------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 495046362a..166cda695e 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -7,14 +7,14 @@ /datum/reagents/New(var/max = 100, atom/A = null) maximum_volume = max my_atom = A - + //I dislike having these here but map-objects are initialised before world/New() is called. >_> if(!chemical_reagents_list) //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id var/paths = typesof(/datum/reagent) - /datum/reagent chemical_reagents_list = list() for(var/path in paths) - var/datum/reagent/D = new path() + var/datum/reagent/D = new path() if(!D.name) continue chemical_reagents_list[D.id] = D @@ -41,16 +41,16 @@ for(var/id in reaction_ids) if(!chemical_reactions_list[id]) chemical_reactions_list[id] = list() - chemical_reactions_list[id] += D - break // Don't bother adding ourselves to other reagent ids, it is redundant. - -/datum/reagents/Destroy() - ..() - for(var/datum/reagent/R in reagent_list) - qdel(R) - reagent_list.Cut() - reagent_list = null - if(my_atom && my_atom.reagents == src) + chemical_reactions_list[id] += D + break // Don't bother adding ourselves to other reagent ids, it is redundant. + +/datum/reagents/Destroy() + ..() + for(var/datum/reagent/R in reagent_list) + qdel(R) + reagent_list.Cut() + reagent_list = null + if(my_atom && my_atom.reagents == src) my_atom.reagents = null /* Internal procs */ @@ -170,7 +170,7 @@ if(!isnull(data)) // For all we know, it could be zero or empty string and meaningful current.mix_data(data, amount) update_total() - if(!safety) + if(!safety) handle_reactions() if(my_atom) my_atom.on_reagent_change() @@ -184,7 +184,7 @@ R.initialize_data(data) update_total() if(!safety) - handle_reactions() + handle_reactions() if(my_atom) my_atom.on_reagent_change() return 1 @@ -219,7 +219,7 @@ /datum/reagents/proc/has_reagent(var/id, var/amount = 0) for(var/datum/reagent/current in reagent_list) if(current.id == id) - if(current.volume >= amount) + if(current.volume >= amount) return 1 else return 0 @@ -235,12 +235,12 @@ if(current.id == id) return current.volume return 0 - + /datum/reagents/proc/get_data(var/id) for(var/datum/reagent/current in reagent_list) if(current.id == id) return current.get_data() - return 0 + return 0 /datum/reagents/proc/get_reagents() . = list() @@ -254,14 +254,14 @@ amount = min(amount, total_volume) if(!amount) - return + return var/part = amount / total_volume - + for(var/datum/reagent/current in reagent_list) var/amount_to_remove = current.volume * part remove_reagent(current.id, amount_to_remove, 1) - + update_total() handle_reactions() return amount @@ -270,7 +270,7 @@ if(!target || !istype(target)) return - amount = min(amount, total_volume, target.get_free_space() / multiplier) + amount = max(0, min(amount, total_volume, target.get_free_space() / multiplier)) if(!amount) return @@ -290,9 +290,9 @@ /* Holder-to-atom and similar procs */ -//The general proc for applying reagents to things. This proc assumes the reagents are being applied externally, +//The general proc for applying reagents to things. This proc assumes the reagents are being applied externally, //not directly injected into the contents. It first calls touch, then the appropriate trans_to_*() or splash_mob(). -//If for some reason touch effects are bypassed (e.g. injecting stuff directly into a reagent container or person), +//If for some reason touch effects are bypassed (e.g. injecting stuff directly into a reagent container or person), //call the appropriate trans_to_*() proc. /datum/reagents/proc/trans_to(var/atom/target, var/amount = 1, var/multiplier = 1, var/copy = 0) touch(target) //First, handle mere touch effects @@ -418,5 +418,5 @@ /* Atom reagent creation - use it all the time */ -/atom/proc/create_reagents(var/max_vol) - reagents = new/datum/reagents(max_vol, src) +/atom/proc/create_reagents(var/max_vol) + reagents = new/datum/reagents(max_vol, src) From 07cf41604c63ec1c225e774200d551eadd4a75a4 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 26 Jul 2015 11:28:16 +0200 Subject: [PATCH 06/15] Removes minting. Fixes #10274. --- code/game/jobs/access.dm | 6 ------ code/game/jobs/job/civilian.dm | 10 +++++----- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 7f2ec98d12..21f6297f31 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -50,8 +50,6 @@ /var/const/access_mining = 48 /var/const/access_mining_office = 49 //not in use /var/const/access_mailsorting = 50 -/var/const/access_mint = 51 -/var/const/access_mint_vault = 52 /var/const/access_heads_vault = 53 /var/const/access_mining_station = 54 /var/const/access_xenobiology = 55 @@ -354,10 +352,6 @@ return "Mining Office" if(access_mailsorting) return "Cargo Office" - if(access_mint) - return "Mint" - if(access_mint_vault) - return "Mint Vault" if(access_heads_vault) return "Main Vault" if(access_mining_station) diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 64209f675b..8497d7472c 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -114,8 +114,8 @@ spawn_positions = 1 supervisors = "the head of personnel" selection_color = "#dddddd" - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station) - minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station) + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) + minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) equip(var/mob/living/carbon/human/H) @@ -144,7 +144,7 @@ spawn_positions = 2 supervisors = "the quartermaster and the head of personnel" selection_color = "#dddddd" - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station) + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) @@ -172,8 +172,8 @@ spawn_positions = 3 supervisors = "the quartermaster and the head of personnel" selection_color = "#dddddd" - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station) - minimal_access = list(access_mining, access_mint, access_mining_station, access_mailsorting) + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) + minimal_access = list(access_mining, access_mining_station, access_mailsorting) alt_titles = list("Drill Technician","Prospector") equip(var/mob/living/carbon/human/H) From a5ca80656df11f3ccdb5693603a2aefbbaeacaf4 Mon Sep 17 00:00:00 2001 From: SparklySheep Date: Sun, 26 Jul 2015 10:13:33 -0500 Subject: [PATCH 07/15] Chops out "Security Cadet" from assistant Alt Titles. Will remove the other "intern" alt titles if requested but this one in particular seemed to be pretty disliked in this thread: http://baystation12.net/forums/threads/discussion-suggestion-alt-titles.237/ --- code/game/jobs/job/assistant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 3211803412..ea31738545 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -9,7 +9,7 @@ selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() - alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Security Cadet","Visitor") + alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Visitor") /datum/job/assistant/equip(var/mob/living/carbon/human/H) if(!H) return 0 From 7157cc1748ed9f3ce42360d8a9c105d2d7f5ed89 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 26 Jul 2015 14:57:49 -0400 Subject: [PATCH 08/15] Fixes #9326 --- .../clothing/under/accessories/accessory.dm | 19 +++++++++--------- .../mob/living/carbon/human/update_icons.dm | 2 +- code/modules/mob/update_icons.dm | 9 --------- code/setup.dm | 8 ++++++++ icons/obj/clothing/ties_overlay.dmi | Bin 3478 -> 0 bytes 5 files changed, 19 insertions(+), 19 deletions(-) delete mode 100644 icons/obj/clothing/ties_overlay.dmi diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index feef7d06b1..395c9939f5 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -9,30 +9,31 @@ var/slot = "decor" var/obj/item/clothing/under/has_suit = null //the suit the tie may be attached to var/image/inv_overlay = null //overlay used when attached to clothing. - var/image/inv_overlay_mob = null + var/image/mob_overlay = null var/overlay_state = null /obj/item/clothing/accessory/proc/get_inv_overlay() if(!inv_overlay) + if(!mob_overlay) + get_mob_overlay() + var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]" if(icon_override) if("[tmp_icon_state]_tie" in icon_states(icon_override)) tmp_icon_state = "[tmp_icon_state]_tie" - inv_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]") - else - inv_overlay = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[tmp_icon_state]") + inv_overlay = image(icon = mob_overlay.icon, icon_state = tmp_icon_state, dir = SOUTH) return inv_overlay -/obj/item/clothing/accessory/proc/get_inv_mob_overlay() - if(!inv_overlay_mob) +/obj/item/clothing/accessory/proc/get_mob_overlay() + if(!mob_overlay) var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]" if(icon_override) if("[tmp_icon_state]_mob" in icon_states(icon_override)) tmp_icon_state = "[tmp_icon_state]_mob" - inv_overlay_mob = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]") + mob_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]") else - inv_overlay_mob = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[tmp_icon_state]") - return inv_overlay_mob + mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]") + return mob_overlay //when user attached an accessory to S /obj/item/clothing/accessory/proc/on_attached(obj/item/clothing/under/S, mob/user as mob) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index dd118b4947..a88bb65c24 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -497,7 +497,7 @@ var/global/list/damage_icon_parts = list() var/obj/item/clothing/under/under = w_uniform if(under.accessories.len) for(var/obj/item/clothing/accessory/A in under.accessories) - standing.overlays |= A.get_inv_mob_overlay() + standing.overlays |= A.get_mob_overlay() overlays_standing[UNIFORM_LAYER] = standing else diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index 627fb1dc53..a6ae6dc4a0 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -1,15 +1,6 @@ //Most of these are defined at this level to reduce on checks elsewhere in the code. //Having them here also makes for a nice reference list of the various overlay-updating procs available -//default item on-mob icons -#define INV_HEAD_DEF_ICON 'icons/mob/head.dmi' -#define INV_BACK_DEF_ICON 'icons/mob/back.dmi' -#define INV_L_HAND_DEF_ICON 'icons/mob/items/lefthand.dmi' -#define INV_R_HAND_DEF_ICON 'icons/mob/items/righthand.dmi' -#define INV_W_UNIFORM_DEF_ICON 'icons/mob/uniform.dmi' -#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi' - - /mob/proc/regenerate_icons() //TODO: phase this out completely if possible return diff --git a/code/setup.dm b/code/setup.dm index 6d49d591b3..35bc11db2e 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -974,6 +974,14 @@ var/list/be_special_flags = list( #define CUSTOM_ITEM_MOB 'icons/mob/custom_items_mob.dmi' #endif +//default item on-mob icons +#define INV_HEAD_DEF_ICON 'icons/mob/head.dmi' +#define INV_BACK_DEF_ICON 'icons/mob/back.dmi' +#define INV_L_HAND_DEF_ICON 'icons/mob/items/lefthand.dmi' +#define INV_R_HAND_DEF_ICON 'icons/mob/items/righthand.dmi' +#define INV_W_UNIFORM_DEF_ICON 'icons/mob/uniform.dmi' +#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi' + #define SHARD_SHARD "shard" #define SHARD_SHRAPNEL "shrapnel" #define SHARD_STONE_PIECE "piece" diff --git a/icons/obj/clothing/ties_overlay.dmi b/icons/obj/clothing/ties_overlay.dmi deleted file mode 100644 index c69dff3940cbb4d5bac81df84a56a8d834100ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3478 zcmb_fXHe7I690oVDGCaxAf0Q001ApU32G=&Kw78@7LX!A3;_{H5fP#Y0fbOPFA|!R zaH)nXs28cB7$KBPkt8B0HMGEs^WK*?bHBXuVb5=O=FB<2+1<0d=edowxtOqwFaQ8z zPz#717u$Y`kN|hJ8}k($oR!GM=Em%2l^j_P>*rUCRI}V!&Bv=D zKJj~67|~pZM;t((5<-ox*sh88D)A3nC3O82$2MWLTs<7woC(n z=s76ll0#_L!Z^l1c}-66XJ60_c;0X2WSx6H3Zw&mC0^xeLmfre?LhQXG$%5L4H}=l-c8Ju8Ydb$}-OqH^IQ;2h5slFd z);w4r+UkKqj|Jth)z315V%VGR+bHnl54QfMani>bC7|-S;{~AYsu1ud8UXJ9E$rvd zon|+i7Tzs*ENKcc&>hWuaJ}NuLN!$v{#qh2UMa*be^0$*)_Rf?69%mkc<+ZOaWax0 zoWH)fN^!j#z_F6`>*%E&u%Ko?Wgg1r^(9Wc=)Jyrv*h>umBT0+t7mZs0%0dldWUo- zKRe$h+Pzo0c|Iq+$y8DrR7iO{{xFztpm*2N@>x9P%PFq-j7WC>V2e;Da{^I(ikD&p zq^iFh3p-c4ICnC$aPbj1cbhhJr>S6H$*>r91CFja?Q4LUDrg45yR!6y?l~x^mc1a=UD**O9SN*?2=0o7> zH7Q$HzeVY(YUa2-5ee5Gq*ipY4bKifNNqhd$hh9PKoxAd8HxK7mSV*y4|r*6mTd>| z(xF1jWbY*E7I}brK(Va8-cUZ~{E7t%)meM#JEm8VHL=`??3TTyFZ|M|2$!S*IY|-a zG!HMFrSGPk?5J4PX+TAO{Er~hb?uWTBoKn0o&fsv-)S#ORZQ( zPU^fZBph@yQoXuIDa%nDV|}Kd z6=M?KIFa@c7)?e?%*$;ml1*ill7?UI3)G&urmTD@{n**btfPu9%$kc~nFCs%!=&k& z9H0RVydfYwqIf#?@c^I2fm>q#DQM&Yq4n3t1$Rg9s=z}V%>20m3GY4C6StP%Snd8x z4fx%yVLU)$K_3^VVUCqWFwBf}T|4C-7Y1+4eF(Efm}i%+{dl__fM_1iFD^E7aB_+* zx|W*Z3Qkd#1iYHf2YR=%7hc%ZXa0VEJ!^!P4)b$esnJ%JmxV_}WJUg=IF8<4fIw#1 z+oz9;W{gHVB>oi2^=Dhi;~R;T+jof@kMoYNlfS+P7e~hhM_cd9kexTB!Y>TG#=In? zf(p45s#`pj;rZ8tE`fofkYMaQ(9Vh0YO35T;_w~yC36iF&HqJOg^@|&9swTN*5`T9=;*lp#ocNQmk~qjxg(g|RU@|f?$}kvIXy*E-6&!O{>{@5m zlCDu-zU?@=k9$)42ZN>2dBJz+4VpVx@w|We;TQRmvamfm)x;8S_PVlCnxCH^xwY!s zG+)`w94fW{#jU-)-NC^DqN1YWU}Ix)(C8;N@AT{C&_V&cIcYf!%sC%f!7C1b@rvsP zdAvDgX-Q^JZ~Z}&7doWFTqQ0pE>RVlOdyygsZuvK^duzoiPi|cp8RCE+=O6SYw?ZOWE&>^U2+fW%PKTH9cg3 zz|D~Nr8*22VRIz;yrJZW@(~uYYv+5}eJs2=L^kAJR$7`O4Cc$tz9{k8Ks}2jRfGZY z7Z2+aIGPCER}y>F*CW(dWa7ymRnKugw|>r-iOh6*Bpfq^!Gr~#sz&A3diS{#*=3~Q zM@4lyZba?goeRhXr7?qC*7LQ?;p3-v+oYBSE5)fpI;fz#t^Jy@GDWqu_N4N1N$ZkV zTie^EW%JG3*x{ieAtgRBQBfOjZ||$!Jw12I#`6lS9=y!h^{J~3Z}7D)q$xfgQ3HUm zcA5XFuacv96}xKG2db&=71?20*!y@}g*z!sAshLxUu=Tz^}Gmuxg}l}#rxOFru?VQ z&eGq6i5!&iW=zd?fr~3@tkMiO;oG zInr=7t>Kn%LH1T@N4?XNy2n+p6_3R=`)BZdxjo?(8GDGT95w$|ow2vBsezB`+;n$> zs&a(=4SB`WG3(($G}37r{Z+*-x#|kCUbt;mD`I`P2{JNqae%vDh}|Tii6)p<^p#6? zI#brtQ>LfAUCapAq4k-(3uVF2xh#E_Q}B4&MP+L||DQ~j$-IvG`(Sg7NvG@HC*oeg z8YNu8K40&PCg6BXe^hOP`K|Z^;UI{0t9od1cvWP{2FCw&tZ^bi_j9FYPDs?XOewX- zA4I(9_GW{6>VD>P~7`N~m-zY(EVm?ncy0f=l8Dd(9mRgDL zzE<8i@!=%jaHZyvrMiPWINPtJ;b@}E8fo&&@{@Cjy5Tp$IG7w*+Eq_E&Ti_9pM-zW zg{CIB?d0o_6G4m|&_u``F>a^l`|ry6zt#Vzp{?#WL%jRvQHn-=VjQzf;7wzmsv}U9s z(43^pR;Z#p%!KP<8YUKQE6UBOjpU~u-bppucG6WKH zP@#BwdO8i`_-j}`{jbpocq2_)>>urI9u+7YMK5G5?Z3Tof;1JfH|*z5H^%x*yYt;A zS~e?1hSc&R4c-()Rq_7vr*EyQeeV`v1`QSKrw*#;tvnr{3g`Abrzd|icW#4+&?Pk> T>J=gGe+z(`T0<%?--`SP7rk>V From 08968d1fe0fd19e6e9b5b5720be4ec2ec5af5a98 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Sun, 26 Jul 2015 22:27:14 +0200 Subject: [PATCH 09/15] Fixes #10311 - My bad, the construction site airlock now cycles properly. --- maps/exodus-4.dmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index 666a64f1d9..668fdc33a8 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -52,12 +52,12 @@ "aZ" = (/obj/machinery/access_button/airlock_exterior{master_tag = "constructionsite_airlock"; pixel_x = 20; pixel_y = 0; req_access = list(10)},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) "ba" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = 0},/obj/machinery/access_button/airlock_interior{master_tag = "constructionsite_airlock"; pixel_x = -20; pixel_y = 0; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) "bb" = (/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) -"bc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/turf/simulated/floor,/area/constructionsite/teleporter) +"bc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1379; id_tag = "constructionsite_vent"},/turf/simulated/floor,/area/constructionsite/teleporter) "bd" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_outer"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) "be" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) -"bf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/obj/machinery/camera/network/engineering_outpost{c_tag = "Construction Site Teleporter Airlock"},/turf/simulated/floor,/area/constructionsite/teleporter) +"bf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1379; id_tag = "constructionsite_vent"},/obj/machinery/camera/network/engineering_outpost{c_tag = "Construction Site Teleporter Airlock"},/turf/simulated/floor,/area/constructionsite/teleporter) "bg" = (/obj/structure/cable/blue,/obj/machinery/power/port_gen/pacman,/obj/machinery/power/terminal,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) -"bh" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "constructionsite_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "constructionsite_pump"; tag_chamber_sensor = "constructionsite_sensor"; tag_exterior_door = "constructionsite_outer"; tag_interior_door = "constructionsite_inner"},/turf/simulated/floor,/area/constructionsite/teleporter) +"bh" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "constructionsite_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "constructionsite_vent"; tag_chamber_sensor = "constructionsite_sensor"; tag_exterior_door = "constructionsite_outer"; tag_interior_door = "constructionsite_inner"},/turf/simulated/floor,/area/constructionsite/teleporter) "bi" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) "bj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/blue,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "constructionsite_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor,/area/constructionsite/teleporter) "bk" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/constructionsite/teleporter) From 903ab85790b37f148644848681bc3e165c1c8887 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Sun, 26 Jul 2015 23:15:04 +0200 Subject: [PATCH 10/15] Fixes #10317 - Raider skipjack now has an interior access button - While fixing this i also noticed the air tanks are wrongly rotated so they weren't helping the airlocks cycle at all. I replaced them with correctly rotated connector ports with classic canister on them. This way it's even possible to replace the canister (which is not possible with pressure tanks) - I also noticed about four walls in the skipjack were using the old undestructible shuttle turfs. I replaced those with shuttle walls the rest of this shuttle uses for the sake of consistency (it seems to work just fine even this way) --- maps/exodus-2.dmm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 4368fde2a3..95b80994d6 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -592,10 +592,19 @@ "lt" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "lu" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "lv" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lw" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) +"lx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) +"ly" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) "lz" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lA" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lB" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) +"lC" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lD" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "lE" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/syndicate_mothership) +"lF" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lG" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lH" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lI" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "mi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "mk" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "mr" = (/turf/unsimulated/wall,/area/start) @@ -1664,7 +1673,6 @@ "HE" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) "HF" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) "HG" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"HH" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) "HI" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) "HJ" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/centcom/holding) "HK" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/holding) @@ -1841,12 +1849,10 @@ "KZ" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "La" = (/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) "Lb" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Lc" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) "Ld" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Lf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Lg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Lh" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) "Li" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "Lj" = (/obj/machinery/hologram/holopad,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "Lk" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/centcom/holding) @@ -1855,7 +1861,6 @@ "Ln" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/turf/unsimulated/floor{dir = 8; icon_state = "whitegreen"},/area/centcom/holding) "Lo" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Lp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Lq" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) "Lr" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Ls" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Lt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) @@ -1893,13 +1898,11 @@ "LZ" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Ma" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Mb" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mc" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Md" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Me" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Mf" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Mg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) "Mh" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mi" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Mj" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/holding) "Mk" = (/obj/structure/table/standard,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-whitecorner"; name = "plating"; icon_state = "whitecorner"},/area/centcom/holding) "Ml" = (/obj/structure/table/standard,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/scalpel,/turf/unsimulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (SOUTHEAST)"},/area/centcom/holding) @@ -1981,7 +1984,6 @@ "NP" = (/obj/machinery/door/airlock/command{name = "Thunderdome"},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "NQ" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "NR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NS" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "NT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) "NU" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) "NV" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) @@ -1991,7 +1993,6 @@ "NZ" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) "Oa" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Ob" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Oc" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) "Od" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Oe" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Of" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) @@ -2222,16 +2223,16 @@ dCmuBvBvBvBvBvBvmuaMaMaMaMaMKiKjKjKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKjKjKsaMaMaMaMmt dCmumumumumumumumumuaMaMaMaMKiKzKyKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKzKyKsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUKAJUKBDsDiDNDODlCPDmDPDQDlCPDGDRDSDSDSDSDSCNDTDTDTNDDVDVKCDXDXCNDyDyDyDyCNaMaMAtNENFAtNHNIEaKDNJAtNLNGAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumumumumumumuaMaMaMaMaMKiKzKyKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKzKyKsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNKKJUJUKLJUDsDiEeEfDlCPDmEgEhDlCPDGDSDSDSDSDSDSCNEiEjEjElDVDVDVDXDXCNCNCNCNCNCNaMaMAtKNKMAtKONVEaEaKPAtKQKRAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumumumumumumuaMaMaMaMaMKSKjKjKTaMaMaMKSaMaMaMaMaMKTaMaMaMKSKjKjKTaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNKUJUJUJUJUEoDaCPCPCPCPCPCPCPCPCPDGDSDSKVEqKWKXCNEtDVDVDVEwExDVDVEyCNaMaMaMaMaMaMaMEAEBEBAtKYEaNREbKZAtEBEBBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumumumuaMaMaMaMaMaMaMaMLaLcAeLaaMaMaMLaDLDMDMDMDULaaMaMaMLaFYLhLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJULiLjKaLlLkEFEGEGEGEHEHEHEIEJLmELEMEHEHEHCNCNCNLnDVDVEwEPEQExERESCNaMaMaMaMaMaMaMETEVEVBVDYDZEaNtNsEAEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumumumuaMaMaMaMaMaMaMaMLaLpLoLaaMaMKSLaLqLsLrLtHHLaKTaMaMLaLwLyLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJULlLWEZEZEZEZEZEHLXFbFcFdFeFfFgFbLXEHCNCNCNCNCNCNLYFiNqFkERESCNaMaMaMaMaMaMaMaMaMaMETATEUEUEUATEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumumumuaMaMaMaMaMaMaMaMLaMcMbLaaMaMLaLaMdMfMeMfMgLaLaaMaMLaMhMiLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMjJULlLWEZEZEZEZEZEZEHFbFmFnFdFeFfFnFoFbEHMkMmMlMoMnCNDVFhFkDVDVEwFuaMaMaMaMaMaMaMaMaMaMaMETEVEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumumumuaMaMaMaMaMaMaMaMLalwAeLaaMaMaMLaDLDMDMDMDULaaMaMaMLaFYlxLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJULiLjKaLlLkEFEGEGEGEHEHEHEIEJLmELEMEHEHEHCNCNCNLnDVDVEwEPEQExERESCNaMaMaMaMaMaMaMETEVEVBVDYDZEaNtNsEAEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumumumuaMaMaMaMaMaMaMaMLaLpLoLaaMaMKSLaLaLsLrLtlyLaKTaMaMLaLwLyLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJULlLWEZEZEZEZEZEHLXFbFcFdFeFfFgFbLXEHCNCNCNCNCNCNLYFiNqFkERESCNaMaMaMaMaMaMaMaMaMaMETATEUEUEUATEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumumumuaMaMaMaMaMaMaMaMLalCMbLaaMaMLaLaMdMfMeMfMgLaLaaMaMLaMhlDLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMjJULlLWEZEZEZEZEZEZEHFbFmFnFdFeFfFnFoFbEHMkMmMlMoMnCNDVFhFkDVDVEwFuaMaMaMaMaMaMaMaMaMaMaMETEVEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumumumuaMaMaMaMaMaMaMaMLaLbLaLaLaLaLaMrMqMqMqMqMqMsLaLaLaLaLaLdLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJULlLWEZEZEZEZEZEZEZEHFvFbFvFdFeFfFvFbFvEHFwDVDVDVDVMuDVDVDVDVDVFyFzaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumumumuaMaMaMaMaMaMaMaMLaMwMvMyMxMzLaMBMqMqMqMqMqMBLaMDMClvMEMwLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNLlLWEZEZEZEZEZEZEZEZEHFAFbFbFdFeFfFbFbFBEHFCFDFEFFMGCNDVDVDVDVDVMHFIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumumumuaMaMaMaMaMaMaMaMLalFMvMyMxMzLaMBMqMqMqMqMqMBLaMDMClvMElGLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNLlLWEZEZEZEZEZEZEZEZEHFAFbFbFdFeFfFbFbFBEHFCFDFEFFMGCNDVDVDVDVDVMHFIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumuaMaMaMaMaMaMaMaMaMaMaMLaMwMIMIMIMJLaLfLeLgMMLfLeLgLaMOMIMIMSMwLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHCNCNCNCNCNCNCNCNCNCNCNEHFJFKFKFdFeFfFLFLFMEHMTFOFPFQMUCNFSFTFUMWMVMXCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumuaMaMaMaMaMaMaMaMaMaMaMMpMwMIMIMIMIMMMqMqMqMqMqMqMqMMMIMIMZMIMwMpaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeFeFeFeFeFeFeFeFeFeFeEHEHNbEHEHFeEHEHNbEHEHEHEHEHEHEHCNCNCNCNCNCNCNCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMaMaMaMaMaMaMMtNnMINoMIMILaNpMqMqMqMqMqNrLaMINuMINvMwMtaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHEHEHEHNwEHEHEHFeFeFeFeFeFeEHFeEHFeFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMaMaMaMaMaMaMMKNnMIMILaNzLaLaLaNBNANCLaLaLaNzLaNMNKNOMKaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHEHEHEHEHEHEHEHNPEHEHEHEHEHEHEHEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumuaMaMaMaMaMaMaMaMaMKSLaNSNQNQLaNUNTNUMpNBNWNCMpNYNXNZLaObOaOcLaKTaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHGeOdOeOdGhGiGiGiGiGiGhGiGhGiGjEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumuaMaMaMaMaMaMaMaMaMKSLalHNQNQLaNUNTNUMpNBNWNCMpNYNXNZLaObOalILaKTaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHGeOdOeOdGhGiGiGiGiGiGhGiGhGiGjEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMmumuaMaMaMOfLaOgOgLaLaNUNUNUMtNBNANCMtNZNZOhLaLaOgOgLaOiaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGbGbGbGbGlEHGiGmGmGmGmGmGiGiGiGmGmGmGmGnGoEHFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMmumuaMaMaMaMOfOjOjOiLaOlOkNUMKOmMqOmMKNZNZOnLaOfOjOjOiaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkOpOoOoGbGbGrGiGiGsGtGsGiGiGiGiGiGsGtGsGuGiEHFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMLaNUNUNULaLaMMLaLaOqNZOrLaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHFeEHEHEHEHEHEHEHEHGiGmGmGmGmGmGiGiGiGmGmGmGmGvGiEHEHEHEHEHEHEHFeEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM From 747ee3ef6c6182165522859f612c039034d3519c Mon Sep 17 00:00:00 2001 From: Atlantis Date: Sun, 26 Jul 2015 23:49:50 +0200 Subject: [PATCH 11/15] Core fireproofing - This is highly cut-down version of #9918 - This PR maps in reinforced phoron windows for engine core to protect it against fires. Some reinforced phoron glass is also placed into engineering storage for repairs - In comparsion to previous PR, nothing else is changed. No name change to borosilicate, no alloying recipe, no heat resistance changes. --- maps/exodus-1.dmm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 876b0e55b9..77ed3487d9 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -6517,7 +6517,7 @@ "cvq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cvr" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering/atmos) "cvs" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Engineering Hallway North"; dir = 4},/turf/simulated/floor,/area/engineering) -"cvt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/steel_reinforced,/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/plastic{amount = 50},/turf/simulated/floor,/area/engineering/workshop) +"cvt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/steel_reinforced,/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/glass/phoronrglass{amount = 50},/turf/simulated/floor,/area/engineering/workshop) "cvu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering) "cvv" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/steel_reinforced,/turf/simulated/floor,/area/engineering/workshop) "cvw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/engineering) @@ -7218,7 +7218,7 @@ "cIP" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cIQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIR" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/device/multitool{pixel_x = 5},/obj/item/clothing/gloves/yellow,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/steel,/turf/simulated/floor,/area/engineering/engine_smes) -"cIS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{dir = 8; icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIS" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/grille,/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIT" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -2; pixel_y = 5},/turf/simulated/floor,/area/engineering/engine_monitoring) "cIU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) @@ -7242,7 +7242,7 @@ "cJn" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJo" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) "cJp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "engineering_dock_airlock"; pixel_x = -25; pixel_y = 0; req_one_access = list(13,11,24); tag_airpump = "engineering_dock_pump"; tag_chamber_sensor = "engineering_dock_sensor"; tag_exterior_door = "engineering_dock_outer"; tag_interior_door = "engineering_dock_inner"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/engi_shuttle) -"cJq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cJq" = (/obj/structure/grille,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJr" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cJs" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cJt" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; pixel_y = 1; power_rating = 30000; use_power = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) @@ -7265,7 +7265,7 @@ "cJK" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJL" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) "cJM" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) -"cJN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cJN" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJO" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) "cJP" = (/turf/simulated/floor/engine/nitrogen{dir = 4; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cJQ" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) @@ -7279,7 +7279,7 @@ "cJY" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJZ" = (/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) "cKa" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cKb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cKb" = (/obj/structure/grille,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cKc" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) "cKd" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "engineering_dock_sensor"; pixel_x = -25; pixel_y = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/engi_shuttle) "cKe" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7377,6 +7377,9 @@ "cLS" = (/obj/machinery/camera/network/engine{c_tag = "Engine Core South"; dir = 1},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cLT" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille/broken,/obj/structure/lattice,/turf/space,/area/space) "cLU" = (/turf/space,/area/skipjack_station/southwest_solars) +"cLV" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cLW" = (/obj/structure/grille,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cLX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/grille,/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7572,9 +7575,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGBcHRcHQcHTcHScLAcHUcHXcHWcHZcHYcHYcHYcIbcIacIdcHYcHYcIecIgcIfcIicIhcIkcIjcImcIlcIlcIlcIlcIlcIlcIncIocIncIocIncHyaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcIpcIrcIqcItcIscIucGJcIvcHbcHbcHbcIxcIwcIzcIycIBcLBcIDcICcIFcIEcIHcIGcINcIIcImcIOcIPcIOcIPcIOcIPcIOcIPcIOcIPcIOcHyaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcLCcILcGtcIQcHbcHbcHbcLDcGtcLEcIScLFcGtcLGcJdcJicIfcJkcJjcLHcGtaaacHPcHPcHPcHPcJmcHPcHPcHPcHPcHPcHPcHPaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcJncJacJbcJcciFcJecJfcJgcJecGtcLIcJocHbcHbcJrcJqcJtcJscJucJqcJwcJvcIgcIfcJycJxcJLcGtaafcHycHycHycHycHycHycHycHycHycHycHycHyaafaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycLJcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcLLcLKcLNcLMcLOcJDcJEcLPcJGcJHcJHcJHcJIcJJcJKcGtcJMcJMcHbcHbcJrcJNcJPcJOcJQcJNcJwcHbcIFcJZcIHcHbcKacGtaafcHycHycHycHycHycHycHycHycHycHycHycHyaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcLQcIKcLRcJWcJecJecJXcJXcJYcGtcJMcJMcHbcHbcJrcKbcJPcKccLScKbcKkcKecKscKmcKucKtcKvcGtaaacHPcHPcHPcHPcJmcHPcHPcHPcHPcHPcHPcHPaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcJncJacJbcJcciFcJecJfcJgcJecGtcLIcJocHbcHbcJrcJqcJtcJscJucJNcJwcJvcIgcIfcJycJxcJLcGtaafcHycHycHycHycHycHycHycHycHycHycHycHyaafaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycLJcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcLLcLKcLNcLMcLOcJDcJEcLPcJGcJHcJHcJHcJIcJJcJKcGtcJMcJMcHbcHbcJrcKbcJPcJOcJQcLVcJwcHbcIFcJZcIHcHbcKacGtaafcHycHycHycHycHycHycHycHycHycHycHycHyaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcLQcIKcLRcJWcJecJecJXcJXcJYcGtcJMcJMcHbcHbcJrcLWcJPcKccLScLXcKkcKecKscKmcKucKtcKvcGtaaacHPcHPcHPcHPcJmcHPcHPcHPcHPcHPcHPcHPaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcGtcGtcGJcGtcGtcGtcGtcGtcKwcGtcGtcGtcGtcGtcGJcGtcGtcGtcGtaafcHycHycHycHycHycHycHycHycHycHycHycHyaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacKxaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacHqcKycHqcKycKzcKycHqcKycHqcKycHqcKyaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 4afa8a80f86e592a801301675fd14081f3cb7c0e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 27 Jul 2015 15:29:11 +0930 Subject: [PATCH 12/15] Readds config option to disable organ decay. --- code/controllers/configuration.dm | 3 +++ code/modules/organs/organ.dm | 2 +- config/example/config.txt | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index fe5dcc0d67..3251a8e8e1 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -121,6 +121,7 @@ var/list/gamemode_cache = list() var/organ_health_multiplier = 1 var/organ_regeneration_multiplier = 1 + var/organs_decay //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. @@ -708,6 +709,8 @@ var/list/gamemode_cache = list() config.organ_regeneration_multiplier = value / 100 if("organ_damage_spillover_multiplier") config.organ_damage_spillover_multiplier = value / 100 + if("organs_can_decay") + config.organs_decay = 1 if("bones_can_break") config.bones_can_break = value if("limbs_can_break") diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index b767292511..bbafd2e53b 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -95,7 +95,7 @@ var/list/organ_cache = list() if(B && prob(40)) reagents.remove_reagent("blood",0.1) blood_splatter(src,B,1) - damage += rand(1,3) + if(config.organs_decay) damage += rand(1,3) if(damage >= max_damage) die() diff --git a/config/example/config.txt b/config/example/config.txt index 7b090d4b38..61bc8470db 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -362,7 +362,8 @@ STARLIGHT 0 ## Enable asteroid tunnel/cave generation. Will behave strangely if turned off with a map that expects it on. # GENERATE_ASTEROID - +## Uncomment to enable organ decay outside of a body or storage item. +#ORGANS_CAN_DECAY ## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog #AGGRESSIVE_CHANGELOG From e0429af2f734d73738155fb30bb60b7fabb711df Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 27 Jul 2015 15:33:54 +0930 Subject: [PATCH 13/15] Added config option for initial brain organ health. --- code/controllers/configuration.dm | 5 +++++ code/modules/mob/living/carbon/brain/brain_item.dm | 1 + config/example/config.txt | 3 +++ 3 files changed, 9 insertions(+) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 3251a8e8e1..fa299b3495 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -122,6 +122,7 @@ var/list/gamemode_cache = list() var/organ_health_multiplier = 1 var/organ_regeneration_multiplier = 1 var/organs_decay + var/default_brain_health = 400 //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. @@ -711,6 +712,10 @@ var/list/gamemode_cache = list() config.organ_damage_spillover_multiplier = value / 100 if("organs_can_decay") config.organs_decay = 1 + if("default_brain_health") + config.default_brain_health = text2num(value) + if(!config.default_brain_health || config.default_brain_health < 1) + config.default_brain_health = initial(config.default_brain_health) if("bones_can_break") config.bones_can_break = value if("limbs_can_break") diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 486916821b..31c85d770b 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -23,6 +23,7 @@ /obj/item/organ/brain/New() ..() + health = config.default_brain_health spawn(5) if(brainmob && brainmob.client) brainmob.client.screen.len = null //clear the hud diff --git a/config/example/config.txt b/config/example/config.txt index 61bc8470db..7f94edde44 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -367,3 +367,6 @@ STARLIGHT 0 ## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog #AGGRESSIVE_CHANGELOG + +## Uncomment to override default brain health. +#DEFAULT_BRAIN_HEALTH 400 \ No newline at end of file From ade491b32600a4cb19ca2a4b7fd3a9668b2f8309 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 27 Jul 2015 09:53:35 +0200 Subject: [PATCH 14/15] Changelog update. --- html/changelog.html | 7 +++++++ html/changelogs/.all_changelog.yml | 5 +++++ html/changelogs/Kelenius-ofBorgsAndShakers.yml | 6 ------ 3 files changed, 12 insertions(+), 6 deletions(-) delete mode 100644 html/changelogs/Kelenius-ofBorgsAndShakers.yml diff --git a/html/changelog.html b/html/changelog.html index b1fb843f98..d6b531d013 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,13 @@ -->
+

27 July 2015

+

Kelenius updated:

+
    +
  • Borg shaker now works similarly to hypospray. It generates reagents that can be poured into glasses.
  • +
  • Therefore, they can no longer duplicate rare reagents such as phoron.
  • +
+

14 July 2015

HarpyEagle updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b30d3cebf5..c2fe49f111 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1975,3 +1975,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. PsiOmegaDelta: - tweak: Ninjas can no longer teleport unto turfs that contain solid objects. - tweak: Wizards can no longer etheral jaunt unto turfs that contain solid objects. +2015-07-27: + Kelenius: + - tweak: Borg shaker now works similarly to hypospray. It generates reagents that + can be poured into glasses. + - bugfix: Therefore, they can no longer duplicate rare reagents such as phoron. diff --git a/html/changelogs/Kelenius-ofBorgsAndShakers.yml b/html/changelogs/Kelenius-ofBorgsAndShakers.yml deleted file mode 100644 index 5f33874986..0000000000 --- a/html/changelogs/Kelenius-ofBorgsAndShakers.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Kelenius - -delete-after: True -changes: - - tweak: "Borg shaker now works similarly to hypospray. It generates reagents that can be poured into glasses." - - bugfix: "Therefore, they can no longer duplicate rare reagents such as phoron." From 0838de3ba2400d506a28e69e31daf14e0e2be5f3 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 27 Jul 2015 10:03:31 +0200 Subject: [PATCH 15/15] Compilation fixes. --- code/game/machinery/bots/mulebot.dm | 2 +- .../mob/living/carbon/human/inventory.dm | 439 +----------------- 2 files changed, 2 insertions(+), 439 deletions(-) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 2f6166905a..fd2b11c3b1 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -59,7 +59,7 @@ ..() wires = new(src) botcard = new(src) - botcard.access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station) + botcard.access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) cell = new(src) cell.charge = 2000 cell.maxcharge = 2000 diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 66a630a06c..2fb446e1ac 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -338,444 +338,7 @@ This saves us from having to call add_fingerprint() any time something is put in return 0 return 1 -/obj/effect/equip_e/process() - return - -/obj/effect/equip_e/proc/done() - return - -/obj/effect/equip_e/New() - if (!ticker) - del(src) - spawn(100) - del(src) - ..() - return - -/obj/effect/equip_e/human/process() - if (item) - item.add_fingerprint(source) - else - switch(place) - if("mask") - if (!( target.wear_mask )) - del(src) - if("l_hand") - if (!( target.l_hand )) - del(src) - if("r_hand") - if (!( target.r_hand )) - del(src) - if("suit") - if (!( target.wear_suit )) - del(src) - if("uniform") - if (!( target.w_uniform )) - del(src) - if("back") - if (!( target.back )) - del(src) - if("syringe") - return - if("pill") - return - if("fuel") - return - if("drink") - return - if("dnainjector") - return - if("handcuff") - if (!( target.handcuffed )) - del(src) - if("id") - if ((!( target.wear_id ) || !( target.w_uniform ))) - del(src) - if("splints") - var/count = 0 - for(var/organ in list("l_leg","r_leg","l_arm","r_arm")) - var/datum/organ/external/o = target.organs_by_name[organ] - if(o.status & ORGAN_SPLINTED) - count = 1 - break - if(count == 0) - del(src) - return - if("sensor") - if (! target.w_uniform ) - del(src) - if("internal") - if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal ))) - del(src) - - var/list/L = list( "syringe", "pill", "drink", "dnainjector", "fuel", "sensor", "internal", "tie") - if ((item && !( L.Find(place) ))) - if(isrobot(source) && place != "handcuff") - del(src) - for(var/mob/O in viewers(target, null)) - O.show_message("\red [source] is trying to put \a [item] on [target]", 1) - else - - var/target_part = null - var/obj/item/target_item = null - var/message = null - - switch(place) - if("mask") - target_part = "head" - target_item = target.wear_mask - if("l_hand") - target_part = "left hand" - target_item = target.l_hand - if("r_hand") - target_part = "right hand" - target_item = target.r_hand - if("gloves") - target_part = "hands" - target_item = target.gloves - if("eyes") - target_part = "eyes" - target_item = target.glasses - if("l_ear") - target_part = "left ear" - target_item = target.l_ear - if("r_ear") - target_part = "right ear" - target_item = target.r_ear - if("head") - target_part = "head" - target_item = target.head - if("shoes") - target_part = "feet" - target_item = target.shoes - if("belt") - target_part = "waist" - target_item = target.belt - if("suit") - target_part = "body" - target_item = target.wear_suit - if("back") - target_part = "back" - target_item = target.back - if("s_store") - target_part = "suit" - target_item = target.s_store - if("id") - target_part = "uniform" - target_item = target.wear_id - - if("syringe") - message = "\red [source] is trying to inject [target]!" - if("pill") - message = "\red [source] is trying to force [target] to swallow [item]!" - if("drink") - message = "\red [source] is trying to force [target] to swallow a gulp of [item]!" - if("dnainjector") - message = "\red [source] is trying to inject [target] with the [item]!" - if("uniform") - target.attack_log += text("\[[time_stamp()]\] Has had their uniform ([target.w_uniform]) removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) uniform ([target.w_uniform])") - if(target.w_uniform && !target.w_uniform.canremove) - message = "\red [source] fails to take off \a [target.w_uniform] from [target]'s body!" - return - else - message = "\red [source] is trying to take off \a [target.w_uniform] from [target]'s body!" - for(var/obj/item/I in list(target.l_store, target.r_store)) - if(I.on_found(source)) - return - if("handcuff") - target.attack_log += text("\[[time_stamp()]\] Was unhandcuffed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to unhandcuff [target.name]'s ([target.ckey])") - message = "\red [source] is trying to unhandcuff [target]!" - if("legcuff") - target.attack_log += text("\[[time_stamp()]\] Was unlegcuffed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to unlegcuff [target.name]'s ([target.ckey])") - message = "\red [source] is trying to unlegcuff [target]!" - if("tie") - var/obj/item/clothing/under/suit = target.w_uniform - if(suit.accessories.len) - var/obj/item/clothing/accessory/A = suit.accessories[1] - target.attack_log += "\[[time_stamp()]\] Has had their accessory ([A]) removed by [source.name] ([source.ckey])" - source.attack_log += "\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) accessory ([A])" - if(istype(A, /obj/item/clothing/accessory/holobadge) || istype(A, /obj/item/clothing/accessory/medal)) - for(var/mob/M in viewers(target, null)) - M.show_message("\red [source] tears off \the [A] from [target]'s [suit]!" , 1) - done() - return - else - message = "\red [source] is trying to take off \a [A] from [target]'s [suit]!" - if("pockets") - target.attack_log += text("\[[time_stamp()]\] Has had their pockets emptied by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to empty [target.name]'s ([target.ckey]) pockets") - for(var/obj/item/I in list(target.l_store, target.r_store)) - if(I.on_found(source)) - return - message = "\red [source] is trying to empty [target]'s pockets." - if("CPR") - if (!target.cpr_time) - del(src) - target.cpr_time = 0 - message = "\red [source] is trying perform CPR on [target]!" - if("internal") - target.attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to toggle [target.name]'s ([target.ckey]) internals") - if (target.internal) - message = "\red [source] is trying to remove [target]'s internals" - else - message = "\red [source] is trying to set on [target]'s internals." - if("splints") - message = text("\red [] is trying to remove []'s splints!", source, target) - if("sensor") - target.attack_log += text("\[[time_stamp()]\] Has had their sensors toggled by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to toggle [target.name]'s ([target.ckey]) sensors") - var/obj/item/clothing/under/suit = target.w_uniform - if (suit.has_sensor >= 2) - source << "The controls are locked." - return - message = "\red [source] is trying to set [target]'s suit sensors!" - - if(target_item) - target.attack_log += text("\[[time_stamp()]\] Had their [target_item] removed by [source.name] ([source.ckey])") - source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) [target_item]") - - if(target_item.canremove) - message = "[source] is trying to take off \a [target_item] from [target]'s [target_part]!" - else - source.visible_message("[source] fails to take off \a [target_item] from [target]'s [target_part]!") - return - - source.visible_message(message) - - spawn( HUMAN_STRIP_DELAY ) - done() - return - return - -/* -This proc equips stuff (or does something else) when removing stuff manually from the character window when you click and drag. -It works in conjuction with the process() above. -This proc works for humans only. Aliens stripping humans and the like will all use this proc. Stripping monkeys or somesuch will use their version of this proc. -The first if statement for "mask" and such refers to items that are already equipped and un-equipping them. -The else statement is for equipping stuff to empty slots. -!canremove refers to variable of /obj/item/clothing which either allows or disallows that item to be removed. -It can still be worn/put on as normal. -*/ -/obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn - target.cpr_time = 1 - if(isanimal(source)) return //animals cannot strip people - if(!source || !target) return //Target or source no longer exist - if(source.loc != s_loc) return //source has moved - if(target.loc != t_loc) return //target has moved - if(LinkBlocked(s_loc,t_loc)) return //Use a proxi! - if(item && source.get_active_hand() != item) return //Swapped hands / removed item from the active one - if ((source.restrained() || source.stat)) return //Source restrained or unconscious / dead - - var/slot_to_process - var/strip_item //this will tell us which item we will be stripping - if any. - - switch(place) //here we go again... - if("mask") - slot_to_process = slot_wear_mask - if (target.wear_mask && target.wear_mask.canremove) - strip_item = target.wear_mask - if("gloves") - slot_to_process = slot_gloves - if (target.gloves && target.gloves.canremove) - strip_item = target.gloves - if("eyes") - slot_to_process = slot_glasses - if (target.glasses) - strip_item = target.glasses - if("belt") - slot_to_process = slot_belt - if (target.belt) - strip_item = target.belt - if("s_store") - slot_to_process = slot_s_store - if (target.s_store) - strip_item = target.s_store - if("head") - slot_to_process = slot_head - if (target.head && target.head.canremove) - strip_item = target.head - if("l_ear") - slot_to_process = slot_l_ear - if (target.l_ear) - strip_item = target.l_ear - if("r_ear") - slot_to_process = slot_r_ear - if (target.r_ear) - strip_item = target.r_ear - if("shoes") - slot_to_process = slot_shoes - if (target.shoes && target.shoes.canremove) - strip_item = target.shoes - if("l_hand") - if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) - slot_to_process = slot_l_hand - if (target.l_hand) - strip_item = target.l_hand - if("r_hand") - if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) - slot_to_process = slot_r_hand - if (target.r_hand) - strip_item = target.r_hand - if("uniform") - slot_to_process = slot_w_uniform - if(target.w_uniform && target.w_uniform.canremove) - strip_item = target.w_uniform - if("suit") - slot_to_process = slot_wear_suit - if (target.wear_suit && target.wear_suit.canremove) - strip_item = target.wear_suit - if("tie") - var/obj/item/clothing/under/suit = target.w_uniform - //var/obj/item/clothing/accessory/tie = suit.hastie - /*if(tie) - if (istype(tie,/obj/item/clothing/accessory/storage)) - var/obj/item/clothing/accessory/storage/W = tie - if (W.hold) - W.hold.close(usr) - usr.put_in_hands(tie) - suit.hastie = null*/ - if(suit && suit.accessories.len) - var/obj/item/clothing/accessory/A = suit.accessories[1] - A.on_removed(usr) - suit.accessories -= A - target.update_inv_w_uniform() - if("id") - slot_to_process = slot_wear_id - if (target.wear_id) - strip_item = target.wear_id - if("back") - slot_to_process = slot_back - if (target.back) - strip_item = target.back - if("handcuff") - slot_to_process = slot_handcuffed - if (target.handcuffed) - strip_item = target.handcuffed - else if (source != target && ishuman(source)) - //check that we are still grabbing them - var/grabbing = 0 - for (var/obj/item/weapon/grab/G in target.grabbed_by) - if (G.loc == source && G.state >= GRAB_AGGRESSIVE) - grabbing = 1 - break - if (!grabbing) - slot_to_process = null - source << "\red Your grasp was broken before you could restrain [target]!" - - if("legcuff") - slot_to_process = slot_legcuffed - if (target.legcuffed) - strip_item = target.legcuffed - if("splints") - var/can_reach_splints = 1 - if(target.wear_suit && istype(target.wear_suit,/obj/item/clothing/suit/space)) - var/obj/item/clothing/suit/space/suit = target.wear_suit - if(suit.supporting_limbs && suit.supporting_limbs.len) - source << "You cannot remove the splints - [target]'s [suit] is supporting some of the breaks." - can_reach_splints = 0 - - if(can_reach_splints) - for(var/organ in list("l_leg","r_leg","l_arm","r_arm")) - var/datum/organ/external/o = target.get_organ(organ) - if (o && o.status & ORGAN_SPLINTED) - var/obj/item/W = new /obj/item/stack/medical/splint(amount=1) - o.status &= ~ORGAN_SPLINTED - if (W) - W.loc = target.loc - W.layer = initial(W.layer) - W.add_fingerprint(source) - if("CPR") - if ((target.health > config.health_threshold_dead && target.health < config.health_threshold_crit)) - var/suff = min(target.getOxyLoss(), 5) //Pre-merge level, less healing, more prevention of dieing. - target.adjustOxyLoss(-suff) - target.updatehealth() - for(var/mob/O in viewers(source, null)) - O.show_message("\red [source] performs CPR on [target]!", 1) - target << "\blue You feel a breath of fresh air enter your lungs. It feels good." - source << "\red Repeat at least every 7 seconds." - if("dnainjector") - var/obj/item/weapon/dnainjector/S = item - if(S) - S.add_fingerprint(source) - if (!( istype(S, /obj/item/weapon/dnainjector) )) - S.inuse = 0 - del(src) - S.inject(target, source) - if (S.s_time >= world.time + 30) - S.inuse = 0 - del(src) - S.s_time = world.time - for(var/mob/O in viewers(source, null)) - O.show_message("\red [source] injects [target] with the DNA Injector!", 1) - S.inuse = 0 - if("pockets") - if (!item || (target.l_store && target.r_store)) // Only empty pockets when hand is empty or both pockets are full - slot_to_process = slot_l_store - strip_item = target.l_store //We'll do both - else if (target.l_store) - slot_to_process = slot_r_store - else - slot_to_process = slot_l_store - if("sensor") - var/obj/item/clothing/under/suit = target.w_uniform - if (suit) - if(suit.has_sensor >= 2) - source << "The controls are locked." - else - suit.set_sensors(source) - if("internal") - if (target.internal) - target.internal.add_fingerprint(source) - target.internal = null - if (target.internals) - target.internals.icon_state = "internal0" - else - if (!( istype(target.wear_mask, /obj/item/clothing/mask) )) - return - else - if (istype(target.back, /obj/item/weapon/tank)) - target.internal = target.back - else if (istype(target.s_store, /obj/item/weapon/tank)) - target.internal = target.s_store - else if (istype(target.belt, /obj/item/weapon/tank)) - target.internal = target.belt - if (target.internal) - for(var/mob/M in viewers(target, 1)) - M.show_message("[target] is now running on internals.", 1) - target.internal.add_fingerprint(source) - if (target.internals) - target.internals.icon_state = "internal1" - if(slot_to_process) - if(strip_item) //Stripping an item from the mob - var/obj/item/W = strip_item - if(W.canremove) - target.remove_from_mob(W) - W.add_fingerprint(source) - if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;) - if(target.r_store) - W = target.r_store - if(W.canremove) - target.remove_from_mob(W) //At this stage l_store is already processed by the code above, we only need to process r_store. - W.add_fingerprint(source) - else - if(item && target.has_organ_for_slot(slot_to_process)) //Placing an item on the mob - if(item.mob_can_equip(target, slot_to_process, 0)) - source.u_equip(item) - target.equip_to_slot_if_possible(item, slot_to_process, 0, 1, 1) - item.dropped(source) - source.update_icons() - target.update_icons() - - if(source && target) - if(source.machine == target) - target.show_inv(source) - del(src)/mob/living/carbon/human/get_equipped_item(var/slot) +/mob/living/carbon/human/get_equipped_item(var/slot) switch(slot) if(slot_back) return back if(slot_legcuffed) return legcuffed