From 2cf2eb2014674c841211339712f6ef519dc963c5 Mon Sep 17 00:00:00 2001 From: skull132 Date: Tue, 13 Oct 2015 13:34:40 +0300 Subject: [PATCH 01/19] Removing outdated & duplicate species.dm This file exists as an older duplicate. Why does it exist? No clue, but it's not used ever. So here. --- code/modules/mob/living/carbon/species.dm | 388 ---------------------- 1 file changed, 388 deletions(-) delete mode 100644 code/modules/mob/living/carbon/species.dm diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm deleted file mode 100644 index b5043fd2..00000000 --- a/code/modules/mob/living/carbon/species.dm +++ /dev/null @@ -1,388 +0,0 @@ -/* - Datum-based species. Should make for much cleaner and easier to maintain mutantrace code. -*/ - -/datum/species - var/name // Species name. - - var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. - var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set. - var/eyes = "eyes_s" // Icon for eyes. - - var/primitive // Lesser form, if any (ie. monkey for humans) - var/tail // Name of tail image in species effects icon file. - var/language // Default racial language, if any. - var/unarmed //For empty hand harm-intent attack - var/unarmed_type = /datum/unarmed_attack - var/secondary_langs = list() // The names of secondary languages that are available to this species. - var/mutantrace // Safeguard due to old code. - - var/breath_type = "oxygen" // Non-oxygen gas breathed, if any. - var/poison_type = "phoron" // Poisonous air. - var/exhale_type = "carbon_dioxide" // Exhaled gas type. - - var/cold_level_1 = 260 // Cold damage level 1 below this point. - var/cold_level_2 = 200 // Cold damage level 2 below this point. - var/cold_level_3 = 120 // Cold damage level 3 below this point. - - var/heat_level_1 = 360 // Heat damage level 1 above this point. - var/heat_level_2 = 400 // Heat damage level 2 above this point. - var/heat_level_3 = 1000 // Heat damage level 2 above this point. - - var/body_temperature = 310.15 //non-IS_SYNTHETIC species will try to stabilize at this temperature. (also affects temperature processing) - var/synth_temp_gain = 0 //IS_SYNTHETIC species will gain this much temperature every second - var/reagent_tag //Used for metabolizing reagents. - - var/darksight = 2 - var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure. - var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning. - var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning. - var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure. - - var/brute_mod = null // Physical damage reduction/malus. - var/burn_mod = null // Burn damage reduction/malus. - - var/flags = 0 // Various specific features. - - var/list/abilities = list() // For species-derived or admin-given powers - - var/blood_color = "#A10808" //Red. - var/flesh_color = "#FFC896" //Pink. - var/base_color //Used when setting species. - - //Used in icon caching. - var/race_key = 0 - var/icon/icon_template - -/datum/species/New() - unarmed = new unarmed_type() - -/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. - //This is a basic humanoid limb setup. - H.organs = list() - H.organs_by_name["chest"] = new/datum/organ/external/chest() - H.organs_by_name["groin"] = new/datum/organ/external/groin(H.organs_by_name["chest"]) - H.organs_by_name["head"] = new/datum/organ/external/head(H.organs_by_name["chest"]) - H.organs_by_name["l_arm"] = new/datum/organ/external/l_arm(H.organs_by_name["chest"]) - H.organs_by_name["r_arm"] = new/datum/organ/external/r_arm(H.organs_by_name["chest"]) - H.organs_by_name["r_leg"] = new/datum/organ/external/r_leg(H.organs_by_name["groin"]) - H.organs_by_name["l_leg"] = new/datum/organ/external/l_leg(H.organs_by_name["groin"]) - H.organs_by_name["l_hand"] = new/datum/organ/external/l_hand(H.organs_by_name["l_arm"]) - H.organs_by_name["r_hand"] = new/datum/organ/external/r_hand(H.organs_by_name["r_arm"]) - H.organs_by_name["l_foot"] = new/datum/organ/external/l_foot(H.organs_by_name["l_leg"]) - H.organs_by_name["r_foot"] = new/datum/organ/external/r_foot(H.organs_by_name["r_leg"]) - - H.internal_organs = list() - H.internal_organs_by_name["heart"] = new/datum/organ/internal/heart(H) - H.internal_organs_by_name["lungs"] = new/datum/organ/internal/lungs(H) - H.internal_organs_by_name["liver"] = new/datum/organ/internal/liver(H) - H.internal_organs_by_name["kidney"] = new/datum/organ/internal/kidney(H) - H.internal_organs_by_name["brain"] = new/datum/organ/internal/brain(H) - H.internal_organs_by_name["eyes"] = new/datum/organ/internal/eyes(H) - - for(var/name in H.organs_by_name) - H.organs += H.organs_by_name[name] - - for(var/datum/organ/external/O in H.organs) - O.owner = H - - if(flags & IS_SYNTHETIC) - for(var/datum/organ/external/E in H.organs) - if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue - E.status |= ORGAN_ROBOT - for(var/datum/organ/internal/I in H.internal_organs) - I.mechanize() - -/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment. - return - -/datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). - if(flags & IS_SYNTHETIC) - //H.make_jittery(200) //S-s-s-s-sytem f-f-ai-i-i-i-i-lure-ure-ure-ure - H.h_style = "" - spawn(100) - //H.is_jittery = 0 - //H.jitteriness = 0 - H.update_hair() - return - - -/datum/species/proc/get_eye_icon() - return eyes - - -/datum/species/human - name = "Human" - language = "Sol Common" - primitive = /mob/living/carbon/monkey - unarmed_type = /datum/unarmed_attack/punch - - flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR - - //If you wanted to add a species-level ability: - /*abilities = list(/client/proc/test_ability)*/ - -/datum/species/unathi - name = "Unathi" - icobase = 'icons/mob/human_races/r_lizard.dmi' - deform = 'icons/mob/human_races/r_def_lizard.dmi' - language = "Sinta'unathi" - tail = "sogtail" - unarmed_type = /datum/unarmed_attack/claws - primitive = /mob/living/carbon/monkey/unathi - darksight = 3 - - cold_level_1 = 280 //Default 260 - Lower is better - cold_level_2 = 220 //Default 200 - cold_level_3 = 130 //Default 120 - - heat_level_1 = 420 //Default 360 - Higher is better - heat_level_2 = 480 //Default 400 - heat_level_3 = 1100 //Default 1000 - - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR - - flesh_color = "#34AF10" - - reagent_tag = IS_UNATHI - base_color = "#066000" - -/datum/species/tajaran - name = "Tajaran" - icobase = 'icons/mob/human_races/r_tajaran.dmi' - deform = 'icons/mob/human_races/r_def_tajaran.dmi' - language = "Siik'Maas" - tail = "tajtail" - unarmed_type = /datum/unarmed_attack/claws - darksight = 8 - - cold_level_1 = 200 //Default 260 - cold_level_2 = 140 //Default 200 - cold_level_3 = 80 //Default 120 - - heat_level_1 = 330 //Default 360 - heat_level_2 = 380 //Default 400 - heat_level_3 = 800 //Default 1000 - - primitive = /mob/living/carbon/monkey/tajara - - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR - - flesh_color = "#AFA59E" - base_color = "#333333" - -/datum/species/skrell - name = "Skrell" - icobase = 'icons/mob/human_races/r_skrell.dmi' - deform = 'icons/mob/human_races/r_def_skrell.dmi' - language = "Skrellian" - primitive = /mob/living/carbon/monkey/skrell - unarmed_type = /datum/unarmed_attack/punch - - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR - - flesh_color = "#8CD7A3" - - reagent_tag = IS_SKRELL - -/datum/species/vox - name = "Vox" - icobase = 'icons/mob/human_races/r_vox.dmi' - deform = 'icons/mob/human_races/r_def_vox.dmi' - language = "Vox-pidgin" - unarmed_type = /datum/unarmed_attack/claws //I dont think it will hurt to give vox claws too. - - warning_low_pressure = 50 - hazard_low_pressure = 0 - - cold_level_1 = 80 - cold_level_2 = 50 - cold_level_3 = 0 - - eyes = "vox_eyes_s" - - breath_type = "nitrogen" - poison_type = "oxygen" - - flags = NO_SCAN - - blood_color = "#2299FC" - flesh_color = "#808D11" - - reagent_tag = IS_VOX - -/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H) - - H.verbs += /mob/living/carbon/human/proc/leap - ..() - -/datum/species/vox/armalis/handle_post_spawn(var/mob/living/carbon/human/H) - - H.verbs += /mob/living/carbon/human/proc/gut - H.verbs += /mob/living/carbon/human/proc/commune - ..() - -/datum/species/vox/armalis - name = "Vox Armalis" - icobase = 'icons/mob/human_races/r_armalis.dmi' - deform = 'icons/mob/human_races/r_armalis.dmi' - language = "Vox-pidgin" - unarmed_type = /datum/unarmed_attack/claws/armalis - - warning_low_pressure = 50 - hazard_low_pressure = 0 - - cold_level_1 = 80 - cold_level_2 = 50 - cold_level_3 = 0 - - heat_level_1 = 2000 - heat_level_2 = 3000 - heat_level_3 = 4000 - - brute_mod = 0.2 - burn_mod = 0.2 - - eyes = "blank_eyes" - breath_type = "nitrogen" - poison_type = "oxygen" - - flags = NO_SCAN | NO_BLOOD | HAS_TAIL | NO_PAIN | IS_WHITELISTED - - blood_color = "#2299FC" - flesh_color = "#808D11" - - tail = "armalis_tail" - icon_template = 'icons/mob/human_races/r_armalis.dmi' - - reagent_tag = IS_VOX - -/datum/species/diona - name = "Diona" - icobase = 'icons/mob/human_races/r_diona.dmi' - deform = 'icons/mob/human_races/r_def_plant.dmi' - language = "Rootspeak" - unarmed_type = /datum/unarmed_attack/diona - primitive = /mob/living/carbon/monkey/diona - - warning_low_pressure = 50 - hazard_low_pressure = -1 - - cold_level_1 = 50 - cold_level_2 = -1 - cold_level_3 = -1 - - heat_level_1 = 2000 - heat_level_2 = 3000 - heat_level_3 = 4000 - - body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not - - flags = IS_WHITELISTED | NO_BREATHE | REQUIRE_LIGHT | NO_SCAN | IS_PLANT | RAD_ABSORB | NO_BLOOD | IS_SLOW | NO_PAIN - - blood_color = "#004400" - flesh_color = "#907E4A" - - reagent_tag = IS_DIONA - -/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H) - H.gender = NEUTER - - return ..() - -/datum/species/diona/handle_death(var/mob/living/carbon/human/H) - - var/mob/living/carbon/monkey/diona/S = new(get_turf(H)) - - if(H.mind) - H.mind.transfer_to(S) - - for(var/mob/living/carbon/monkey/diona/D in H.contents) - if(D.client) - D.loc = H.loc - else - del(D) - - H.visible_message("\red[H] splits apart with a wet slithering noise!") - -/datum/species/machine - name = "Machine" - icobase = 'icons/mob/human_races/r_machine.dmi' - deform = 'icons/mob/human_races/r_machine.dmi' - language = "Tradeband" - unarmed_type = /datum/unarmed_attack/punch - - eyes = "blank_eyes" - brute_mod = 0.5 - burn_mod = 1 - - warning_low_pressure = 50 - hazard_low_pressure = 0 - - cold_level_1 = 50 - cold_level_2 = -1 - cold_level_3 = -1 - - heat_level_1 = 500 //gives them about 25 seconds in space before taking damage - heat_level_2 = 1000 - heat_level_3 = 2000 - - synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. - - flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | IS_SYNTHETIC | NO_POISON - - blood_color = "#1F181F" - flesh_color = "#575757" - - var/brain_type = 'posibrain' // default is robots - - -//Species unarmed attacks - -/datum/unarmed_attack - var/attack_verb = list("attack") // Empty hand hurt intent verb. - var/damage = 0 // Extra empty hand attack damage. - var/attack_sound = "punch" - var/miss_sound = 'sound/weapons/punchmiss.ogg' - var/sharp = 0 - var/edge = 0 - -/datum/unarmed_attack/punch - attack_verb = list("punch") - -/datum/unarmed_attack/diona - attack_verb = list("lash", "bludgeon") - damage = 5 - -/datum/unarmed_attack/claws - attack_verb = list("scratch", "claw") - attack_sound = 'sound/weapons/slice.ogg' - miss_sound = 'sound/weapons/slashmiss.ogg' - damage = 5 - sharp = 1 - edge = 1 - -/datum/unarmed_attack/claws/armalis - attack_verb = list("slash", "claw") - damage = 10 //they're huge! they should do a little more damage, i'd even go for 15-20 maybe... - -/datum/species/kocasslani - name = "Kocasslani" - icobase = 'icons/mob/human_races/r_kocasslani.dmi' - deform = 'icons/mob/human_races/r_def_kocasslani.dmi' - language = "Sini" - darksight = 8 - - cold_level_1 = 160 //Default 260 - cold_level_2 = 100 //Default 200 - cold_level_3 = 60 //Default 120 - - heat_level_1 = 300 //Default 360 - heat_level_2 = 360 //Default 400 - heat_level_3 = 800 //Default 1000 - - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR - -/* blood_color = "#659CEF" - flesh_color = "#D3AA8E" -*/ \ No newline at end of file From cf810e7c9da8664376eb66f2aad905f4ea66fe53 Mon Sep 17 00:00:00 2001 From: skull132 Date: Tue, 13 Oct 2015 13:36:02 +0300 Subject: [PATCH 02/19] IPC Organs - Initial Commit The basics are all here, but there are complications with making surgery code function with them properly. To be tested and troubeshot, and patched. --- code/game/mecha/mech_fabricator.dm | 6 +- code/modules/mob/living/carbon/human/life.dm | 54 ++++++-- .../mob/living/carbon/human/species.dm | 42 ++++--- .../mob/living/silicon/robot/component.dm | 25 +++- code/modules/organs/organ_alien.dm | 117 +++++++++++++++++- code/modules/organs/organ_internal.dm | 19 +-- code/modules/organs/organ_objects.dm | 23 +++- code/modules/surgery/generic.dm | 7 +- code/modules/surgery/organs_internal.dm | 34 ++++- 9 files changed, 271 insertions(+), 56 deletions(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index a1199642..19d78991 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -127,7 +127,9 @@ /obj/item/borg/upgrade/tasercooler, /obj/item/borg/upgrade/jetpack), - "Synthetic Coverings" = list( /obj/item/weapon/synth_skin_spray, + "Synthetic Shell Components" = list( + /obj/item/organ/eyes/robot, + /obj/item/weapon/synth_skin_spray, /obj/item/weapon/synth_skin_cartridge/paint, /obj/item/weapon/synth_skin_cartridge/skin, /obj/item/weapon/synth_skin_cartridge/fur, @@ -887,4 +889,4 @@ target.apply_damage(10, HALLOSS) target.say("*scream") spawn(10) - user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].") \ No newline at end of file + user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1a0399fa..252a35bd 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -801,7 +801,17 @@ proc/stabilize_body_temperature() if (species.flags & IS_SYNTHETIC) - bodytemperature += species.synth_temp_gain //just keep putting out heat. + //TODO: Test these constants + var/temperatureModifier = 0 //all IS_SYNTHETIC species -need- radiators + if(!has_organ("radiator")) + temperatureModifier = 25 + else + var/datum/organ/internal/Radiator = internal_organs_by_name["radiator"] + if(Radiator.is_broken()) + temperatureModifier = 25 + else if(Radiator.is_bruised()) + temperatureModifier = 17 + bodytemperature += species.synth_temp_gain + temperatureModifier //just keep putting out heat. return var/body_temperature_difference = species.body_temperature - bodytemperature @@ -1432,15 +1442,26 @@ if(1) healths.icon_state = "health6" if(2) healths.icon_state = "health7" else - //switch(health - halloss) - switch(100 - ((species && species.flags & NO_PAIN & !IS_SYNTHETIC) ? 0 : traumatic_shock)) - if(100 to INFINITY) healths.icon_state = "health0" - if(80 to 100) healths.icon_state = "health1" - if(60 to 80) healths.icon_state = "health2" - if(40 to 60) healths.icon_state = "health3" - if(20 to 40) healths.icon_state = "health4" - if(0 to 20) healths.icon_state = "health5" - else healths.icon_state = "health6" + var/numb = 0 + if (species && (species.flags & IS_SYNTHETIC)) + var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] + if (Diagnosis_unit.is_broken()) + numb = 1 + else if (Diagnosis_unit.is_bruised() && prob(35)) + numb = 1 + + if (numb) + healths.icon_state = "health_numb" + else + //switch(health - halloss) + switch(100 - ((species && species.flags & NO_PAIN & !IS_SYNTHETIC) ? 0 : traumatic_shock)) + if(100 to INFINITY) healths.icon_state = "health0" + if(80 to 100) healths.icon_state = "health1" + if(60 to 80) healths.icon_state = "health2" + if(40 to 60) healths.icon_state = "health3" + if(20 to 40) healths.icon_state = "health4" + if(0 to 20) healths.icon_state = "health5" + else healths.icon_state = "health6" if(nutrition_icon) switch(nutrition) @@ -1483,7 +1504,18 @@ else bodytemp.icon_state = "temp-4" else var/temp_step - if (bodytemperature >= species.body_temperature) + var/numb = 0 + if (species && (species.flags & IS_SYNTHETIC)) + var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] + if (Diagnosis_unit.is_broken()) + numb = 1 + else if (Diagnosis_unit.is_bruised() && prob(35)) + numb = 1 + + if (numb) + bodytemp.icon_state = "temp_numb" + + else if (bodytemperature >= species.body_temperature) temp_step = (species.heat_level_1 - species.body_temperature)/4 if (bodytemperature >= species.heat_level_1) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index ddfb8577..6fc004aa 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -201,17 +201,17 @@ // Grabs the window recieved when you click-drag someone onto you. /datum/species/proc/get_inventory_dialogue(var/mob/living/carbon/human/H) return - + //Used by xenos understanding larvae and dionaea understanding nymphs. /datum/species/proc/can_understand(var/mob/other) return - - + + /datum/species/proc/blend_preview_icon(var/icon/main_icon,var/datum/preferences/preferences,var/paint_colour) if(paint_colour) main_icon.Blend(paint_colour, ICON_ADD) - return + return if(flags & HAS_SKIN_COLOR) main_icon.Blend(rgb(preferences.r_skin, preferences.g_skin, preferences.b_skin), ICON_ADD) return @@ -220,8 +220,8 @@ main_icon.Blend(rgb(preferences.s_tone, preferences.s_tone, preferences.s_tone), ICON_ADD) else main_icon.Blend(rgb(-preferences.s_tone, -preferences.s_tone, -preferences.s_tone), ICON_SUBTRACT) - - + + /datum/species/proc/get_organ_preview_icon(var/name, var/robot, var/gendered, var/gender_string, var/datum/preferences/preferences, var/datum/synthetic_limb_cover/covering, var/paint_colour) var/icon_name = icobase if (robot) @@ -236,7 +236,7 @@ var/icon/result = new /icon(icon_name,state_name) blend_preview_icon(result,preferences,paint_colour) return result - + /datum/species/proc/get_is_preview_organ_robotic(var/name,var/datum/preferences/preferences) if (flags & IS_SYNTHETIC) @@ -245,7 +245,7 @@ var/list/organ_robotic_info=preferences.organ_data[name] if (istype(organ_robotic_info)) return TRUE - + /datum/species/proc/get_preview_organ_covering(var/name,var/datum/preferences/preferences) if (name in preferences.organ_data) var/list/organ_robotic_info=preferences.organ_data[name] @@ -254,8 +254,8 @@ if (preferences.species=="Machine") if (preferences.covering_type) return list(preferences.covering_type,rgb(preferences.r_skin,preferences.g_skin,preferences.b_skin)) - - + + /datum/species/proc/get_tail_preview_icon(var/list/preview_coverings,var/datum/preferences/preferences) var/tail_state=null if (!(isnull(preview_coverings["groin"]))) @@ -268,8 +268,8 @@ var/icon/result = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = tail_state) result.Blend(rgb(preferences.r_hair,preferences.g_hair,preferences.b_hair),ICON_ADD) return result - - + + /datum/species/proc/get_eyes_preview_icon(var/list/preview_coverings,var/datum/preferences/preferences) var/eye_state=null if (!(isnull(preview_coverings["head"]))) @@ -280,13 +280,13 @@ var/icon/result = new/icon('icons/mob/human_face.dmi',eye_state) result.Blend(rgb(preferences.r_eyes,preferences.g_eyes,preferences.b_eyes),ICON_ADD) return result - + /* This function takes a preferences object and generates a complete body and hair icon for that set of preferences. It's needlessly complicated and duplicates a lot of what's going on in update_icons. The two systems should be combined somehow, possibly by using a 'visual identity' object -that could be created from either a living human or a preferences object and then passing that to a single render function, but I'll leave that +that could be created from either a living human or a preferences object and then passing that to a single render function, but I'll leave that exercise for another day. -See code\modules\mob\new_player\preferences_setup.dm for where it's used. +See code\modules\mob\new_player\preferences_setup.dm for where it's used. - jack_fractal*/ /datum/species/proc/create_body_preview_icon(var/datum/preferences/preferences) var/gender_string = (preferences.gender==FEMALE) ? "f" : "m" @@ -578,7 +578,7 @@ See code\modules\mob\new_player\preferences_setup.dm for where it's used. rarity_value = 2 eyes = "blank_eyes" - brute_mod = 0.5 + brute_mod = 1 //Fuck yo brute mod. burn_mod = 1 warning_low_pressure = 50 @@ -602,6 +602,10 @@ See code\modules\mob\new_player\preferences_setup.dm for where it's used. has_organ = list( "heart" = /datum/organ/internal/heart, "brain" = /datum/organ/internal/brain/robot, + "eyes" = /datum/organ/internal/eyes/robot, + "radiator" = /datum/organ/internal/machine/radiator, + "chemical containment" = /datum/organ/internal/machine/bladder, + "diagnosis unit" = /datum/organ/internal/machine/diagnosis_unit, ) /datum/species/machine/create_organs(var/mob/living/carbon/human/H) ..() @@ -609,8 +613,8 @@ See code\modules\mob\new_player\preferences_setup.dm for where it's used. if (istype(brain_datum)) if (isnull(brain_datum.machine_brain_type)) brain_datum.machine_brain_type="Posibrain" - - + + /datum/species/bug name = "Vaurca" name_plural = "varucae" @@ -778,4 +782,4 @@ See code\modules\mob\new_player\preferences_setup.dm for where it's used. if(slot_back in equip_slots) equip_slots |= slot_in_backpack - equip_slots |= slot_legcuffed \ No newline at end of file + equip_slots |= slot_legcuffed diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index bb03edb4..b5208494 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -147,6 +147,7 @@ var/brute = 0 var/burn = 0 var/icon_state_broken = "broken" + var/obj/item/organ/organ_type = null // for shells. Only define if this can be placed inside an IPC during organ replacement surgery. // TODO: actual icons ;) /obj/item/robot_parts/robot_component/binary_communication_device @@ -168,7 +169,8 @@ name = "camera" icon_state = "camera" icon_state_broken = "camera_broken" - + organ_type = /obj/item/organ/eyes/robot + /obj/item/robot_parts/robot_component/law_computer name = "law computer" icon_state = "radio" @@ -178,12 +180,25 @@ name = "diagnosis unit" icon_state = "analyser" icon_state_broken = "analyser_broken" + organ_type = /obj/item/organ/machine/diagnosis_unit /obj/item/robot_parts/robot_component/radio name = "radio" icon_state = "radio" icon_state_broken = "radio_broken" +/obj/item/robot_parts/robot_component/radiator + name = "radiator" + icon_state = "radiator" + icon_state_broken = "radiator_broken" + organ_type = /obj/item/organ/machine/radiator + +/obj/item/robot_parts/robot_component/bladder + name = "chemical containment" + icon_state = "bladder" + icon_state_broken = "bladder_broken" + organ_type = /obj/item/organ/machine/bladder + // //Robotic Component Analyser, basically a health analyser for robots // @@ -227,7 +242,7 @@ user.show_message("\t Damage Specifics: [BU] - [BR]") if(M.tod && M.stat == DEAD) user.show_message("\blue Time of Disable: [M.tod]") - + if (istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/H = M var/list/damaged = H.get_damaged_components(1,1,1) @@ -245,7 +260,7 @@ user.show_message("\blue \t Components are OK.",1) if(H.emagged && prob(5)) user.show_message("\red \t ERROR: INTERNAL SYSTEMS COMPROMISED",1) - + if (ishuman(M) && (M:species.flags & IS_SYNTHETIC)) var/mob/living/carbon/human/H = M var/list/damaged = H.get_damaged_organs(1,1) @@ -258,8 +273,8 @@ (org.burn_dam > 0) ? "[org.burn_dam]" :0),1) else user.show_message("\blue \t Components are OK.",1) - + user.show_message("\blue Operating Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) - + src.add_fingerprint(user) return diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 9d4bfa0b..9300c55d 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -224,4 +224,119 @@ robotic = 2 /obj/item/organ/stack/vox - name = "vox cortical stack" \ No newline at end of file + name = "vox cortical stack" + +//IPC/SHELL ORGANS. +//TODO: Make the robot_components required for these +//TODO: Make said components printable +//TODO: sprites +/datum/organ/internal/machine + removed_type = /obj/item/organ/machine + +/datum/organ/internal/machine/process() + return + +/datum/organ/internal/machine/radiator + name = "internal cooling unit" + parent_organ = "chest" + robotic = 2 + min_bruised_damage = 15 + min_broken_damage = 40 + removed_type = /obj/item/organ/machine/radiator + +/obj/item/organ/machine/radiator + name = "internal cooling unit" + icon_state = "radiator" + organ_tag = "radiator" + organ_type = /datum/organ/internal/machine/radiator + robotic = 2 + +/obj/item/organ/machine/radiator/exposed_to_the_world() + var/obj/item/robot_parts/robot_component/radiator/Radiator = new(src.loc) + if(organ_data.damage) + Radiator.brute = organ_data.damage + del(src) + return Radiator + +/datum/organ/internal/machine/bladder + name = "chemical containment" + parent_organ = "groin" + robotic = 2 + removed_type = /obj/item/organ/machine/bladder + +/datum/organ/internal/machine/bladder/process() + if(is_bruised()) + var/leakSmall = rand(1,25) + if(owner.reagents.total_volume > 0) + owner.reagents.remove_any(leakSmall) + if(owner.reagents.maximum_volume > 500) + owner.reagents.maximum_volume -= leakSmall + + if(is_broken()) + var/leakLarge = rand(25,50) + if(owner.reagents.total_volume > 0) + owner.reagents.remove_any(leakLarge) + if(owner.reagents.maximum_volume > 0) + if(owner.reagents.maximum_volume < leakLarge) + owner.reagents.maximum_volume = 0 + else + owner.reagents.maximum_volume -= leakLarge + + if(!is_bruised() && !is_broken() && owner.reagents.maximum_volume < 1000) + owner.reagents.maximum_volume = 1000 + + if(owner.reagents.reagent_list.len) + if(owner.reagents.has_reagent("sacid") || owner.reagents.has_reagent("pacid")) + take_damage(rand(0,2.5), 1) + +/obj/item/organ/machine/bladder + name = "chemical containment" + icon_state = "bladder" + organ_tag = "chemical containment" + organ_type = /datum/organ/internal/machine/bladder + robotic = 2 + +/obj/item/organ/machine/bladder/replaced(var/mob/living/carbon/human/target) + if(istype(target) && (target.species.flags & IS_SYNTHETIC)) + if(target.reagents.maximum_volume < 1000) + target.reagents.maximum_volume = 1000 + + ..() + +/obj/item/organ/machine/bladder/removed(var/mob/living/target, var/mob/living/user) + ..() + + if(istype(target, /mob/living/carbon/human)) + var/mob/living/carbon/human/Machine = target + if(Machine.species.flags & IS_SYNTHETIC) + Machine.reagents.clear_reagents() + Machine.reagents.maximum_volume = 0 + +/obj/item/organ/machine/bladder/exposed_to_the_world() + msg_scopes("We went here x2.") + var/obj/item/robot_parts/robot_component/bladder/Bladder = new(src.loc) + if(organ_data.damage) + Bladder.brute = organ_data.damage + del(src) + return Bladder + +/datum/organ/internal/machine/diagnosis_unit + name = "diagnosis unit" + parent_organ = "head" + robotic = 2 + removed_type = /obj/item/organ/machine/diagnosis_unit + +/obj/item/organ/machine/diagnosis_unit + name = "diagnosis unit" + icon_state = "diagnosis_unit" + organ_tag = "diagnosis unit" + organ_type = /datum/organ/internal/machine/diagnosis_unit + robotic = 2 + +/obj/item/organ/machine/diagnosis_unit/exposed_to_the_world() + msg_scopes("We went here.") + var/obj/item/robot_parts/robot_component/diagnosis_unit/Diagnosis_unit = new(src.loc) + if(organ_data.damage) + Diagnosis_unit.brute = organ_data.damage + del(src) + return Diagnosis_unit diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 3ee262b7..53f28e83 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -249,12 +249,12 @@ parent_organ = "head" removed_type = /obj/item/organ/brain vital = 1 - - + + /datum/organ/internal/brain/robot // brains for shells - var/machine_brain_type=null - - + var/machine_brain_type=null + + /datum/organ/internal/brain/robot/proc/create_robot_brain_replacement(var/target,var/new_location) var/obj/item/device/mmi/new_mmi if (machine_brain_type=="Posibrain") @@ -267,7 +267,7 @@ new_mmi.transfer_identity(target) new_mmi.loc = new_location return new_mmi - + /datum/organ/internal/brain/xeno removed_type = /obj/item/organ/brain/xeno @@ -284,6 +284,11 @@ if(is_broken()) owner.eye_blind = 20 +/datum/organ/internal/eyes/robot // eyes for shells + name = "charge-coupled device" + parent_organ = "head" + removed_type = /obj/item/organ/eyes/robot + /datum/organ/internal/appendix name = "appendix" parent_organ = "groin" @@ -306,4 +311,4 @@ removed_organ.update() organ_holder = removed_organ - return removed_organ \ No newline at end of file + return removed_organ diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index c375cbb4..2340a34e 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -150,6 +150,19 @@ /obj/item/organ/eyes/prosthetic robotic = 2 +/obj/item/organ/eyes/robot + name = "charge-coupled device" + icon_state = "" + organ_type = /datum/organ/internal/eyes/robot + robotic = 2 + + exposed_to_the_world() + var/obj/item/robot_parts/robot_component/camera/Camera = new() + if(organ_data.damage) + Camera.brute = organ_data.damage + del(src) + return Camera + /obj/item/organ/liver/prosthetic robotic = 2 @@ -180,11 +193,11 @@ msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)]) (JMP)") target.death() - + /obj/item/organ/proc/exposed_to_the_world() // this is only useful for organs that change when actually removed from the body - return - - + return + + /obj/item/organ/appendix/removed(var/mob/living/target,var/mob/living/user) ..() @@ -277,4 +290,4 @@ if(fingerprintslast) O.fingerprintslast = fingerprintslast user.put_in_active_hand(O) - del(src) \ No newline at end of file + del(src) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 0cf7dfef..b9a234aa 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -17,10 +17,11 @@ return 0 if (affected.status & ORGAN_DESTROYED) return 0 - if (target_zone == "head" && target.species && (target.species.flags & IS_SYNTHETIC)) - return 1 if (affected.status & ORGAN_ROBOT) - return 0 + if (target.species && (target.species.flags & IS_SYNTHETIC) && affected.internal_organs.len) + return 1 + else + return 0 return 1 /datum/surgery_step/generic/cut_with_laser diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 3ea958bb..77076203 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -320,7 +320,8 @@ /datum/surgery_step/internal/replace_organ allowed_tools = list( - /obj/item/organ = 100 + /obj/item/organ = 100, + /obj/item/robot_parts/robot_component = 100 ) min_duration = 60 @@ -334,7 +335,16 @@ var/organ_compatible var/organ_missing - if(!istype(O)) + if(!istype(O) && istype(O, /obj/item/robot_parts/robot_component)) + msg_scopes("Component's type: [tool.type].") + var/obj/item/robot_parts/robot_component/A = tool + msg_scopes("Component's organ_type: [A.organ_type].") + if(A.organ_type) + O = new A.organ_type() + O.update() + else + return 0 + else return 0 if(!target.species) @@ -357,6 +367,19 @@ user << "\red \The [target] already has [o_a][O.organ_tag]." return 2 + msg_scopes("Affected.name: [affected.name].") + msg_scopes("Parent_organ: [O.organ_data.parent_organ].") + msg_scopes("Organ_data.type: [O.organ_data.type].") + if(O.organ_data) + msg_scopes("We have organ data.") + else + msg_scopes("No organ data.") + + if(affected.name == O.organ_data.parent_organ) + msg_scopes("Affected name matches parent_organ.") + else + msg_scopes("Affected name does not match parent_organ.") + if(O.organ_data && affected.name == O.organ_data.parent_organ) organ_compatible = 1 else @@ -383,6 +406,11 @@ var/obj/item/organ/O = tool if(istype(O)) O.replaced(target,affected) + else if(istype(tool, /obj/item/robot_parts/robot_component)) + var/obj/item/robot_parts/robot_component/A = tool + if(A.organ_type) + O = A.organ_type + O.replaced(target,affected) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, damaging \the [tool]!", \ @@ -455,4 +483,4 @@ // max_duration = 40 // can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) -// return ..() && target.op_stage.ribcage == 2 \ No newline at end of file +// return ..() && target.op_stage.ribcage == 2 From 5ff3f5f13c7f4a358475632adad5eabea513a9ec Mon Sep 17 00:00:00 2001 From: skull132 Date: Tue, 13 Oct 2015 13:36:31 +0300 Subject: [PATCH 03/19] IPC Organs - robot_component.dmi update Adds new icons for the IPC organs/internal components. --- icons/obj/robot_component.dmi | Bin 2415 -> 2966 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/robot_component.dmi b/icons/obj/robot_component.dmi index 1129f25ab1c10c0121614dd223c23cac16a06fd2..bb53a0ab69242ae0763ffde605bd63bbd77b4a72 100644 GIT binary patch delta 2853 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 DZ_#Jn delta 2313 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 From b2e8f126a4768c5e62162b5654009a2d51bdcf0a Mon Sep 17 00:00:00 2001 From: skull132 Date: Tue, 13 Oct 2015 13:37:10 +0300 Subject: [PATCH 04/19] IPC Organs - surgery.dmi update Adds organs to surgery.dmi. I'm unsure if this is necessary, so it may get reverted later on. --- icons/obj/surgery.dmi | Bin 14743 -> 15388 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 202ec39bc8c2a8b13c4f403a0cf437b559e69e45..694752e10824a7532c4e7dac28b5f3b7ab2ea804 100644 GIT binary patch literal 15388 zcmaKT1yoc~_wUdk(x`-_q$u63bb~0JQqtWF3gjjts=pH9f#{DHzx>7dlvsz+N;HIp_O)P#ZnQu` zwX&)NZ93yqe65cInSp*8-}qiLjf+fslI&6Oi~LcQSPKbxw^s;lWW)W5&p(w?XH!}S zzbZa1KX|u_wp4T@=ENzr7W@Y@s+rX^9=1)(| zewk==iP8+&lEY%I@u@+F@6nFF7MfJjiFx1>1TO_R+0;bg)4PC`SvRy53KZfTC(YAp z?wIT&2XI7{`*qood`%G|_X<%f#($^B)|~)899%6F<^lnN*>(I(~t5EM`$U+n;1zTOz$!j8T>*KUZI8 z`Nn`iv>*lPcOSjdk28D?KF+|AP)c;7cj_%r72;@Rk`_y@*&BUbDiLd&>*{l_Ct?e% zAEFE+6AFd35-o0O;tEwW*;5P5p@Sd4wY=Ig>{NQ4i;Wue)Fnf=UE*773i-F84g<;A z`>WKsqlN10$1<_%Oe-|VR;rC+xt)D8HmT|s36jlLDv8IrjpRrD35f)BZ8M%SHOZoRia~M%CE{GXvrVB35{dj)5WKryP@`zO=Zd=u`>@@K-BPS{ zbO7bKvJuOB6Jk{K+nOMcz;cv^4+dS|O=o_En7(o>7^kOq3jU;N8Fn*=M3o#(tsFpF zFeAP8h#v2TUx7sDizQI85w}#CsaFgL3I9-%>P&Q#{dnD6aaBoSh-I*tlmsy59<;sv z6U9Dy`Viz0jxyde>iJ48aX`*OE`JQXtT(AS4nG3ZzXQY5h#SGm(4RGPh7Yz1L+e{tlo*3g$V(B>@m z>=$b^>M5t4x2>OIeqHgyLPuxe17k%acT*NUP78->%+fO?p3#MaSQJ-sz`Lq+q|c2U zqDSwch^Lap6Y}%8mDz3tTbBaH9rcAQ&n(S2NSH?b5EvNx9%&aIC)^gjPX>d-I%(Sb zS{&QfMugLWJ&f2I&ymVi%M#bhGSo#A@RX_#?KB|-q@1(@Q_U2$-oCZFz5PU<*PQ!d~%*KR&r1KO})yVj`VPNMLVR5YIm=l?0r5lT(~l%G!O+jx6Gz)*ko z!f*Q}{?f5TS;zZ~x6K^e@9y!B+T#08f4)GGS5n%H6gg1`<>uxV9j|B{kibi&dq%f3 z&RG76-v!UXJt}XU!#IYeP*D4pB@ZX&NbWka2wyxsMcl-vgd0r5xNdMj`M@Tr$Sy{Z zKfz{qT>1%OXJWG6wOy%{i_in6MXdkV%>vKP`$Q@fKg@cnfHe_8Fp?m0(jaxWUzlan z66qs^GW@MFb1ZDZmhj)8Vo~CQWoo%$5eRhtS)@+8#++t@8BL?UCTPCFovFU%nh9jl zCEc;t$s)NPiHN6&sG;WjPHfh=K!;6oEK9I{9tlQ|qz(^yzfS<2D`KRAkW?MT+_)K~ zven7z$4NB+3ntA_Wxn)j{cyKHwcwg87L{uII6trE^-*-t@&Jm?Qq0ol+3gM@Jy|Ar zBFg9bgi61*;3FC9$|EHz24TD%5-*s70Gkv;k!_Hbgvq52A=?}?H&?=#h2cbeEsVsc z5@wiADmw~5aE4sKQ1fhMwGV;!wRNdyf+q9St(`gP zF9PY`wpO`P6pbP`G0kQijL){?pOCao#DJcjJE|2A1gl+24l2v)$r0qayP*T?KQtw( zp?)6bcqyqE{tVcQcpMVwy55SqCQa1O(#dqc zN1^m@-h``W2&b^03THW-Y95`VH9CE3}hgAW-S z$9|%TziC_6A@DjqeFY2jPVyr|W5NF`t4 z+c6EOSt`ZuSk?<~Z||9F{YwlTd*AaDNb_&2Q?$gZ-TC1-{H(+2V$EFF-BGv0Sv&~h z{${GuSOQ~MwF76tJvmKNv$64Q^pBMrM%8ikKDb;xo+*5gLqqmT_DFd*30=(F7azp= z7-m(A$Wrlzw1{D81Vq=p zR<^uvabtH^PC)_3+1WX_Q3z$`_IPG16rYNiO4u#i_vU2eAeBN&g->)|;30nS20r}= zT4{3Me7L)CgBc;I-L#2~F6*TB*@8LB$=!9>f?&u1|*y1l>Gr;3k@lUk~?$HB%1 znRI_A0tJ8jhB{uE<$dHfS7A6XHrD610Quk+n~`F%gEI0qxHNyHlA_J#G_kkBUki`A zB)p9dli<^OyP}6j-SbBQ0l$_(7V8e@xb{08?}yc;QlZ<2?;gs&4#b^u_TR{0tD48R z@V%O#*PF<*J{nebcBXfga@c{nEOskR&miFYYiARf(Nj#ckR%Q>ZVF&hv~+ZVz)o>l zPcjgbkc9pCvC&5pz#uA`zS$QQmy)8O(I@(0aLI|YI#{dx0O@x%HP*U*PH}Q26Hs~) z>QZyvp8C(S`9iKoxxIXOYfqsh^E?~dxVt~`15pel+zDkE8S@IP)V=bP=R>I; zMu$MR{Ye>6-m_1~uCnsRl(^5|5Ss8m0_x){`r!DZo86%7jj^CHLm|~}s)HdHsQ^P; zQEn<4;j`_h?dzEF=TA5(a$3?|jA>rCw32h#ktJ~$%Yxd(#X$_r%xKfMa(B0Im+ave zqzxvZ_E{s3C1i7*BWP`_vE;%|X}+&Or9C<+Nl8!dHDE1fyQ9a8zD7pu%xak?W0@=d z&z?Oai;xW_Ob*70)1VE;p+lFA3u^=4YnZci4-MhQ4Ri;hVf9XLZF;~~%Z2icT75LM zj|2GJK_%ZD!+vFW;+b{^VdTn1mC%)Dfv;0$Zkj!giH-fvWU7(i3>kCi>XEq5)9lV# ziFrYY^JXtfRlp{P!AIK9Ymz>fd!3zMv1)k(nMl_Ee*4`#dD{7V3Bs74KNINZMgWLq&bVF|!twz&xM#ELJ6TepI z$J`5qiZ{Gbpqu9+3vI0vtI!rYW3hE*-6s%VRaIqE+n&FUrX6xtI-DVrba%1qyXEuo zYo)#Zh5>1-k?}EqHsjA19GJ@@PJKpM5VnXGrr9#xS8u2!HF^EqbE9`2c(Vt;5{T=V z8AmgBA^%0t;|lK##n`GeUqSMfl3oJ`;?O>J8L3Yv$g>CttvpmT1*dSQM(m(6q$ zlj*JYt3MGi{~B?~4*%=1jH0L%)O0c5IvHqcEH4#>{{2@!iYlX`7)i}-8*C(F<~wmb z9W|fpqy7Ci^ZAVUs`eIivv44OnOH9uY|2P zY2+!9lDk&@82^5-?v%%(jj1uoLyMNzv5xT1Vtj^D8g-#SKm^1{G(7$&XacM3~a13XbR^33D; zN-tvU&WdUj-Q0NB*VoxO&_A?W9E$uf#4>3VzYC$FESqIU3h#crx*B-5G-`lgyi4=Q zVL5#anSQ>DKAI`UM*Xn9ZFAq=aOfQy8*3n5rgKnl2bL@TO>&BW`OEH87nQ3~pPh-^ z?hlt{ELN!b(_TAYe8zl!7#A9FiGOjD^{w?0H7rl&^b>-q^o(If7-gkZys;Z&p3RFb zzisKN5Wi^Aqp%Haz7=J(JYW5_KBJBXwBPw+Fi@@uPoo8nYd%PsUyY@~oLuu@gI_0wS>- zhV5|=dXP0#OW}-Z<_lRaXSEB@2%DJmQ?cj@h84ZLji8WD;nXcxGqNem{+L{|sUJlV z3@tij6`T39<90YxnlxFe&B4gZ8m1?eAgBEAKsBxYAdT#DHT<1UaSPd3 zGFXv(Hei=$SACWHShd@i`%`@WbM=nK_DicYaKQX0fh1IURs|HB?!~=hF%arV%gCH$89GRaU~$g?`4b#x9B=Mw`ZoOzidNX>pyw&q`$wv!-TWSYK;2);-b;MzP*RYes4XY5NvZ=)-kG=wfx-5 zTlXhT<80=?Lj+hzJgX*1u*Q)_0(nWI=#4=Zp>CwwSVMVxK+m1g|4*aR*20FoB; zx%?6VEtQCU`xO%pbvT38U1LhRkl*KamoLb1}SP&Kqo zAImLe2cOjQfO+pK{3^T61A*h?X6EiN*S=Uua};&$nlPb1$%3^uJSw4NALQ#7`r_Hk{0VFz|)pp5Jba2v={F+lSB!i9K|FgSX?z05SH*$@L=ly zvyy}6I7|_c_RJ&5u*q%xe0xaplgL2gLbVmH5{GTtD0i9bGCCQ;-W-jeNu z7-F9*$Gya&<>K);(t$NJG`PrUkkSR~G`SW3Gna{}yI2D;d93kZ?}OsP*G$X4m2eFW z(){;@Q{MYma3+zFnmlj1G>{4zT`=qBvJm%Zh7@)nVb|97He*Izw>5C5{LZlV!47v8 zu`^(Vn8JtYXJ=>h;^Iav7o#HOaj~)Tii#V}?uW^Ora{_34wj-?7>7*jX6;|hi)lHV zr8K@drWt55o;4~+mnDdbjEZ{kHzLT8f`WpLYX^FSCqEwDy4!a$ z-aEr6A?jk70eBxop>Us_9Vw%lPBxPW=;y{@flAsBci{}nQxaz7(^MX-NDV*)jm<*Q zsmZ+(=QliG&YP*Z(1Du~vSPU7yT>bC4CsCJ`RndV+FfAbv-{y3mGed`tIer`TDl@R zXr0V9i=>fTfBs{{Wl_}5Ts7+fj07^IhSY^fmNhc^vBH3{%gdkw%-8v zR@_Qk`1b&@opTyF{f0bZ&+_*Vw;Z-ZFIM28S|Nd*TcpoV>uK6@6Y2@_x3{0A!Mw){ zfA7+Wc$9ep3cv--3z!ynzF4tASCK)U{JFL}ZQasB{QC_wI_=5gcXWMT+2y!O@Hqeud+^v{(5-})+?IoN z8t?Ag+1ilak_vD8yGb{O?ElK0&Sa=HzY*2rvq;nd{=KZXG+Q{q)KMYIYa#m=B|_-h z+4?srg45NurDvrQn@I2@zS?6|>>s+XjV^!P$s8MN6C94)DKoHY`HlbSvcJDLu-$eF z@+MuaH?i^Y-HWxheN2puzptBNgk4~by%cLCAvCyr^G17h8<_gC;cO<))Z=>HQ(i{! z5cp>7_V__iFBtT@rc|Cj#P(N93(ZQJi72b)1SHW5f5Gtt73v=;}lhdn9CL&Vsw2B3Z+ zNXE_Cyx8UqK;X4m+C%WB9_f~eaQsN>B40F%kMQA^RJ8w|*46WUv&jAg-(YPiPQk$M zKz4fvhO98$b9XEZJEc+kPRah7{-KXVuM^ksMw@YG$Mhw5ORCUEZsb-VogVRlzfbE? zHm5j#lRin=jBZysDTCFDh9gA&7e|(n#_ck5G{;w;3-^A|w|h+5a0`g-YxJ4qdIkoa zV*-5q-nlt#N)f`BFO@w!uEn+aaHdavzgBw3%m-}2JVTV@=IV!~6g`^sYa{}Y2Ki?q zYRy_$;}_fLXG=M)Zxo^Z!8FgUF}&B=Id3S^F+FO7wvGhnq!ysuBs4S}{)j7WE42l^GXj3aWOZ<@dzbrJcWwIp z9(!tPTPl{PJLY2ZW3SEJB6|NQdxyGKud%<6HVIDVW2^ciJSHn`%NIwA2su4g(I$>sxk)Q+|=V0}2fseN?~A2Vz(5?ksl;BWa54 zUbEQFR`8)N1E-tn9nUms{dJuL?$FptZt-4L$~8d_g&7UOUg;cE=U9)bqhKnuQNogR z_btJfL+wv!#*N(;W;kCzM7%8GtW?tS_vVd3dVa7IjUUXu6;egG0^;5HXo+c$w&*gQ z{PSJBDa(+B?WobI$CM#NYqjPz>+WPz#F3JSbXE}CrPn4#@Z^*5wL!vcm#wVaseK@u z={ns@nmLX(86|sfv_anX z;6()zOOKJFT*R!w=%5`Goa;RbTyeiA0C8|ATQJ^kZB5;cE;Y2c3y86AZTwqC zx&8X}D=Y8^3Yta;XN*#sjHV08&Jcx@aRp_H`FNGmfX2R70~s|cNV-R zO}m-CTiEJ2>I7JXtw)uEF*wNQhRhbYe-G~CJ8AaDR2zws`D~v^SmEFo-F#-7X-lC++g!5R7;-D@L}sO#}Un<9k*wj z2|!53c7XPtSFbli5Sx)-TidA(ajy z+(0AgTxPxUzmj1|6|U<4IZAa|ly=MTT|$a>e6HVpKdG~2 z2(kQbe{4J@u1!Qq$@VbBeS1-Vu|pvcAmZ6GA`lm#Cmy`~G6p|8C3p6*Zs~-!0p?`+ z0B6fuz1bm#>BIE@oXi>HoQN!!dq)d~VhW&q{)}2?lin@;RevcUbJlTS%kptlN@9zB zpq#JF;RecgMb+8Kl$(`}%W%B|4%j_4S|)-m@M87VK@u|`I0N^JarR-i zBD#^_lPpM+zG>9(%`1pym=qC2^@ekA{HcVPVe5@SEyJf7@!em(d=c@>5nhaeCv76~ z2HYA7=ssC4QU01aj?lKt?lIl0ryq0V;w2g&W^tK@*|e@#DV*S4E|32C-PMmx-%ezu?iN%~9oFRLMUQR;Wz zZM@7w%l43hf>$td6Qva2@U`{nznb68If+pYz}QH5&8- zZq!nAOv7UtF4b{a88oU1qQQ=-m zugAeOt9_Pg;Zz+OD(ZnKP@NsGlR)~tt!(3usAI$Wz+wusy{pNoH5WwLQr4!J2D~ z!!L8220RG#V~(DE4$p08Rg<{+_JyyB?VjMBqTMHH^`sbq8Y-xI>L5DpD7POcWtN^T z{Qe$oC#drI5s(Ji)*j53>!UR67o>r1chVe_xh)iHZ_3Ip7=~%&k$wDK`%hI46}Rlo zRWe6=e(I{cH`X9U0qVSpIy%Yc@WV=5d~tsM#QuJHp!}kK2%BqkwE_Vjfs*rUkgo3T z!lVanPH6d+8s1Umz7m#6piTe336hykiF?+^)H8f`;}EO%7_rMPxfb)g<#gReK&zEj zw`TVCzAy?4rveGPsjdi(m`}Vv0`7c!YU+Qt{ooU46Mi4 zfY4MlLWBi9hys1ep!wR2TMeYGDT0f*{jLrRv;6gzv@$wrkhgM?)M7R_H$T6BAFr#f zuGV-JM$-nB?mN!E_nC<$6r}_Vm|{ISnMwI$Ib;=_Q}P(#Gb7y*vUQzJng*Piwou7geqo{O zMt4}LtOQe8r5nRPW=1KQ{^ro&pv&P?zKUrM78a*oYdz6(=e5%4m1a*|2&H4o#Ne%L zINAF1P0vt&b#+36hOM%xS{-wAr-U2|<0SSSi%C(7hl*LpVj{_K)!pfWC}1o)0NtSD z<()q6g{dO4vuUle{^&**&86)UI>o+S(^?% z`$2(nsZYrPWXSWLw#q+Ke_IO;1e+F#m{Rp)uf3LR?Gv|~=j=fA!tfDvX(Y82j`DNY z^eimj=?s@_??1=hG#*t*rd>$;iHUP{C^Ab$ z9z^s1jjAs77!-sGfNb-g>#>uS5lN829Z7XUu7P{$&zFRSMmIf%L(;I-R-hD?%_h0n7!HeiT!Su*mt4WQbby0_Sm2f77wI;-Fv40cBGpBf zK5pVZed^Y9=KH~z=W$RQ=xx3IaM<|KGsE3jGM~gLv5pZy(WWiN+lX%1fKLwl+2M?- zI=Ko{7}$_x2#AP;aP72q2s@j+>a4?m@bzvQ$D23kYd|$SK0dw*eD6_O!>pQ4%fPTz zGKrO)-Eo8tS#9-oeUcU_`4g7GVJHcVNNyx_%ffZ+#wVAJuMFS*@+t4Vev)~io}7uY zBxG%#D_J;!j1T}euRJ=qQNL{XB~;18lRp)G2t8Ajm;X*oMkcSN^?b88VoHm8u?^fj z^gclCK>yn#WTF4CYd`~{m-d2`G&=q?M#%U%m>@Ar0(`?&9=5?=!_+Zd43ZXUSdI?| zrJ@iZb8IXZ0GLy4NdhP`O-@Y-1w4uZMc6?*W zjY_IpP*};Kh{1w7_jkvXKKFh-li6>7#R58pJ0!YL;LZt)jv?$p`CYBf)+gC!3d^9vQAu4rdI3nkTWwAOCDPO5d+p39)l~Q5 zgx?R+-7U?ii~UaV310D;eT)i(sXu?ps=*DeT#FDQpb6W%y_59g9_g)jT7Pc=RK}-(s>?5!l&(y?!MkgoF zXFEZuwTK|hv&{9L4+6&JGv_gBX}FSokyLjc$J)yRoy$wsjfk`Jo0{WDDiKsdB7Z87 z|Km| zeR-BvL-o0;ujY5*SwpTfWr=P4$!hM$&|B~G_e5kqv6MbBe%g%4* z>s`?Oo$Co(O;;2#ELY2I%nR&(SE$Z zPO-+3=HF|=vXu~^y5p#yc;5TgIpLnC;p~2Y%WY^Yuy`sMNBF6F7@0r?Oz}<{u zDXN%znfE@70EvM4xEFyR!7ZnF*iMUxo2E;)S13vQ`k%vn4TKsl!KQbO1#TEh&=-6{ zINIaOc*ZglhgU2==%@L5j)9WRbfdVpkx^!%s@UAlh)7D^0nY_|E8)#UUy`!^6*(KT z+V0VUW()j4f)|U^Z(iQ#=0NV@nswe?E0x-zBY*tq_YY+%e! z7Fcmyst4H&%4LSDNalFGJLqct0ycuH2FFAPeUd$77cJ*-rY`@iwV#_rU?h9=n6i_g z{`b3QeQ%1=%vx|N-50&8{&xd7!ioYJgd`hq<>kkQ)L%%X4H;c{|as20Ny9A zW!m{OUUHXDX80dkC8K3dR^ly13PB;DdWwv~E5-^bqNtqmD5C++A#~47iu%5U!?@CY z%Nibzh-J^w`V{5N#mjB_dX(AY7bg~k6$f*Sk6?YI2S36WP2t5FOESr@#zG;V|R2XJ0 z6VKpGcmEiIV^+Q}Ca~9+`w}Hg1u0dJsIu>iwyEFI3u^1;(|JokU9G5nOt;xRkjZ+Q z3Hbc!?}gzsCB0ixSH2f--x+UEl)Z#V(_8EI2mb%O`_^X1Nc2ppwl-y9Rz?P12T%kx z^#7@P;Hw2qF>uFU1JHzu3%b;MSbMuJLczpvuRyijr%o~>Pjee6nU7BjRdXtW#}1l* zl-j(6*gORI+cBx#JwAif53N=&V%}cgSc^{L~ostBxnJZ|pldf!Z94zO8f z4lY(ap?Jv|{do#;FJA|j_>X0ZtyEP0oN)JD-+VDz&t|hr1U@~wn!{RI=FKrCp51fh zr^GsS>FU*!y0>j?3YYkoDFA`*T#C_KuLIr{01mA#DL-kucL;s5p7={&dVZW!INrml zxs6?R?yZBx@?GSdCqo`@a5$8Exr89I)!%dK&C8A<9Lk>LW>^`Y3Y5gEf1p)f!=DHw z)H%CkrIv+3D^X}&$(jYMstNB{)_UoKaH1yzH+L)$18{Q>f6G?&#+bpShP1a!m{jE3 z;jUxR_|YCbk*j~XLN9CtjrolHtT?2&Qc_9L4x=@8d2l)9xGr28ckr_Et^a=L8EnDI zg983FHnl|s$Q&H?GSD9ZWH4M3ahj7QeCfh?2>5%s3*t|nFI!$fj2C*SlIwqe&;2S= z$NYEH&sQa6$ex48@krE!9I3*Ri?$P{^8^=np~<~;mSG-v{nQDBplNkfWMoCp<~uqh zfh}98wbjm8Y$7wPZ>V-|;e|7rki$;one*JSSG}4Ij9>gZ#B>{T$Qnud+K!&c6@cXO zsXI}y5;ne?gR!Qzpn>*&+p}$h0t20PctMOtZB8XFL3^5oyjY;{ zxyr1WX+ZznOPyIu!o#0(b92wPE-k~(w&K)gi&rX&sOa+P9)^${1`Ez1(UXKN)vYVJ zm1@&g4qSFQW*Txv*o{A95%rVRMa<$az=)|V84nK7<+<+K^b)9R8O-jr)Ut{)@l!SQckui6`~b@YhlHF-%)LrqM+Y{D zjzDipk4*<4+tj}Hvk}om7~u(g0*ZzCc*^7g4lf@cA7>Wx_$K=539Q&Na`5bHx?t=G z51He=l@ftu=Fh#mxdg{bi}lHel@Y+KxV%nHu3=EMR8?k6*|%mXs?1(zGMEI^%0MmW z%XgA5RcKX)G$ScL8FW@B(W*&`eoBRoxXvJX`$d0FoR4weii{Qgk>Hr0Vm zu;CepCk!&zhL4E&WCEm>K+X)UFO*hx1uoql%J$UY@crKvh+3ufEF5eEyOy8i^pR0^4Eb^qJ zq}jt>BS1IOs?P*uxxY|dsI_-~eqQ$E<;PmNi}UlE)V@D!7&ES&%Ed5Uuf5wsQn!**vryv1uN* zA#G%Aj*Zp!m$JCc8mHi(K}C)!#3E(Q*lrXoA2E&+AzY|;KaVdy(BEJ6+RaAo5}+{K zh$iW|7WbirzZCj#AYcks1E8+{fP1iM<4J0((b&K6yD=t3cr_nQ%z=|eHWz?2;S9^i5N|CZ_p;xGT{>ON!XGsYLmN0@tYYDd>n!=#BOIeA0G20+g z_a!J4>hRWWXPBIxo_^j1iFm`DXum`q3m=he=LZO3SRFefX&R2NR8x5sbX$FDu?Yw& zCxoU$q%KhM3JbNHkAHhkG#l{Tn+9e17&w1B^Q7=WYi!?R6?O@at=2Ud9Qf^%kUo-Y zm@;m}XjRQ3lqNF~W2VK?PA$e#&*lHc0DZjeif*FdG`WiJk@BPo>&nAKDl9TmYudNB z&R+JadK+O`>jXd~`ZMDH496#}-Vw@vmDbQ!_+>npwuD4o1flvYE!_hvyDT^T&kq+r zKfgwod>vna<+~1WZ08&dYwbBWT(2t)SeZoFmR^Hb!$=HR*?ar?lClpgH@_9-K!i}g zV6Oy?{iH^?&Di{B62|Qwmo)rM6RM!`Cs7u3Z&+B0>Y#PZP5dpbtzqHe=6}E8P4i*P z0FK$Xhx7TKgeRXhTLznsc$2HBvmg^!9qb03c?$CQ+m)Ng4mueRaUa_TX`Z+{vR zQiE$3igRd-Z}Xyid-6kOEB||6!lE3a4hbkctg1@$!FqAtrWdxg7wVacJjgxGc0FM6A$5MaOF(IbMqKe!9ix-XLf1dz&@MU~xzt8=rBS#2RF#$17 zeV)gvD$dX`+n;*aoy)ccIyyx&!faY)RlebRw{K{qf9C-#zt!5P>6@~)L4aYA00b;Q z^&MMlPrCVau1NsRz^A<}?n?ly&(SSe|AqUCz}2g1|a~jnNuA~ zJFkKM*;@K?wNz2BaZ162w459p=pT*pK>Y(GjD#6=hDI9Y@P5<=@7i#C7a+%kKFRtw zE@R?)fQ^k!?S+m9`eH#Pfy!rDT0T@KeqT-hU&A^MwJ`N_@oaBZ+=56gHWrquRKJaa zG>1Pf-$My#cII2WpL$)W0Fm-HBP2w#;?qI1G1TStpT%@}@YKSjc_zku+Bsz_{Mw~h z)|KDCs3c{v#`v|p`Lzy#*RruXAai6L?_ z?*%3fK0dvmV9{dT_O30Kf$i0w{Cx6uy?fE@Ie>DR-)411l|R6X0## z7At|}_yR8Pqy~VEnaa}B(<8ZQ>vScGX9~35NYFMat_#?o%wO~X^31TG zKTFTN_R&-MM_gV)92`=|IdGa^|sDaVXedAvrdNOP{AJQ%u6i+A8k2q#OjC;h&L@2*E%6&COnS z+eu;>7z!l$MpA)?whs{fa0x&(Z(!&}y%Ii`(y~#R@{%2>Ni+S|;l@2Nd<&^O06jBv zG^kr)`d$~L^h>qcn?kt|m+*SB5zYNg$KJ%wC;f{3o7kb6qw+b2`@w+$=M;ZUT6%ia znAaH{Gw;h)Apf2Y0yb+pTm(S4|9!DmFHfviDLrvD(i+kE2Cp-if-&amVEV1wE!fPn zcgCmM7-ePW;PUb^&pKSX;WLcpj*3H?!sq{7dxmuC6BAZR7V#k>scgSAPl}q?S&b3I zx3pl;3pqYL#lZZ_#y%vc#P3&oZQM*G{hDQ+2=M;XQwy=YsDYxd-#w6FzZS8QB8%Cytq6L3qj$xTB5v;N2>g-H<_=5q8sJ(M<WYIj!f*U zPrZ>;r8*Vphj!Cgfd(p4)Wg>D`beNeyjWuzTM(8`Jp8WW+oCa;tbgh*+A9;_xVh6t ziim*pQ2}VusZrLD08I$jeH8-ai;9Yh25*_IK_eA7PJEhEo6VzL6S{#6+7f?o#)FIY z&kU``qlr>Seg1H8auP~NNED_kZ5RM2gtX4@&mo_e*o|wxX#5(z+xr!zmjR72De&P81L~m~#Y!C?aTwYG<69|L^oPt&{(ShT^helOk zAj(%m$6d};vC-G%#>hrmYuyB5hNI$7)$_rHH($2HyztiN{^7n6Ep zct*}@z9NVG;?^dhuKd$QC_D9|nN22wsJ#sS18FHld5bjMG`@pHaN~^>l3FLyXh>^u zrll(aZH>*;xhn7D70%{9Pnp`g;Fa8fbn)Y=`R^VGG!8Z#2{DoFUuwihZ(q=u>Dg|vfq>KxH5<7*10UI{X&RP&JCk0`ie7U=OI;FT>C=}6 z2KRqTf(!_tEXY3ws0f>0t>I$^$H#|-Dbm6eA0E@(t*yA4w&l`%p+@KF*+=P*8e`Mv z)9N!bno&lTvUK0QUmG2b21(Jm&`cu9F;K_EwQ$pZ=g~Mjcat`3-`+S>daQe2Va&k^ z>5o?l?(7&}6Y9++a|ivqSrea<^3(qD3(~W?LzJ&B7hk@Vc!|y`{&)p?UHPb?*6{X6 zD`HAWkYpFckic>Se=^j}cSnmbNJon}nKM@}ze-KGUP0@RqmkLNxg=Zfu2OHV zaOj;L$Xy!_&{yA56soF6(o%IObxh>T)`>x#;O)=Zhd&=2EM<#3i>tdT8Zk?l5F(@A zAjHpeUV{vvY6I~fi1WigNFFo5>FA1{+y5HIr*TA(1(kWg zyimtCrmoXOHUygk5!8j&?=dU}C)RRNqsId9D=LfGMyr)7MPN&P%R>N4}!8zHK zBEA~#yOX_pzq##K`y6+!I7xBV+wYEk`yCAb;MV#!mhyyb4$e4}9DGhkM+cHqR(?6^ ziX63GE*QM$ee^>NX}Scf%IXi!yK)aaLUSv-yXF{5S+ik9KI1l!xVSq*VY{AuHK&W^ zA~h()BUGT=7(@Ik=PP!j{2m(%y?yGkvMww+j8)o@kdP&-H0#mK33m$n8)MJs3`|V+ z5oG}tQHEWZjQn$qF=0ssZLV9`Z{ED2d;dN&Dd`1^UtCN~*`<@F`o{6BNG2KNhu@PJ znB}{JSfH_aY;a}!w@LPRbK~;W1rDg|=SA{+S=^vwc4sd+jHp<~&BrrV?D6|=!JCIS z$-|A{g=^x~xq4n^Ot)H9v`Hi$Ld4Z!X%a6l55{l18J2e@9iV2fV@EPF9wE=8CELsS z$sLEd`I=)p+*+H#_EJHdc2~3@K&HMJvV4$~jLfGQKZj!Zok~J7?ySNdbsWS2_sY&f zdmlVH(2^P(pXbao9S0gK8h20NG7o}-Wvd4Vh#vynARtu>wt^mupSJ_SL8}X+D444s z{X;z4UoQ)3lrU0>i&XO}TF-W*Y>WC{6r~Ayl$gywjq8wcTg9Ah#EEJ7Qt`SXr#&|o zfuQ`>W;nnjJN^6}_lusoVSw!tFBJh66?)j&Rj( zCntOpJVD3E*(?JM-^1_f?ye&VQZ97cck+S%iq$&KW;98@Y$uLX&{#vcgmT)E-Fp0q&BObD83~15H z3vz`wd}ME4zHWcm?PtM28^p}PHE4D({v%OD-pYE6%OmwU*3iL&2~8&2S<=4_D(&qp zP_ExlzfcI0Lu5tt z6)2=iDJv_7KfDAZX)PYL3a{E7kok{UE(;1iD3*_TTpj36{8FOm>goasxbNUEH+!ge z9H3IhFYCEkyK;H)p(Iq_wf7*A@98`hS>-C~UlRYR8vPJz!ks}J0o zmK~T6M7_kY<*On=gJ#p3m^jt<^lAz-=(vG+-<^oI`L1nkNh>?DN12H_>FMbu!|QtC za7b5|gw;qoBY6gqYAoDH=|8@+#!_LS!3kbeQ7o#V)g21%R$=k0lt0A7fBEv?YHZ-` ze?@ji8S++_^$IwM18$gmJtkQQUniMn{dn)gWj|YnL|aXpv52gvb9j9i$cl!cj!BBI z+}ZiUKSstM0srVYIYGXABi?ixcr|aGDdZ95uvl-4m5`87yYV{z`!f=b$ueE;*0zxb zNx*6c|0J{i;Bz4NyE-tPt1|8B?4Bv^5O~ML`B7G`jhQozsaeo{S;FSlUwJpZ~HR^ zb&m)6FVxM>O6z`+qXAo6ru!ScnkjkURjAxT1Ed>PY1Z_#7fi$~{&hm`E9ZB=RRL`0 zbs3{rYRt20-bWR&+pxTKGi)66sHiB_)>ceR%qqkuEv=U$>AduuocKYnBqKoM`LcMR zW)JSTEJs)cRZ~+_S_PRZ_GlGT+uZw{dC5lIh5M4VQgkQVgFWk+)!e0>eX|o)>c>(G zD=WLTK=W=`XCO0snyT)ne%`^s)~I`uVyYnRoR)Ak4Ac4Hzc8fN}Snt+>N z3VuiYLKuCRxY`TPgE^#*&QJ_N|5XrrXz;x~jFT)D6&;Vv_h4VgyWZB09sGmoluWvuiKVnS zoR*drlsNdl$9d|Pl7*$^>0tvrAvIN2Pmdgs@8RxRT}MaG(UJWemvoSgYn&DH&@V;9 zawksYN;W%N^m|-tdFcgs=j1VbUiUUl@%7U_nlx|oi5oO)zRCA+?>q0ugWy_+MJ>?J z7fHu%QgX(`9MJn3(C^a*+o`_8wLnP*t4=dZKv24OTQ3^I>bjlt*-xbfi7A7a-FGA7;Je%d=6iT@DV=y^zvd~$w?M*Hp^LC&PuAJ|x2cW*#Whb77l|7p$Q zBfQ0)8)VI%0UavIDNnp|rEPaS7e)3P<-{cF4@D^)@}73C?#P8@bT&4Yl9Mcck_SyPq4fZylfHFn z%tQ$*89sDLB*{oz>tmzyGNyf4p#5cbLc(ydI+MM7Zt4_=F1VtCmG13ZB|mM9+_^l@ zu4T49sQ0N^wZ+$4D=itB2p?KpGWH44z{mGgLhh^Uz0n}zdd96HwV-B0h}$jb{pGZ} zo><3RwRw~GDP1|I*WXxb5j{5$lX7<0s)=&ud-?OfBk~FgrLDy#ktLM98PSg=@1G|1 z*TZi)kWO~;r)te-$b6I*PCXdkzi*W|bh5qaP%^z|aoZlXe7wJPY@(i7EnP?vcqv^8 z({6ljGYCk41jAjbhB2)w(pScK?9XB;V2tBGH_l@I`A+P4(b-OZoYn%#=C>0uF){6F zk58)BW7r4dm?pcE1%Ci{(4(#*V#)u#6yu<=d+zX^%eoY6w~D;{Kacdh>%>XMf&zYN z0|v!9Xk@dh(QuJH+y8i;>2InKaORf9$Q-J6pOIbM$C6*IF`HMeV16lirc7rYvo7SIUOe$hW-<5L!XG}M-u4bEDRKyHm z$4n#4pY7KBu$L{k9j@TBp%#Aqa+OD=+4-pb#L)Vz_A6G`h9haU)$XA|>TOhZgGO5F zhertURiFtrg-ywKk}(6;Kj4V8N{Y^->0ZB`MZEb(}xopPYP*k5qsqZz;NGW z33+@XBqY?SHbeV&YH+))03MsIeD0Y6sxW{U(0y;jYas|?g)u>ObsHSBUZS(>RCR25 zN&IKGU;Ot{B}ac8P32kt;c`oZdX|bMqRsabd3E4By+MViF8yNJl7yfv~pA&`Iu~%&zUDxmC$BVJr^Y#5c z@8Eu;Xp=|@!eu|?5Q5kidzyEA6_5A?pFxzEjzYvB*DHRNf6jY)du<~sxhw|oORuR# zd_jLLA3&~dZu7h=G`))yK_a`oVaZgXc7IWvdl8!^RKC(uQZ{ReQ3w6=_`NY=*G&Cv}77SwdCny92 z1V0N4)yG*Pe-KnG*sm@Hli)H}gPfuK@8YRdJ4R4l+h9FvxnHCicy?|X7`Zv#9)!N`c(*47qC zV6TqhDnR`8I(}AlBcm?ly=4R0d(T>x4_HgDn$hgKY(-6>7NC0(IbxQ7UVy$)zaLN$ zd;Ie06SfR}Qj+TW_RwK>M0Ma(fL?=REEFmR#5@3tf4#VH2T&JMt(SuT!#(IOD@auq zV|Czi&_URkO<1)AfUrppI!u=Z0g~el{UYXlApGe(wCd_=e~o(Y%0UY{UfyIrhlSPs z{pjM)qh|{%*tLpqlUcN)5j=|@?XOK2e~*dUdp!ZlmiFGKW;zw&IEA6p>irJ1(HEP4 z9E21kNcSZ+mXVK7OCfM?x)^)gc|icAU2Qc&uAC{Lw(D{!TT@^R4G3x?`YFUB+#iDW zED7z|OH5!RmkaRz#v6DbD`lh$@0*#M>$ZAVTdj`jwY4nBe_-uaQvwwQl(}ab;YmKw9M958Z>=6 zq@n${RTEx}j!wvP^z`)Idv2DmG&HBJaq5A^A5D8PdU%3HOCFFG>K%sa>|sG?o(XTc ztw&#^7|rr!S?Xvniv2TMuf3K8^d=siLgg$Q0FTw}A};r3p#cvEj~&_-1{2>Dz{T*i z3q$#=J0RT1Zxnuz0TF)f;g!Sq7oq-3Jh=lS7*n+UNOHq5cU7m`moVnsmF|3VbMxNS&d}Yt zTom!ay_wQTgH~^sr-S+53RCPx7cBOKq?YR9>zEcwpHymUY7{C+gdB~ef)bfj5VpGrTF&F>FZQ0SXT%S$p~rmv^p{kn96;J{OF+3)(h*FQ zzi@W&d&~&l?6LnmOSzEjz6Xn__3!Wx^XXl8qY6h{hW^5nxFyMpjQe(doDX}#T2P}g zWOpAg2q#u&an>8}<(Y4o@Y#Dlut})@(fq^>pMx3Z(RiKi2YG_qf`T+Il@0Cn<9Pcx zU{gS^UcFl4wR^G8{~1IpAfU6kwe=_{dgOF0=aGzNJ3CRv&AI)GV+O^F5_6e0z zg(F<9S6}&qkI$8##r@+o|NXth%^G2y`g`iWgKG4HuQEi^8NE4{wRhs%p?_bw;o#HV zx=8k20C6u0!tLRzo%EReFkk-(;=BE!d?c0Ka4#bxLjlmT#f|ke&Vct=SXgC%x6lAa zfSne{gh}Ua7d}ds;lc-;D%-{$dfzre8_|HFZc8#7IYi2xK>?mg@$r}a$_c}u3YynZ z(}}i8p7tXtVWCU6%kU&>&&kWV8xl0yBRrZf!g>n|YJvY`1_X^OI}XU_>B^`b!$Xe0 zy8ZAvU8V-$?bfE{a*D#PvV1wMF1*=|#|mrbf>PJeF@8@CGQW{x{$`&5P_AuBHKXlw zb2`-l-ROUgkb8=GA0uKZ%CUnM{6U$7#ESB_C=LEMY~#qBBwY(*sZ%$X{C7Xa2e;L}qz0{?8@Cthm zwOhA|@ zUaaX8zuyp_?{k5h)UFYVp|FNw$xl`#3boLi6SE(u!pbclF~(0JF6*#-44tIra4a~- zB(}y*3`DB5u;I&4p?bNU$wrT+gyMZAXkY=Hy|0bEmn`UK;UKDD^{9CderVKjPo6y- z=5C;5SK1DF2V3(cR%3pbEb&3~&y4>^?%&M3n|Y+MCOm>ekL7@BzXGDl{n-#l9-!he zRKh9o@%ZIa&V3iVC_uRA1<;7%x9P*0J!k%nRuB(#W}=cei1q{WYaCDjcK}sKI=1(0X?=!o-XbhLRxiA zb?;KiV_(3T8K%<4zQ@1;NcVCeh-w8R6HZ{m^$Ho8`SP6pS_d16s+-wi5!n@-Gte~q zG%9@TJ@SKFmV0k$$>8s3maxTO0^^;l+sLR2m6+{6?2<-;w~yU%T)Pt5zMv@-RKES~RP}aqh#th;5io|>|GITu6J_ZcUTRMLe{xCS?Q$LxgAf)2T_de|icX|*N<#$PnbTmGc4%(=ux#@#o zLytQ=5C?~1Z}^SX*5u!nmZo}h8Y*_{jZ)^-JZhhr8%YTXW;V8Al#rPRp{!8~lhI5; znHd5cGOn<1R6^e6`p}hJW%0?I;wyG>S9=s9$KAMvGl7ikKH$xk{@N#%dKaL5^eb>( z;<4ol`X}$sh>%PsR5P(tP0{F~_^f)%q5T&-pMP?~C#iGssQz8fpVpI`c-QOjVvzt6 zx6Vy+j2v>Y4u^*2mj-+?;($w41`@&7Air-pY~-9GCmkrRs70tn!6;w!u1L0S!k)f( zCUS+F9)^A#M~JaR_P-?r(VH26k^ymB4TGxonBCDG-+AkYi8C8*t}KN6bI|t%{dy6B zx|TSD8dJc&i;C)Y2W9z8)w$H<7Hg8N(Xsm@k%!z)gXr@cp?|aLb&?U>C2-MQF~+@> z1Mpw%iKE2zsG%*q71NNTtkxu>LIsR#T;ks;`BZBSCyY3zrTF_N`TaBd%wHr;}*Nvo^^Md<(1&4 zEE={%`W-jtd*1A0{bB{}&wZ2Zn=KNp_cvFB#}jz$^EX2rVeV81lkepyC9^U>6BEH& zyvqKqodt(tUi*Gr^SjW~x$Aia*W+hd&#DkTTa5E~kERs>HY^sY^Za*v2!va}&r?`1 zv7PA+*Vk;kCp5!B($1$^v`qV$quJE7!8Q(e$ARm4JsJ==qFGoWK}eMq1D}eD`2xW) z?m*dnE3ZAl$WBiv7ZoM(#FvASb>vcLF|7q%+--Az_MFjGmrhD!P zK4x?VwIt|>B}z@Dr4N#kkEIH-@~IXma2d^xMWf|0=N;+5LXZC4C!-N(4_ zKjlCjxeFSAK&CD{l&4d5&Y{=gqu??&R{ue-w`w>=QxSWo$C<-D&;!(Cc0IhF4 z|F}K+S6``K<}Y@BbR0i(mKYTaor;(&1O72gaq0p!zhNs*CFZXf#HqCEki~+gW8_0Q z9mtD9&u-7~V+lmqZM^DcgD8Lb*V{XgBkrbL2aESV3Rkr8?}&6@d7}Em*!Ch1#_HaJ z7|+2=qqqAgpn*eTA+O$JY8P8-hHoE)KqY(^U@!+!6J>%~(S=AK-NPBVT^}g&TYaf^ zyP?AkOVc*t&HbqG?Nr10Um1Wu#&BR*O>`WL6RG+A8%^BCrbs_e%WEI@Vi)vh2Y&4u z4wfG>-7EJZ#6N$=rb5T{x@O()6QTS|_}AK{Z!xtZ1$~|LhpKxzJU~#=HobrYTHmyl zqQB?arB~yB>uUK=cZu=Z+bqyH=bWyWwuVRq3UW##H1rWboE2|hO9I){-(J61ddl*= zhdhG<8AD;|$Zyt5^-rI8%2~B5Z0-R1Q@0e($H*uRuqWX$G5hbYZa6_n+biO&*T_z9 zjrxtZRi-btrh+Vs)Wmm>hNSw^V#SKf?BWcvHFmH4BjDN`%gsDUEELzrdrZhPg-9gO zi=UG2n&y<>{+NP5B(48?0fhao%IZ}Lr)(F4gM(+XyG=N47LEO@vtjVGkH0nB-lX|1 zu`EY(l&#<2PHD;PC_ez@MLdpPTn^5Rk*=%>d(!Of1yrIpkck~ z;m{9Dj^IN2l8-|(+*df8j)a61)U;ZPb_Y!K~X0bN3(E?jN*xiy+-=?iWQ^Ex81+g>%2;djOA|qLy+HZgTT{Sl|+nFlFd#hhx zc6Mz)_3JqZIAstNBnyg(QTXgMn?c=Qb~$!+RI#goVG?XNFb2IyAvK#4^{V^sM>x?O z&QWH}PsCga2A18o`Ou1|_~P$>mrbPDCZ%w0N}=^hh%YOOC9 z3KhFw!^;$K={h=wm1=W12y=52@h03nwv^W{)P;g^m4REa3z@8da0heMp-d1SFFD^gB%qt!DOjU*-;iFj z7ks&=AL5@=gqx#iEG!EAS8+z@`ekJjo`*-3sQ3l>^0U3in?c{ween4RzqFzv4zOiX zm}<6+wJsYnZ|!U*e}1ip%6b`tJbPRFzHD)vpU?6f(eS76KVFj41fB&Spv3dwXfT<` zJH)~h=5)??#(^lRN!FAs2x4|a=EGqbl8vPjcepG+Gh4$1@jZ@3z=G{!p`t(#I`wAD z6i3@LyN|{CFMB+S$?*SAxr3-BJU#1+_7ffWL)&{qCy~5C^Yim&<2fIIGE4nv zTmzpKSbj?m!#OdZ+}O^JrBDUZZhMj6-SSa(9rP2W@oP12drS;Y>Zt05;zMied)dss zjqhAS8!HxW2w>x3I#;Q`LhoCfWCMN>X(T*!@ssM_d8c z`+jz)0IC+O-K7WGO5_&n9d;-3BZp$)$%xL*&TpcY`Lsrr{9~_HX=Q0MK>P&%WbFAu z5VUU}puK}P_mbo6>`Xw|G&4^Iv^?7%wYqA8`|aCR5m`n`qMSg)9+6gP49F3A+V3C~ z{W-FM(|yG_P1ReY(o^(W`&S{Mp=9F~;q@Fsr#Vwc*gS0)p*Gr8Ei&7cN(%^l$pUrK zX>7o8(|tb9jf{w3Nr~7#z!me_{rA-Acrgx+IAGbhM(ri;_Ir#uWrFyWitg(l2xxda za$#W0W3GuNH)}vTn|?=^rumbPW5)jL6ce>YbN`Yd9>5_KGN&h-Yr*YbR1dwUzj`EpMa z``NSkI{Q@3g{eXnB64zH^<9+sRBKOU@$Jzp!DuDfoL-lHh3$Xxqo+O>jZzWR?j$He zNemEGqb?pFeluS@PC!aU$}HeRNF9)7gAb6gyq+CEh+OrjYA}33f%E?H&gCNzDF|P@ z04k8^K*efCiyEN4Ql}&Wz4r7Y9)sowO1nGNg7h-Bx3<3HUw;)eehJ1)foQir)y_(} z5bF`Gu00H)P)>ZeziRDYIP1{=&@CRSCmpPuX`WX!9X`_ku<{& zW*u-i{0-hh5yCCsL#<*~MM;U*DT&O}+1dG4bXtl?zdlJ!V;NYRr`0Xdxw7b%0JyMsR}$Ot#YFb24b^S?`ZLR8f?CXcEj?5Z#z)% z{uP+HxVTs{yT2oDU3^n_{Wu;}QLpz4XAnWNSl+XAS$iP1V?vN}6TL~?KlL|i-^4;^KDq^a~fJvQ6u>m67fk=hIan?7DPEnu9r(b71_eZrh&5?{eE?b zJpT4ws}21sli+{UdG7=-ROEs26d`4z8ok)rc+seSi4^lYTkRXAU>;CgG=Dpm7e~v% zfoDDYc=~4hg_meFJ`Ig=p);IXiy%lCprWrIW{fLgXWz53o{N`imEU+iz}^dVE-l(N zJ?x(0)gA)&fi%vV#{qgo`Wr$S_&_>=1itZHCitejEVXJ6)~P?BM_c{+x4CGna<>jW zx%85?yXFD!F#0RAbew5oZk#gc5V5)E+6@x+I-17G`vnx-Y^Ne( zVjeE`W|mt;Z&Su{_urIpvhZOm+&w zu@@;2R)thxU1~oPozY{LPc(tlI}YG;4b_)c5S!w4K#6H{(`I+t4RHUF#r9h1FeVQ3 zPO)~gz4YX=^!KsPNJh^P`%mMP9jhNCcbAGOsxzSFGtxkJMoE`wXlGDoyvoFm!f@-B zsl!vB5|g~YDWl=`lBDaOcN!Su9-|_SlJHri=`fCVZjSf6B&3*06y>GP4edQHH&T@o z(r=HUF=>)hBdoa*`-aV;O@Era0(`#~?&Q>egY1&@^3qw@pI2^C{mAc!Ur0x^3;{#1N^) zkJXjm=GVe*U{~H{qLC2=dao?Ev3-p$)@Md#_2b2Tb2XN%3$?Zij@k3JRJh82>sv9e z4n#uNw#+xja9;CyCeC8yJfZ{ZQr~SFYdfE!9co9G-PMk?6j;f#CrPD%v|KWdN_v1; zwCsO6-9w%Sxxttkq&$$5PXP_gf<;#b*O$}R%GTj_=oZP$m1)|9>$_#=aJb-V4TZ{9 zPH1`$2n5vlVYdnc4nBFEeIxSh-L2~BN-NWjLS|?(O1vCHb~xq#E4rV#tjY`ku9h`s zYHWBI)dZlUm7&s1m&>Kca*je6CnNlDjXV4iNj#D1qDO`*c6U56gU8RoLh^-wWNE-Z z3*0PBlMqKUUN8A)1VA%4Pe6Ic>h1w8$SYc`Y5`s6^t48119i5-kQE@kWgwzpOl<7Q zt5USFt0woM-4Z^h6-6s6t2S&iGqXI<&-RRqtPv$5r0MCKYsLdNbzJ*My%PYJe#7oR zJ3l{Ej;{uQYU$WDJW$NUlP>YKQiT$uT#{VZEZ$xBBkP1C{S>ERkyg6}9+ zZ5W1!Q)sECkh;I0=VAI=YovL4uU;$cWq87seY(OWF!iw=c{s|A_0r3CXODiRic^;t zJ~cI!s`2_Dajh?xSK)3Xpn(y)Ir~3MuU|)11)IL$WzEx+X9Y48$^VqstRz(nTSKDI z@c#9{aKb*-ho9ufi4x9)=P#;!CMkEc?~M(jctK3kq+!e(01XJRxV0v5rVj#U^0xN% z>$!wQSjtZ!f!oHWR;hyQ?hWH;A|01O%<^1fiRwF3sH54Tj)u9(K3_}T$@Za~Jo6(9 z^`VGn7W%3AZ1P~Z0jAnGdq93JGlG(G3U5T#Gt2(MC?*D>685xF3IUEf#I03ToDRaw z%yO(%A3l6QMMJChI$p7>^O$I^(j~E~cD|7?Av-=+W~`NGUhx(-G$tv3hO%H?Kd@Q) zXpA(J7P!MemEr#Lxq~BO-;3n=3KGbDt|^o-D2G-c5I0DILrg%Q@59CX?{py993B2C zd%Th<8jz_PT|Cl3iNsuIAkwSJ0Bqbz@LK!}tnX97Pg-*3`unJ;s2XX6i#6bqm#yHt ztJ5X7vC~VKu{L>B``IpQs^0SKABiV$>fV?hFY81l1QPz}AJ-hZ+ zdX_pYJbi7a8Vd!UX)yAqM(A%5W{&NnybFC%;Uv$~Pf#Pl^wg_ByP>?4&peM=A;9ju zteeJG2b#Eme!So5>2KNC$|ehnCMPH56co(iqHfTBw=ogza?kUSzkr6E9S4cIfv-Iz zq9sm8FFe1tiyA@Nm#eb0(8|3TFGR8NVt<)`koB*;@daLD7*G^J;smNA1ts9R+)g1- zo%U1g*FOp+1s+&u_u8lpWV9yTy$5-5z2KyP z8mo&%Zk~4DHM{uxkq2gQqX#WLi?C}~t;TiRt^*-;EMx&4#& z@VA~0Mf77eRsZ`lM5zRCfWn1B7xD6v<+|punu}qUcowDjxkvRn|1kB*RciKDN8U9S zF78VoA0K9w_j~xVoD2xuks^DE7SHm*7OjqRqe_s*9Q&I$y_Llf$s=R~A&;P=P%C6% zOuLEX^)7qy2TD+y{gWsdp|k9Zjg6fL;7`5Wp~1mw7H8EJ>JcCzx1$~kAu;Gi<1T3T zyF4_tzXvwMdU5zi7z%eJ^{>FE39Wv+eN?+ckSqK_)qM}9a#zMakkkIH^)46lhvAdY zyf&kD;L}XhW(l6k?n0KC`PXg)C@Q*Q;&FDdZY))qDyO$2`%@!nd03uY5%SL@`|FYqh7bnBv}O?kzHA z_E$#T$+bQyZrpWRAm~|S+$4D1IVyV3uWoB@R`d$n&~kHgv&soB`u1MKo}E*87g(z% zX#@KuMN0eI`nspyXcC}9OfuX(<<6c0ZTb(AhUNX<$2XVd4^Lzb(o*lmG7hE+Isa}? zTtrOl-Q3#G6Sq(Oa-e7pWr@&zq!L=a9&#)NfBOPjfcv&s-S>vW1Wq1a>)~Xs$K#3* zT@_j?SqOrpmvMp4Nd0G7Vu9I4ZNAkHxsf``IKp0{uP-Tr12lmuEI|-}DRNh2GI?wh zYCI410AfU~*sbWB-Uvo~db-|PeSfg@vD?saKh}?jn03qzCy^7+n!s6g=X-{560XMd zWXnsI*7y(SX1Q(H92TnHuR=pMn97X+0aeY+?^U6gIns&wd4SymZ?XY?4ca^GXeJ~k zE-1Q=aafGmvmUw|v0K9dge(F7vz!aQdzAl44;9=-uPs;8+N+o2qYX9i9gY=;%MlerWBwDMS7uVkvGA2m*h7W5+m3 z%ryF-X8f0~^6opoN>$I{0dSO?TmHhkoV80&AXK?{cK9(DSXSMM(H8th)FpZ_u zO&FRR)X`xD^7gwk;Yl&$OryELVmlwM?>kOR>Ex~A3MlfU5eFKsflmPLt%>iU81%M* z`-hY_0YqN!xzxEIPfkwsAh4Hp_#sU&0WmS-QV-Fmd$$(2+B3*jD09l@_BO2X>OZR| z1DY%Tsl_|ri=929MU#0IRjN8y(5v4NHNgI=R!ki|G`!%`i;IOa*IEt$=K-(_5=c@X zKVp+H>AU@N^=2k2qX+P}8XFu6>P~ric`t(6{I0P*nBR2td?gBw!pjS~1Y6gkFRES% zva*(Hg{$nfXu}DIPQ(NSo4S11gpnPlU}5O*=;O(e1kzFDp`SjpRWEq)oYIa96r!oi zmTqlr=_-l3^iz512=)Lb=Hj~Y-nadM@BD9;RApe#D;UeAVWpEGv96}_&tJQrZ8^t~ zDdiB!%7(&%n)&Z2#FAi&KueD0sF6I*;OJURuWpzlZM#=R4Yx|=c}|9v-Ph`@Lv6GSTb;vHI1Hqdk9{} zR(Tij^=CcLPWT52i4dSFQ&Ht`dpn!mpx5^KlxIWR9wK|;+h9;R?Nu4zV9Til0xepJ zgBzWXkfBG5c;4Sm6&UIYJ_vxSJdwYNlS8FGi9GK^65lFCFh_;p^HKzu{LuP0%KQ8e z@Kq8aY|`Wy*&7?Eo-OOfdviWVu>bqKiT(f6W%57tlw!U+sJZElG9*cg?i7{00ELqy znjtGl>XR{f7K+@&?$0#^2Hd=fSX3O?e)5YfWi}M?)&+P=!(3$LN=DYp)l6dcFRO337K!#d=6^ zW_;`L%PO8qIABww(4@tVRa{y58_@Kxnne{XwT^2yjiIW(fni{FzvkOU==g3s-R{0S zQpMutDL`6YkxKM9e3-; zZS}5Z?HjdOLlT>Kxup+vV9*R%wdLV4PG|!I=ZR(R>_v-LW&V7L zXi(D#B=NjPZkP~k=sZqI8n6Olzf8SloODjuNNSK8DA9Gwqga7~l From 029146f33d23a0b9c7889868e63c71ba4b92fad0 Mon Sep 17 00:00:00 2001 From: Sierra Brown Date: Tue, 13 Oct 2015 09:13:22 -0700 Subject: [PATCH 05/19] Cleaning up seeds.dm - /obj/item/seeds/poppyseed was defined twice in code\modules\hydroponics\seeds.dm --- code/modules/hydroponics/seeds.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 618dba58..82e0175c 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -116,9 +116,6 @@ /obj/item/seeds/cornseed seed_type = "corn" -/obj/item/seeds/poppyseed - seed_type = "poppies" - /obj/item/seeds/potatoseed seed_type = "potato" From d79479a904630e89f704dda3cd339ea3d0997244 Mon Sep 17 00:00:00 2001 From: Sierra Brown Date: Tue, 13 Oct 2015 10:16:39 -0700 Subject: [PATCH 06/19] Added seed-peanut sprite Fixes #723 --- icons/obj/seeds.dmi | Bin 15891 -> 15738 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/seeds.dmi b/icons/obj/seeds.dmi index 9f61275fab5ad479dfa0a73ec4dc085b4c0211ae..a1d857a73e9802ae0584052f448395b1d7c2b8c2 100644 GIT binary patch literal 15738 zcmbWebyQs6wzgR~!QI`16P)1gPJrOS-QC??gIjP2?(Xic!QI`8uAK9`x4+XpZjU?q z52&$it-01-yXITZe0R8_yaXZ~9vlDwK$MacRR#dSNI-u8SZL55bf)q~(8jBWs)m!O zv7@1bxt)`_tqlO+mYJL~WwXYNFgW#~0(;Kg_i~ut7Xm5f*AUtPMp>7DB8@>)D*kZy z6=QhSK(izR@s0llT`s5w_TYC6Rx%f z|3f6QL^cn*WOaC25e<#54J|4E{W#kkxBD{{L%5V>Dpc(f*5{#7cm1k`3n2m{V=tNU zvE>T8w=SEPSQ+j=o619|oY`&*!2(S=m`6Bu3OXxIv^%xj;$%srrr=Pgv9Rb(V1=)yY$P+a4_sgmL*trBEcAf(`1NIHa!}F4#CbszECmV z&kMD(k5X_2)@h z`N>D4FSjF)nXHEdA|v?5u&b=^$@|LJj}o{%UKH79DWR+g9;uwm<37JMR=c{=YYfq^ zj5v9D>({b~{do|C{r-Lahmgq88dHzq>gwErYF5e7H!`-@bkv0_p8#cZ&L&v4IuySO z3+>JumONy&zI_|qsf?r`75*aZw?56OD+Z~mLKu_~M5V6FU9wSg#^4P$oTUrjU8O@E z@STcJQc9}F=u4?|Ifss`5NsR_&}AYSu>StcxK@MA=>y(9!MT|$^Hcce`f&pX>WNKZ zVWFF>}7rvF1ulJ0>x#%R2 z!|26+JVPRt3=NW%h^-jZ^QgUZgGrxN?ihuK$svakU41*psQ6upQ_J-^x7-5dylh&G z{dL9AgSaA|U{M`nPdIWpx7yTS@>+iO#K*hUKECfTOlUpb-~5J+mpm{ABo`zp2mL7h6IhJ>AbUN zpQY)&%Pc&rQwoYO9VtXaWNfYLT{PNQ+1%_JzFZ0@Ry^sokb3m^*2hMGkJz$e%M{>D z7*&ylQ%KX;n@?SlcTH&1L#YJupk=RXTbC2X9#YBF4UMLrQmU^{Oh0wC)JuEti4LnJ z%gABOdu-4ji|+eCBjQ9-<2O31Cvn&OcXd+y)VZ#3c-TNYjTgob-m|4KI{KA{&@dr{fCfGt7S!#Gz&YMav5tsZ z&!G*2An1SD&3zjxk47⍹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 literal 15891 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 Date: Tue, 13 Oct 2015 10:35:05 -0700 Subject: [PATCH 07/19] Revert "Added seed-peanut sprite" This reverts commit d79479a904630e89f704dda3cd339ea3d0997244. --- icons/obj/seeds.dmi | Bin 15738 -> 15891 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/seeds.dmi b/icons/obj/seeds.dmi index a1d857a73e9802ae0584052f448395b1d7c2b8c2..9f61275fab5ad479dfa0a73ec4dc085b4c0211ae 100644 GIT binary patch literal 15891 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⍹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 From b7af475a7a1f86779db1e55f65defe7692c53e3e Mon Sep 17 00:00:00 2001 From: Sierra Brown Date: Tue, 13 Oct 2015 10:48:48 -0700 Subject: [PATCH 08/19] Sprite update take 2 Fixes #723 --- icons/obj/seeds.dmi | Bin 15891 -> 15903 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/seeds.dmi b/icons/obj/seeds.dmi index 9f61275fab5ad479dfa0a73ec4dc085b4c0211ae..069f770c2aada4928f34ef8620c604fc0cc0ea3e 100644 GIT binary patch literal 15903 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 RkQcuJG7?|J%S8?S{s+bP)@T3# literal 15891 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 Date: Tue, 20 Oct 2015 13:24:18 -0700 Subject: [PATCH 09/19] Jace Evan's Toothbrush Item Path: /obj/item/weapon/soap/fluff/jace_toothbrush Sprite Path: icons/obj/custom_items/jace_toothbrush.dmi Thread: http://aurorastation.org/forums/viewtopic.php?f=100&t=3070 --- code/modules/customitems/item_defines.dm | 39 +++++++++++++++++++-- icons/obj/custom_items/jace_toothbrush.dmi | Bin 0 -> 432 bytes 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 icons/obj/custom_items/jace_toothbrush.dmi diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 8044f6a0..79f2863b 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -25,7 +25,8 @@ "/obj/item/weapon/airlock_electronics", "/obj/item/weapon/module/power_control", "/obj/item/weapon/cell", - "/obj/item/weapon/hand_tele") + "/obj/item/weapon/hand_tele", + "/obj/item/weapon/soap/fluff/jace_toothbrush") storage_slots = 14 max_combined_w_class = 42 max_w_class = 3 @@ -1323,4 +1324,38 @@ END R I P HAZERI slot_flags = SLOT_MASK /obj/item/clothing/tie/fluff/fortune_shieldpendant/New() - inv_overlay = image("icon" = 'icons/obj/custom_items/fortune_shieldpendant.dmi', "icon_state" = "fortune_shieldpendant_w") \ No newline at end of file + inv_overlay = image("icon" = 'icons/obj/custom_items/fortune_shieldpendant.dmi', "icon_state" = "fortune_shieldpendant_w") + + +// Jace Evan's toothbrush - Wittly +/obj/item/weapon/soap/fluff/jace_toothbrush + name = "toothbrush" + desc = "An old toothbrush. It looks well used." + icon = 'icons/obj/custom_items/jace_toothbrush.dmi' + icon_state = "jace_toothbrush" + var/cleanspeed = 20 + +/obj/item/weapon/soap/fluff/jace_toothbrush/Crossed(AM as mob|obj) + return + +/obj/item/weapon/soap/fluff/jace_toothbrush/afterattack(atom/target, mob/user as mob, proximity) + if(!proximity) return + + if(user.client && (target in user.client.screen)) + return + if (istype(target,/obj/effect/decal/cleanable)) + user.visible_message("[user] begins to scrub \the [target.name] out with [src].") + if(do_after(user, src.cleanspeed) && target) + user << "You scrub \the [target.name] out." + del(target) + else + user.visible_message("[user] begins to clean \the [target.name] with [src].") + if(do_after(user, src.cleanspeed)) + user << "You clean \the [target.name]." + var/obj/effect/decal/cleanable/C = locate() in target + del(C) + target.clean_blood() + return + +/obj/item/weapon/soap/fluff/jace_toothbrush/attack(mob/target as mob, mob/user as mob) + return \ No newline at end of file diff --git a/icons/obj/custom_items/jace_toothbrush.dmi b/icons/obj/custom_items/jace_toothbrush.dmi new file mode 100644 index 0000000000000000000000000000000000000000..633595166e77e9d3f2f42d4759cee7a7b95bf1b1 GIT binary patch literal 432 zcmV;h0Z;ykP)V=-0C=1w$1x6rFboCIIX=Y~>{V%5vs6J<2Dn0%g26#*BP9l|&%pLxjaT>f z16=QE=Uig?!=k<2$sBP~fyMJdMmR2_SBeH@SX65m`J*YReDhYMA~VHYV9}77bNKP) z8r|UFdQT^j{2ou>3|0>S008t!L_t(oh3%FxZp0uEMITWbj^M(rui?_IrR16`aRj^Z zA>2+uW6@HQB0@?cZP>-La>K7EKs@~!{$Q46;Yz(-dV2$C01co40Pm#@<2a_gUf0!V z1DH}2TWb?Q-}iJ~rw&ncz&UpVnCJNeU>Js^3G#3cIOlF60)Y4aS7}}fFiq3vUkDLV zgDCdEJy~m$MqgAv!x*CpA)IzXB?r9s)n`uu9LHfo2msYCoOU2X)Rsb}1ZNCHRsj<0000 Date: Wed, 21 Oct 2015 20:43:05 +0300 Subject: [PATCH 10/19] Admin - Identify target species So that admins and mods can easily see what species a specific mob is, through the "More information" button (?). --- code/modules/admin/topic.dm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index dfb14c9e..d985f847 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1366,6 +1366,7 @@ var/special_role_description = "" var/health_description = "" var/gender_description = "" + var/species_description = "" var/turf/T = get_turf(M) //Location @@ -1399,8 +1400,18 @@ if(MALE,FEMALE) gender_description = "[M.gender]" else gender_description = "[M.gender]" + //Species + if(ishuman(M)) + var/mob/living/carbon/human/K = M + if(K.species) + species_description = "[K.species.name]" + else + species_description = "Unknown" + else + species_description = "N/A" + src.owner << "Info about [M.name]: " - src.owner << "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]" + src.owner << "Mob type = [M.type]; Species = [species_description]; Gender = [gender_description]; Damage = [health_description]" src.owner << "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];" src.owner << "Location = [location_description];" src.owner << "[special_role_description]" From 563c584d585d43a6331a1dfed7c552edaf3f4dc1 Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 21 Oct 2015 20:44:00 +0300 Subject: [PATCH 11/19] IPC Organs - surgery fixes, debug removal Fixes the glitches and runtime errors with surgery code. Removes the debug messages put in place. --- .../mob/living/silicon/robot/component.dm | 15 +++++++++++---- code/modules/surgery/organs_internal.dm | 18 +----------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index b5208494..8f836208 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -149,6 +149,13 @@ var/icon_state_broken = "broken" var/obj/item/organ/organ_type = null // for shells. Only define if this can be placed inside an IPC during organ replacement surgery. +// In case the robot_component has a child organ, it is updated to have the proper datums and so on. +/obj/item/robot_parts/robot_component/New() + ..() + spawn(5) + if(organ_type) + organ_type.update() + // TODO: actual icons ;) /obj/item/robot_parts/robot_component/binary_communication_device name = "binary communication device" @@ -169,7 +176,7 @@ name = "camera" icon_state = "camera" icon_state_broken = "camera_broken" - organ_type = /obj/item/organ/eyes/robot + organ_type = new /obj/item/organ/eyes/robot() /obj/item/robot_parts/robot_component/law_computer name = "law computer" @@ -180,7 +187,7 @@ name = "diagnosis unit" icon_state = "analyser" icon_state_broken = "analyser_broken" - organ_type = /obj/item/organ/machine/diagnosis_unit + organ_type = new /obj/item/organ/machine/diagnosis_unit() /obj/item/robot_parts/robot_component/radio name = "radio" @@ -191,13 +198,13 @@ name = "radiator" icon_state = "radiator" icon_state_broken = "radiator_broken" - organ_type = /obj/item/organ/machine/radiator + organ_type = new /obj/item/organ/machine/radiator() /obj/item/robot_parts/robot_component/bladder name = "chemical containment" icon_state = "bladder" icon_state_broken = "bladder_broken" - organ_type = /obj/item/organ/machine/bladder + organ_type = new /obj/item/organ/machine/bladder() // //Robotic Component Analyser, basically a health analyser for robots diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 77076203..71189a51 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -336,12 +336,9 @@ var/organ_missing if(!istype(O) && istype(O, /obj/item/robot_parts/robot_component)) - msg_scopes("Component's type: [tool.type].") var/obj/item/robot_parts/robot_component/A = tool - msg_scopes("Component's organ_type: [A.organ_type].") if(A.organ_type) - O = new A.organ_type() - O.update() + O = A.organ_type else return 0 else @@ -367,19 +364,6 @@ user << "\red \The [target] already has [o_a][O.organ_tag]." return 2 - msg_scopes("Affected.name: [affected.name].") - msg_scopes("Parent_organ: [O.organ_data.parent_organ].") - msg_scopes("Organ_data.type: [O.organ_data.type].") - if(O.organ_data) - msg_scopes("We have organ data.") - else - msg_scopes("No organ data.") - - if(affected.name == O.organ_data.parent_organ) - msg_scopes("Affected name matches parent_organ.") - else - msg_scopes("Affected name does not match parent_organ.") - if(O.organ_data && affected.name == O.organ_data.parent_organ) organ_compatible = 1 else From 692b3dc779d7c79878b4140b4047c0206870457f Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 21 Oct 2015 23:18:56 +0300 Subject: [PATCH 12/19] IPC Organs - life.dm fixes Reads the presence and status of organs properly! --- code/modules/mob/living/carbon/human/life.dm | 47 +++++++++++--------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 252a35bd..5e14402c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -801,16 +801,18 @@ proc/stabilize_body_temperature() if (species.flags & IS_SYNTHETIC) - //TODO: Test these constants - var/temperatureModifier = 0 //all IS_SYNTHETIC species -need- radiators - if(!has_organ("radiator")) - temperatureModifier = 25 - else - var/datum/organ/internal/Radiator = internal_organs_by_name["radiator"] - if(Radiator.is_broken()) + var/temperatureModifier = 0 + if(species.has_organ["radiator"]) + if(internal_organs_by_name["radiator"]) + var/datum/organ/internal/Radiator = internal_organs_by_name["radiator"] + if(Radiator.is_broken()) + temperatureModifier = 25 + if(bodytemperature > 450 && prob(10)) + apply_damage(rand(1, 5), BURN) + else if(Radiator.is_bruised()) + temperatureModifier = 18 + else temperatureModifier = 25 - else if(Radiator.is_bruised()) - temperatureModifier = 17 bodytemperature += species.synth_temp_gain + temperatureModifier //just keep putting out heat. return @@ -1443,11 +1445,14 @@ if(2) healths.icon_state = "health7" else var/numb = 0 - if (species && (species.flags & IS_SYNTHETIC)) - var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] - if (Diagnosis_unit.is_broken()) - numb = 1 - else if (Diagnosis_unit.is_bruised() && prob(35)) + if (species.has_organ["diagnosis unit"]) + if (internal_organs_by_name["diagnosis unit"]) + var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] + if (Diagnosis_unit.is_broken()) + numb = 1 + else if (Diagnosis_unit.is_bruised() && prob(35)) + numb = 1 + else numb = 1 if (numb) @@ -1505,12 +1510,14 @@ else var/temp_step var/numb = 0 - if (species && (species.flags & IS_SYNTHETIC)) - var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] - if (Diagnosis_unit.is_broken()) - numb = 1 - else if (Diagnosis_unit.is_bruised() && prob(35)) - numb = 1 + if (species.has_organ["diagnosis unit"]) + if(internal_organs_by_name["diagnosis unit"]) + var/datum/organ/internal/machine/Diagnosis_unit = internal_organs_by_name["diagnosis unit"] + if (Diagnosis_unit.is_broken()) + numb = 1 + else if (Diagnosis_unit.is_bruised() && prob(35)) + numb = 1 + else numb = 1 if (numb) bodytemp.icon_state = "temp_numb" From e08b1859af4a2ca28deba44a6388bd884aedc1a6 Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 21 Oct 2015 23:19:27 +0300 Subject: [PATCH 13/19] IPC Organs - final fixes, debug removal More debug message removals. Also fixes the bladder to work properly, depending on its status and so on. --- code/modules/organs/organ_alien.dm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 9300c55d..c473d377 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -265,8 +265,11 @@ removed_type = /obj/item/organ/machine/bladder /datum/organ/internal/machine/bladder/process() + if(status & ORGAN_CUT_AWAY) + return + if(is_bruised()) - var/leakSmall = rand(1,25) + var/leakSmall = rand(1,5) if(owner.reagents.total_volume > 0) owner.reagents.remove_any(leakSmall) if(owner.reagents.maximum_volume > 500) @@ -282,9 +285,6 @@ else owner.reagents.maximum_volume -= leakLarge - if(!is_bruised() && !is_broken() && owner.reagents.maximum_volume < 1000) - owner.reagents.maximum_volume = 1000 - if(owner.reagents.reagent_list.len) if(owner.reagents.has_reagent("sacid") || owner.reagents.has_reagent("pacid")) take_damage(rand(0,2.5), 1) @@ -313,7 +313,6 @@ Machine.reagents.maximum_volume = 0 /obj/item/organ/machine/bladder/exposed_to_the_world() - msg_scopes("We went here x2.") var/obj/item/robot_parts/robot_component/bladder/Bladder = new(src.loc) if(organ_data.damage) Bladder.brute = organ_data.damage @@ -334,7 +333,6 @@ robotic = 2 /obj/item/organ/machine/diagnosis_unit/exposed_to_the_world() - msg_scopes("We went here.") var/obj/item/robot_parts/robot_component/diagnosis_unit/Diagnosis_unit = new(src.loc) if(organ_data.damage) Diagnosis_unit.brute = organ_data.damage From d8cccc80f54f2214fc0181d08e28c8e19412450b Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 21 Oct 2015 23:21:32 +0300 Subject: [PATCH 14/19] IPC Organs - adding new components to mecha fabs --- code/game/mecha/mech_fabricator.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 19d78991..bb3641de 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -52,7 +52,9 @@ /obj/item/robot_parts/robot_component/diagnosis_unit, /obj/item/robot_parts/robot_component/camera, /obj/item/robot_parts/robot_component/law_computer, - /obj/item/robot_parts/robot_component/armour + /obj/item/robot_parts/robot_component/armour, + /obj/item/robot_parts/robot_component/radiator, + /obj/item/robot_parts/robot_component/bladder ), "Ripley"=list( /obj/item/mecha_parts/chassis/ripley, From da76d9b580953c32f3c60c7be97cb50c1e82fb15 Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 22 Oct 2015 16:36:15 +0300 Subject: [PATCH 15/19] Space to \improper Space Fixes blueprints, primarily. Also adjusts some other safety-nets and checks to actually work. --- code/game/area/areas.dm | 4 ++-- code/game/gamemodes/events/power_failure.dm | 2 +- code/game/machinery/alarm.dm | 4 ++-- code/game/objects/items/blueprints.dm | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ef201cd0..9a12fed6 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -139,7 +139,7 @@ /area/proc/firealert() - if(name == "Space") //no fire alarms in space + if(name == "\improper Space") //no fire alarms in space return if( !fire ) fire = 1 @@ -370,4 +370,4 @@ else if(T && gravity_field_generators["[T.z]"] && length(gravity_field_generators["[T.z]"])) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/game/gamemodes/events/power_failure.dm b/code/game/gamemodes/events/power_failure.dm index 3f0ae3c0..a388ce4c 100644 --- a/code/game/gamemodes/events/power_failure.dm +++ b/code/game/gamemodes/events/power_failure.dm @@ -69,7 +69,7 @@ S.updateicon() S.power_change() for(var/area/A in world) - if(A.name != "Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "space" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber") + if(A.name != "\improper Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "space" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber") A.power_light = 1 A.power_equip = 1 A.power_environ = 1 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index b5e92042..0e10c5dc 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1224,7 +1224,7 @@ Code shamelessly copied from apc_frame if (!istype(loc, /turf/simulated/floor)) usr << "\red Air Alarm cannot be placed on this spot." return - if (A.requires_power == 0 || A.name == "Space") + if (A.requires_power == 0 || A.name == "\improper Space") usr << "\red Air Alarm cannot be placed in this area." return @@ -1547,7 +1547,7 @@ Code shamelessly copied from apc_frame if (!istype(loc, /turf/simulated/floor)) usr << "\red Fire Alarm cannot be placed on this spot." return - if (A.requires_power == 0 || A.name == "Space") + if (A.requires_power == 0 || A.name == "\improper Space") usr << "\red Fire Alarm cannot be placed in this area." return diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index ff1a1fb1..7919762a 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -80,7 +80,7 @@ move an amendment to the drawing.

return A /obj/item/blueprints/proc/get_area_type(var/area/A = get_area()) - if (A.name == "Space") + if (A.name == "\improper Space") return AREA_SPACE var/list/SPECIALS = list( /area/shuttle, @@ -247,4 +247,4 @@ move an amendment to the drawing.

if(BORDER_SPACE) return ROOM_ERR_SPACE found+=T - return found \ No newline at end of file + return found From 5229c0ac167c8fa977061151deddd6a1259b748a Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 22 Oct 2015 16:39:47 +0300 Subject: [PATCH 16/19] PDA reset verb Ported from Baystation12 code. --- code/game/objects/items/devices/PDA/PDA.dm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 8af5727d..ef95abdb 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -916,6 +916,21 @@ var/global/list/obj/item/device/pda/PDAs = list() message = "\red" + message M.show_message(message, 1) +/obj/item/device/pda/verb/verb_reset_pda() + set category = "Object" + set name = "Reset PDA" + set src in usr + + if(issilicon(usr)) + return + + if(can_use(usr)) + mode = 0 + nanomanager.update_uis(src) + usr << "You press the reset button on \the [src]." + else + usr << "You cannot do this while restrained." + /obj/item/device/pda/proc/remove_id() if (id) if (ismob(loc)) From a12ec65678912daab0404db04692b19edbb7e329 Mon Sep 17 00:00:00 2001 From: skull132 Date: Fri, 23 Oct 2015 06:41:54 +0300 Subject: [PATCH 17/19] Configurable Age Restrictions Makes the age restrictions on jobs editable on the fly from a new config file. --- code/controllers/configuration.dm | 7 +++ code/game/jobs/job/job.dm | 6 ++- code/game/jobs/job_controller.dm | 2 + code/modules/admin/banjob.dm | 4 ++ code/modules/client/preferences.dm | 17 ++++--- code/world.dm | 2 + config/example/age_restrictions.txt | 71 +++++++++++++++++++++++++++++ 7 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 config/example/age_restrictions.txt diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 6ae5692a..4080c325 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -157,6 +157,8 @@ var/list/contact_levels = list(1, 5) // Defines which Z-levels which, for example, a Code Red announcement may affect var/list/player_levels = list(1, 3, 4, 5, 6) // Defines all Z-levels a character can typically reach + var/list/age_restrictions = list() // Holds all of the age restrictions for jobs and antag roles in a single associated list + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -576,6 +578,11 @@ else log_misc("Unknown setting in configuration: '[name]'") + else if (type == "age_restrictions") + name = replacetext(name, "_", " ") + age_restrictions += name + age_restrictions[name] = text2num(value) + /datum/configuration/proc/loadsql(filename) // -- TLE var/list/Lines = file2list(filename) for(var/t in Lines) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index b0de91e9..7ed5b7d0 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -70,4 +70,8 @@ if(!isnum(minimal_player_age)) return 0 - return max(0, minimal_player_age - C.player_age) \ No newline at end of file + return max(0, minimal_player_age - C.player_age) + +/datum/job/proc/fetch_age_restriction() + if (config.age_restrictions[lowertext(title)]) + minimal_player_age = config.age_restrictions[lowertext(title)] diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index f4acb6bd..c7da1724 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -24,6 +24,8 @@ var/global/datum/controller/occupations/job_master if(!job) continue if(job.faction != faction) continue occupations += job + if (config && config.use_age_restriction_for_jobs) + job.fetch_age_restriction() return 1 diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index df251ef6..0c5f8e90 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -26,6 +26,10 @@ var/jobban_keylist[0] //to store the keys & ranks if(config.usewhitelist && !check_whitelist(M)) return "Whitelisted Job" + if (config.use_age_restriction_for_jobs) + if (config.age_restrictions[rank] && M.client.player_age < config.age_restrictions[rank]) + return "Age Restricted" + for (var/s in jobban_keylist) if( findtext(s,"[M.ckey] - [rank]") == 1 ) var/startpos = findtext(s, "## ")+3 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2f7ec095..cea406ad 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -429,13 +429,18 @@ datum/preferences src.be_special = 0 else var/n = 0 + var/banned = null for (var/i in special_roles) if(special_roles[i]) //if mode is available on the server - if(jobban_isbanned(user, i)) - dat += "Be [i]: \[BANNED]
" - else if(i == "pai candidate") - if(jobban_isbanned(user, "pAI")) - dat += "Be [i]: \[BANNED]
" + banned = jobban_isbanned(user, i) + if (i == "pai candidate") + banned = jobban_isbanned(user, "pAI") + + if (banned == "Age Restricted") + var/time = config.age_restrictions[i] - user.client.player_age + dat += "Be [i]: \[IN [time] DAYS]
" + else if (banned) + dat += "Be [i]: \[BANNED]
" else dat += "Be [i]: [src.be_special&(1<
" n++ @@ -1680,4 +1685,4 @@ var/list/limb_connection_data /datum/preferences/proc/make_sure_we_have_a_brain_type_for_machines() if (species=="Machine") if(!machine_brain_type) - machine_brain_type="Posibrain" \ No newline at end of file + machine_brain_type="Posibrain" diff --git a/code/world.dm b/code/world.dm index 12723a6b..a34081dc 100644 --- a/code/world.dm +++ b/code/world.dm @@ -271,6 +271,8 @@ var/master_server_password // apply some settings from config.. abandon_allowed = config.respawn + if (config.use_age_restriction_for_jobs) + config.load("config/age_restrictions.txt","age_restrictions") /hook/startup/proc/loadMods() world.load_mods() diff --git a/config/example/age_restrictions.txt b/config/example/age_restrictions.txt new file mode 100644 index 00000000..a0d3d3cf --- /dev/null +++ b/config/example/age_restrictions.txt @@ -0,0 +1,71 @@ +#Try to keep up to date. +#Replace all spaces in the job titles with underscores, otherwise the config will not load properly + +#These are all the titles (var/title) of the different job datums +#Station jobs +#Command +Captain 0 +Head_of_Personnel 0 +Head_of_Security 0 +Chief_Engineer 0 +Research_Director 0 +Chief_Medical_Officer 0 + +#Engineering +Station_Engineer 0 +Atmospheric_Technician 0 +Engineering_Apprentice 0 + +#Medical +Medical_Doctor 0 +Psychiatrist 0 +Chemist 0 +Emergency_Medical_Tech 0 +Nursing_Intern 0 + +#Science +Scientist 0 +Geneticist 0 +Roboticist 0 +Xenobiologist 0 +Lab_Assistant 0 + +#Security +Warden 0 +Detective 0 +Forensic_Technician 0 +Security_Officer 0 +Security_Cadet 0 + +#Civilian +Bartender 0 +Botanist 0 +Chef 0 +Janitor 0 +Librarian 0 +Quartermaster 0 +Cargo_Technician 0 +Shaft_Miner 0 +Lawyer 0 +Chaplain 0 +Assistant 0 +Internal_Affairs_Agent 0 + +#Synth +AI 0 +Cyborg 0 +pAI 0 + +#This is fetched from the special_roles global list. +#Antags +traitor 0 +operative 0 +changeling 0 +wizard 0 +malf_AI 0 +revolutionary 0 +cultist 0 +ninja 0 +vox_raider 0 +vampire 0 +mutineer 0 From 849ac27e240cd8384bf2b8f5b91809a31f80f8ac Mon Sep 17 00:00:00 2001 From: skull132 Date: Sun, 25 Oct 2015 22:32:51 +0200 Subject: [PATCH 18/19] Text SQL Sanitzation Fixes Because I was dumb. This should fix issues with notes and warnings, previously generated by the inputs not getting sanitized properly, and thus driving SQL insane. --- code/modules/admin/player_notes_sql.dm | 2 ++ code/modules/admin/verbs/warning.dm | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/code/modules/admin/player_notes_sql.dm b/code/modules/admin/player_notes_sql.dm index b80d2b83..0eac3ee8 100644 --- a/code/modules/admin/player_notes_sql.dm +++ b/code/modules/admin/player_notes_sql.dm @@ -8,6 +8,8 @@ var/ckey = sanitizeSQL(key) var/content = sanitizeSQL(note) + note = sql_sanitize_text(note) + var/a_ckey if(usr) a_ckey = sanitizeSQL(usr.key) diff --git a/code/modules/admin/verbs/warning.dm b/code/modules/admin/verbs/warning.dm index a9288213..d222bb5e 100644 --- a/code/modules/admin/verbs/warning.dm +++ b/code/modules/admin/verbs/warning.dm @@ -88,8 +88,12 @@ if(!reason) return + reason = sql_sanitize_text(reason) + var/notes = input("Add Additional Information. This is visible to staff only.") as null|text + notes = sql_sanitize_text(notes) + var/severity switch(alert("Set Warning Severity",,"Standard","Severe")) if("Standard") From 6471d172f402744477339d6090153c2790d8892d Mon Sep 17 00:00:00 2001 From: skull132 Date: Sun, 25 Oct 2015 22:33:06 +0200 Subject: [PATCH 19/19] Remove Horsemask Spell What it says on the tin. --- code/datums/spells/horsemask.dm | 47 ++++++++++++++++++++++++- code/game/gamemodes/wizard/spellbook.dm | 22 ++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/code/datums/spells/horsemask.dm b/code/datums/spells/horsemask.dm index 1319f620..066a6317 100644 --- a/code/datums/spells/horsemask.dm +++ b/code/datums/spells/horsemask.dm @@ -35,6 +35,51 @@ flick("e_flash", target.flash) +//A spell for reversing the curse. +/obj/effect/proc_holder/spell/targeted/remove_horsemask + name = "Free the Horseman" + desc = "This spell lifts the Curse of the Horseman from the target. This spell does not require robes." + school = "transmutation" + charge_type = "recharge" + charge_max = 150 + charge_counter = 0 + clothes_req = 0 + stat_allowed = 0 + invocation = "KN'A EUTH, PUCK 'BTHIK!" + invocation_type = "shout" + range = 7 + selection_type = "range" + var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey) + +/obj/effect/proc_holder/spell/targeted/remove_horsemask/cast(list/targets, mob/user = usr) + if (!targets.len) + user << "No target found in range." + return + + var/mob/living/carbon/target = targets[1] + + if (!(target.type in compatible_mobs)) + user << "It'd be stupid to curse [target] with a horse's head!" + return + + if (!(target in oview(range)))//If they are not in overview after selection. + user << "They are too far away!" + return + + if (istype(target.wear_mask, /obj/item/clothing/mask/horsehead/magic)) + var/obj/item/clothing/mask/horsehead/magic/to_be_removed = target.wear_mask + target.visible_message( "The [to_be_removed] on [target]'s face lights up and burns away, revealing \his face.", \ + "Your face burns up once more, but you suddenly realize that you are no longer wearing a silly horsemask!") + target.u_equip(to_be_removed) + + if (prob(40)) + del(to_be_removed) + else + user << "They aren't cursed, as such, there is nothing to reverse!" + return + + flick("e_flash", target.flash) + //item used by the horsehead spell /obj/item/clothing/mask/horsehead/magic //flags_inv = null //so you can still see their face... no. How can you recognize someone when their face is completely different? @@ -43,7 +88,7 @@ dropped(mob/user as mob) canremove = 1 ..() - + equipped(var/mob/user, var/slot) if (slot == slot_wear_mask) canremove = 0 //curses! diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index f4d98d1d..60fb8187 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -38,6 +38,20 @@ dat += "Ethereal Jaunt (60)
" dat += "Knock (10)
" dat += "Curse of the Horseman (15)
" + dat += "A reversal spell offered for free, upon purchase.
" + + var/need_remove_horse = 0 + for (var/obj/effect/proc_holder/spell/targeted/horsemask/Add in user.spell_list) + if (need_remove_horse == 1) + break + need_remove_horse++ + for (var/obj/effect/proc_holder/spell/targeted/remove_horsemask/Remove in user.spell_list) + if (need_remove_horse == 2) + break + need_remove_horse++ + if (need_remove_horse == 1) + dat += "Free the Horseman (15)
" + // if(op) // dat += "Summon Guns (One time use, global spell)
" dat += "
" @@ -153,7 +167,15 @@ if("horseman") feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells H.spell_list += new /obj/effect/proc_holder/spell/targeted/horsemask(H) + if (alert("Do you want a spell that can lift this curse, too? (Does not cost a spellpoint.)",,"Yes","No") == "Yes") + feedback_add_details("wizard_spell_learned","RH") + H.spell_list += new /obj/effect/proc_holder/spell/targeted/remove_horsemask(H) temp = "This spell will curse a person to wear an unremovable horse mask (it has glue on the inside) and speak like a horse. It does not require a wizard garb. Do note the curse will disintegrate the target's current mask if they are wearing one." + if ("remove_horseman") + feedback_add_details("wizard_spell_learned","RH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + H.spell_list += new /obj/effect/proc_holder/spell/targeted/remove_horsemask(H) + temp = "This spell lifts the Curse of the Horseman from the target. This spell does not require robes." + uses++ //since it's a really trivial spell, purchasing it won't deduct points if("summonguns") feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells H.rightandwrong()