diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm index 285b0b341e..9692409d45 100644 --- a/code/__defines/damage_organs.dm +++ b/code/__defines/damage_organs.dm @@ -47,6 +47,7 @@ // Damage above this value must be repaired with surgery. #define ROBOLIMB_REPAIR_CAP 30 +#define ORGAN_FLESH 0 // Normal organic organs. #define ORGAN_ASSISTED 1 // Like pacemakers, not robotic #define ORGAN_ROBOT 2 // Fully robotic, no organic parts #define ORGAN_LIFELIKE 3 // Robotic, made to appear organic diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 51039af253..8426edcfcf 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -196,6 +196,9 @@ #define O_VOICE "voicebox" #define O_STANDARD list(O_EYES, O_HEART, O_LUNGS, O_BRAIN, O_LIVER, O_KIDNEYS, O_APPENDIX, O_VOICE) +// Augments +#define O_AUG_TSHADE "integrated thermolensing implant" + // Non-Standard organs #define O_MOUTH "mouth" #define O_CELL "cell" diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index e8c7a0d08d..a6e1ef3c2d 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -4,30 +4,14 @@ /obj/item/weapon/storage/pill_bottle/happy name = "bottle of Happy pills" desc = "Highly illegal drug. When you want to see the rainbow." - -/obj/item/weapon/storage/pill_bottle/happy/New() - ..() - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) + wrapper_color = COLOR_PINK + starts_with = list(/obj/item/weapon/reagent_containers/pill/happy = 7) /obj/item/weapon/storage/pill_bottle/zoom name = "bottle of Zoom pills" desc = "Highly illegal drug. Trade brain for speed." - -/obj/item/weapon/storage/pill_bottle/zoom/New() - ..() - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) + wrapper_color = COLOR_BLUE + starts_with = list(/obj/item/weapon/reagent_containers/pill/zoom = 7) /obj/item/weapon/reagent_containers/glass/beaker/vial/random flags = 0 diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index d436af1936..9b323c3b68 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -177,15 +177,25 @@ use_sound = null max_storage_space = ITEMSIZE_COST_TINY * 14 max_w_class = ITEMSIZE_TINY + var/wrapper_color + var/label var/label_text = "" var/base_name = " " var/base_desc = " " -/obj/item/weapon/storage/pill_bottle/New() - ..() +/obj/item/weapon/storage/pill_bottle/Initialize() + . = ..() base_name = name base_desc = desc + update_icon() + +/obj/item/weapon/storage/pill_bottle/update_icon() + overlays.Cut() + if(wrapper_color) + var/image/I = image(icon, "pillbottle_wrap") + I.color = wrapper_color + overlays += I /obj/item/weapon/storage/pill_bottle/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen)) @@ -216,61 +226,71 @@ desc = "[base_desc] It is labeled \"[label_text]\"." /obj/item/weapon/storage/pill_bottle/antitox - name = "bottle of Dylovene pills" + name = "pill bottle (Dylovene)" desc = "Contains pills used to counter toxins." starts_with = list(/obj/item/weapon/reagent_containers/pill/antitox = 7) + wrapper_color = COLOR_GREEN /obj/item/weapon/storage/pill_bottle/bicaridine - name = "bottle of Bicaridine pills" + name = "pill bottle (Bicaridine)" desc = "Contains pills used to stabilize the severely injured." starts_with = list(/obj/item/weapon/reagent_containers/pill/bicaridine = 7) + wrapper_color = COLOR_MAROON /obj/item/weapon/storage/pill_bottle/dexalin_plus - name = "bottle of Dexalin Plus pills" + name = "pill bottle (Dexalin Plus)" desc = "Contains pills used to treat extreme cases of oxygen deprivation." starts_with = list(/obj/item/weapon/reagent_containers/pill/dexalin_plus = 7) + wrapper_color = "#3366cc" /obj/item/weapon/storage/pill_bottle/dermaline - name = "bottle of Dermaline pills" + name = "pill bottle (Dermaline)" desc = "Contains pills used to treat burn wounds." starts_with = list(/obj/item/weapon/reagent_containers/pill/dermaline = 7) + wrapper_color = "#e8d131" /obj/item/weapon/storage/pill_bottle/dylovene - name = "bottle of Dylovene pills" + name = "pill bottle (Dylovene)" desc = "Contains pills used to treat toxic substances in the blood." starts_with = list(/obj/item/weapon/reagent_containers/pill/dylovene = 7) + wrapper_color = COLOR_GREEN /obj/item/weapon/storage/pill_bottle/inaprovaline - name = "bottle of Inaprovaline pills" + name = "pill bottle (Inaprovaline)" desc = "Contains pills used to stabilize patients." starts_with = list(/obj/item/weapon/reagent_containers/pill/inaprovaline = 7) + wrapper_color = COLOR_PALE_BLUE_GRAY /obj/item/weapon/storage/pill_bottle/kelotane - name = "bottle of kelotane pills" + name = "pill bottle (Kelotane)" desc = "Contains pills used to treat burns." starts_with = list(/obj/item/weapon/reagent_containers/pill/kelotane = 7) + wrapper_color = "#ec8b2f" /obj/item/weapon/storage/pill_bottle/spaceacillin - name = "bottle of Spaceacillin pills" + name = "pill bottle (Spaceacillin)" desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space." starts_with = list(/obj/item/weapon/reagent_containers/pill/spaceacillin = 7) + wrapper_color = COLOR_PALE_GREEN_GRAY /obj/item/weapon/storage/pill_bottle/tramadol - name = "bottle of Tramadol pills" + name = "pill bottle (Tramadol)" desc = "Contains pills used to relieve pain." starts_with = list(/obj/item/weapon/reagent_containers/pill/tramadol = 7) + wrapper_color = COLOR_PURPLE_GRAY /obj/item/weapon/storage/pill_bottle/citalopram - name = "bottle of Citalopram pills" + name = "pill bottle (Citalopram)" desc = "Contains pills used to stabilize a patient's mood." starts_with = list(/obj/item/weapon/reagent_containers/pill/citalopram = 7) + wrapper_color = COLOR_GRAY /obj/item/weapon/storage/pill_bottle/carbon - name = "bottle of Carbon pills" + name = "pill bottle (Carbon)" desc = "Contains pills used to neutralise chemicals in the stomach." starts_with = list(/obj/item/weapon/reagent_containers/pill/carbon = 7) /obj/item/weapon/storage/pill_bottle/iron - name = "bottle of Iron pills" + name = "pill bottle (Iron)" desc = "Contains pills used to aid in blood regeneration." starts_with = list(/obj/item/weapon/reagent_containers/pill/iron = 7) diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm index 8a146f82c4..b559495eb5 100644 --- a/code/game/objects/random/_random.dm +++ b/code/game/objects/random/_random.dm @@ -11,7 +11,15 @@ . = ..() if (!prob(spawn_nothing_percentage)) spawn_item() + Random_SafeDestroy(0) + +// This function should, theoretically, guarantee the deletion of the random object. Not all of them destroy themselves for some reason, especially if created through non-standard means. +/obj/random/proc/Random_SafeDestroy(var/recursion_level) + set waitfor = FALSE + sleep(30) qdel(src) + if(src && recursion_level < 5) + Random_SafeDestroy(recursion_level + 1) // this function should return a specific item to spawn /obj/random/proc/item_to_spawn() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 3dc76769fb..b03649183b 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -314,8 +314,10 @@ switch(mob.incorporeal_move) if(1) var/turf/T = get_step(mob, direct) + if(!T) + return if(mob.check_holy(T)) - mob << "You cannot get past holy grounds while you are in this plane of existence!" + to_chat(mob, "You cannot get past holy grounds while you are in this plane of existence!") return else mob.forceMove(get_step(mob, direct)) diff --git a/code/modules/organs/internal/bioaugment.dm b/code/modules/organs/internal/bioaugment.dm new file mode 100644 index 0000000000..52621e74c1 --- /dev/null +++ b/code/modules/organs/internal/bioaugment.dm @@ -0,0 +1,92 @@ +/* + * Augments. This file contains the base, and organic-targeting augments. + */ + +/obj/item/organ/internal/augment + name = "augment" + + icon_state = "cell_bay" + + parent_organ = BP_TORSO + + organ_verbs = list() // Verbs added by the organ when present in the body. + target_parent_classes = list() // Is the parent supposed to be organic, robotic, assisted? + forgiving_class = FALSE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic. + + var/obj/item/integrated_object // Objects held by the organ, used for deployable things. + var/integrated_object_type // Object type the organ will spawn. + +/obj/item/organ/internal/augment/Initialize() + ..() + if(integrated_object_type) + integrated_object = new integrated_object_type(src) + integrated_object.canremove = FALSE + +/obj/item/organ/internal/augment/handle_organ_mod_special(var/removed = FALSE) + if(removed && integrated_object && integrated_object.loc != src) + if(isliving(integrated_object.loc)) + var/mob/living/L = integrated_object.loc + L.drop_from_inventory(integrated_object) + integrated_object.forceMove(src) + ..(removed) + +// The base organic-targeting augment. + +/obj/item/organ/internal/augment/bioaugment + name = "bioaugmenting implant" + + robotic = ORGAN_ROBOT + target_parent_classes = list(ORGAN_FLESH) + +// Jensen Shades. Your vision can be augmented. + +/obj/item/organ/internal/augment/bioaugment/thermalshades + name = "integrated thermolensing implant" + desc = "A miniscule implant that houses a pair of thermolensed sunglasses. Don't ask how they deploy, you don't want to know." + icon_state = "augment_shades" + dead_icon = "augment_shades_dead" + + w_class = ITEMSIZE_TINY + + organ_tag = O_AUG_TSHADE + + parent_organ = BP_HEAD + + organ_verbs = list(/mob/living/carbon/human/proc/toggle_shades) + + integrated_object_type = /obj/item/clothing/glasses/hud/security/jensenshades + +/mob/living/carbon/human/proc/toggle_shades() + set name = "Toggle Integrated Thermoshades" + set desc = "Toggle your flash-proof, thermal-integrated sunglasses." + set category = "Augments" + + var/obj/item/organ/internal/augment/aug = internal_organs_by_name[O_AUG_TSHADE] + + if(glasses) + if(aug && aug.integrated_object == glasses) + drop_from_inventory(glasses) + aug.integrated_object.forceMove(aug) + if(!glasses) + to_chat(src, "Your [aug.integrated_object] retract into your skull.") + else if(!istype(glasses, /obj/item/clothing/glasses/hud/security/jensenshades)) + to_chat(src, "\The [glasses] block your shades from deploying.") + else if(istype(glasses, /obj/item/clothing/glasses/hud/security/jensenshades)) + var/obj/item/G = glasses + if(G.canremove) + to_chat(src, "\The [G] are not your integrated shades.") + else + drop_from_inventory(G) + to_chat(src, "\The [G] retract into your skull.") + qdel(G) + + else + if(aug && aug.integrated_object) + to_chat(src, "Your [aug.integrated_object] deploy.") + equip_to_slot(aug.integrated_object, slot_glasses, 0, 1) + if(!glasses || glasses != aug.integrated_object) + aug.integrated_object.forceMove(aug) + else + var/obj/item/clothing/glasses/hud/security/jensenshades/J = new(get_turf(src)) + equip_to_slot(J, slot_glasses, 1, 1) + to_chat(src, "Your [aug.integrated_object] deploy.") diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index c14fac25ba..b0aadff2a2 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -36,7 +36,10 @@ var/list/organ_cache = list() var/list/will_assist_languages = list() var/list/datum/language/assists_languages = list() - var/list/organ_verbs // Verbs added by the organ when present in the body. + // Organ verb vars. + var/list/organ_verbs // Verbs added by the organ when present in the body. + var/list/target_parent_classes = list() // Is the parent supposed to be organic, robotic, assisted? + var/forgiving_class = TRUE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic. /obj/item/organ/Destroy() @@ -441,12 +444,12 @@ var/list/organ_cache = list() all_organs |= owner.internal_organs for(var/obj/item/organ/O in all_organs) - if(!(O.status & ORGAN_DEAD) && O.organ_verbs) + if(!(O.status & ORGAN_DEAD) && O.organ_verbs && O.check_verb_compatability()) for(var/verb_type in O.organ_verbs) if(verb_type in organ_verbs) save_verbs |= verb_type - if(!removed && organ_verbs) + if(!removed && organ_verbs && check_verb_compatability()) for(var/verb_path in organ_verbs) owner.verbs |= verb_path else if(organ_verbs) @@ -457,3 +460,32 @@ var/list/organ_cache = list() /obj/item/organ/proc/handle_organ_proc_special() // Called when processed. return + +/obj/item/organ/proc/check_verb_compatability() // Used for determining if an organ should give or remove its verbs. I.E., FBP part in a human, no verbs. If true, keep or add. + if(owner) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + var/obj/item/organ/O = H.get_organ(parent_organ) + if(forgiving_class) + if(O.robotic <= ORGAN_ASSISTED && robotic <= ORGAN_LIFELIKE) // Parent is organic or assisted, we are at most synthetic. + return TRUE + + if(O.robotic >= ORGAN_ROBOT && robotic >= ORGAN_ASSISTED) // Parent is synthetic, and we are biosynthetic at least. + return TRUE + + if(!target_parent_classes || !target_parent_classes.len) // Default checks, if we're not looking for a Specific type. + + if(O.robotic == robotic) // Same thing, we're fine. + return TRUE + + if(O.robotic < ORGAN_ROBOT && robotic < ORGAN_ROBOT) + return TRUE + + if(O.robotic > ORGAN_ASSISTED && robotic > ORGAN_ASSISTED) + return TRUE + + else + if(O.robotic in target_parent_classes) + return TRUE + + return FALSE diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index ee77c5e79e..dee4cabfa6 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -127,7 +127,7 @@ data["pillSprite"] = pillsprite data["bottleSprite"] = bottlesprite - var/P[20] //how many pill sprites there are. Sprites are taken from chemical.dmi and can be found in nano/images/pill.png + var/P[24] //how many pill sprites there are. Sprites are taken from chemical.dmi and can be found in nano/images/pill.png for(var/i = 1 to P.len) P[i] = i data["pillSpritesAmount"] = P @@ -238,7 +238,7 @@ else pill_cube = "pill" - var/name = sanitizeSafe(input(usr,"Name:","Name your [pill_cube]!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)") as null|text, MAX_NAME_LEN) + var/name = sanitizeSafe(input(usr,"Name:","Name your [pill_cube]!","[reagents.get_master_reagent_name()] ([amount_per_pill]u)") as null|text, MAX_NAME_LEN) if(!name) //Blank name (sanitized to nothing, or left empty) or cancel return @@ -257,6 +257,10 @@ else //If condi is on P.icon_state = "bouilloncube"//Reskinned monkey cube P.desc = "A dissolvable cube." + + if(P.icon_state in list("pill1", "pill2", "pill3", "pill4")) // if using greyscale, take colour from reagent + P.color = reagents.get_color() + reagents.trans_to_obj(P,amount_per_pill) if(src.loaded_pill_bottle) if(loaded_pill_bottle.contents.len < loaded_pill_bottle.max_storage_space) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 727d67e509..c0b647e53b 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -15,7 +15,7 @@ /obj/item/weapon/reagent_containers/pill/Initialize() . = ..() if(!icon_state) - icon_state = "pill[rand(1, 20)]" + icon_state = "pill[rand(1, 4)]" //preset pills only use colour changing or unique icons /obj/item/weapon/reagent_containers/pill/attack(mob/M as mob, mob/user as mob) if(M == user) @@ -92,27 +92,29 @@ //Pills /obj/item/weapon/reagent_containers/pill/antitox - name = "Anti-toxins pill" - desc = "Neutralizes many common toxins. Contains 25 units of Dylovene." - icon_state = "pill17" + name = "Dylovene (25u)" + desc = "Neutralizes many common toxins." + icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/antitox/Initialize() . = ..() reagents.add_reagent("anti_toxin", 25) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/tox name = "Toxins pill" - desc = "Highly toxic." //this is cooler without "contains 50u toxin" - icon_state = "pill5" + desc = "Highly toxic." + icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/tox/Initialize() . = ..() reagents.add_reagent("toxin", 50) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/cyanide - name = "Cyanide pill" - desc = "Don't swallow this." //this is cooler without "contains 50u cyanide" - icon_state = "pill5" + name = "Strange pill" + desc = "It's marked 'KCN'. Smells vaguely of almonds." + icon_state = "pill9" /obj/item/weapon/reagent_containers/pill/cyanide/Initialize() . = ..() @@ -121,174 +123,180 @@ /obj/item/weapon/reagent_containers/pill/adminordrazine name = "Adminordrazine pill" - desc = "It's magic. We don't have to explain it." //it's space magic you don't need the quantity - icon_state = "pill15" + desc = "It's magic. We don't have to explain it." + icon_state = "pillA" /obj/item/weapon/reagent_containers/pill/adminordrazine/Initialize() . = ..() reagents.add_reagent("adminordrazine", 5) + /obj/item/weapon/reagent_containers/pill/stox - name = "Sleeping pill" - desc = "Commonly used to treat insomnia. Contains 15 units of Soporific." - icon_state = "pill8" + name = "Soporific (15u)" + desc = "Commonly used to treat insomnia." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/stox/Initialize() . = ..() reagents.add_reagent("stoxin", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/kelotane - name = "Kelotane pill" - desc = "Used to treat burns. Contains 15 units of Kelotane." - icon_state = "pill11" + name = "Kelotane (15u)" + desc = "Used to treat burns." + icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/kelotane/Initialize() . = ..() reagents.add_reagent("kelotane", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/paracetamol - name = "Paracetamol pill" - desc = "Paracetamol! A painkiller for the ages. Chewables! Contains 15 units of Paracetamol." - icon_state = "pill8" + name = "Paracetamol (15u)" + desc = "Paracetamol! A painkiller for the ages. Chewables!" + icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/paracetamol/Initialize() . = ..() reagents.add_reagent("paracetamol", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/tramadol - name = "Tramadol pill" - desc = "A simple painkiller. Contains 15 units of Tramadol." - icon_state = "pill8" + name = "Tramadol (15u)" + desc = "A simple painkiller." + icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/tramadol/Initialize() . = ..() reagents.add_reagent("tramadol", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/methylphenidate - name = "Methylphenidate pill" - desc = "Improves the ability to concentrate. Contains 15 units of Methylphenidate." - icon_state = "pill8" + name = "Methylphenidate (15u)" + desc = "Improves the ability to concentrate." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/methylphenidate/Initialize() . = ..() reagents.add_reagent("methylphenidate", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/citalopram - name = "Citalopram pill" - desc = "Mild anti-depressant. Contains 15 units of Citalopram." - icon_state = "pill8" + name = "Citalopram (15u)" + desc = "Mild anti-depressant." + icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/citalopram/Initialize() . = ..() reagents.add_reagent("citalopram", 15) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dexalin - name = "Dexalin pill" - desc = "Used to treat oxygen deprivation. Contains 15 units of Dexalin." - icon_state = "pill16" + name = "Dexalin (15u)" + desc = "Used to treat oxygen deprivation." + icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/dexalin/Initialize() . = ..() reagents.add_reagent("dexalin", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dexalin_plus - name = "Dexalin Plus pill" - desc = "Used to treat extreme oxygen deprivation. Contains 15 units of Dexalin Plus." - icon_state = "pill8" + name = "Dexalin Plus (15u)" + desc = "Used to treat extreme oxygen deprivation." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/dexalin_plus/Initialize() . = ..() reagents.add_reagent("dexalinp", 15) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dermaline - name = "Dermaline pill" - desc = "Used to treat burn wounds. Contains 15 units of Dermaline." - icon_state = "pill12" + name = "Dermaline (15u)" + desc = "Used to treat burn wounds." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/dermaline/Initialize() . = ..() reagents.add_reagent("dermaline", 15) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dylovene - name = "Dylovene pill" - desc = "A broad-spectrum anti-toxin. Contains 15 units of Dylovene." - icon_state = "pill13" + name = "Dylovene (15u)" + desc = "A broad-spectrum anti-toxin." + icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/dylovene/Initialize() . = ..() reagents.add_reagent("anti_toxin", 15) + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/inaprovaline - name = "Inaprovaline pill" - desc = "Used to stabilize patients. Contains 30 units of Inaprovaline." - icon_state = "pill20" + name = "Inaprovaline (30u)" + desc = "Used to stabilize patients." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/inaprovaline/Initialize() . = ..() reagents.add_reagent("inaprovaline", 30) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/bicaridine - name = "Bicaridine pill" - desc = "Used to treat physical injuries. Contains 20 units of Bicaridine." - icon_state = "pill18" + name = "Bicaridine (20u)" + desc = "Used to treat physical injuries." + icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/bicaridine/Initialize() . = ..() reagents.add_reagent("bicaridine", 20) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/spaceacillin - name = "Spaceacillin pill" - desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space. Contains 15 units of Spaceacillin." - icon_state = "pill19" + name = "Spaceacillin (10u)" + desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space." + icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/spaceacillin/Initialize() . = ..() reagents.add_reagent("spaceacillin", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/carbon - name = "Carbon pill" - desc = "Used to neutralise chemicals in the stomach. Contains 15 units of Carbon." - icon_state = "pill7" + name = "Carbon (15u)" + desc = "Used to neutralise chemicals in the stomach." + icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/carbon/Initialize() . = ..() reagents.add_reagent("carbon", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/iron - name = "Iron pill" - desc = "Used to aid in blood regeneration after bleeding. Contains 15 units of Iron." - icon_state = "pill4" + name = "Iron (15u)" + desc = "Used to aid in blood regeneration after bleeding." + icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/iron/Initialize() . = ..() reagents.add_reagent("iron", 15) + color = reagents.get_color() //Not-quite-medicine /obj/item/weapon/reagent_containers/pill/happy name = "Happy pill" - desc = "Happy happy joy joy!" //we're not giving quantities for shady maint drugs - icon_state = "pill18" + desc = "Happy happy joy joy!" + icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/happy/Initialize() . = ..() reagents.add_reagent("space_drugs", 15) reagents.add_reagent("sugar", 15) - + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/zoom name = "Zoom pill" desc = "Zoooom!" - icon_state = "pill18" + icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/zoom/Initialize() . = ..() @@ -296,12 +304,14 @@ reagents.add_reagent("mold", 2) //Chance to be more dangerous reagents.add_reagent("expired_medicine", 5) reagents.add_reagent("stimm", 5) //VOREStation edit end: Zoom pill adjustments + color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/diet name = "diet pill" desc = "Guaranteed to get you slim!" - icon_state = "pill9" + icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/diet/Initialize() . = ..() reagents.add_reagent("lipozine", 15) //VOREStation Edit + color = reagents.get_color() diff --git a/code/modules/research/designs/illegal.dm b/code/modules/research/designs/illegal.dm index c195b5764b..4e99fc8665 100644 --- a/code/modules/research/designs/illegal.dm +++ b/code/modules/research/designs/illegal.dm @@ -19,8 +19,9 @@ sort_string = "VASBA" /datum/design/item/weapon/esword + name = "Portable Energy Blade" id = "chargesword" - req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ANOMALY = 1) + req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ARCANE = 1) materials = list(MAT_PLASTEEL = 3500, "glass" = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500) build_path = /obj/item/weapon/melee/energy/sword/charge sort_string = "VASCA" diff --git a/html/changelogs/Novacat - Colorablepill.yml b/html/changelogs/Novacat - Colorablepill.yml new file mode 100644 index 0000000000..41b0195f41 --- /dev/null +++ b/html/changelogs/Novacat - Colorablepill.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Novacat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds greyscale pills, which are colored by their reagent" + - rscadd: "Adds colored pill bottles, most pre-spawned pill bottles are colored" + - tweak: "Prespawn pills and pill bottles have had their names simplified" diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index 41d2fbd305..5403cac867 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index d24841e6c1..1c92dc0afd 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 1d4c723fca..e229d9e42d 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 9fd6f77296..12bededf90 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/nano/css/icons.css b/nano/css/icons.css index 68ac412aba..23d4ba0606 100644 --- a/nano/css/icons.css +++ b/nano/css/icons.css @@ -265,26 +265,30 @@ .uiIcon16.icon-external64 { background-image: url(uiIcons64.png); background-position: -256px -64px; width: 64px; height: 64px; } .uiIcon16.icon-pill { background-image: url(pills32.png); width: 32px; height: 32px;} -.uiIcon16.icon-pill.pill1 { background-position: 0 0; } -.uiIcon16.icon-pill.pill2 { background-position: -32px 0; } -.uiIcon16.icon-pill.pill3 { background-position: -64px 0; } -.uiIcon16.icon-pill.pill4 { background-position: -96px 0; } -.uiIcon16.icon-pill.pill5 { background-position: -128px 0; } -.uiIcon16.icon-pill.pill6 { background-position: 0 -32px; } -.uiIcon16.icon-pill.pill7 { background-position: -32px -32px; } -.uiIcon16.icon-pill.pill8 { background-position: -64px -32px; } -.uiIcon16.icon-pill.pill9 { background-position: -96px -32px; } -.uiIcon16.icon-pill.pill10 { background-position: -128px -32px; } -.uiIcon16.icon-pill.pill11 { background-position: 0 -64px; } -.uiIcon16.icon-pill.pill12 { background-position: -32px -64px; } -.uiIcon16.icon-pill.pill13 { background-position: -64px -64px; } -.uiIcon16.icon-pill.pill14 { background-position: -96px -64px; } -.uiIcon16.icon-pill.pill15 { background-position: -128px -64px; } -.uiIcon16.icon-pill.pill16 { background-position: 0 -96px; } -.uiIcon16.icon-pill.pill17 { background-position: -32px -96px; } -.uiIcon16.icon-pill.pill18 { background-position: -64px -96px; } -.uiIcon16.icon-pill.pill19 { background-position: -96px -96px; } -.uiIcon16.icon-pill.pill20 { background-position: -128px -96px; } +.uiIcon16.icon-pill.pill1 { background-position: -64px -96px; } +.uiIcon16.icon-pill.pill2 { background-position: -64px -96px; } +.uiIcon16.icon-pill.pill3 { background-position: -96px -32px; } +.uiIcon16.icon-pill.pill4 { background-position: -96px -32px; } +.uiIcon16.icon-pill.pill5 { background-position: 0 0; } +.uiIcon16.icon-pill.pill6 { background-position: -32px 0; } +.uiIcon16.icon-pill.pill7 { background-position: -64px 0; } +.uiIcon16.icon-pill.pill8 { background-position: -96px 0; } +.uiIcon16.icon-pill.pill9 { background-position: -128px 0; } +.uiIcon16.icon-pill.pill10 { background-position: 0 -32px; } +.uiIcon16.icon-pill.pill11 { background-position: -32px -32px; } +.uiIcon16.icon-pill.pill12 { background-position: -64px -32px; } +.uiIcon16.icon-pill.pill13 { background-position: -96px -32px; } +.uiIcon16.icon-pill.pill14 { background-position: -128px -32px; } +.uiIcon16.icon-pill.pill15 { background-position: 0 -64px; } +.uiIcon16.icon-pill.pill16 { background-position: -32px -64px; } +.uiIcon16.icon-pill.pill17 { background-position: -64px -64px; } +.uiIcon16.icon-pill.pill18 { background-position: -96px -64px; } +.uiIcon16.icon-pill.pill19 { background-position: -128px -64px; } +.uiIcon16.icon-pill.pill20 { background-position: 0 -96px; } +.uiIcon16.icon-pill.pill21 { background-position: -32px -96px; } +.uiIcon16.icon-pill.pill22 { background-position: -64px -96px; } +.uiIcon16.icon-pill.pill23 { background-position: -96px -96px; } +.uiIcon16.icon-pill.pill24 { background-position: -128px -96px; } .uiIcon16.icon-pill.bottle1 { background-position: 0 -128px; } .uiIcon16.icon-pill.bottle2 { background-position: -32px -128px; } .uiIcon16.icon-pill.bottle3 { background-position: -64px -128px; } diff --git a/vorestation.dme b/vorestation.dme index 7ba0c16900..85901fe6af 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2628,6 +2628,7 @@ #include "code\modules\organs\robolimbs_yw.dm" #include "code\modules\organs\wound.dm" #include "code\modules\organs\internal\appendix.dm" +#include "code\modules\organs\internal\bioaugment.dm" #include "code\modules\organs\internal\brain.dm" #include "code\modules\organs\internal\eyes.dm" #include "code\modules\organs\internal\heart.dm"