From 4bfcec55f270b7caa066b2a050926335a03d499e Mon Sep 17 00:00:00 2001 From: Neerti Date: Thu, 10 Aug 2017 10:26:53 -0400 Subject: [PATCH] work --- code/ZAS/Airflow.dm | 2 +- code/__defines/chemistry.dm | 2 + code/__defines/mobs.dm | 8 +- code/_helpers/unsorted.dm | 2 - code/_macros.dm | 4 +- code/_onclick/other_mobs.dm | 104 +- code/controllers/verbs.dm | 3 - code/datums/mind.dm | 2 +- code/game/atoms_movable.dm | 2 + .../devices/disposable_teleporter.dm | 5 +- .../gamemodes/technomancer/spells/control.dm | 2 +- code/game/machinery/adv_med.dm | 8 +- code/game/machinery/cryo.dm | 17 +- code/game/machinery/cryopod.dm | 4 +- code/game/machinery/doors/windowdoor.dm | 15 + code/game/machinery/kitchen/smartfridge.dm | 18 +- .../mecha/equipment/tools/medical_tools.dm | 4 +- code/game/mecha/equipment/tools/tools.dm | 4 +- code/game/mecha/mecha.dm | 4 +- code/game/objects/buckling.dm | 67 +- code/game/objects/items/devices/flashlight.dm | 3 +- code/game/objects/items/devices/scanners.dm | 58 +- .../items/weapons/implants/implantchair.dm | 11 +- .../game/objects/items/weapons/power_cells.dm | 6 +- code/game/objects/items/weapons/stunbaton.dm | 16 +- code/game/objects/random/random.dm | 1 - .../crates_lockers/closets/l3closet.dm | 5 + .../crates_lockers/closets/utility_closets.dm | 15 + code/game/objects/structures/window.dm | 43 +- code/game/supplyshuttle.dm | 2 +- code/game/verbs/suicide.dm | 21 - code/modules/admin/admin.dm | 3 +- code/modules/admin/admin_verbs.dm | 1 - code/modules/admin/topic.dm | 12 +- code/modules/admin/verbs/debug.dm | 17 - code/modules/admin/view_variables/helpers.dm | 1 - code/modules/admin/view_variables/topic.dm | 14 - code/modules/clothing/suits/utility.dm | 4 +- code/modules/examine/stat_icons.dm | 10 +- code/modules/mob/living/bot/bot.dm | 15 + code/modules/mob/living/bot/secbot.dm | 76 +- code/modules/mob/living/carbon/brain/brain.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 3 + code/modules/mob/living/carbon/human/say.dm | 11 +- .../living/carbon/human/species/species.dm | 2 + .../human/species/station/prometheans.dm | 2 + .../mob/living/carbon/metroid/items.dm | 127 ++- code/modules/mob/living/living.dm | 23 +- code/modules/mob/living/say.dm | 6 +- .../living/silicon/robot/drone/drone_items.dm | 11 +- .../mob/living/silicon/robot/robot_modules.dm | 2 + code/modules/mob/living/silicon/say.dm | 3 + .../mob/living/simple_animal/aliens/alien.dm | 1 + .../living/simple_animal/aliens/creature.dm | 1 + .../mob/living/simple_animal/aliens/drone.dm | 1 + .../living/simple_animal/aliens/faithless.dm | 3 +- .../living/simple_animal/aliens/hivebot.dm | 1 + .../mob/living/simple_animal/aliens/mimic.dm | 1 + .../mob/living/simple_animal/aliens/shade.dm | 1 + .../mob/living/simple_animal/animals/bat.dm | 1 + .../mob/living/simple_animal/animals/bear.dm | 1 + .../mob/living/simple_animal/animals/carp.dm | 1 + .../mob/living/simple_animal/animals/cat.dm | 1 + .../mob/living/simple_animal/animals/corgi.dm | 1 + .../mob/living/simple_animal/animals/crab.dm | 1 + .../simple_animal/animals/farm_animals.dm | 4 + .../mob/living/simple_animal/animals/fish.dm | 1 + .../simple_animal/animals/giant_spider.dm | 1 + .../mob/living/simple_animal/animals/goose.dm | 1 + .../living/simple_animal/animals/lizard.dm | 1 + .../mob/living/simple_animal/animals/mouse.dm | 1 + .../living/simple_animal/animals/parrot.dm | 1 + .../living/simple_animal/animals/penguin.dm | 1 + .../living/simple_animal/animals/spiderbot.dm | 1 + .../living/simple_animal/animals/tomato.dm | 1 + .../mob/living/simple_animal/animals/tree.dm | 1 + .../mob/living/simple_animal/animals/worm.dm | 1 + .../mob/living/simple_animal/borer/borer.dm | 1 + .../simple_animal/constructs/constructs.dm | 1 + .../living/simple_animal/humanoids/clown.dm | 1 + .../living/simple_animal/humanoids/head.dm | 1 + .../living/simple_animal/humanoids/kobold.dm | 1 + .../simple_animal/humanoids/mechamobs.dm | 1 + .../living/simple_animal/humanoids/pirate.dm | 1 + .../living/simple_animal/humanoids/russian.dm | 1 + .../simple_animal/humanoids/syndicate.dm | 2 + .../mob/living/simple_animal/simple_animal.dm | 205 +++- .../mob/living/simple_animal/slime/ai.dm | 58 ++ .../mob/living/simple_animal/slime/combat.dm | 276 +++++ .../mob/living/simple_animal/slime/death.dm | 24 + .../mob/living/simple_animal/slime/life.dm | 174 ++++ .../mob/living/simple_animal/slime/slime.dm | 433 ++++++++ .../living/simple_animal/slime/subtypes.dm | 697 +++++++++++++ code/modules/mob/living/voice/voice.dm | 9 +- code/modules/mob/mob_helpers.dm | 29 +- code/modules/mob/modifiers.dm | 2 +- code/modules/mob/say.dm | 3 + code/modules/mob/transform_procs.dm | 34 - code/modules/mob/typing_indicator.dm | 2 +- code/modules/organs/robolimbs.dm | 2 + code/modules/paperwork/paperbin.dm | 2 +- code/modules/power/cell.dm | 13 + code/modules/projectiles/guns/energy.dm | 15 +- .../projectiles/guns/energy/temperature.dm | 76 +- code/modules/projectiles/projectile.dm | 2 +- code/modules/projectiles/projectile/change.dm | 2 +- .../modules/projectiles/projectile/special.dm | 40 +- code/modules/reagents/Chemistry-Holder.dm | 4 - code/modules/reagents/Chemistry-Machinery.dm | 5 +- .../Chemistry-Reagents-Core.dm | 18 +- .../Chemistry-Reagents-Food-Drinks.dm | 6 +- .../Chemistry-Reagents-Other.dm | 10 +- code/modules/reagents/Chemistry-Recipes.dm | 97 +- .../reagent_containers/food/snacks.dm | 2 - .../reagents/reagent_containers/glass.dm | 3 +- .../reagents/reagent_containers/syringes.dm | 3 - code/modules/recycling/disposal.dm | 2 + code/modules/research/designs.dm | 14 + code/modules/surgery/slimes.dm | 32 +- code/modules/ventcrawl/ventcrawl.dm | 4 +- code/modules/xenobio/items/extracts.dm | 973 ++++++++++++++++++ code/modules/xenobio/items/slime_objects.dm | 128 +++ code/modules/xenobio/items/slimepotions.dm | 255 +++++ code/modules/xenobio/items/weapons.dm | 105 ++ code/modules/xenobio/machinery/processor.dm | 118 +++ .../xenobio2/tools/slime_handling_tools.dm | 70 -- code/world.dm | 3 - icons/mob/modifier_effects.dmi | Bin 11981 -> 14624 bytes icons/mob/screen1_stats.dmi | Bin 7814 -> 8161 bytes icons/mob/slime2.dmi | Bin 6277 -> 32723 bytes icons/mob/slimes.dmi | Bin 86616 -> 87761 bytes icons/mob/talk.dmi | Bin 923 -> 2513 bytes icons/obj/aibots.dmi | Bin 43357 -> 51218 bytes icons/obj/chemical.dmi | Bin 34092 -> 34323 bytes icons/obj/objects.dmi | Bin 127059 -> 128517 bytes icons/obj/structures.dmi | Bin 87943 -> 94276 bytes maps/example/example.dm | 10 +- maps/northern_star/polaris-1.dmm | 4 +- maps/northern_star/polaris-5.dmm | 28 +- polaris.dme | 45 +- 140 files changed, 4199 insertions(+), 681 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/slime/ai.dm create mode 100644 code/modules/mob/living/simple_animal/slime/combat.dm create mode 100644 code/modules/mob/living/simple_animal/slime/death.dm create mode 100644 code/modules/mob/living/simple_animal/slime/life.dm create mode 100644 code/modules/mob/living/simple_animal/slime/slime.dm create mode 100644 code/modules/mob/living/simple_animal/slime/subtypes.dm create mode 100644 code/modules/xenobio/items/extracts.dm create mode 100644 code/modules/xenobio/items/slime_objects.dm create mode 100644 code/modules/xenobio/items/slimepotions.dm create mode 100644 code/modules/xenobio/items/weapons.dm create mode 100644 code/modules/xenobio/machinery/processor.dm diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 8dd637e58f..fde7b78aca 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -22,7 +22,7 @@ mob/proc/airflow_stun() mob/living/silicon/airflow_stun() return -mob/living/carbon/slime/airflow_stun() +mob/living/simple_animal/slime/airflow_stun() return mob/living/carbon/human/airflow_stun() diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 2207ffb075..08131f99bb 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -34,6 +34,8 @@ #define CE_ALCOHOL_TOXIC "alcotoxic" // Liver damage #define CE_SPEEDBOOST "gofast" // Hyperzine +#define REAGENTS_PER_SHEET 20 + // Chemistry lists. var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") // Increase heart rate. var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate. diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index ef00eed334..de957d8b21 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -212,4 +212,10 @@ #define FBP_NONE "" #define FBP_CYBORG "Cyborg" #define FBP_POSI "Positronic" -#define FBP_DRONE "Drone" \ No newline at end of file +#define FBP_DRONE "Drone" + +// Used to seperate simple animals by ""intelligence"". +#define SA_PLANT 1 +#define SA_ANIMAL 2 +#define SA_ROBOTIC 3 +#define SA_HUMANOID 4 \ No newline at end of file diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 63bac6e134..152f5e2a9a 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -492,8 +492,6 @@ Turf and target are seperate in case you want to teleport some distance from a t moblist.Add(M) for(var/mob/new_player/M in sortmob) moblist.Add(M) - for(var/mob/living/carbon/slime/M in sortmob) - moblist.Add(M) for(var/mob/living/simple_animal/M in sortmob) moblist.Add(M) // for(var/mob/living/silicon/hivebot/M in world) diff --git a/code/_macros.dm b/code/_macros.dm index 454a4eaacd..38b9d15c71 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -40,7 +40,9 @@ #define isvoice(A) istype(A, /mob/living/voice) -#define isslime(A) istype(A, /mob/living/carbon/slime) +#define isslime(A) istype(A, /mob/living/simple_animal/slime) + +#define isbot(A) istype(A, /mob/living/bot) #define isxeno(A) istype(A, /mob/living/simple_animal/xeno) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index ac07b8d075..b4eb89b8b3 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -58,77 +58,6 @@ setClickCooldown(DEFAULT_ATTACK_COOLDOWN) A.attack_generic(src,rand(5,6),"bitten") -/* - Slimes - Nothing happening here -*/ - -/mob/living/carbon/slime/RestrainedClickOn(var/atom/A) - return - -/mob/living/carbon/slime/UnarmedAttack(var/atom/A, var/proximity) - - if(!..()) - return - - // Eating - if(Victim) - if (Victim == A) - Feedstop() - return - - //should have already been set if we are attacking a mob, but it doesn't hurt and will cover attacking non-mobs too - setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - - var/mob/living/M = A - if (istype(M)) - - switch(src.a_intent) - if (I_HELP) // We just poke the other - M.visible_message("[src] gently pokes [M]!", "[src] gently pokes you!") - if (I_DISARM) // We stun the target, with the intention to feed - var/stunprob = 1 - var/power = max(0, min(10, (powerlevel + rand(0, 3)))) - if (powerlevel > 0 && !istype(A, /mob/living/carbon/slime)) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - stunprob *= max(H.species.siemens_coefficient,0) - - - switch(power * 10) - if(0) stunprob *= 10 - if(1 to 2) stunprob *= 20 - if(3 to 4) stunprob *= 30 - if(5 to 6) stunprob *= 40 - if(7 to 8) stunprob *= 60 - if(9) stunprob *= 70 - if(10) stunprob *= 95 - - if(prob(stunprob)) - powerlevel = max(0, powerlevel-3) - M.visible_message("[src] has shocked [M]!", "[src] has shocked you!") - M.Weaken(power) - M.Stun(power) - M.stuttering = max(M.stuttering, power) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, M) - s.start() - - if(prob(stunprob) && powerlevel >= 8) - M.adjustFireLoss(powerlevel * rand(6,10)) - else if(prob(40)) - M.visible_message("[src] has pounced at [M]!", "[src] has pounced at you!") - M.Weaken(power) - else - M.visible_message("[src] has tried to pounce at [M]!", "[src] has tried to pounce at you!") - M.updatehealth() - if (I_GRAB) // We feed - Wrap(M) - if (I_HURT) // Attacking - A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomped") - else - A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomped") // Basic attack. /* New Players: Have no reason to click on anything at all. @@ -140,15 +69,40 @@ Animals */ /mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity) - if(!..()) return + if(prob(spattack_prob)) + if(spattack_min_range <= 1) + target_mob = A + SpecialAtkTarget() + target_mob = null + return + if(melee_damage_upper == 0 && istype(A,/mob/living)) custom_emote(1,"[friendly] [A]!") return setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - var/damage = rand(melee_damage_lower, melee_damage_upper) - if(A.attack_generic(src,damage,attacktext,environment_smash) && loc && attack_sound) - playsound(loc, attack_sound, 50, 1, 1) + if(isliving(A)) + target_mob = A + PunchTarget() + target_mob = null + else + A.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext) + +/mob/living/simple_animal/RangedAttack(var/atom/A) + setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + var/distance = get_dist(src, A) + + if(prob(spattack_prob) && (distance >= spattack_min_range) && (distance <= spattack_max_range)) + target_mob = A + SpecialAtkTarget() + target_mob = null + return + + if(ranged && distance <= shoot_range) + target_mob = A + ShootTarget(A) + target_mob = null + diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index fcf239c88f..8d02fda2eb 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -133,9 +133,6 @@ if("Vote") debug_variables(vote) feedback_add_details("admin_verb", "DVote") - if("Xenobio") - debug_variables(xenobio_controller) - feedback_add_details("admin_verb", "DXenobio") if("Planets") debug_variables(planet_controller) feedback_add_details("admin_verb", "DPlanets") diff --git a/code/datums/mind.dm b/code/datums/mind.dm index cb49518bd8..2c0faffc1e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -499,7 +499,7 @@ if(!mind.assigned_role) mind.assigned_role = "Assistant" //defualt //slime -/mob/living/carbon/slime/mind_initialize() +/mob/living/simple_animal/slime/mind_initialize() ..() mind.assigned_role = "slime" diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 64ae0722f8..fa533f5d55 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -94,6 +94,8 @@ /atom/movable/proc/throw_impact(atom/hit_atom, var/speed) if(istype(hit_atom,/mob/living)) var/mob/living/M = hit_atom + if(M.buckled == src) + return // Don't hit the thing we're buckled to. M.hitby(src,speed) else if(isobj(hit_atom)) diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm index 0106ff027e..f45461592d 100644 --- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm +++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm @@ -63,7 +63,7 @@ targets.Add(T) if(!targets.len) - user << "The teleporter matrix was unable to locate a suitable teleport destination, as all the possibilities \ + user << "\The [src] was unable to locate a suitable teleport destination, as all the possibilities \ were nonexistant or hazardous. Try a different area." return var/turf/simulated/destination = null @@ -75,6 +75,5 @@ user << "You are teleported to \the [A]." uses-- if(uses <= 0) - user << "\The [src] has ran out of uses, and disintegrates from your hands, to prevent \ - reverse engineering by outsiders." + user << "\The [src] has ran out of uses, and disintegrates from your hands" qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm index 50549ca004..c4591345e5 100644 --- a/code/game/gamemodes/technomancer/spells/control.dm +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -33,7 +33,7 @@ /mob/living/simple_animal/mouse, /mob/living/simple_animal/parrot, /mob/living/simple_animal/slime, - /mob/living/simple_animal/adultslime, +// /mob/living/simple_animal/adultslime, /mob/living/simple_animal/tindalos, /mob/living/simple_animal/yithian, /mob/living/simple_animal/hostile/bear, diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index f980cfd0b1..31fe02cdcb 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -46,8 +46,8 @@ if(occupant) user << "The scanner is already occupied!" return - for(var/mob/living/carbon/slime/M in range(1, H.affecting)) - if(M.Victim == H.affecting) + for(var/mob/living/simple_animal/slime/M in range(1, H.affecting)) + if(M.victim == H.affecting) user << "[H.affecting.name] has a fucking slime attached to them, deal with that first." return var/mob/M = H.affecting @@ -83,8 +83,8 @@ if(O.abiotic()) user << "Subject cannot have abiotic items on." return 0 - for(var/mob/living/carbon/slime/M in range(1, O)) - if(M.Victim == O) + for(var/mob/living/simple_animal/slime/M in range(1, O)) + if(M.victim == O) user << "[O] has a fucking slime attached to them, deal with that first." return 0 diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 1e27f61866..33529f4447 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -180,15 +180,16 @@ G.loc = src user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!") else if(istype(G, /obj/item/weapon/grab)) - if(!ismob(G:affecting)) + var/obj/item/weapon/grab/grab = G + if(!ismob(grab.affecting)) return - for(var/mob/living/carbon/slime/M in range(1,G:affecting)) - if(M.Victim == G:affecting) - usr << "[G:affecting:name] will not fit into the cryo because they have a slime latched onto their head." + for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting)) + if(M.victim == grab.affecting) + usr << "[grab.affecting.name] will not fit into the cryo because they have a slime latched onto their head." return - var/mob/M = G:affecting + var/mob/M = grab.affecting if(put_mob(M)) - qdel(G) + qdel(grab) return /obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(var/mob/target, var/mob/user) //Allows borgs to put people into cryo without external assistance @@ -343,8 +344,8 @@ set name = "Move Inside" set category = "Object" set src in oview(1) - for(var/mob/living/carbon/slime/M in range(1,usr)) - if(M.Victim == usr) + for(var/mob/living/simple_animal/slime/M in range(1,usr)) + if(M.victim == usr) usr << "You're too busy getting your life sucked out of you." return if(usr.stat != 0) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 08a1282e52..3ef7fe00a7 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -539,8 +539,8 @@ usr << "\The [src] is in use." return - for(var/mob/living/carbon/slime/M in range(1,usr)) - if(M.Victim == usr) + for(var/mob/living/simple_animal/slime/M in range(1,usr)) + if(M.victim == usr) usr << "You're too busy getting your life sucked out of you." return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 5449d3436b..4fc02c70cc 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -180,6 +180,21 @@ if (src.operating == 1) return + // Fixing. + if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) + var/obj/item/weapon/weldingtool/WT = I + if(health < maxhealth) + if(WT.remove_fuel(1 ,user)) + to_chat(user, "You begin repairing [src]...") + playsound(src, WT.usesound, 50, 1) + if(do_after(user, 40 * WT.toolspeed, target = src)) + health = maxhealth + update_icon() + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") + return + //Emags and ninja swords? You may pass. if (istype(I, /obj/item/weapon/melee/energy/blade)) if(emag_act(10, user)) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 5b78f81249..9732b166f0 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -65,19 +65,11 @@ req_access = list(access_research) /obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/xenoproduct/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/extract/New() - ..() - var/datum/stored_item/I = new(src, /obj/item/xenoproduct/slime/core) - item_records.Add(I) - for(var/i=1 to 5) - var/obj/item/xenoproduct/slime/core/C = new(src) - C.traits = new() - C.nameVar = "grey" - I.add_product(C) + if(istype(O, /obj/item/slime_extract)) + return TRUE + if(istype(O, /obj/item/slimepotion)) + return TRUE + return FALSE /obj/machinery/smartfridge/secure/medbay diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 1e10e03f4f..acd680ba57 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -39,8 +39,8 @@ if(occupant) occupant_message("The sleeper is already occupied") return - for(var/mob/living/carbon/slime/M in range(1,target)) - if(M.Victim == target) + for(var/mob/living/simple_animal/slime/M in range(1,target)) + if(M.victim == target) occupant_message("[target] will not fit into the sleeper because they have a slime latched onto their head.") return occupant_message("You start putting [target] into [src].") diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 4d7ee902d8..a1cbba3102 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -1154,8 +1154,8 @@ usr << "Kinda hard to climb in while handcuffed don't you think?" return - for(var/mob/living/carbon/slime/M in range(1,usr)) - if(M.Victim == usr) + for(var/mob/living/simple_animal/slime/M in range(1,usr)) + if(M.victim == usr) usr << "You're too busy getting your life sucked out of you." return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 5d7d16a126..6f117b2f3e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1015,8 +1015,8 @@ usr << "Access denied" src.log_append_to_last("Permission denied.") return - for(var/mob/living/carbon/slime/M in range(1,usr)) - if(M.Victim == usr) + for(var/mob/living/simple_animal/slime/M in range(1,usr)) + if(M.victim == usr) usr << "You're too busy getting your life sucked out of you." return // usr << "You start climbing into [src.name]" diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index c963a902bb..a26a0de0e8 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -1,4 +1,6 @@ -/obj + + +/atom/movable var/can_buckle = 0 var/buckle_movable = 0 var/buckle_dir = 0 @@ -6,7 +8,8 @@ var/buckle_require_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes var/mob/living/buckled_mob = null -/obj/attack_hand(mob/living/user) + +/atom/movable/attack_hand(mob/living/user) . = ..() if(can_buckle && buckled_mob) user_unbuckle_mob(user) @@ -16,18 +19,20 @@ return attack_hand(user) //Process as if we're a normal person touching the object. return ..() //Otherwise, treat this as an AI click like usual. -/obj/MouseDrop_T(mob/living/M, mob/living/user) +/atom/movable/MouseDrop_T(mob/living/M, mob/living/user) . = ..() if(can_buckle && istype(M)) user_buckle_mob(M, user) -/obj/Destroy() +/atom/movable/Destroy() unbuckle_mob() return ..() -/obj/proc/buckle_mob(mob/living/M) - if(!can_buckle || !istype(M) || (M.loc != loc) || M.buckled || M.pinned.len || (buckle_require_restraints && !M.restrained())) +/atom/movable/proc/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE) + if((!can_buckle && !forced) || !istype(M) || M.buckled || M.pinned.len || (buckle_require_restraints && !M.restrained())) + return 0 + if(check_loc && M.loc != loc) return 0 if(buckled_mob) //Handles trying to buckle yourself to the chair when someone is on it M << "\The [src] already has someone buckled to it." @@ -43,7 +48,7 @@ post_buckle_mob(M) return 1 -/obj/proc/unbuckle_mob() +/atom/movable/proc/unbuckle_mob() if(buckled_mob && buckled_mob.buckled == src) . = buckled_mob buckled_mob.buckled = null @@ -54,19 +59,16 @@ post_buckle_mob(.) -/obj/proc/post_buckle_mob(mob/living/M) +/atom/movable/proc/post_buckle_mob(mob/living/M) return -/obj/proc/user_buckle_mob(mob/living/M, mob/user) +/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, var/forced = FALSE, var/silent = FALSE) if(!ticker) user << "You can't buckle anyone in before the game starts." if(!user.Adjacent(M) || user.restrained() || user.lying || user.stat || istype(user, /mob/living/silicon/pai)) return if(M == buckled_mob) return - if(istype(M, /mob/living/carbon/slime)) - user << "The [M] is too squishy to buckle in." - return add_fingerprint(user) unbuckle_mob() @@ -75,20 +77,21 @@ if(M.loc != src.loc) step_towards(M, src) - . = buckle_mob(M) + . = buckle_mob(M, forced) if(.) - if(M == user) - M.visible_message(\ - "[M.name] buckles themselves to [src].",\ - "You buckle yourself to [src].",\ - "You hear metal clanking.") - else - M.visible_message(\ - "[M.name] is buckled to [src] by [user.name]!",\ - "You are buckled to [src] by [user.name]!",\ - "You hear metal clanking.") + if(!silent) + if(M == user) + M.visible_message(\ + "[M.name] buckles themselves to [src].",\ + "You buckle yourself to [src].",\ + "You hear metal clanking.") + else + M.visible_message(\ + "[M.name] is buckled to [src] by [user.name]!",\ + "You are buckled to [src] by [user.name]!",\ + "You hear metal clanking.") -/obj/proc/user_unbuckle_mob(mob/user) +/atom/movable/proc/user_unbuckle_mob(mob/user) var/mob/living/M = unbuckle_mob() if(M) if(M != user) @@ -104,3 +107,19 @@ add_fingerprint(user) return M +/atom/movable/proc/handle_buckled_mob_movement(newloc,direct) + if(buckled_mob) +// if(!buckled_mob.Move(newloc, direct)) + if(!buckled_mob.forceMove(newloc, direct)) + loc = buckled_mob.loc + last_move = buckled_mob.last_move + buckled_mob.inertia_dir = last_move + return FALSE + else + buckled_mob.set_dir(dir) + return TRUE + +/atom/movable/Move(atom/newloc, direct = 0) + . = ..() + if(. && buckled_mob && !handle_buckled_mob_movement(newloc, direct)) //movement failed due to buckled mob(s) + . = 0 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 996f848849..973cb522e7 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -448,10 +448,11 @@ /obj/item/device/flashlight/slime gender = PLURAL name = "glowing slime extract" - desc = "A glowing ball of what appears to be amber." + desc = "A slimy ball that appears to be glowing from bioluminesence." icon = 'icons/obj/lighting.dmi' icon_state = "floor1" //not a slime extract sprite but... something close enough! item_state = "slime" + light_color = "#FFF423" w_class = ITEMSIZE_TINY brightness_on = 6 on = 1 //Bio-luminesence has one setting, on. diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index cfd0693b15..d903499ee0 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -364,32 +364,38 @@ REAGENT SCANNER matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20) /obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) - if (!isslime(M)) + if(!isslime(M)) user << "This device can only scan slimes!" return - var/mob/living/carbon/slime/T = M + var/mob/living/simple_animal/slime/S = M user.show_message("Slime scan results:") - user.show_message(text("[T.colour] [] slime", T.is_adult ? "adult" : "baby")) - user.show_message(text("Nutrition: [T.nutrition]/[]", T.get_max_nutrition())) - if (T.nutrition < T.get_starve_nutrition()) - user.show_message("Warning: slime is starving!") - else if (T.nutrition < T.get_hunger_nutrition()) - user.show_message("Warning: slime is hungry") - user.show_message("Electric change strength: [T.powerlevel]") - user.show_message("Health: [T.health]") - if (T.slime_mutation[4] == T.colour) - user.show_message("This slime does not evolve any further") - else - if (T.slime_mutation[3] == T.slime_mutation[4]) - if (T.slime_mutation[2] == T.slime_mutation[1]) - user.show_message(text("Possible mutation: []", T.slime_mutation[3])) - user.show_message("Genetic destability: [T.mutation_chance/2]% chance of mutation on splitting") - else - user.show_message(text("Possible mutations: [], [], [] (x2)", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3])) - user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") - else - user.show_message(text("Possible mutations: [], [], [], []", T.slime_mutation[1], T.slime_mutation[2], T.slime_mutation[3], T.slime_mutation[4])) - user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting") - if (T.cores > 1) - user.show_message("Anomalious slime core amount detected") - user.show_message("Growth progress: [T.amount_grown]/10") + user.show_message(text("[S.slime_color] [] slime", S.is_adult ? "adult" : "baby")) + + user.show_message("Health: [S.health]") + user.show_message("Mutation Probability: [S.mutation_chance]") + + var/list/mutations = list() + for(var/potential_color in S.slime_mutation) + var/mob/living/simple_animal/slime/slime = potential_color + mutations.Add(initial(slime.slime_color)) + + user.show_message("Potental to mutate into [english_list(mutations)] colors.") + user.show_message("Extract potential: [S.cores]") + + user.show_message(text("Nutrition: [S.nutrition]/[]", S.get_max_nutrition())) + if (S.nutrition < S.get_starve_nutrition()) + user.show_message("Warning: Subject is starving!") + else if (S.nutrition < S.get_hunger_nutrition()) + user.show_message("Warning: Subject is hungry.") + user.show_message("Electric change strength: [S.power_charge]") + + if(S.resentment) + user.show_message("Warning: Subject is harboring resentment.") + if(S.docile) + user.show_message("Subject has been pacified.") + if(S.rabid) + user.show_message("Subject is enraged and extremely dangerous!") + if(S.unity) + user.show_message("Subject is friendly to other slime colors.") + + user.show_message("Growth progress: [S.amount_grown]/10") diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 66080882be..44b33721cf 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -76,13 +76,14 @@ attackby(var/obj/item/weapon/G as obj, var/mob/user as mob) if(istype(G, /obj/item/weapon/grab)) - if(!ismob(G:affecting)) + var/obj/item/weapon/grab/grab = G + if(!ismob(grab.affecting)) return - for(var/mob/living/carbon/slime/M in range(1,G:affecting)) - if(M.Victim == G:affecting) - usr << "[G:affecting:name] will not fit into the [src.name] because they have a slime latched onto their head." + for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting)) + if(M.victim == grab.affecting) + usr << "[grab.affecting.name] will not fit into the [src.name] because they have a slime latched onto their head." return - var/mob/M = G:affecting + var/mob/M = grab.affecting if(put_mob(M)) qdel(G) src.updateUsrDialog() diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 192f667feb..3a2373c696 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -14,6 +14,8 @@ var/maxcharge = 1000 var/rigged = 0 // true if rigged to explode var/minor_fault = 0 //If not 100% reliable, it will build up faults. + var/self_recharge = FALSE // If true, the cell will recharge itself. + var/charge_amount = 25 // How much power to give, if self_recharge is true. The number is in absolute cell charge, as it gets divided by CELLRATE later. matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) suicide_act(mob/user) @@ -125,8 +127,10 @@ /obj/item/weapon/cell/slime name = "charged slime core" desc = "A yellow slime core infused with phoron, it crackles with power." - origin_tech = list(TECH_POWER = 2, TECH_BIO = 4) + origin_tech = list(TECH_POWER = 4, TECH_BIO = 5) icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi' icon_state = "yellow slime extract" //"potato_battery" + description_info = "This 'cell' holds a max charge of 10k and self recharges over time." maxcharge = 10000 matter = null + self_recharge = TRUE diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 2f4b2f3a8c..1b54df33e6 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -90,7 +90,7 @@ icon_state = "[initial(name)]" if(icon_state == "[initial(name)]_active") - set_light(1.5, 1, lightcolor) + set_light(2, 1, lightcolor) else set_light(0) @@ -237,4 +237,16 @@ else user << "[src] already has a cell." else - user << "This cell is not fitted for [src]." \ No newline at end of file + user << "This cell is not fitted for [src]." + +/obj/item/weapon/melee/baton/get_description_interaction() + var/list/results = list() + + if(bcell) + results += "[desc_panel_image("offhand")]to remove the weapon cell." + else + results += "[desc_panel_image("weapon cell")]to add a new weapon cell." + + results += ..() + + return results \ No newline at end of file diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 3afaa7a665..4da7cc6aeb 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -828,7 +828,6 @@ something, make sure it's not in one of the other lists.*/ /obj/random/maintenance/research/item_to_spawn() return pick(prob(320);/obj/random/maintenance/clean, prob(3);/obj/item/device/analyzer/plant_analyzer, - prob(2);/obj/item/device/analyzer/xeno_analyzer, prob(1);/obj/item/device/flash/synthetic, prob(2);/obj/item/weapon/bucket_sensor, prob(1);/obj/item/weapon/cell/device/weapon, diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet.dm b/code/game/objects/structures/crates_lockers/closets/l3closet.dm index c00875e522..7c54614aa7 100644 --- a/code/game/objects/structures/crates_lockers/closets/l3closet.dm +++ b/code/game/objects/structures/crates_lockers/closets/l3closet.dm @@ -67,6 +67,11 @@ new /obj/item/clothing/suit/bio_suit/scientist(src) new /obj/item/clothing/head/bio_hood/scientist(src) +/obj/structure/closet/l3closet/scientist/double/New() + ..() + new /obj/item/clothing/suit/bio_suit/scientist(src) + new /obj/item/clothing/head/bio_hood/scientist(src) + /obj/structure/closet/l3closet/medical icon_state = "bio_scientist" diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 67a4d3e788..110790aa82 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -88,6 +88,15 @@ new /obj/item/weapon/extinguisher(src) new /obj/item/clothing/head/hardhat/red(src) +/obj/structure/closet/firecloset/full/double/New() + ..() + new /obj/item/clothing/suit/fire/firefighter(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/device/flashlight(src) + new /obj/item/weapon/tank/oxygen/red(src) + new /obj/item/weapon/extinguisher(src) + new /obj/item/clothing/head/hardhat/red(src) + /obj/structure/closet/firecloset/update_icon() if(!opened) icon_state = icon_closed @@ -175,6 +184,12 @@ new /obj/item/clothing/shoes/black( src ) new /obj/item/clothing/head/bomb_hood( src ) +/obj/structure/closet/bombcloset/double/New() // Makes two suits. + ..() + new /obj/item/clothing/suit/bomb_suit( src ) + new /obj/item/clothing/under/color/black( src ) + new /obj/item/clothing/shoes/black( src ) + new /obj/item/clothing/head/bomb_hood( src ) /obj/structure/closet/bombclosetsecurity name = "\improper EOD closet" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 51e37d462f..ca9276c6c2 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -59,10 +59,13 @@ playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) visible_message("[src] looks like it's about to shatter!" ) + update_icon() else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) visible_message("[src] looks seriously damaged!" ) + update_icon() else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) visible_message("Cracks begin to appear in [src]!" ) + update_icon() return /obj/structure/window/proc/apply_silicate(var/amount) @@ -204,6 +207,8 @@ return if(damage >= 10) visible_message("[user] smashes into [src]!") + if(reinf) + damage = damage / 2 take_damage(damage) else visible_message("\The [user] bonks \the [src] harmlessly.") @@ -212,6 +217,24 @@ /obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) if(!istype(W)) return//I really wish I did not need this + + // Fixing. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) + var/obj/item/weapon/weldingtool/WT = W + if(health < maxhealth) + if(WT.remove_fuel(1 ,user)) + to_chat(user, "You begin repairing [src]...") + playsound(src, WT.usesound, 50, 1) + if(do_after(user, 40 * WT.toolspeed, target = src)) + health = maxhealth + // playsound(src, 'sound/items/Welder.ogg', 50, 1) + update_icon() + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") + return + + // Slamming. if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) var/obj/item/weapon/grab/G = W if(istype(G.affecting,/mob/living)) @@ -408,6 +431,15 @@ var/image/I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) overlays += I + // Damage overlays. + var/ratio = health / maxhealth + ratio = Ceiling(ratio * 4) * 25 + + if(ratio > 75) + return + var/image/I = image(icon, "damage[ratio]", layer + 0.1) + overlays += I + return /obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -437,6 +469,10 @@ damage_per_fire_tick = 1.0 maxhealth = 40.0 +/obj/structure/window/phoronbasic/full + dir = SOUTHWEST + maxhealth = 80 + /obj/structure/window/phoronreinforced name = "reinforced borosilicate window" desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong." @@ -449,6 +485,9 @@ damage_per_fire_tick = 1.0 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while. maxhealth = 80.0 +/obj/structure/window/phoronreinforced/full + dir = SOUTHWEST + maxhealth = 160 /obj/structure/window/reinforced name = "reinforced window" @@ -470,9 +509,9 @@ state = 0 /obj/structure/window/reinforced/full - dir = 5 + dir = SOUTHWEST icon_state = "fwindow" - maxhealth = 60 + maxhealth = 80 /obj/structure/window/reinforced/tinted name = "tinted window" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index f7bfd311e2..be376e0f65 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -50,7 +50,7 @@ var/list/mechtoys = list( explosion_resistance = 5 var/list/mobs_can_pass = list( /mob/living/bot, - /mob/living/carbon/slime, + /mob/living/simple_animal/slime, /mob/living/simple_animal/mouse, /mob/living/silicon/robot/drone ) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 6e23d74bbb..8f6beee8d6 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -164,24 +164,3 @@ death(0) else src << "Aborting suicide attempt." - -/mob/living/carbon/slime/verb/suicide() - set hidden = 1 - if (stat == 2) - src << "You're already dead!" - return - - if (suiciding) - src << "You're already committing suicide! Be patient!" - return - - var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No") - - if(confirm == "Yes") - suiciding = 30 - setOxyLoss(100) - adjustBruteLoss(100 - getBruteLoss()) - setToxLoss(100) - setCloneLoss(100) - - updatehealth() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 6b3560a824..84a2320a2f 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -114,8 +114,7 @@ proc/admin_notice(var/message, var/rights) else if(ishuman(M)) body += {"Make AI | Make Robot | - Make Alien | - Make slime + Make Alien "} //Simple Animals diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ab3fa05d21..f43af3ec86 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -190,7 +190,6 @@ var/list/admin_verbs_debug = list( /client/proc/overlay_random_map, /client/proc/delete_random_map, /client/proc/show_plant_genes, - /client/proc/show_xenobio_genes, /client/proc/enable_debug_verbs, /client/proc/callproc, /client/proc/callproc_target, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index fde36a734c..db16b214b2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -266,7 +266,7 @@ if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob ) if("nymph") M.change_mob_type( /mob/living/carbon/alien/diona , null, null, delmob ) if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob, href_list["species"]) - if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob ) + if("slime") M.change_mob_type( /mob/living/simple_animal/slime , null, null, delmob ) if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob ) if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob ) if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob ) @@ -1146,16 +1146,6 @@ log_admin("[key_name(usr)] AIized [key_name(H)]") H.AIize() - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - - usr.client.cmd_admin_slimeize(H) - else if(href_list["makerobot"]) if(!check_rights(R_SPAWN)) return diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 80ed64458e..a3fd6acf3e 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -100,23 +100,6 @@ paiController.pai_candidates.Remove(candidate) feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_slimeize(var/mob/M in mob_list) - set category = "Fun" - set name = "Make slime" - - if(!ticker) - alert("Wait until the game starts") - return - if(ishuman(M)) - log_admin("[key_name(src)] has slimeized [M.key].") - spawn(10) - M:slimeize() - feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] made [key_name(M)] into a slime.") - message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.", 1) - else - alert("Invalid mob") - /* /client/proc/cmd_admin_monkeyize(var/mob/M in world) set category = "Fun" diff --git a/code/modules/admin/view_variables/helpers.dm b/code/modules/admin/view_variables/helpers.dm index 95945f82e0..81780f2103 100644 --- a/code/modules/admin/view_variables/helpers.dm +++ b/code/modules/admin/view_variables/helpers.dm @@ -68,7 +68,6 @@ - "} /obj/get_view_variables_options() diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index d68d51ae4a..7d0966dc59 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -281,20 +281,6 @@ return holder.Topic(href, list("makealien"=href_list["makealien"])) - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeslime"=href_list["makeslime"])) - else if(href_list["makeai"]) if(!check_rights(R_SPAWN)) return diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 9629a53283..7e951f57e1 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -78,7 +78,8 @@ name = "Radiation Hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" - flags_inv = BLOCKHAIR +// flags_inv = BLOCKHAIR + item_flags = THICKMATERIAL body_parts_covered = HEAD|FACE|EYES armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) @@ -94,3 +95,4 @@ slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER + item_flags = THICKMATERIAL diff --git a/code/modules/examine/stat_icons.dm b/code/modules/examine/stat_icons.dm index 49b511de2e..b2ed64032a 100644 --- a/code/modules/examine/stat_icons.dm +++ b/code/modules/examine/stat_icons.dm @@ -8,6 +8,8 @@ var/global/list/description_icons = list( "radiation_armor" = image(icon='icons/mob/screen1_stats.dmi',icon_state="radiation_protection"), "biohazard_armor" = image(icon='icons/mob/screen1_stats.dmi',icon_state="biohazard_protection"), + "offhand" = image(icon='icons/mob/screen1_stats.dmi',icon_state="offhand"), + "welder" = image(icon='icons/obj/tools.dmi',icon_state="welder"), "wirecutters" = image(icon='icons/obj/tools.dmi',icon_state="cutters"), "screwdriver" = image(icon='icons/obj/tools.dmi',icon_state="screwdriver"), @@ -19,6 +21,12 @@ var/global/list/description_icons = list( "plasteel sheet" = image(icon='icons/obj/items.dmi',icon_state="sheet-plasteel"), "air tank" = image(icon='icons/obj/tank.dmi',icon_state="oxygen"), + "connector" = image(icon='icons/obj/pipes.dmi',icon_state="connector"), - "connector" = image(icon='icons/obj/pipes.dmi',icon_state="connector") + "stunbaton" = image(icon='icons/obj/weapons.dmi',icon_state="stunbaton_active"), + "slimebaton" = image(icon='icons/obj/weapons.dmi',icon_state="slimebaton_active"), + + "power cell" = image(icon='icons/obj/power.dmi',icon_state="hcell"), + "device cell" = image(icon='icons/obj/power.dmi',icon_state="dcell"), + "weapon cell" = image(icon='icons/obj/power.dmi',icon_state="wcell"), ) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 971a04bd22..c839b506fa 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -128,6 +128,9 @@ ..(message, null, verb) +/mob/living/bot/speech_bubble_appearance() + return "machine" + /mob/living/bot/Bump(var/atom/A) if(on && botcard && istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A @@ -313,6 +316,18 @@ return L +// Similar to above but not restricted to just cardinal directions. +/turf/proc/TurfsWithAccess(var/obj/item/weapon/card/id/ID) + var/L[] = new() + + for(var/d in alldirs) + var/turf/T = get_step(src, d) + if(istype(T) && !T.density) + if(!LinkBlockedWithAccess(src, T, ID)) + L.Add(T) + return L + + // Returns true if a link between A and B is blocked // Movement through doors allowed if ID has access /proc/LinkBlockedWithAccess(turf/A, turf/B, obj/item/weapon/card/id/ID) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index d6a014c450..9e3a266a64 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -13,6 +13,7 @@ patrol_speed = 2 target_speed = 3 + var/default_icon_state = "secbot" var/idcheck = 0 // If true, arrests for having weapons without authorization. var/check_records = 0 // If true, arrests people without a record. var/check_arrest = 1 // If true, arrests people who are set to arrest. @@ -21,23 +22,44 @@ var/is_ranged = 0 var/awaiting_surrender = 0 + var/can_next_insult = 0 // Uses world.time + var/stun_strength = 60 // For humans. + var/xeno_stun_strength = 0 // For simple mobs. + var/xeno_harm_strength = 15 // Ditto. + var/baton_glow = "#FF6A00" var/list/threat_found_sounds = list('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg') var/list/preparing_arrest_sounds = list('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bcreep.ogg') + var/list/fighting_sounds = list('sound/voice/biamthelaw.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bjustice.ogg') /mob/living/bot/secbot/beepsky name = "Officer Beepsky" desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey." will_patrol = 1 +/mob/living/bot/secbot/slime + name = "Slime Securitron" + desc = "A little security robot, with a slime baton subsituted for the regular one." + default_icon_state = "slimesecbot" + stun_strength = 10 // Slimebatons aren't meant for humans. + xeno_stun_strength = 5 + xeno_harm_strength = 9 + baton_glow = "#33CCFF" + req_one_access = list(access_research, access_robotics) + botcard_access = list(access_research, access_robotics, access_xenobiology, access_xenoarch, access_tox, access_tox_storage, access_maint_tunnels) + +/mob/living/bot/secbot/slime/slimesky + name = "Doctor Slimesky" + desc = "An old friend of Officer Beep O'sky. He prescribes beatings to rowdy slimes so that real doctors don't need to treat the xenobiologists." + /mob/living/bot/secbot/update_icons() if(on && busy) - icon_state = "secbot-c" + icon_state = "[default_icon_state]-c" else - icon_state = "secbot[on]" + icon_state = "[default_icon_state][on]" if(on) - set_light(2, 1, "#FF6A00") + set_light(2, 1, baton_glow) else set_light(0) @@ -114,6 +136,11 @@ if(!target && health < curhealth && shooter && (shooter in view(world.view, src))) react_to_attack(shooter) +/mob/living/bot/secbot/attack_generic(var/mob/attacker) + if(attacker) + react_to_attack(attacker) + ..() + /mob/living/bot/secbot/proc/react_to_attack(mob/attacker) if(!target) playsound(src.loc, pick(threat_found_sounds), 50) @@ -163,6 +190,7 @@ awaiting_surrender = -1 say("Level [threat] infraction alert!") custom_emote(1, "points at [M.name]!") + playsound(src.loc, pick(threat_found_sounds), 50) return /mob/living/bot/secbot/handleAdjacentTarget() @@ -174,9 +202,25 @@ ++awaiting_surrender else if(declare_arrests) - broadcast_security_hud_message("[src] is [arrest_type ? "detaining" : "arresting"] a level [threat] suspect [target_name(target)] in [get_area(src)].", src) + var/action = arrest_type ? "detaining" : "arresting" + if(istype(target, /mob/living/simple_animal)) + action = "fighting" + broadcast_security_hud_message("[src] is [action] a level [threat] [action != "fighting" ? "suspect" : "threat"] [target_name(target)] in [get_area(src)].", src) UnarmedAttack(target) +// So Beepsky talks while beating up simple mobs. +/mob/living/bot/secbot/proc/insult(var/mob/living/L) + if(can_next_insult > world.time) + return + var/threat = check_threat(L) + if(threat >= 10) + playsound(src.loc, 'sound/voice/binsult.ogg', 75) + can_next_insult = world.time + 20 SECONDS + else + playsound(src.loc, pick(fighting_sounds), 75) + can_next_insult = world.time + 5 SECONDS + + /mob/living/bot/secbot/UnarmedAttack(var/mob/M, var/proximity) if(!..()) return @@ -194,7 +238,7 @@ if(!C.lying || C.handcuffed || arrest_type) cuff = 0 if(!cuff) - C.stun_effect_act(0, 60, null) + C.stun_effect_act(0, stun_strength, null) playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) do_attack_animation(C) busy = 1 @@ -203,6 +247,7 @@ busy = 0 update_icons() visible_message("\The [C] was prodded by \the [src] with a stun baton!") + insult(C) else playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) visible_message("\The [src] is trying to put handcuffs on \the [C]!") @@ -214,8 +259,8 @@ busy = 0 else if(istype(M, /mob/living/simple_animal)) var/mob/living/simple_animal/S = M - S.AdjustStunned(10) - S.adjustBruteLoss(15) + S.Weaken(xeno_stun_strength) + S.adjustBruteLoss(xeno_harm_strength) do_attack_animation(M) playsound(loc, "swing_hit", 50, 1, -1) busy = 1 @@ -224,6 +269,15 @@ busy = 0 update_icons() visible_message("\The [M] was beaten by \the [src] with a stun baton!") + insult(S) + +/mob/living/bot/secbot/slime/UnarmedAttack(var/mob/living/L, var/proximity) + ..() + + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = L + S.adjust_discipline(2) + /mob/living/bot/secbot/explode() @@ -323,8 +377,12 @@ else if(istype(W, /obj/item/weapon/melee/baton) && build_step == 3) user.drop_item() user << "You complete the Securitron! Beep boop." - var/mob/living/bot/secbot/S = new /mob/living/bot/secbot(get_turf(src)) - S.name = created_name + if(istype(W, /obj/item/weapon/melee/baton/slime)) + var/mob/living/bot/secbot/slime/S = new /mob/living/bot/secbot/slime(get_turf(src)) + S.name = created_name + else + var/mob/living/bot/secbot/S = new /mob/living/bot/secbot(get_turf(src)) + S.name = created_name qdel(W) qdel(src) diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 2905b4fe4d..af4093688b 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -45,7 +45,7 @@ return 1 if (istype(other, /mob/living/carbon/human)) return 1 - if (istype(other, /mob/living/carbon/slime)) + if (istype(other, /mob/living/simple_animal/slime)) return 1 return ..() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b432139325..e37be0e032 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -355,6 +355,9 @@ emp_act //this proc handles being hit by a thrown atom /mob/living/carbon/human/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR) +// if(buckled && buckled == AM) +// return // Don't get hit by the thing we're buckled to. + if(istype(AM,/obj/)) var/obj/O = AM diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index c87338d26c..a0276a15ac 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -38,6 +38,15 @@ say(temp) winset(client, "input", "text=[null]") +/mob/living/carbon/human/speech_bubble_appearance() + if(isSynthetic()) + var/datum/robolimb/robo = isSynthetic() + return robo.speech_bubble_appearance + else + if(species) + return species.speech_bubble_appearance + return "normal" + /mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak. @@ -55,7 +64,7 @@ return 1 if (istype(other, /mob/living/carbon/brain)) return 1 - if (istype(other, /mob/living/carbon/slime)) + if (istype(other, /mob/living/simple_animal/slime)) return 1 //This is already covered by mob/say_understands() diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f547cba9fc..9dc3291215 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -13,6 +13,8 @@ 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/speech_bubble_appearance = "normal" // Part of icon_state to use for speech bubbles when talking. See talk.dmi for available icons. + // Damage overlay and masks. var/damage_overlays = 'icons/mob/human_races/masks/dam_human.dmi' var/damage_mask = 'icons/mob/human_races/masks/dam_mask_human.dmi' diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 802cf43154..3a2eb6af49 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -28,6 +28,8 @@ var/datum/species/shapeshifter/promethean/prometheans breath_type = null poison_type = null + speech_bubble_appearance = "slime" + male_cough_sounds = list('sound/effects/slime_squish.ogg') female_cough_sounds = list('sound/effects/slime_squish.ogg') diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm index c59c6826d5..db66524a29 100644 --- a/code/modules/mob/living/carbon/metroid/items.dm +++ b/code/modules/mob/living/carbon/metroid/items.dm @@ -9,27 +9,27 @@ throw_speed = 3 throw_range = 6 origin_tech = list(TECH_BIO = 4) - var/Uses = 1 // uses before it goes inert + var/uses = 1 // uses before it goes inert var/enhanced = 0 //has it been enhanced before? flags = OPENCONTAINER - - attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/weapon/slimesteroid2)) - if(enhanced == 1) - user << " This extract has already been enhanced!" - return ..() - if(Uses == 0) - user << " You can't enhance a used extract!" - return ..() - user <<"You apply the enhancer. It now has triple the amount of uses." - Uses = 3 - enhanced = 1 - qdel(O) - +/* +/obj/item/slime_extract/attackby(obj/item/O as obj, mob/user as mob) + if(istype(O, /obj/item/weapon/slimesteroid2)) + if(enhanced == 1) + user << " This extract has already been enhanced!" + return ..() + if(Uses == 0) + user << " You can't enhance a used extract!" + return ..() + user <<"You apply the enhancer. It now has triple the amount of uses." + Uses = 3 + enhanced = 1 + qdel(O) +*/ /obj/item/slime_extract/New() ..() - create_reagents(100) - reagents.add_reagent("slimejelly", 30) + create_reagents(5) +// reagents.add_reagent("slimejelly", 30) /obj/item/slime_extract/grey name = "grey slime extract" @@ -51,7 +51,7 @@ name = "purple slime extract" icon_state = "purple slime extract" -/obj/item/slime_extract/darkpurple +/obj/item/slime_extract/dark_purple name = "dark purple slime extract" icon_state = "dark purple slime extract" @@ -71,7 +71,7 @@ name = "blue slime extract" icon_state = "blue slime extract" -/obj/item/slime_extract/darkblue +/obj/item/slime_extract/dark_blue name = "dark blue slime extract" icon_state = "dark blue slime extract" @@ -119,41 +119,66 @@ name = "rainbow slime extract" icon_state = "rainbow slime extract" -////Pet Slime Creation/// +/obj/item/slimepotion + icon = 'icons/obj/chemical.dmi' -/obj/item/weapon/slimepotion +////Pet Slime Creation/// +/* +/obj/item/slimepotion/docility name = "docility potion" desc = "A potent chemical mix that will nullify a slime's powers, causing it to become docile and tame." - icon = 'icons/obj/chemical.dmi' icon_state = "bottle19" - attack(mob/living/carbon/slime/M as mob, mob/user as mob) - if(!istype(M, /mob/living/carbon/slime))//If target is not a slime. - user << " The potion only works on baby slimes!" - return ..() - if(M.is_adult) //Can't tame adults - user << " Only baby slimes can be tamed!" - return..() - if(M.stat) - user << " The slime is dead!" - return..() - if(M.mind) - user << " The slime resists!" - return ..() - var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc) - pet.icon_state = "[M.colour] baby slime" - pet.icon_living = "[M.colour] baby slime" - pet.icon_dead = "[M.colour] baby slime dead" - pet.colour = "[M.colour]" - user <<"You feed the slime the potion, removing it's powers and calming it." - qdel(M) - var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN) +/obj/item/slimepotion/docility/attack(mob/living/carbon/slime/M as mob, mob/user as mob) + if(!istype(M, /mob/living/carbon/slime))//If target is not a slime. + user << " The potion only works on slimes!" + return ..() +// if(M.is_adult) //Can't tame adults +// user << " Only baby slimes can be tamed!" +// return..() + if(M.stat) + user << " The slime is dead!" + return..() + if(M.mind) + user << " The slime resists!" + return ..() + var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc) + pet.icon_state = "[M.colour] [M.is_adult ? "adult" : "baby"] slime" + pet.icon_living = "[M.colour] [M.is_adult ? "adult" : "baby"] slime" + pet.icon_dead = "[M.colour] [M.is_adult ? "adult" : "baby"] slime dead" + pet.colour = "[M.colour]" + to_chat(user, "You feed the slime the potion, removing it's powers and calming it.") + + qdel(M) + + var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN) + + if (!newname) + newname = "pet slime" + pet.name = newname + pet.real_name = newname + qdel(src) + +/obj/item/slimepotion/stabilizer + name = "slime stabilizer" + desc = "A potent chemical mix that will reduce the chance of a slime mutating." + icon_state = "potcyan" + +/obj/item/slimepotion/stabilizer/attack(mob/living/carbon/slime/M, mob/user) + if(!isslime(M)) + to_chat(user, "The stabilizer only works on slimes!") + return ..() + if(M.stat) + to_chat(user, "The slime is dead!") + return ..() + if(M.mutation_chance == 0) + to_chat(user, "The slime already has no chance of mutating!") + return ..() + + to_chat(user, "You feed the slime the stabilizer. It is now less likely to mutate.") + M.mutation_chance = Clamp(M.mutation_chance-15,0,100) + qdel(src) - if (!newname) - newname = "pet slime" - pet.name = newname - pet.real_name = newname - qdel(src) /obj/item/weapon/slimepotion2 name = "advanced docility potion" @@ -187,7 +212,7 @@ qdel(src) -/obj/item/weapon/slimesteroid +/obj/item/slimesteroid name = "slime steroid" desc = "A potent chemical mix that will cause a slime to generate more extract." icon = 'icons/obj/chemical.dmi' @@ -211,7 +236,7 @@ M.cores = 3 qdel(src) -/obj/item/weapon/slimesteroid2 +/obj/item/slimesteroid2 name = "extract enhancer" desc = "A potent chemical mix that will give a slime extract three uses." icon = 'icons/obj/chemical.dmi' @@ -229,7 +254,7 @@ target.Uses = 3 target.enahnced = 1 qdel(src)*/ - +*/ /obj/effect/golemrune anchored = 1 desc = "a strange rune used to create golems. It glows when spirits are nearby." diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8880efe0da..c313b1482c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -90,9 +90,6 @@ default behaviour is: forceMove(tmob.loc) tmob.forceMove(oldloc) now_pushing = 0 - for(var/mob/living/carbon/slime/slime in view(1,tmob)) - if(slime.Victim == tmob) - slime.UpdateFeed() return if(!can_move_mob(tmob, 0, 0)) @@ -571,7 +568,8 @@ default behaviour is: fire_stacks = 0 /mob/living/proc/rejuvenate() - reagents.clear_reagents() + if(reagents) + reagents.clear_reagents() // shut down various types of badness setToxLoss(0) @@ -642,8 +640,17 @@ default behaviour is: return /mob/living/Move(a, b, flag) - if (buckled) - return +// if (buckled) +// world << "[src].Move() failed; buckled." +// return + + if (buckled && buckled.loc != a) //not updating position + if (!buckled.anchored) + world << "[src].Move(); will return [buckled].Move ." + return buckled.Move(a, b) + else + world << "[src].Move() failed; buckled to anchored [buckled]." + return 0 if (restrained()) stop_pulling() @@ -724,10 +731,6 @@ default behaviour is: if (s_active && !( s_active in contents ) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. s_active.close(src) - if(update_slimes) - for(var/mob/living/carbon/slime/M in view(1,src)) - M.UpdateFeed(src) - /mob/living/proc/handle_footstep(turf/T) return FALSE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 80c0dbc505..dea3c82461 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -298,7 +298,8 @@ proc/get_radio_key_from_channel(var/channel) //The 'post-say' static speech bubble var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + var/speech_type = speech_bubble_appearance() + var/image/speech_bubble = image('icons/mob/talk.dmi',src,"[speech_type][speech_bubble_test]") spawn(30) qdel(speech_bubble) //Main 'say' and 'whisper' message delivery @@ -341,3 +342,6 @@ proc/get_radio_key_from_channel(var/channel) /mob/living/proc/GetVoice() return name + +/mob/proc/speech_bubble_appearance() + return "normal" diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 7a107d1d0e..87c36b5ac4 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -76,11 +76,14 @@ /obj/item/weapon/disk, /obj/item/weapon/circuitboard, /obj/item/weapon/reagent_containers/glass, - /obj/item/weapon/reagent_containers/food/snacks/monkeycube, - /obj/item/xenoproduct/slime/core, /obj/item/device/assembly/prox_sensor, - /obj/item/device/healthanalyzer //to build medibots -// /obj/item/slime_extract, ### Outdated + /obj/item/device/healthanalyzer, //to build medibots + /obj/item/slime_cube, + /obj/item/slime_crystal, + /obj/item/weapon/disposable_teleporter/slime, + /obj/item/slimepotion, + /obj/item/slime_extract, + /obj/item/weapon/reagent_containers/food/snacks/monkeycube, ) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index de9517fd0c..70bf0c7475 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -720,6 +720,8 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src) src.modules += new /obj/item/weapon/storage/part_replacer(src) src.modules += new /obj/item/weapon/shockpaddles/robot/jumper(src) + src.modules += new /obj/item/weapon/melee/baton/slime/robot(src) + src.modules += new /obj/item/weapon/gun/energy/taser/xeno/robot(src) src.emag = new /obj/item/weapon/hand_tele(src) var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 8b721bc24b..359ee492f2 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -14,6 +14,9 @@ message_mode = null return radio.talk_into(src,message,message_mode,verb,speaking) +/mob/living/silicon/speech_bubble_appearance() + return "synthetic" + /mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) ..() if(message_mode == "department") diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm index 7748559017..52f9121855 100644 --- a/code/modules/mob/living/simple_animal/aliens/alien.dm +++ b/code/modules/mob/living/simple_animal/aliens/alien.dm @@ -8,6 +8,7 @@ icon_gib = "syndicate_gib" faction = "xeno" + intelligence_level = SA_HUMANOID cooperative = 1 run_at_them = 0 diff --git a/code/modules/mob/living/simple_animal/aliens/creature.dm b/code/modules/mob/living/simple_animal/aliens/creature.dm index 544a44d001..3de6d687af 100644 --- a/code/modules/mob/living/simple_animal/aliens/creature.dm +++ b/code/modules/mob/living/simple_animal/aliens/creature.dm @@ -7,6 +7,7 @@ icon_dead = "otherthing-dead" faction = "creature" + intelligence_level = SA_ANIMAL maxHealth = 40 health = 40 speed = 8 diff --git a/code/modules/mob/living/simple_animal/aliens/drone.dm b/code/modules/mob/living/simple_animal/aliens/drone.dm index 3c550e862f..2a41e81667 100644 --- a/code/modules/mob/living/simple_animal/aliens/drone.dm +++ b/code/modules/mob/living/simple_animal/aliens/drone.dm @@ -8,6 +8,7 @@ icon_dead = "drone_dead" faction = "malf_drone" + intelligence_level = SA_ROBOTIC maxHealth = 300 health = 300 speed = 8 diff --git a/code/modules/mob/living/simple_animal/aliens/faithless.dm b/code/modules/mob/living/simple_animal/aliens/faithless.dm index 0b41471c32..24eacae40e 100644 --- a/code/modules/mob/living/simple_animal/aliens/faithless.dm +++ b/code/modules/mob/living/simple_animal/aliens/faithless.dm @@ -6,6 +6,7 @@ icon_dead = "faithless_dead" faction = "faithless" + intelligence_level = SA_HUMANOID maxHealth = 50 health = 50 speed = 8 @@ -14,7 +15,7 @@ response_help = "passes through" response_disarm = "shoves" response_harm = "hits" - + harm_intent_damage = 10 melee_damage_lower = 5 melee_damage_upper = 5 diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm index 6b15830b9a..d3193adfb6 100644 --- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm +++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm @@ -7,6 +7,7 @@ icon_dead = "basic" faction = "hivebot" + intelligence_level = SA_ROBOTIC maxHealth = 15 health = 15 speed = 4 diff --git a/code/modules/mob/living/simple_animal/aliens/mimic.dm b/code/modules/mob/living/simple_animal/aliens/mimic.dm index 3373760bf8..b79b524875 100644 --- a/code/modules/mob/living/simple_animal/aliens/mimic.dm +++ b/code/modules/mob/living/simple_animal/aliens/mimic.dm @@ -10,6 +10,7 @@ icon_living = "crate" faction = "mimic" + intelligence_level = SA_ANIMAL maxHealth = 250 health = 250 diff --git a/code/modules/mob/living/simple_animal/aliens/shade.dm b/code/modules/mob/living/simple_animal/aliens/shade.dm index f1b227436e..2d502bc10a 100644 --- a/code/modules/mob/living/simple_animal/aliens/shade.dm +++ b/code/modules/mob/living/simple_animal/aliens/shade.dm @@ -8,6 +8,7 @@ icon_dead = "shade_dead" faction = "cult" + intelligence_level = SA_HUMANOID maxHealth = 50 health = 50 diff --git a/code/modules/mob/living/simple_animal/animals/bat.dm b/code/modules/mob/living/simple_animal/animals/bat.dm index 1d722c0b8a..a429b2ca7f 100644 --- a/code/modules/mob/living/simple_animal/animals/bat.dm +++ b/code/modules/mob/living/simple_animal/animals/bat.dm @@ -8,6 +8,7 @@ icon_gib = "bat_dead" faction = "scarybat" + intelligence_level = SA_ANIMAL maxHealth = 20 health = 20 diff --git a/code/modules/mob/living/simple_animal/animals/bear.dm b/code/modules/mob/living/simple_animal/animals/bear.dm index 228e92e5b7..ea8398afc2 100644 --- a/code/modules/mob/living/simple_animal/animals/bear.dm +++ b/code/modules/mob/living/simple_animal/animals/bear.dm @@ -8,6 +8,7 @@ icon_gib = "bear_gib" faction = "russian" + intelligence_level = SA_ANIMAL cooperative = 1 maxHealth = 60 diff --git a/code/modules/mob/living/simple_animal/animals/carp.dm b/code/modules/mob/living/simple_animal/animals/carp.dm index b8813c8a61..ff626e5eab 100644 --- a/code/modules/mob/living/simple_animal/animals/carp.dm +++ b/code/modules/mob/living/simple_animal/animals/carp.dm @@ -7,6 +7,7 @@ icon_gib = "carp_gib" faction = "carp" + intelligence_level = SA_ANIMAL maxHealth = 25 health = 25 speed = 4 diff --git a/code/modules/mob/living/simple_animal/animals/cat.dm b/code/modules/mob/living/simple_animal/animals/cat.dm index 9b3df51247..b1c1cefb5f 100644 --- a/code/modules/mob/living/simple_animal/animals/cat.dm +++ b/code/modules/mob/living/simple_animal/animals/cat.dm @@ -2,6 +2,7 @@ /mob/living/simple_animal/cat name = "cat" desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." + intelligence_level = SA_ANIMAL icon_state = "cat2" item_state = "cat2" icon_living = "cat2" diff --git a/code/modules/mob/living/simple_animal/animals/corgi.dm b/code/modules/mob/living/simple_animal/animals/corgi.dm index 1823c5a91e..4be02a9b0b 100644 --- a/code/modules/mob/living/simple_animal/animals/corgi.dm +++ b/code/modules/mob/living/simple_animal/animals/corgi.dm @@ -3,6 +3,7 @@ name = "\improper corgi" real_name = "corgi" desc = "It's a corgi." + intelligence_level = SA_ANIMAL icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" diff --git a/code/modules/mob/living/simple_animal/animals/crab.dm b/code/modules/mob/living/simple_animal/animals/crab.dm index acb95ac64c..acad7f6378 100644 --- a/code/modules/mob/living/simple_animal/animals/crab.dm +++ b/code/modules/mob/living/simple_animal/animals/crab.dm @@ -5,6 +5,7 @@ icon_state = "crab" icon_living = "crab" icon_dead = "crab_dead" + intelligence_level = SA_ANIMAL wander = 0 stop_automated_movement = 1 diff --git a/code/modules/mob/living/simple_animal/animals/farm_animals.dm b/code/modules/mob/living/simple_animal/animals/farm_animals.dm index adc4fe83bf..2fe58dc76f 100644 --- a/code/modules/mob/living/simple_animal/animals/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/animals/farm_animals.dm @@ -7,6 +7,7 @@ icon_dead = "goat_dead" faction = "goat" + intelligence_level = SA_ANIMAL health = 40 turns_per_move = 5 @@ -88,6 +89,7 @@ icon_living = "cow" icon_dead = "cow_dead" icon_gib = "cow_gib" + intelligence_level = SA_ANIMAL health = 50 turns_per_move = 5 @@ -155,6 +157,7 @@ icon_living = "chick" icon_dead = "chick_dead" icon_gib = "chick_gib" + intelligence_level = SA_ANIMAL health = 1 turns_per_move = 2 @@ -203,6 +206,7 @@ var/global/chicken_count = 0 icon_state = "chicken" icon_living = "chicken" icon_dead = "chicken_dead" + intelligence_level = SA_ANIMAL health = 10 turns_per_move = 3 diff --git a/code/modules/mob/living/simple_animal/animals/fish.dm b/code/modules/mob/living/simple_animal/animals/fish.dm index b2778d3c33..dbbd12a9a3 100644 --- a/code/modules/mob/living/simple_animal/animals/fish.dm +++ b/code/modules/mob/living/simple_animal/animals/fish.dm @@ -4,6 +4,7 @@ desc = "Its a fishy. No touchy fishy." icon = 'icons/mob/fish.dmi' meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + intelligence_level = SA_ANIMAL // By defautl they can be in any water turf. Subtypes might restrict to deep/shallow etc var/global/list/suitable_turf_types = list( diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm index 5cb191726f..7359763e15 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm @@ -13,6 +13,7 @@ icon_dead = "guard_dead" faction = "spiders" + intelligence_level = SA_ANIMAL maxHealth = 200 health = 200 pass_flags = PASSTABLE diff --git a/code/modules/mob/living/simple_animal/animals/goose.dm b/code/modules/mob/living/simple_animal/animals/goose.dm index ded7c5214a..3b3e3bfa21 100644 --- a/code/modules/mob/living/simple_animal/animals/goose.dm +++ b/code/modules/mob/living/simple_animal/animals/goose.dm @@ -7,6 +7,7 @@ icon_gib = "generic_gib" faction = "geese" + intelligence_level = SA_ANIMAL maxHealth = 15 health = 15 diff --git a/code/modules/mob/living/simple_animal/animals/lizard.dm b/code/modules/mob/living/simple_animal/animals/lizard.dm index 5c986d21bb..e9032a96ef 100644 --- a/code/modules/mob/living/simple_animal/animals/lizard.dm +++ b/code/modules/mob/living/simple_animal/animals/lizard.dm @@ -5,6 +5,7 @@ icon_state = "lizard" icon_living = "lizard" icon_dead = "lizard-dead" + intelligence_level = SA_ANIMAL health = 5 maxHealth = 5 diff --git a/code/modules/mob/living/simple_animal/animals/mouse.dm b/code/modules/mob/living/simple_animal/animals/mouse.dm index 68c54b3d38..4f0cbb9162 100644 --- a/code/modules/mob/living/simple_animal/animals/mouse.dm +++ b/code/modules/mob/living/simple_animal/animals/mouse.dm @@ -6,6 +6,7 @@ item_state = "mouse_gray" icon_living = "mouse_gray" icon_dead = "mouse_gray_dead" + intelligence_level = SA_ANIMAL maxHealth = 5 health = 5 diff --git a/code/modules/mob/living/simple_animal/animals/parrot.dm b/code/modules/mob/living/simple_animal/animals/parrot.dm index 73892b26a1..1e17212708 100644 --- a/code/modules/mob/living/simple_animal/animals/parrot.dm +++ b/code/modules/mob/living/simple_animal/animals/parrot.dm @@ -35,6 +35,7 @@ icon_state = "parrot_fly" icon_living = "parrot_fly" icon_dead = "parrot_dead" + intelligence_level = SA_ANIMAL turns_per_move = 5 pass_flags = PASSTABLE diff --git a/code/modules/mob/living/simple_animal/animals/penguin.dm b/code/modules/mob/living/simple_animal/animals/penguin.dm index 90074edef5..09adf4ed41 100644 --- a/code/modules/mob/living/simple_animal/animals/penguin.dm +++ b/code/modules/mob/living/simple_animal/animals/penguin.dm @@ -5,6 +5,7 @@ icon_living = "penguin" icon_dead = "penguin_dead" icon_gib = "generic_gib" + intelligence_level = SA_ANIMAL maxHealth = 20 health = 20 diff --git a/code/modules/mob/living/simple_animal/animals/spiderbot.dm b/code/modules/mob/living/simple_animal/animals/spiderbot.dm index 79e796d7ff..fbbebff081 100644 --- a/code/modules/mob/living/simple_animal/animals/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/animals/spiderbot.dm @@ -5,6 +5,7 @@ icon_state = "spiderbot-chassis" icon_living = "spiderbot-chassis" icon_dead = "spiderbot-smashed" + intelligence_level = SA_HUMANOID // Because its piloted by players. health = 10 maxHealth = 10 diff --git a/code/modules/mob/living/simple_animal/animals/tomato.dm b/code/modules/mob/living/simple_animal/animals/tomato.dm index ea133a8581..d1bffc6fe1 100644 --- a/code/modules/mob/living/simple_animal/animals/tomato.dm +++ b/code/modules/mob/living/simple_animal/animals/tomato.dm @@ -4,6 +4,7 @@ icon_state = "tomato" icon_living = "tomato" icon_dead = "tomato_dead" + intelligence_level = SA_PLANT faction = "plants" maxHealth = 15 diff --git a/code/modules/mob/living/simple_animal/animals/tree.dm b/code/modules/mob/living/simple_animal/animals/tree.dm index bf97641248..7d31e46772 100644 --- a/code/modules/mob/living/simple_animal/animals/tree.dm +++ b/code/modules/mob/living/simple_animal/animals/tree.dm @@ -6,6 +6,7 @@ icon_living = "pine_1" icon_dead = "pine_1" icon_gib = "pine_1" + intelligence_level = SA_PLANT faction = "carp" //Trees can be carp friends? maxHealth = 250 diff --git a/code/modules/mob/living/simple_animal/animals/worm.dm b/code/modules/mob/living/simple_animal/animals/worm.dm index dfb8a5a195..48ed6039c5 100644 --- a/code/modules/mob/living/simple_animal/animals/worm.dm +++ b/code/modules/mob/living/simple_animal/animals/worm.dm @@ -5,6 +5,7 @@ icon_state = "spaceworm" icon_living = "spaceworm" icon_dead = "spacewormdead" + intelligence_level = SA_ANIMAL maxHealth = 30 diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm index 7498c83a7a..e18a345066 100644 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -4,6 +4,7 @@ desc = "A small, quivering sluglike creature." speak_emote = list("chirrups") emote_hear = list("chirrups") + intelligence_level = SA_HUMANOID // Player controlled. response_help = "pokes" response_disarm = "prods" response_harm = "stomps on" diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 0159e4ab5f..f386016c17 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -7,6 +7,7 @@ response_help = "thinks better of touching" response_disarm = "flailed at" response_harm = "punched" + intelligence_level = SA_HUMANOID // Player controlled. icon_dead = "shade_dead" speed = -1 a_intent = I_HURT diff --git a/code/modules/mob/living/simple_animal/humanoids/clown.dm b/code/modules/mob/living/simple_animal/humanoids/clown.dm index 5bf310b165..ee1341ff38 100644 --- a/code/modules/mob/living/simple_animal/humanoids/clown.dm +++ b/code/modules/mob/living/simple_animal/humanoids/clown.dm @@ -5,6 +5,7 @@ icon_living = "clown" icon_dead = "clown_dead" icon_gib = "clown_gib" + intelligence_level = SA_HUMANOID faction = "clown" maxHealth = 75 diff --git a/code/modules/mob/living/simple_animal/humanoids/head.dm b/code/modules/mob/living/simple_animal/humanoids/head.dm index f0e8b8abde..22460f0990 100644 --- a/code/modules/mob/living/simple_animal/humanoids/head.dm +++ b/code/modules/mob/living/simple_animal/humanoids/head.dm @@ -5,6 +5,7 @@ icon_state = "crab" icon_living = "crab" icon_dead = "crab_dead" + intelligence_level = SA_ANIMAL wander = 0 stop_automated_movement = 1 diff --git a/code/modules/mob/living/simple_animal/humanoids/kobold.dm b/code/modules/mob/living/simple_animal/humanoids/kobold.dm index 8f3ce0d28c..7355fce470 100644 --- a/code/modules/mob/living/simple_animal/humanoids/kobold.dm +++ b/code/modules/mob/living/simple_animal/humanoids/kobold.dm @@ -6,6 +6,7 @@ icon_state = "kobold_idle" icon_living = "kobold_idle" icon_dead = "kobold_dead" + intelligence_level = SA_HUMANOID run_at_them = 0 cooperative = 1 diff --git a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm index ae700d60b7..3cfafda91a 100644 --- a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm +++ b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm @@ -5,6 +5,7 @@ icon_state = "darkgygax" icon_living = "darkgygax" icon_dead = "darkgygax-broken" + intelligence_level = SA_HUMANOID // Piloted by a human. faction = "syndicate" maxHealth = 300 diff --git a/code/modules/mob/living/simple_animal/humanoids/pirate.dm b/code/modules/mob/living/simple_animal/humanoids/pirate.dm index 02d1a8eb72..f0c7c05ddc 100644 --- a/code/modules/mob/living/simple_animal/humanoids/pirate.dm +++ b/code/modules/mob/living/simple_animal/humanoids/pirate.dm @@ -4,6 +4,7 @@ icon_state = "piratemelee" icon_living = "piratemelee" icon_dead = "piratemelee_dead" + intelligence_level = SA_HUMANOID faction = "pirate" maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/humanoids/russian.dm b/code/modules/mob/living/simple_animal/humanoids/russian.dm index 96ff3a5177..1589fe2a7d 100644 --- a/code/modules/mob/living/simple_animal/humanoids/russian.dm +++ b/code/modules/mob/living/simple_animal/humanoids/russian.dm @@ -5,6 +5,7 @@ icon_living = "russianmelee" icon_dead = "russianmelee_dead" icon_gib = "syndicate_gib" + intelligence_level = SA_HUMANOID faction = "russian" maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm index 6dbe2fcfa4..edc46025a9 100644 --- a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm +++ b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm @@ -5,6 +5,7 @@ icon_living = "syndicate" icon_dead = "syndicate_dead" icon_gib = "syndicate_gib" + intelligence_level = SA_HUMANOID faction = "syndicate" maxHealth = 100 @@ -165,6 +166,7 @@ icon = 'icons/mob/critter.dmi' icon_state = "viscerator_attack" icon_living = "viscerator_attack" + intelligence_level = SA_ROBOTIC faction = "syndicate" maxHealth = 15 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 39f272a8e8..b915411544 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -17,11 +17,12 @@ var/show_stat_health = 1 // Does the percentage health show in the stat panel for the mob var/ai_inactive = 0 // Set to 1 to turn off most AI actions - //Mob icon settings + //Mob icon/appearance settings var/icon_living = "" // The iconstate if we're alive, required var/icon_dead = "" // The iconstate if we're dead, required var/icon_gib = null // The iconstate for being gibbed, optional var/icon_rest = null // The iconstate for resting, optional + var/image/modifier_overlay = null // Holds overlays from modifiers. //Mob talking settings universal_speak = 0 // Can all mobs in the entire universe understand this one? @@ -59,6 +60,7 @@ var/list/loot_list = list() // The list of lootable objects to drop, with "/path = prob%" structure var/recruitable = 0 // Mob can be bossed around var/recruit_cmd_str = "Hey," // The thing you prefix commands with when bossing them around + var/intelligence_level = SA_ANIMAL// How 'smart' the mob is ICly, used to deliniate between animal, robot, and humanoid SAs. //Mob environment settings var/minbodytemp = 250 // Minimum "okay" temperature in kelvin @@ -116,6 +118,7 @@ var/run_at_them = 1 // Don't use A* pathfinding, use walk_to var/move_to_delay = 4 // Delay for the automated movement (deciseconds) var/destroy_surroundings = 1 // Should I smash things to get to my target? + var/astar_adjacent_proc = /turf/proc/CardinalTurfsWithAccess // Proc to use when A* pathfinding. Default makes them bound to cardinals. //Damage resistances var/resistance = 0 // Damage reduction for all types @@ -205,6 +208,7 @@ src.client.screen += src.client.void ai_inactive = 1 handle_stance(STANCE_IDLE) + LoseTarget() src.client << "Mob AI disabled while you are controlling the mob." ..() @@ -241,11 +245,11 @@ /mob/living/simple_animal/update_icon() ..() //Awake and normal - if((stat == CONSCIOUS) && (!icon_rest || !resting)) + if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED) )) icon_state = icon_living //Resting or KO'd - else if(((stat == UNCONSCIOUS) || resting) && icon_rest) + else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest) icon_state = icon_rest //Dead @@ -256,6 +260,26 @@ else icon_state = initial(icon_state) +// If your simple mob's update_icon() call calls overlays.Cut(), this needs to be called after this, or manually apply modifier_overly to overlays. +/mob/living/simple_animal/update_modifier_visuals() + var/image/effects = null + if(modifier_overlay) + overlays -= modifier_overlay + modifier_overlay.overlays.Cut() + effects = modifier_overlay + else + effects = new() + + for(var/datum/modifier/M in modifiers) + if(M.mob_overlay_state) + var/image/I = image("icon" = 'icons/mob/modifier_effects.dmi', "icon_state" = M.mob_overlay_state) + I.appearance_flags = RESET_COLOR // So colored mobs don't affect the overlay. + effects.overlays += I + + modifier_overlay = effects + overlays += modifier_overlay + + /mob/living/simple_animal/Life() ..() @@ -288,7 +312,7 @@ //Resisting out buckles if(stance != STANCE_IDLE && incapacitated(INCAPACITATION_BUCKLED_PARTIALLY)) - resist() + handle_resist() //Resisting out of closets if(istype(loc,/obj/structure/closet)) @@ -300,6 +324,11 @@ return 1 +// Resists out of things. +// Sometimes there are times you want SAs to be buckled to something, so override this for when that is needed. +/mob/living/simple_animal/proc/handle_resist() + resist() + // Peforms the random walk wandering /mob/living/simple_animal/proc/handle_wander_movement() if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving? @@ -482,6 +511,8 @@ if(Proj.firer) react_to_attack(Proj.firer) + Proj.on_hit(src) + return 0 // When someone clicks us with an empty hand @@ -550,11 +581,9 @@ if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch)) harvest(user) else - if(!O.force) - visible_message("[user] gently taps [src] with \the [O].") - else - O.attack(src, user, user.zone_sel.selecting) - ai_log("attackby() I was weapon'd by: [user]",2) + O.attack(src, user, user.zone_sel.selecting) + ai_log("attackby() I was weapon'd by: [user]",2) + if(O.force) react_to_attack(user) /mob/living/simple_animal/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) @@ -645,18 +674,58 @@ if(3.0) adjustBruteLoss(30) +// Don't understand why simple animals don't use the regular /mob/living health system. /mob/living/simple_animal/adjustBruteLoss(damage) + if(damage > 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_damage_percent)) + damage *= M.incoming_damage_percent + if(!isnull(M.incoming_brute_damage_percent)) + damage *= M.incoming_brute_damage_percent + else if(damage < 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_healing_percent)) + damage *= M.incoming_healing_percent + health = Clamp(health - damage, 0, getMaxHealth()) + updatehealth() /mob/living/simple_animal/adjustFireLoss(damage) + if(damage > 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_damage_percent)) + damage *= M.incoming_damage_percent + if(!isnull(M.incoming_fire_damage_percent)) + damage *= M.incoming_brute_damage_percent + else if(damage < 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_healing_percent)) + damage *= M.incoming_healing_percent + health = Clamp(health - damage, 0, getMaxHealth()) + updatehealth() + +/mob/living/simple_animal/adjustToxLoss(damage) + if(damage > 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_damage_percent)) + damage *= M.incoming_damage_percent + if(!isnull(M.incoming_tox_damage_percent)) + damage *= M.incoming_brute_damage_percent + else if(damage < 0) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.incoming_healing_percent)) + damage *= M.incoming_healing_percent + + health = Clamp(health - damage, 0, getMaxHealth()) + updatehealth() // Check target_mob if worthy of attack (i.e. check if they are dead or empty mecha) /mob/living/simple_animal/proc/SA_attackable(target_mob) ai_log("SA_attackable([target_mob])",3) if (isliving(target_mob)) var/mob/living/L = target_mob - if(!L.stat) + if(L.stat != DEAD) return 1 if (istype(target_mob,/obj/mecha)) var/obj/mecha/M = target_mob @@ -777,6 +846,8 @@ continue else if(!SA_attackable(L)) continue + else if(!special_target_check(L)) + continue else T = L break @@ -785,6 +856,8 @@ var/obj/mecha/M = A if(!SA_attackable(M)) continue + else if(!special_target_check(M)) + continue if((M.occupant.faction != src.faction) || attack_same) T = M break @@ -801,6 +874,10 @@ /mob/living/simple_animal/proc/Found(var/atom/A) return +// Used for somewhat special targeting, but not to the extent of using Found() +/mob/living/simple_animal/proc/special_target_check(var/atom/A) + return TRUE + //Requesting help from like-minded individuals /mob/living/simple_animal/proc/RequestHelp() if(!cooperative || ((world.time - last_helpask_time) < 10 SECONDS)) @@ -833,6 +910,12 @@ if(set_follow(F, 10 SECONDS)) handle_stance(STANCE_FOLLOW) +// Can be used to conditionally do a ranged or melee attack. +// Note that the SA must be able to do an attack at the specified range or else it may get trapped in a loop of switching +// between STANCE_ATTACK and STANCE_ATTACKING, due to being told by MoveToTarget() that they're in range but being told by AttackTarget() that they're not. +/mob/living/simple_animal/proc/ClosestDistance() + return ranged ? shoot_range - 1 : 1 // Shoot range -1 just because we don't want to constantly get kited + //Move to a target (or near if we're ranged) /mob/living/simple_animal/proc/MoveToTarget() if(incapacitated(INCAPACITATION_DISABLED)) @@ -857,9 +940,9 @@ ForgetPath() //Find out where we're getting to - var/get_to = ranged ? shoot_range-1 : 1 //Shoot range -1 just because we don't want to constantly get kited + var/get_to = ClosestDistance() var/distance = get_dist(src,target_mob) - ai_log("MoveToTarget() [src] [get_to] [distance]",2) + ai_log("MoveToTarget() [src] get_to: [get_to] distance: [distance]",2) //We're here! if(distance <= get_to) @@ -919,6 +1002,7 @@ if(incapacitated(INCAPACITATION_DISABLED)) ai_log("FollowTarget() Bailing because we're disabled",2) + LoseFollow() return if((get_dist(src,follow_mob) <= follow_dist)) @@ -972,7 +1056,7 @@ /mob/living/simple_animal/proc/GetPath(var/turf/target,var/get_to = 1,var/max_distance = world.view*6) ai_log("GetPath([target],[get_to],[max_distance])",2) ForgetPath() - var/list/new_path = AStar(get_turf(loc), target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, min_target_dist = get_to, max_node_depth = max_distance, id = myid, exclude = obstacles) + var/list/new_path = AStar(get_turf(loc), target, astar_adjacent_proc, /turf/proc/Distance, min_target_dist = get_to, max_node_depth = max_distance, id = myid, exclude = obstacles) if(new_path && new_path.len) walk_list = new_path @@ -1082,6 +1166,10 @@ //Get into attack mode on a target /mob/living/simple_animal/proc/AttackTarget() stop_automated_movement = 1 + if(incapacitated(INCAPACITATION_DISABLED)) + ai_log("AttackTarget() Bailing because we're disabled",2) + LoseTarget() + return 0 if(!target_mob || !SA_attackable(target_mob)) LoseTarget() return 0 @@ -1111,6 +1199,7 @@ //They ran away! else ai_log("AttackTarget() out of range!",3) + sleep(1) // Unfortunately this is needed to protect from ClosestDistance() sometimes not updating fast enough to prevent an infinite loop. handle_stance(STANCE_ATTACK) return 0 @@ -1118,7 +1207,8 @@ /mob/living/simple_animal/proc/PunchTarget() if(!Adjacent(target_mob)) return - sleep(rand(8) + 8) + if(!client) + sleep(rand(8) + 8) if(isliving(target_mob)) var/mob/living/L = target_mob @@ -1129,39 +1219,51 @@ src.do_attack_animation(src) return L else - L.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + DoPunch(L) return L if(istype(target_mob,/obj/mecha)) var/obj/mecha/M = target_mob - M.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + DoPunch(M) return M +// This is the actual act of 'punching'. Override for special behaviour. +/mob/living/simple_animal/proc/DoPunch(var/atom/A) + if(!Adjacent(target_mob)) // They could've moved in the meantime. + return + var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.outgoing_melee_damage_percent)) + damage_to_do *= M.outgoing_melee_damage_percent + + A.attack_generic(src, damage_to_do, attacktext) + //The actual top-level ranged attack proc /mob/living/simple_animal/proc/ShootTarget() var/target = target_mob var/tturf = get_turf(target) - if(firing_lines && !CheckFiringLine(tturf)) + if((firing_lines && !client) && !CheckFiringLine(tturf)) step_rand(src) face_atom(tturf) return 0 - visible_message("[src] fires at [target]!", 1) + visible_message("[src] fires at [target]!") if(rapid) spawn(1) - Shoot(tturf, src.loc, src) + Shoot(target, src.loc, src) if(casingtype) new casingtype(get_turf(src)) spawn(4) - Shoot(tturf, src.loc, src) + Shoot(target, src.loc, src) if(casingtype) new casingtype(get_turf(src)) spawn(6) - Shoot(tturf, src.loc, src) + Shoot(target, src.loc, src) if(casingtype) new casingtype(get_turf(src)) else - Shoot(tturf, src.loc, src) + Shoot(target, src.loc, src) if(casingtype) new casingtype @@ -1201,9 +1303,9 @@ playsound(user, projectilesound, 100, 1) if(!A) return - if (!istype(target, /turf)) - qdel(A) - return +// if (!istype(target, /turf)) +// qdel(A) +// return A.launch(target) return @@ -1226,6 +1328,43 @@ handle_stance(STANCE_IDLE) GiveUpMoving() +// Makes the simple mob stop everything. Useful for when it get stunned. +/mob/living/simple_animal/proc/Disable() + ai_log("Disable() [target_mob]",2) + spawn(0) + LoseTarget() + LoseFollow() + +/mob/living/simple_animal/Stun(amount) + if(amount > 0) + Disable() + ..(amount) + +/mob/living/simple_animal/AdjustStunned(amount) + if(amount > 0) + Disable() + ..(amount) + +/mob/living/simple_animal/Weaken(amount) + if(amount > 0) + Disable() + ..(amount) + +/mob/living/simple_animal/AdjustWeakened(amount) + if(amount > 0) + Disable() + ..(amount) + +/mob/living/simple_animal/Paralyse(amount) + if(amount > 0) + Disable() + ..(amount) + +/mob/living/simple_animal/AdjustParalysis(amount) + if(amount > 0) + Disable() + ..(amount) + //Find me some targets /mob/living/simple_animal/proc/ListTargets(var/dist = view_range) var/list/L = hearers(src, dist) @@ -1244,22 +1383,32 @@ var/turf/problem_turf = get_step(src, direction) ai_log("DestroySurroundings([direction])",3) + var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.outgoing_melee_damage_percent)) + damage_to_do *= M.outgoing_melee_damage_percent + for(var/obj/structure/window/obstacle in problem_turf) if(obstacle.dir == reverse_dir[dir]) // So that windows get smashed in the right order ai_log("DestroySurroundings() directional window hit",3) - obstacle.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + obstacle.attack_generic(src, damage_to_do, attacktext) + return + else if(obstacle.is_fulltile()) + ai_log("DestroySurroundings() full tile window hit",3) + obstacle.attack_generic(src, damage_to_do, attacktext) return var/obj/structure/obstacle = locate(/obj/structure, problem_turf) if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) ai_log("DestroySurroundings() generic structure hit [obstacle]",3) - obstacle.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + obstacle.attack_generic(src, damage_to_do ,attacktext) return for(var/obj/machinery/door/baddoor in problem_turf) //Required since firelocks take up the same turf if(baddoor.density) ai_log("DestroySurroundings() door hit [baddoor]",3) - baddoor.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext) + baddoor.attack_generic(src, damage_to_do ,attacktext) return //Check for shuttle bumrush diff --git a/code/modules/mob/living/simple_animal/slime/ai.dm b/code/modules/mob/living/simple_animal/slime/ai.dm new file mode 100644 index 0000000000..2a61f91e31 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/ai.dm @@ -0,0 +1,58 @@ +/mob/living/simple_animal/slime/FindTarget() + if(victim) // Don't worry about finding another target if we're eatting someone. + return +// if(!will_hunt()) +// return + ..() + +/mob/living/simple_animal/slime/special_target_check(mob/living/L) + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/buddy = L + if(buddy.slime_color == src.slime_color || discipline || unity || buddy.unity) + return FALSE // Don't hurt same colored slimes. + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.species && H.species.name == "Promethean") + return FALSE // Prometheans are always our friends. + else if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. + return TRUE // Monkeys are always food. + if(discipline && !rabid) + return FALSE // We're a good slime. For now at least + + if(issilicon(L) || isbot(L) ) + if(discipline && !rabid) + return FALSE // We're a good slime. For now at least. + return ..() // Other colors and nonslimes are jerks however. + +/mob/living/simple_animal/slime/ClosestDistance() + if(target_mob.stat == DEAD) + return 1 // Melee (eat) the target if dead, don't shoot it. + return ..() + +/mob/living/simple_animal/slime/HelpRequested(var/mob/living/simple_animal/slime/buddy) + if(istype(buddy)) + if(buddy.slime_color != src.slime_color && (!unity || !buddy.unity)) // We only help slimes of the same color, if it's another slime calling for help. + ai_log("HelpRequested() by [buddy] but they are a [buddy.slime_color] while we are a [src.slime_color].",2) + return + if(buddy.target_mob) + if(!special_target_check(buddy.target_mob)) + ai_log("HelpRequested() by [buddy] but special_target_check() failed when passed [buddy.target_mob].",2) + return + ..() + + +/mob/living/simple_animal/slime/handle_resist() + if(buckled && victim && isliving(buckled) && victim == buckled) // If it's buckled to a living thing it's probably eating it. + return + else + ..() + +/* +/mob/living/simple_animal/slime/proc/will_hunt() // Check for being stopped from feeding and chasing + if(nutrition <= get_starve_nutrition() || rabid) + return TRUE + if(nutrition <= get_hunger_nutrition() || prob(25)) + return TRUE + return FALSE +*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/slime/combat.dm b/code/modules/mob/living/simple_animal/slime/combat.dm new file mode 100644 index 0000000000..eb77f338c2 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/combat.dm @@ -0,0 +1,276 @@ + + +/* +// Check target_mob if worthy of attack +/mob/living/simple_animal/slime/SA_attackable(target_mob) + ai_log("SA_attackable([target_mob])",3) + if(isliving(target_mob)) + var/mob/living/L = target_mob + if(L.stat == DEAD) + if(can_consume(L)) // If we can eat them, then it doesn't matter if they're dead. + return TRUE + ..() +*/ + +/mob/living/simple_animal/slime/PunchTarget() + if(victim) + return // Already eatting someone. + if(!client) // AI controlled. + if( (!target_mob.lying && prob(60 + (power_charge * 4) ) || (!target_mob.lying && optimal_combat) )) // "Smart" slimes always stun first. + a_intent = I_DISARM // Stun them first. + else if(can_consume(target_mob) && target_mob.lying) + a_intent = I_GRAB // Then eat them. + else + a_intent = I_HURT // Otherwise robust them. + ai_log("PunchTarget() will [a_intent] [target_mob]",2) + ..() + +/mob/living/simple_animal/slime/proc/can_consume(var/mob/living/L) + if(!L || !istype(L)) + to_chat(src, "This subject is incomparable...") + return FALSE + if(L.isSynthetic()) + to_chat(src, "This subject is not biological...") + return FALSE + if(L.getarmor(null, "bio") >= 80) + to_chat(src, "I cannot reach this subject's biological matter...") + return FALSE + if(istype(L, /mob/living/simple_animal/slime)) + to_chat(src, "I cannot feed on other slimes...") + return FALSE + if(!Adjacent(L)) + to_chat(src, "This subject is too far away...") + return FALSE + if(istype(L, /mob/living/carbon) && L.getCloneLoss() >= L.getMaxHealth() * 1.5 || istype(L, /mob/living/simple_animal) && L.stat == DEAD) + to_chat(src, "This subject does not have an edible life energy...") + return FALSE + if(L.buckled_mob) + if(istype(L.buckled_mob, /mob/living/simple_animal/slime)) + if(L.buckled_mob != src) + to_chat(src, "\The [L.buckled_mob] is already feeding on this subject...") + return FALSE + return TRUE + +/mob/living/simple_animal/slime/proc/start_consuming(var/mob/living/L) + if(!can_consume(L)) + return + if(!Adjacent(L)) + return + step_towards(src, L) // Get on top of them to feed. + if(loc != L.loc) + return + if(L.buckle_mob(src, forced = TRUE)) + victim = L + update_icon() + victim.visible_message("\The [src] latches onto [victim]!", + "\The [src] latches onto you!") + +/mob/living/simple_animal/slime/proc/stop_consumption() + if(!victim) + return + victim.unbuckle_mob() + victim.visible_message("\The [src] slides off of [victim]!", + "\The [src] slides off of you!") + victim = null + update_icon() + + +/mob/living/simple_animal/slime/proc/handle_consumption() + if(victim && can_consume(victim) && !stat) + + var/armor_modifier = abs((victim.getarmor(null, "bio") / 100) - 1) + if(istype(victim, /mob/living/carbon)) + victim.adjustCloneLoss(rand(5,6) * armor_modifier) + victim.adjustToxLoss(rand(1,2) * armor_modifier) + if(victim.health <= 0) + victim.adjustToxLoss(rand(2,4) * armor_modifier) + + else if(istype(victim, /mob/living/simple_animal)) + victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(4, 12)) + + else + to_chat(src, "[pick("This subject is incompatable", \ + "This subject does not have a life energy", "This subject is empty", "I am not satisified", \ + "I can not feed from this subject", "I do not feel nourished", "This subject is not food")]...") + stop_consumption() + + adjust_nutrition(50 * armor_modifier) + + adjustOxyLoss(-10 * armor_modifier) //Heal yourself + adjustBruteLoss(-10 * armor_modifier) + adjustFireLoss(-10 * armor_modifier) + adjustCloneLoss(-10 * armor_modifier) + updatehealth() + if(victim) + victim.updatehealth() + else + stop_consumption() + +/mob/living/simple_animal/slime/DoPunch(var/mob/living/L) + if(!Adjacent(L)) // Might've moved away in the meantime. + return + + if(istype(L)) + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + // Slime attacks can be blocked with shields. + if(H.check_shields(damage = 0, damage_source = null, attacker = src, def_zone = null, attack_text = "the attack")) + return + + switch(a_intent) + if(I_HELP) + ai_log("DoPunch() against [L], helping.",2) + L.visible_message("[src] gently pokes [L]!", + "[src] gently pokes you!") + do_attack_animation(L) + post_attack(L, a_intent) + + if(I_DISARM) + ai_log("DoPunch() against [L], disarming.",2) + var/stun_power = between(0, power_charge + rand(0, 3), 10) + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + stun_power *= max(H.species.siemens_coefficient,0) + + + if(prob(stun_power * 10)) + power_charge = max(0, power_charge - 3) + L.visible_message("[src] has shocked [L]!", "[src] has shocked you!") + playsound(src, 'sound/weapons/Egloves.ogg', 75, 1) + L.Weaken(4) + L.Stun(4) + do_attack_animation(L) + if(L.buckled) + L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. + L.stuttering = max(L.stuttering, stun_power) + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, L) + s.start() + + if(prob(stun_power * 10) && stun_power >= 8) + L.adjustFireLoss(power_charge * rand(1, 2)) + post_attack(L, a_intent) + + else if(prob(40)) + L.visible_message("[src] has pounced at [L]!", "[src] has pounced at you!") + playsound(src, 'sound/weapons/thudswoosh.ogg', 75, 1) + L.Weaken(2) + do_attack_animation(L) + if(L.buckled) + L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. + post_attack(L, a_intent) + else + L.visible_message("[src] has tried to pounce at [L]!", "[src] has tried to pounce at you!") + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + do_attack_animation(L) + L.updatehealth() + return L + + if(I_GRAB) + ai_log("DoPunch() against [L], grabbing.",2) + start_consuming(L) + post_attack(L, a_intent) + + if(I_HURT) + ai_log("DoPunch() against [L], hurting.",2) + var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) + var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1) + + L.attack_generic(src, damage_to_do, attacktext) + playsound(src, 'sound/weapons/bite.ogg', 75, 1) + + // Give the slime some nutrition, if applicable. + if(!L.isSynthetic()) + if(ishuman(L)) + if(L.getCloneLoss() < L.getMaxHealth() * 1.5) + adjust_nutrition(damage_to_do * armor_modifier) + + else if(istype(L, /mob/living/simple_animal)) + if(!isslime(L)) + var/mob/living/simple_animal/SA = L + if(!SA.stat) + adjust_nutrition(damage_to_do) + + post_attack(L, a_intent) + + if(istype(L,/obj/mecha)) + var/obj/mecha/M = L + M.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext) + +/mob/living/simple_animal/slime/proc/post_attack(var/mob/living/L, var/intent = I_HURT) + if(intent != I_HELP) + if(L.reagents && L.can_inject() && reagent_injected) + L.reagents.add_reagent(reagent_injected, injection_amount) + +/mob/living/simple_animal/slime/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/clothing/head)) // Handle hat simulator. + give_hat(W, user) + return + + // Otherwise they're probably fighting the slime. + if(prob(25)) + visible_message("\The [user]'s [W] passes right through [src]!") + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + return + ..() + +/mob/living/simple_animal/slime/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) + ..() + if(!stat) + if(O.force > 0 && discipline && !rabid) // wow, buddy, why am I getting attacked?? + adjust_discipline(1) + return + if(O.force >= 3) + if(victim || target_mob) // We've been a bad slime. + if(is_adult) + if(prob(5 + round(O.force / 2)) ) + if(prob(80) && !client) + adjust_discipline(2) + if(user) + step_away(src, user) + else + if(prob(10 + O.force * 2)) + if(prob(80) && !client) + adjust_discipline(2) + if(user) + step_away(src, user) + else + if(user in friends) // Friend attacking us for no reason. + if(prob(25)) + friends -= user + say("[user]... not friend...") + +/mob/living/simple_animal/slime/attack_hand(mob/living/carbon/human/M as mob) + if(victim) // Are we eating someone? + var/fail_odds = 30 + if(victim == M) // Harder to get the slime off if its eating you right now. + fail_odds = 60 + + if(prob(fail_odds)) + visible_message("[M] attempts to wrestle \the [name] off!") + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + + else + visible_message(" [M] manages to wrestle \the [name] off!") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + if(prob(40) && !client) + adjust_discipline(1) + stop_consumption() + step_away(src,M) + else + if(M.a_intent == I_HELP) + if(hat) + remove_hat(M) + else + ..() + else + ..() + +// Shocked grilles don't hurt slimes, and in fact give them charge. +/mob/living/simple_animal/slime/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) + power_charge = between(0, power_charge + round(shock_damage / 10), 10) + to_chat(src, "\The [source] shocks you, and it charges you.") diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm new file mode 100644 index 0000000000..01500db42e --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/death.dm @@ -0,0 +1,24 @@ +/mob/living/simple_animal/slime/death(gibbed) + + if(stat == DEAD) + return + + if(!gibbed && is_adult) + var/mob/living/simple_animal/slime/S = make_new_slime() + S.rabid = TRUE + step_away(S, src) + is_adult = FALSE + maxHealth = initial(maxHealth) + revive() + if(!client) + rabid = TRUE + number = rand(1, 1000) + update_name() + return + + stop_consumption() + . = ..(gibbed, "stops moving and partially dissolves...") + + update_icon() + + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm new file mode 100644 index 0000000000..30c2dba554 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -0,0 +1,174 @@ +/mob/living/simple_animal/slime/proc/adjust_nutrition(input) + nutrition = between(0, nutrition + input, get_max_nutrition()) + + if(input > 0) + if(prob(input * 2)) // Gain around one level per 50 nutrition + power_charge = min(power_charge++, 10) + if(power_charge == 10) + adjustToxLoss(-10) + + +/mob/living/simple_animal/slime/proc/get_max_nutrition() // Can't go above it + if(is_adult) + return 1200 + return 1000 + +/mob/living/simple_animal/slime/proc/get_grow_nutrition() // Above it we grow, below it we can eat + if(is_adult) + return 1000 + return 800 + +/mob/living/simple_animal/slime/proc/get_hunger_nutrition() // Below it we will always eat + if(is_adult) + return 600 + return 500 + +/mob/living/simple_animal/slime/proc/get_starve_nutrition() // Below it we will eat before everything else + if(is_adult) + return 300 + return 200 + +/mob/living/simple_animal/slime/proc/handle_nutrition() + if(docile) + return + if(prob(15)) + adjust_nutrition(-1 - is_adult) + + if(nutrition <= get_starve_nutrition()) + handle_starvation() + + else if(nutrition >= get_grow_nutrition() && amount_grown < 10) + adjust_nutrition(-20) + amount_grown = between(0, amount_grown + 1, 10) + +/mob/living/simple_animal/slime/proc/handle_starvation() + if(nutrition < get_starve_nutrition() && !client) // if a slime is starving, it starts losing its friends + if(friends.len && prob(1)) + var/mob/nofriend = pick(friends) + if(nofriend) + friends -= nofriend + say("[nofriend]... food now...") + + if(nutrition <= 0) + adjustToxLoss(rand(1,3)) + if(client && prob(5)) + to_chat(src, "You are starving!") + +/mob/living/simple_animal/slime/proc/handle_discipline() + if(discipline > 0) + update_mood() + // if(discipline >= 5 && rabid) + // if(prob(60)) + // rabid = 0 + // adjust_discipline(1) // So it stops trying to murder everyone. + + // Handle discipline decay. + if(!prob(75 + (obedience * 5))) + adjust_discipline(-1) + if(!discipline) + update_mood() + +/mob/living/simple_animal/slime/handle_regular_status_updates() + if(stat != DEAD) + handle_nutrition() + + handle_discipline() + + if(prob(30)) + adjustOxyLoss(-1) + adjustToxLoss(-1) + adjustFireLoss(-1) + adjustCloneLoss(-1) + adjustBruteLoss(-1) + + if(victim) + handle_consumption() + + if(amount_grown >= 10 && !target_mob && !client) + if(is_adult) + reproduce() + else + evolve() + + handle_stuttering() + + ..() + + +// This is to make slime responses feel a bit more natural and not instant. +/mob/living/simple_animal/slime/proc/delayed_say(var/message, var/mob/target) + sleep(rand(1 SECOND, 2 SECONDS)) + if(target) + face_atom(target) + say(message) + +//Commands, reactions, etc +/mob/living/simple_animal/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + ..() + if((findtext(message, num2text(number)) || findtext(message, name) || findtext(message, "slimes"))) // Talking to us + + // Say hello back. + if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings")) + delayed_say(pick("Hello...", "Hi..."), speaker) + + // Follow request. + if(findtext(message, "follow") || findtext(message, "come with me")) + if(!can_command(speaker)) + delayed_say(pick("No...", "I won't follow..."), speaker) + return + + delayed_say("Yes... I follow \the [speaker]...", speaker) + set_follow(speaker) + FollowTarget() + + // Stop request. + if(findtext(message, "stop") || findtext(message, "halt") || findtext(message, "cease")) + if(victim) // We're being asked to stop eatting someone. + if(!can_command(speaker)) + delayed_say("No...", speaker) + return + else + delayed_say("Fine...", speaker) + stop_consumption() + adjust_discipline(1, TRUE) + + if(target_mob) // We're being asked to stop chasing someone. + if(!can_command(speaker)) + delayed_say("No...", speaker) + return + else + delayed_say("Fine...", speaker) + LoseTarget() + adjust_discipline(1, TRUE) + + if(follow_mob) // We're being asked to stop following someone. + if(follow_mob == speaker) + delayed_say("Yes... I'll stop...", speaker) + LoseFollow() + else + delayed_say("No... I'll keep following \the [follow_mob]...", speaker) + + // Help request + if(findtext(message, "help")) + if(!can_command(speaker)) + delayed_say("No...", speaker) + return + else + delayed_say("I will protect \the [speaker].", speaker) + + // Murder request + if(findtext(message, "harm") || findtext(message, "kill") || findtext(message, "murder") || findtext(message, "eat") || findtext(message, "consume")) + if(!can_command(speaker)) + delayed_say("No...", speaker) + return + + //LoseFollow() + + /* + if(reacts && speaker && (message in reactions) && (!hostile || isliving(speaker)) && say_understands(speaker,language)) + var/mob/living/L = speaker + if(L.faction == faction) + spawn(10) + face_atom(speaker) + say(reactions[message]) + */ \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm new file mode 100644 index 0000000000..bc91e44884 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -0,0 +1,433 @@ +/mob/living/simple_animal/slime + name = "baby slime" + desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." + icon = 'icons/mob/slime2.dmi' + icon_state = "grey baby slime" + intelligence_level = SA_ANIMAL + pass_flags = PASSTABLE + var/shiny = FALSE // If true, will add a 'shiny' overlay. + var/glows = FALSE // If true, will glow in the same color as the color var. + var/icon_state_override = null // Used for special slime appearances like the rainbow slime. + pass_flags = PASSTABLE + + speak_emote = list("chirps") + + maxHealth = 150 + var/maxHealth_adult = 200 + melee_damage_lower = 5 + melee_damage_upper = 25 + melee_miss_chance = 0 + gender = NEUTER + + // Atmos stuff. + minbodytemp = T0C-30 + heat_damage_per_tick = 0 + cold_damage_per_tick = 40 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 0 + + + speak = list( + "Blorp...", + "Blop..." + + ) + emote_hear = list( + + ) + emote_see = list( + "bounces", + "jiggles", + "sways" + ) + + hostile = 1 + retaliate = 1 + attack_same = 1 + cooperative = 1 + faction = "slime" // Slimes will help other slimes, provided they share the same color. + + color = "#CACACA" + var/is_adult = FALSE + var/cores = 1 // How many cores you get when placed in a Processor. + var/power_charge = 0 // 0-10 controls how much electricity they are generating. High numbers encourage the slime to stun someone with electricity. + var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces + var/number = 0 // This is used to make the slime semi-unique for indentification. + + var/mob/living/victim = null // the person the slime is currently feeding on + var/rabid = FALSE // If true, will attack anyone and everyone. + var/docile = FALSE // Basically the opposite of above. If true, will never harm anything and won't get hungry. + var/discipline = 0 // Beating slimes makes them less likely to lash out. In theory. + var/resentment = 0 // 'Unjustified' beatings make this go up, and makes it more likely for abused slimes to go berserk. + var/obedience = 0 // Conversely, 'justified' beatings make this go up, and makes discipline decay slowly, potentially making it not decay at all. + var/unity = FALSE // If true, slimes will consider other colors as their own. Other slimes will see this slime as the same color as well. A rainbow slime is required to get this. + var/optimal_combat = FALSE // Used to dumb down the combat AI somewhat. If true, the slime tends to be really dangerous to fight alone due to stunlocking. + var/mood = ":3" // Icon to use to display 'mood'. + var/obj/item/clothing/head/hat = null // The hat the slime may be wearing. + + var/slime_color = "grey" + var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes. + var/coretype = /obj/item/slime_extract/grey + // List of potential slime color mutations. This must have exactly four types. + var/list/slime_mutation = list( + /mob/living/simple_animal/slime/orange, + /mob/living/simple_animal/slime/metal, + /mob/living/simple_animal/slime/blue, + /mob/living/simple_animal/slime/purple + ) + + var/reagent_injected = null // Some slimes inject reagents on attack. This tells the game what reagent to use. + var/injection_amount = 5 // This determines how much. + +/mob/living/simple_animal/slime/New(var/location, var/start_as_adult = FALSE) + verbs += /mob/living/proc/ventcrawl + if(start_as_adult) + make_adult() + health = maxHealth +// slime_mutation = mutation_table(slime_color) + update_icon() + number = rand(1, 1000) + update_name() + ..(location) + +/mob/living/simple_animal/slime/Destroy() + if(hat) + drop_hat() + return ..() + +/mob/living/simple_animal/slime/proc/make_adult() + if(is_adult) + return + + is_adult = TRUE + melee_damage_lower = 20 + melee_damage_upper = 40 + maxHealth = maxHealth_adult + amount_grown = 0 + update_icon() + update_name() + +/mob/living/simple_animal/slime/proc/update_name() + if(docile) // Docile slimes are generally named, so we shouldn't mess with it. + return + name = "[slime_color] [is_adult ? "adult" : "baby"] slime ([number])" + real_name = name + +/mob/living/simple_animal/slime/update_icon() + if(stat == DEAD) + icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" + set_light(0) + else + if(incapacitated(INCAPACITATION_DISABLED)) + icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" + else + icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating":""]" + + overlays.Cut() + if(stat != DEAD) + var/image/I = image(icon, src, "slime light") + I.appearance_flags = RESET_COLOR + overlays += I + + if(shiny) + I = image(icon, src, "slime shiny") + I.appearance_flags = RESET_COLOR + overlays += I + + I = image(icon, src, "aslime-[mood]") + I.appearance_flags = RESET_COLOR + overlays += I + + if(glows) + set_light(3, 2, color) + + if(hat) + var/hat_state = hat.item_state ? hat.item_state : hat.icon_state + var/image/I = image('icons/mob/head.dmi', src, hat_state) + I.pixel_y = -7 // Slimes are small. + I.appearance_flags = RESET_COLOR + overlays += I + + if(modifier_overlay) // Restore our modifier overlay. + overlays += modifier_overlay + +/mob/living/simple_animal/slime/proc/update_mood() + var/old_mood = mood + if(incapacitated(INCAPACITATION_DISABLED)) + mood = "sad" + else if(rabid) + mood = "angry" + else if(target_mob) + mood = "mischevous" + else if(discipline) + mood = "pout" + else if(docile) + mood = ":33" + else + mood = ":3" + if(old_mood != mood) + update_icon() + +// Makes the slime very angry and dangerous. +/mob/living/simple_animal/slime/proc/enrage() + if(docile) + return + rabid = TRUE + update_mood() + visible_message("\The [src] enrages!") + +// Makes the slime safe and harmless. +/mob/living/simple_animal/slime/proc/pacify() + rabid = FALSE + docile = TRUE + hostile = FALSE + retaliate = FALSE + cooperative = FALSE + + // If for whatever reason the mob AI decides to try to attack something anyways. + melee_damage_upper = 0 + melee_damage_lower = 0 + + update_mood() + +/mob/living/simple_animal/slime/proc/unify() + unity = TRUE + attack_same = FALSE + +/mob/living/simple_animal/slime/examine(mob/user) + ..() + if(hat) + to_chat(user, "It is wearing \a [hat].") + + if(stat == DEAD) + to_chat(user, "It appears to be dead.") + else if(incapacitated(INCAPACITATION_DISABLED)) + to_chat(user, "It appears to be incapacitated.") + else if(rabid) + to_chat(user, "It seems very, very angry and upset.") + else if(obedience >= 5) + to_chat(user, "It looks rather obedient.") + else if(discipline) + to_chat(user, "It has been subjugated by force, at least for now.") + else if(docile) + to_chat(user, "It appears to have been pacified.") + +/mob/living/simple_animal/slime/water_act(amount) // This is called if a slime enters a water tile. + adjustBruteLoss(40 * amount) + +/mob/living/simple_animal/slime/proc/adjust_discipline(amount, silent) + if(amount > 0) + if(!rabid) + var/justified = is_justified_to_discipline() + spawn(0) + stop_consumption() + LoseTarget() + if(!silent) + if(justified) + say(pick("Fine...", "Okay...", "Sorry...", "I yield...", "Mercy...")) + else + say(pick("Why...?", "I don't understand...?", "Cruel...", "Stop...", "Nooo...")) + if(justified) + obedience++ + else + if(prob(resentment * 20)) + enrage() // Pushed the slime too far. + say(pick("Evil...", "Kill...", "Tyrant...")) + resentment++ // Done after check so first time will never enrage. + + discipline = between(0, discipline + amount, 10) + +/mob/living/simple_animal/slime/movement_delay() + if(bodytemperature >= 330.23) // 135 F or 57.08 C + return -1 // slimes become supercharged at high temperatures + + . = ..() + + var/health_deficiency = (maxHealth - health) + if(health_deficiency >= 45) + . += (health_deficiency / 25) + + if(bodytemperature < 183.222) + . += (283.222 - bodytemperature) / 10 * 1.75 + + . += config.slime_delay + +/mob/living/simple_animal/slime/Process_Spacemove() + return 2 + +/mob/living/simple_animal/slime/verb/evolve() + set category = "Slime" + set desc = "This will let you evolve from baby to adult slime." + + if(stat) + to_chat(src, "I must be conscious to do this...") + return + + if(docile) + to_chat(src, "I have been pacified. I cannot evolve...") + return + + if(!is_adult) + if(amount_grown >= 10) + make_adult() + else + to_chat(src, "I am not ready to evolve yet...") + else + to_chat(src, "I have already evolved...") + +/mob/living/simple_animal/slime/verb/reproduce() + set category = "Slime" + set desc = "This will make you split into four Slimes." + + if(stat) + to_chat(src, "I must be conscious to do this...") + return + + if(docile) + to_chat(src, "I have been pacified. I cannot reproduce...") + return + + if(is_adult) + if(amount_grown >= 10) + + var/list/babies = list() + for(var/i = 1 to 4) + babies.Add(make_new_slime()) + + var/mob/living/simple_animal/slime/new_slime = pick(babies) + new_slime.universal_speak = universal_speak + if(src.mind) + src.mind.transfer_to(new_slime) + else + new_slime.key = src.key + qdel(src) + else + to_chat(src, "I am not ready to reproduce yet...") + else + to_chat(src, "I am not old enough to reproduce yet...") + +// Used for reproducing and dying. +/mob/living/simple_animal/slime/proc/make_new_slime() + var/t = src.type + if(prob(mutation_chance) && slime_mutation.len) + t = slime_mutation[rand(1, slime_mutation.len)] + var/mob/living/simple_animal/slime/baby = new t(loc) + + // Handle 'inheriting' from parent slime. + baby.mutation_chance = mutation_chance + baby.power_charge = round(power_charge / 4) + baby.resentment = max(resentment - 1, 0) + baby.discipline = max(discipline - 1, 0) + baby.obedience = max(obedience - 1, 0) + baby.unity = unity + baby.faction = faction + baby.friends = friends.Copy() + if(rabid) + baby.enrage() + + step_away(baby, src) + return baby + +/mob/living/simple_animal/slime/speech_bubble_appearance() + return "slime" + +// Called after they finish eatting someone. +/mob/living/simple_animal/slime/proc/befriend(var/mob/living/friend) + if(!(friend in friends)) + friends |= friend + say("[friend]... friend...") + +/mob/living/simple_animal/slime/proc/can_command(var/mob/living/commander) + if(rabid) + return FALSE + if(docile) + return TRUE + if(commander in friends) + return TRUE + if(faction == commander.faction) + return TRUE + if(discipline > resentment && obedience >= 5) + return TRUE + return FALSE + +/mob/living/simple_animal/slime/proc/give_hat(var/obj/item/clothing/head/new_hat, var/mob/living/user) + if(!istype(new_hat)) + to_chat(user, "\The [new_hat] isn't a hat.") + return + if(hat) + to_chat(user, "\The [src] is already wearing \a [hat].") + return + else + user.drop_item(new_hat) + hat = new_hat + new_hat.forceMove(src) + to_chat(user, "You place \a [new_hat] on \the [src]. How adorable!") + update_icon() + return + +/mob/living/simple_animal/slime/proc/remove_hat(var/mob/living/user) + if(!hat) + to_chat(user, "\The [src] doesn't have a hat to remove.") + else + hat.forceMove(get_turf(src)) + user.put_in_hands(hat) + to_chat(user, "You take away \the [src]'s [hat.name]. How mean.") + hat = null + update_icon() + +/mob/living/simple_animal/slime/proc/drop_hat() + if(!hat) + return + hat.forceMove(get_turf(src)) + hat = null + update_icon() + +// Checks if disciplining the slime would be 'justified' right now. +/mob/living/simple_animal/slime/proc/is_justified_to_discipline() + if(rabid) + return TRUE + if(target_mob) + if(ishuman(target_mob)) + var/mob/living/carbon/human/H = target_mob + if(istype(H.species, /datum/species/monkey)) + return FALSE + return TRUE + return FALSE + + +/mob/living/simple_animal/slime/get_description_interaction() + var/list/results = list() + + if(!stat) + results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad." + + results += ..() + + return results + +/mob/living/simple_animal/slime/get_description_info() + var/list/lines = list() + var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \ + They can be extremely dangerous if not handled properly." + lines.Add(intro_line) + lines.Add(null) // To pad the line breaks. + + var/list/rewards = list() + for(var/potential_color in slime_mutation) + var/mob/living/simple_animal/slime/S = potential_color + rewards.Add(initial(S.slime_color)) + var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough." + lines.Add(reward_line) + lines.Add(null) + + lines.Add(description_info) + return lines.Join("\n") + diff --git a/code/modules/mob/living/simple_animal/slime/subtypes.dm b/code/modules/mob/living/simple_animal/slime/subtypes.dm new file mode 100644 index 0000000000..4f71f91d3f --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/subtypes.dm @@ -0,0 +1,697 @@ +// Tier 1 + +/mob/living/simple_animal/slime/purple + desc = "This slime is rather toxic to handle, as it is poisonous." + color = "#CC23FF" + slime_color = "purple" + coretype = /obj/item/slime_extract/purple + reagent_injected = "toxin" + + description_info = "This slime spreads a toxin when it attacks. A biosuit or other thick armor can protect from the toxic attack." + + slime_mutation = list( + /mob/living/simple_animal/slime/dark_purple, + /mob/living/simple_animal/slime/dark_blue, + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime + ) + + +/mob/living/simple_animal/slime/orange + desc = "This slime is known to be flammable and can ignite enemies." + color = "#FFA723" + slime_color = "orange" + coretype = /obj/item/slime_extract/orange + + description_info = "Attacks from this slime can ignite you. A firesuit can protect from the burning attacks of this slime." + + slime_mutation = list( + /mob/living/simple_animal/slime/dark_purple, + /mob/living/simple_animal/slime/yellow, + /mob/living/simple_animal/slime/red, + /mob/living/simple_animal/slime + ) + +/mob/living/simple_animal/slime/orange/post_attack(mob/living/L, intent) + if(intent != I_HELP) + L.adjust_fire_stacks(1) + if(prob(25)) + L.IgniteMob() + ..() + +/mob/living/simple_animal/slime/blue + desc = "This slime produces 'cryotoxin' and uses it against their foes. Very deadly to other slimes." + color = "#19FFFF" + slime_color = "blue" + coretype = /obj/item/slime_extract/blue + reagent_injected = "cryotoxin" + + description_info = "Attacks from this slime can chill you. A biosuit or other thick armor can protect from the chilling attack." + + slime_mutation = list( + /mob/living/simple_animal/slime/dark_blue, + /mob/living/simple_animal/slime/silver, + /mob/living/simple_animal/slime/pink, + /mob/living/simple_animal/slime + ) + + +/mob/living/simple_animal/slime/metal + desc = "This slime is a lot more resilient than the others, due to having a metamorphic metallic and sloped surface." + color = "#5F5F5F" + slime_color = "metal" + shiny = 1 + coretype = /obj/item/slime_extract/metal + + description_info = "This slime is a lot more durable and tough to damage than the others." + + resistance = 10 // Sloped armor is strong. + maxHealth = 250 + maxHealth_adult = 350 + + slime_mutation = list( + /mob/living/simple_animal/slime/silver, + /mob/living/simple_animal/slime/yellow, + /mob/living/simple_animal/slime/gold, + /mob/living/simple_animal/slime + ) + +// Tier 2 + +/mob/living/simple_animal/slime/yellow + desc = "This slime is very conductive, and is known to use electricity as a means of defense moreso than usual for slimes." + color = "#FFF423" + slime_color = "yellow" + coretype = /obj/item/slime_extract/yellow + + ranged = 1 + shoot_range = 3 + firing_lines = 1 + projectiletype = /obj/item/projectile/beam/lightning/slime + projectilesound = 'sound/weapons/gauss_shoot.ogg' // Closest thing to a 'thunderstrike' sound we have. + glows = TRUE + + description_info = "This slime will fire lightning attacks at enemies if they are at range, and generate electricity \ + for their stun attack faster than usual. Insulative or reflective armor can protect from the lightning." + + slime_mutation = list( + /mob/living/simple_animal/slime/bluespace, + /mob/living/simple_animal/slime/bluespace, + /mob/living/simple_animal/slime/metal, + /mob/living/simple_animal/slime/orange + ) + +/mob/living/simple_animal/slime/yellow/handle_regular_status_updates() + if(stat == CONSCIOUS) + if(prob(25)) + power_charge = between(0, power_charge + 1, 10) + ..() + +/obj/item/projectile/beam/lightning/slime + power = 15 + +/mob/living/simple_animal/slime/yellow/ClosestDistance() // Needed or else they won't eat monkeys outside of melee range. + if(target_mob && ishuman(target_mob)) + var/mob/living/carbon/human/H = target_mob + if(istype(H.species, /datum/species/monkey)) + return 1 + return ..() + + +/mob/living/simple_animal/slime/dark_purple + desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it." + color = "#CC23FF" + slime_color = "dark purple" + coretype = /obj/item/slime_extract/dark_purple + reagent_injected = "phoron" + + description_info = "This slime applies phoron to enemies it attacks. A biosuit or other thick armor can protect from the toxic attack. \ + If hit with a burning attack, it will erupt in flames." + + slime_mutation = list( + /mob/living/simple_animal/slime/purple, + /mob/living/simple_animal/slime/orange, + /mob/living/simple_animal/slime/ruby, + /mob/living/simple_animal/slime/ruby + ) + +/mob/living/simple_animal/slime/dark_purple/proc/ignite() + visible_message("\The [src] erupts in an inferno!") + for(var/turf/simulated/target_turf in view(2, src)) + target_turf.assume_gas("phoron", 30, 1500+T0C) + spawn(0) + target_turf.hotspot_expose(1500+T0C, 400) + qdel(src) + +/mob/living/simple_animal/slime/dark_purple/ex_act(severity) + log_and_message_admins("[src] ignited due to a chain reaction with an explosion.") + ignite() + +/mob/living/simple_animal/slime/dark_purple/fire_act(datum/gas_mixture/air, temperature, volume) + log_and_message_admins("[src] ignited due to exposure to fire.") + ignite() + +/mob/living/simple_animal/slime/dark_purple/bullet_act(var/obj/item/projectile/P, var/def_zone) + if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. + log_and_message_admins("[src] ignited due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") + ignite() + else + ..() + +/mob/living/simple_animal/slime/dark_purple/attackby(var/obj/item/weapon/W, var/mob/user) + if(istype(W) && W.force && W.damtype == BURN) + log_and_message_admins("[src] ignited due to being hit with a burning weapon ([W]) by [key_name(user)].") + ignite() + else + ..() + + + + +/mob/living/simple_animal/slime/dark_blue + desc = "This slime makes other entities near it feel much colder, and is more resilient to the cold. It tends to kill other slimes rather quickly." + color = "#2398FF" + glows = TRUE + slime_color = "dark blue" + coretype = /obj/item/slime_extract/dark_blue + + description_info = "This slime is immune to the cold, however water will still kill it. A winter coat or other cold-resistant clothing can protect from the chilling aura." + + slime_mutation = list( + /mob/living/simple_animal/slime/purple, + /mob/living/simple_animal/slime/blue, + /mob/living/simple_animal/slime/cerulean, + /mob/living/simple_animal/slime/cerulean + ) + + minbodytemp = 0 + cold_damage_per_tick = 0 + +/mob/living/simple_animal/slime/dark_blue/Life() + if(stat != DEAD) + cold_aura() + ..() + +/mob/living/simple_animal/slime/dark_blue/proc/cold_aura() + for(var/mob/living/L in view(2, src)) + var/protection = L.get_cold_protection() + + if(protection < 1) + var/cold_factor = abs(protection - 1) + var/delta = -20 + delta *= cold_factor + L.bodytemperature = max(50, delta) + var/turf/T = get_turf(src) + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(-10 * 1000) + + +/mob/living/simple_animal/slime/silver + desc = "This slime is shiny, and can deflect lasers or other energy weapons directed at it." + color = "#AAAAAA" + slime_color = "silver" + coretype = /obj/item/slime_extract/silver + shiny = TRUE + + description_info = "Tasers, including the slime version, are ineffective against this slime. The slimebation still works." + + slime_mutation = list( + /mob/living/simple_animal/slime/metal, + /mob/living/simple_animal/slime/blue, + /mob/living/simple_animal/slime/amber, + /mob/living/simple_animal/slime/amber + ) + +/mob/living/simple_animal/slime/silver/bullet_act(var/obj/item/projectile/P, var/def_zone) + if(istype(P,/obj/item/projectile/beam) || istype(P, /obj/item/projectile/energy)) + visible_message("\The [src] reflects \the [P]!") + + // Find a turf near or on the original location to bounce to + var/new_x = P.starting.x + pick(0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + return PROJECTILE_CONTINUE // complete projectile permutation + else + ..() + + +// Tier 3 + +/mob/living/simple_animal/slime/bluespace + desc = "Trapping this slime in a cell is generally futile, as it can teleport at will." + color = null + slime_color = "bluespace" + icon_state_override = "bluespace" + coretype = /obj/item/slime_extract/bluespace + + description_info = "This slime will teleport to attack something if it is within a range of seven tiles. The teleport has a cooldown of five seconds." + + slime_mutation = list( + /mob/living/simple_animal/slime/bluespace, + /mob/living/simple_animal/slime/bluespace, + /mob/living/simple_animal/slime/yellow, + /mob/living/simple_animal/slime/yellow + ) + + spattack_prob = 100 + spattack_min_range = 3 + spattack_max_range = 7 + var/last_tele = null // Uses world.time + var/tele_cooldown = 5 SECONDS + +/mob/living/simple_animal/slime/bluespace/ClosestDistance() // Needed or the SA AI won't ever try to teleport. + if(world.time > last_tele + tele_cooldown) + return spattack_max_range - 1 + return ..() + +/mob/living/simple_animal/slime/bluespace/SpecialAtkTarget() + // Teleport attack. + if(!target_mob) + to_chat(src, "There's nothing to teleport to.") + return FALSE + + if(world.time < last_tele + tele_cooldown) + to_chat(src, "You can't teleport right now, wait a few seconds.") + return FALSE + + var/list/nearby_things = range(1, target_mob) + var/list/valid_turfs = list() + + // All this work to just go to a non-dense tile. + for(var/turf/potential_turf in nearby_things) + var/valid_turf = TRUE + if(potential_turf.density) + continue + for(var/atom/movable/AM in potential_turf) + if(AM.density) + valid_turf = FALSE + if(valid_turf) + valid_turfs.Add(potential_turf) + + + + var/turf/T = get_turf(src) + var/turf/target_turf = pick(valid_turfs) + + if(!target_turf) + to_chat(src, "There wasn't an unoccupied spot to teleport to.") + return FALSE + + var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread + s1.set_up(5, 1, T) + var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread + s2.set_up(5, 1, target_turf) + + + T.visible_message("\The [src] vanishes!") + s1.start() + + forceMove(target_turf) + playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1) + to_chat(src, "You teleport to \the [target_turf].") + + target_turf.visible_message("\The [src] appears!") + s2.start() + + last_tele = world.time + + if(Adjacent(target_mob)) + PunchTarget() + return TRUE + +/mob/living/simple_animal/slime/ruby + desc = "This slime has great physical strength." + color = "#FF3333" + slime_color = "ruby" + shiny = TRUE + glows = TRUE + coretype = /obj/item/slime_extract/ruby + + description_info = "This slime is unnaturally stronger, allowing it to hit much harder, take less damage, and be stunned for less time." + + slime_mutation = list( + /mob/living/simple_animal/slime/dark_purple, + /mob/living/simple_animal/slime/dark_purple, + /mob/living/simple_animal/slime/ruby, + /mob/living/simple_animal/slime/ruby + ) + +/mob/living/simple_animal/slime/ruby/New() + ..() + add_modifier(/datum/modifier/slime_strength, null, src) // Slime is always swole. + + +/mob/living/simple_animal/slime/amber + desc = "This slime seems to be an expert in the culinary arts, as they create their own food to share with others. \ + They would probably be very important to other slimes, if the other colors didn't try to kill them." + color = "#FFBB00" + slime_color = "amber" + shiny = TRUE + glows = TRUE + coretype = /obj/item/slime_extract/amber + + description_info = "This slime feeds nearby entities passively while it is alive. This can cause uncontrollable \ + slime growth and reproduction if not kept in check." + + slime_mutation = list( + /mob/living/simple_animal/slime/silver, + /mob/living/simple_animal/slime/silver, + /mob/living/simple_animal/slime/amber, + /mob/living/simple_animal/slime/amber + ) + +/mob/living/simple_animal/slime/amber/Life() + if(stat != DEAD) + feed_aura() + ..() + +/mob/living/simple_animal/slime/amber/proc/feed_aura() + for(var/mob/living/L in view(2, src)) + if(L == src) // Don't feed themselves, or it is impossible to stop infinite slimes without killing all of the ambers. + continue + if(isslime(L)) + var/mob/living/simple_animal/slime/S = L + S.adjust_nutrition(rand(15, 25)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.isSynthetic()) + continue + H.nutrition = between(0, H.nutrition + rand(15, 25), 600) + + + +/mob/living/simple_animal/slime/cerulean + desc = "This slime is generally superior in a wide range of attributes, compared to the common slime. The jack of all trades, but master of none." + color = "#4F7EAA" + slime_color = "cerulean" + coretype = /obj/item/slime_extract/cerulean + + // Less than the specialized slimes, but higher than the rest. + maxHealth = 200 + maxHealth_adult = 250 + + melee_damage_lower = 10 + melee_damage_upper = 30 + + move_to_delay = 3 + + + + slime_mutation = list( + /mob/living/simple_animal/slime/dark_blue, + /mob/living/simple_animal/slime/dark_blue, + /mob/living/simple_animal/slime/cerulean, + /mob/living/simple_animal/slime/cerulean + ) + +// Tier 4 + +/mob/living/simple_animal/slime/red + desc = "This slime is full of energy, and very aggressive. 'The red ones go faster.' seems to apply here." + color = "#FF3333" + slime_color = "red" + coretype = /obj/item/slime_extract/red + move_to_delay = 3 // The red ones go faster. + + description_info = "This slime is faster than the others. Attempting to discipline this slime will always cause it to go berserk." + + slime_mutation = list( + /mob/living/simple_animal/slime/red, + /mob/living/simple_animal/slime/oil, + /mob/living/simple_animal/slime/oil, + /mob/living/simple_animal/slime/orange + ) + + +/mob/living/simple_animal/slime/red/adjust_discipline(amount) + if(amount > 0) + if(!rabid) + enrage() // How dare you try to control the red slime. + say("Grrr...!") + + +/mob/living/simple_animal/slime/green + desc = "This slime is radioactive." + color = "#14FF20" + slime_color = "green" + coretype = /obj/item/slime_extract/green + glows = TRUE + reagent_injected = "radium" + var/rads = 25 + + description_info = "This slime will irradiate anything nearby passively, and will inject radium on attack. \ + A radsuit or other thick and radiation-hardened armor can protect from this. It will only radiate while alive." + + slime_mutation = list( + /mob/living/simple_animal/slime/purple, + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime/emerald, + /mob/living/simple_animal/slime/emerald + ) + +/mob/living/simple_animal/slime/green/Life() + if(stat != DEAD) + irradiate() + ..() + +/mob/living/simple_animal/slime/green/proc/irradiate() + radiation_repository.radiate(src, rads) + + +/mob/living/simple_animal/slime/pink + desc = "This slime has regenerative properties." + color = "#FF0080" + slime_color = "pink" + coretype = /obj/item/slime_extract/pink + glows = TRUE + + description_info = "This slime will passively heal nearby entities within two tiles, including itself. It will only do this while alive." + + slime_mutation = list( + /mob/living/simple_animal/slime/blue, + /mob/living/simple_animal/slime/light_pink, + /mob/living/simple_animal/slime/light_pink, + /mob/living/simple_animal/slime/pink + ) + +/mob/living/simple_animal/slime/pink/Life() + if(stat != DEAD) + heal_aura() + ..() + +/mob/living/simple_animal/slime/pink/proc/heal_aura() + for(var/mob/living/L in view(src, 2)) + if(L.stat == DEAD || L == target_mob) + continue + L.add_modifier(/datum/modifier/slime_heal, 5 SECONDS, src) + +/datum/modifier/slime_heal + name = "slime mending" + desc = "You feel somewhat gooy." + mob_overlay_state = "pink_sparkles" + + on_created_text = "Twinkling spores of goo surround you. It makes you feel healthier." + on_expired_text = "The spores of goo have faded, although you feel much healthier than before." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/slime_heal/tick() + if(holder.stat == DEAD) // Required or else simple animals become immortal. + expire() + holder.adjustBruteLoss(-2) + holder.adjustFireLoss(-2) + holder.adjustToxLoss(-2) + holder.adjustOxyLoss(-2) + holder.adjustCloneLoss(-1) + + + +/mob/living/simple_animal/slime/gold + desc = "This slime absorbs energy, and cannot be stunned by normal means." + color = "#EEAA00" + shiny = TRUE + slime_color = "gold" + coretype = /obj/item/slime_extract/gold + description_info = "This slime is immune to the slimebaton and taser, and will actually charge the slime, however it will still discipline the slime." + + slime_mutation = list( + /mob/living/simple_animal/slime/metal, + /mob/living/simple_animal/slime/gold, + /mob/living/simple_animal/slime/sapphire, + /mob/living/simple_animal/slime/sapphire + ) + +/mob/living/simple_animal/slime/gold/Weaken(amount) + power_charge = between(0, power_charge + amount, 10) + return + +/mob/living/simple_animal/slime/gold/Stun(amount) + power_charge = between(0, power_charge + amount, 10) + return + +/mob/living/simple_animal/slime/gold/get_description_interaction() // So it doesn't say to use a baton on them. + return list() + + +// Tier 5 + +/mob/living/simple_animal/slime/oil + desc = "This slime is explosive and volatile. Smoking near it is probably a bad idea." + color = "#333333" + slime_color = "oil" + shiny = TRUE + coretype = /obj/item/slime_extract/oil + + description_info = "If this slime suffers damage from a fire or heat based source, or if it is caught inside \ + an explosion, it will explode. Rabid oil slimes will charge at enemies, then suicide-bomb themselves. \ + Bomb suits can protect from the explosion." + + slime_mutation = list( + /mob/living/simple_animal/slime/oil, + /mob/living/simple_animal/slime/oil, + /mob/living/simple_animal/slime/red, + /mob/living/simple_animal/slime/red + ) + +/mob/living/simple_animal/slime/oil/proc/explode() + if(stat != DEAD) + // explosion(src.loc, 1, 2, 4) + explosion(src.loc, 0, 2, 4) // A bit weaker since the suicide charger tended to gib the poor sod being targeted. + if(src) // Delete ourselves if the explosion didn't do it. + qdel(src) + +/mob/living/simple_animal/slime/oil/post_attack(var/mob/living/L, var/intent = I_HURT) + if(!rabid) + return ..() + if(intent == I_HURT || intent == I_GRAB) + say(pick("Sacrifice...!", "Sssss...", "Boom...!")) + sleep(2 SECOND) + log_and_message_admins("[src] has suicide-bombed themselves while trying to kill \the [L].") + explode() + +/mob/living/simple_animal/slime/oil/ex_act(severity) + log_and_message_admins("[src] exploded due to a chain reaction with another explosion.") + explode() + +/mob/living/simple_animal/slime/oil/fire_act(datum/gas_mixture/air, temperature, volume) + log_and_message_admins("[src] exploded due to exposure to fire.") + explode() + +/mob/living/simple_animal/slime/oil/bullet_act(var/obj/item/projectile/P, var/def_zone) + if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. + log_and_message_admins("[src] exploded due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") + explode() + else + ..() + +/mob/living/simple_animal/slime/oil/attackby(var/obj/item/weapon/W, var/mob/user) + if(istype(W) && W.force && W.damtype == BURN) + log_and_message_admins("[src] exploded due to being hit with a burning weapon ([W]) by [key_name(user)].") + explode() + else + ..() + + +/mob/living/simple_animal/slime/sapphire + desc = "This slime seems a bit brighter than the rest, both figuratively and literally." + color = "#2398FF" + slime_color = "sapphire" + shiny = TRUE + glows = TRUE + coretype = /obj/item/slime_extract/sapphire + + optimal_combat = TRUE // Lift combat AI restrictions to look smarter. + run_at_them = FALSE // Use fancy A* pathing. + astar_adjacent_proc = /turf/proc/TurfsWithAccess // Normal slimes don't care about cardinals (because BYOND) so smart slimes shouldn't as well. + move_to_delay = 3 // A* chasing is slightly slower in terms of movement speed than regular pathing so reducing this hopefully makes up for that. + + description_info = "This slime uses more robust tactics when fighting and won't hold back, so it is dangerous to be alone \ + with one if hostile, and especially dangerous if they outnumber you." + + slime_mutation = list( + /mob/living/simple_animal/slime/sapphire, + /mob/living/simple_animal/slime/sapphire, + /mob/living/simple_animal/slime/gold, + /mob/living/simple_animal/slime/gold + ) + +/mob/living/simple_animal/slime/emerald + desc = "This slime is faster than usual, even more so than the red slimes." + color = "#22FF22" + shiny = TRUE + glows = TRUE + slime_color = "emerald" + coretype = /obj/item/slime_extract/emerald + + description_info = "This slime will make everything around it, and itself, faster for a few seconds, if close by." + move_to_delay = 2 + + slime_mutation = list( + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime/emerald, + /mob/living/simple_animal/slime/emerald + ) + +/mob/living/simple_animal/slime/emerald/Life() + if(stat != DEAD) + zoom_aura() + ..() + +/mob/living/simple_animal/slime/emerald/proc/zoom_aura() + for(var/mob/living/L in view(src, 2)) + if(L.stat == DEAD || L == target_mob) + continue + L.add_modifier(/datum/modifier/technomancer/haste, 5 SECONDS, src) + +/mob/living/simple_animal/slime/light_pink + desc = "This slime seems a lot more peaceful than the others." + color = "#FF8888" + slime_color = "light_pink" + coretype = /obj/item/slime_extract/light_pink + + description_info = "This slime is effectively always disciplined initially." + obedience = 5 + discipline = 5 + + slime_mutation = list( + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime/green, + /mob/living/simple_animal/slime/emerald, + /mob/living/simple_animal/slime/emerald + ) + +// Special +/mob/living/simple_animal/slime/rainbow + desc = "This slime changes colors constantly." + color = null // Only slime subtype that uses a different icon_state. + slime_color = "rainbow" + coretype = /obj/item/slime_extract/rainbow + icon_state_override = "rainbow" + + description_info = "This slime is considered to be the same color as all other slime colors at the same time for the purposes of \ + other slimes being friendly to them, and therefore will never be harmed by another slime. \ + Attacking this slime will provoke the wrath of all slimes within range." + + slime_mutation = list( + /mob/living/simple_animal/slime/rainbow, + /mob/living/simple_animal/slime/rainbow, + /mob/living/simple_animal/slime/rainbow, + /mob/living/simple_animal/slime/rainbow + ) + +/mob/living/simple_animal/slime/rainbow/New() + unify() + ..() + +// The RD's pet slime. +/mob/living/simple_animal/slime/rainbow/kendrick + name = "Kendrick" + desc = "The Research Director's pet slime. It shifts colors constantly." + +/mob/living/simple_animal/slime/rainbow/kendrick/New() + pacify() + ..() \ No newline at end of file diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index dbace03e52..3bc7929eac 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -111,7 +111,8 @@ //Speech bubbles. if(comm) var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',comm,"h[speech_bubble_test]") + var/speech_type = speech_bubble_appearance() + var/image/speech_bubble = image('icons/mob/talk.dmi',comm,"[speech_type][speech_bubble_test]") spawn(30) qdel(speech_bubble) @@ -121,6 +122,12 @@ ..(message, speaking, verb, alt_name, whispering) //mob/living/say() can do the actual talking. +// Proc: speech_bubble_appearance() +// Parameters: 0 +// Description: Gets the correct icon_state information for chat bubbles to work. +/mob/living/voice/speech_bubble_appearance() + return "comm" + /mob/living/voice/say_understands(var/other,var/datum/language/speaking = null) //These only pertain to common. Languages are handled by mob/say_understands() if (!speaking) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index ba5b24dbe7..b01d346c23 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -536,13 +536,40 @@ proc/is_blind(A) return threatcount -/mob/living/simple_animal/hostile/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/simple_animal/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) var/threatcount = ..() if(. == SAFE_PERP) return SAFE_PERP if(!istype(src, /mob/living/simple_animal/retaliate/goat)) + if(hostile) + if(faction != "neutral") // Otherwise Runtime gets killed. + threatcount += 4 + return threatcount + +// Beepsky will (try to) only beat 'bad' slimes. +/mob/living/simple_animal/slime/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) + var/threatcount = 0 + + if(stat == DEAD) + return SAFE_PERP + + if(is_justified_to_discipline()) threatcount += 4 +/* + if(discipline && !rabid) + if(!target_mob || istype(target_mob, /mob/living/carbon/human/monkey)) + return SAFE_PERP + + if(target_mob) + threatcount += 4 + + if(victim) + threatcount += 4 +*/ + if(rabid) + threatcount = 10 + return threatcount #undef SAFE_PERP diff --git a/code/modules/mob/modifiers.dm b/code/modules/mob/modifiers.dm index 0b39c9e275..95d3db1e93 100644 --- a/code/modules/mob/modifiers.dm +++ b/code/modules/mob/modifiers.dm @@ -92,7 +92,7 @@ /mob/living/proc/add_modifier(var/modifier_type, var/expire_at = null, var/mob/living/origin = null) // First, check if the mob already has this modifier. for(var/datum/modifier/M in modifiers) - if(istype(modifier_type, M)) + if(ispath(modifier_type, M)) switch(M.stacks) if(MODIFIER_STACK_FORBID) return // Stop here. diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index f5445e0e5a..b5add4f23f 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -35,6 +35,9 @@ usr << "Speech is currently admin-disabled." return + if(!client) + return // Clientless mobs shouldn't be trying to talk in deadchat. + if(!src.client.holder) if(!config.dsay_allowed) src << "Deadchat is globally muted." diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 085f601aef..03e4227f6e 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -161,40 +161,6 @@ qdel(src) return O -/mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) - if (transforming) - return - for(var/obj/item/W in src) - drop_from_inventory(W) - regenerate_icons() - transforming = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in organs) - qdel(t) - - var/mob/living/carbon/slime/new_slime - if(reproduce) - var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring) - var/list/babies = list() - for(var/i=1,i<=number,i++) - var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc) - M.nutrition = round(nutrition/number) - step_away(M,src) - babies += M - new_slime = pick(babies) - else - new_slime = new /mob/living/carbon/slime(loc) - if(adult) - new_slime.is_adult = 1 - else - new_slime.key = key - - new_slime << "You are now a slime. Skreee!" - qdel(src) - return - /mob/living/carbon/human/proc/corgize() if (transforming) return diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index 8a8d92f2c7..0ce5f390c4 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -12,7 +12,7 @@ mob/var/obj/effect/decal/typing_indicator if(!typing_indicator) typing_indicator = new typing_indicator.icon = 'icons/mob/talk.dmi' - typing_indicator.icon_state = "typing" + typing_indicator.icon_state = "[speech_bubble_appearance()]_typing" if(client && !stat) typing_indicator.invisibility = invisibility diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index a93f37bd56..a055409531 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -44,6 +44,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ var/parts = BP_ALL //Defines what parts said brand can replace on a body. var/health_hud_intensity = 1 // Intensity modifier for the health GUI indicator. var/suggested_species = "Human" //If it should make the torso a species + var/speech_bubble_appearance = "synthetic" // What icon_state to use for speech bubbles when talking. Check talk.dmi for all the icons. /datum/robolimb/unbranded_monitor company = "Unbranded Monitor" @@ -135,6 +136,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ unavailable_to_build = 1 lifelike = 1 blood_color = "#CCCCCC" + speech_bubble_appearance = "normal" /datum/robolimb/wardtakahashi company = "Ward-Takahashi" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index f6d192276f..4a81179c72 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -19,7 +19,7 @@ /obj/item/weapon/paper_bin/MouseDrop(mob/user as mob) if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) - if(!istype(usr, /mob/living/carbon/slime) && !istype(usr, /mob/living/simple_animal)) + if(!istype(usr, /mob/living/simple_animal)) if( !usr.get_active_hand() ) //if active hand is empty var/mob/living/carbon/human/H = user var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index c58bd2f166..d3cde87049 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -6,6 +6,19 @@ ..() charge = maxcharge update_icon() + if(self_recharge) + processing_objects |= src + +/obj/item/weapon/cell/Destroy() + if(self_recharge) + processing_objects -= src + return ..() + +/obj/item/weapon/cell/process() + if(self_recharge) + give(charge_amount / CELLRATE) + else + return PROCESS_KILL /obj/item/weapon/cell/drain_power(var/drain_check, var/surge, var/power = 0) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index bddc1fe490..0bdf518a2c 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -174,4 +174,17 @@ power_supply = new /obj/item/weapon/cell/device/weapon(src) self_recharge = 1 processing_objects.Add(src) - update_icon() \ No newline at end of file + update_icon() + +/obj/item/weapon/gun/energy/get_description_interaction() + var/list/results = list() + + if(!battery_lock && !self_recharge) + if(power_supply) + results += "[desc_panel_image("offhand")]to remove the weapon cell." + else + results += "[desc_panel_image("weapon cell")]to add a new weapon cell." + + results += ..() + + return results \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm index 64f708891b..5e24564292 100644 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ b/code/modules/projectiles/guns/energy/temperature.dm @@ -2,78 +2,14 @@ name = "temperature gun" icon_state = "freezegun" fire_sound = 'sound/weapons/pulse3.ogg' - desc = "A gun that changes temperatures. It has a small label on the side, 'More extreme temperatures will cost more charge!'" - var/temperature = T20C - var/current_temperature = T20C - charge_cost = 24 + desc = "A gun that can add or remove heat from entities it hits. In other words, it can fire 'cold', and 'hot' beams." + charge_cost = 240 origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) slot_flags = SLOT_BELT|SLOT_BACK projectile_type = /obj/item/projectile/temp - cell_type = /obj/item/weapon/cell/high - -/obj/item/weapon/gun/energy/temperature/New() - ..() - processing_objects.Add(src) - - -/obj/item/weapon/gun/energy/temperature/Destroy() - processing_objects.Remove(src) - ..() - - -/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob) - user.set_machine(src) - var/temp_text = "" - if(temperature > (T0C - 50)) - temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" - else - temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" - - var/dat = {"Freeze Gun Configuration:
- Current output temperature: [temp_text]
- Target output temperature: - - - [current_temperature] + + +
- "} - - user << browse(dat, "window=freezegun;size=450x300;can_resize=1;can_close=1;can_minimize=1") - onclose(user, "window=freezegun", src) - - -/obj/item/weapon/gun/energy/temperature/Topic(href, href_list) - if (..()) - return 1 - usr.set_machine(src) - src.add_fingerprint(usr) - - - - if(href_list["temp"]) - var/amount = text2num(href_list["temp"]) - if(amount > 0) - src.current_temperature = min(500, src.current_temperature+amount) - else - src.current_temperature = max(0, src.current_temperature+amount) - if (istype(src.loc, /mob)) - attack_self(src.loc) - src.add_fingerprint(usr) - return - - -/obj/item/weapon/gun/energy/temperature/process() - switch(temperature) - if(0 to 100) charge_cost = 1000 - if(100 to 250) charge_cost = 500 - if(251 to 300) charge_cost = 100 - if(301 to 400) charge_cost = 500 - if(401 to 500) charge_cost = 1000 - - if(current_temperature != temperature) - var/difference = abs(current_temperature - temperature) - if(difference >= 10) - if(current_temperature < temperature) - temperature -= 10 - else - temperature += 10 - else - temperature = current_temperature + firemodes = list( + list(mode_name="endothermic beam", projectile_type = /obj/item/projectile/temp, charge_cost = 240), + list(mode_name="exothermic beam", projectile_type = /obj/item/projectile/temp/hot, charge_cost = 240), + ) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f5a7460cc3..3144f9eb09 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -76,7 +76,7 @@ /obj/item/projectile/proc/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) if(blocked >= 100) return 0//Full block if(!isliving(target)) return 0 - if(isanimal(target)) return 0 +// if(isanimal(target)) return 0 var/mob/living/L = target L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked) // add in AGONY! return 1 diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index b389d39153..6f19b29bbb 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -52,7 +52,7 @@ Robot.mmi = new /obj/item/device/mmi(new_mob) Robot.mmi.transfer_identity(M) //Does not transfer key/client. if("slime") - new_mob = new /mob/living/carbon/slime(M.loc) + new_mob = new /mob/living/simple_animal/slime(M.loc) new_mob.universal_speak = 1 else var/mob/living/carbon/human/H diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index c15e7cda4a..dd268f09b7 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -35,19 +35,45 @@ icon_state = "ice_2" damage = 0 damage_type = BURN + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE nodamage = 1 - check_armour = "energy" - var/temperature = 300 + check_armour = "energy" // It actually checks heat/cold protection. + var/target_temperature = 50 light_range = 2 light_power = 0.5 light_color = "#55AAFF" +/obj/item/projectile/temp/on_hit(atom/target, blocked = FALSE) + ..() + if(isliving(target)) + var/mob/living/L = target - on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob - if(istype(target, /mob/living)) - var/mob/M = target - M.bodytemperature = temperature - return 1 + var/protection = null + var/potential_temperature_delta = null + var/new_temperature = L.bodytemperature + + if(target_temperature >= T20C) // Make it cold. + protection = L.get_cold_protection(target_temperature) + potential_temperature_delta = 75 + new_temperature = max(new_temperature - potential_temperature_delta, target_temperature) + else // Make it hot. + protection = L.get_heat_protection(target_temperature) + potential_temperature_delta = 200 // Because spacemen temperature needs stupid numbers to actually hurt people. + new_temperature = min(new_temperature + potential_temperature_delta, target_temperature) + + var/temp_factor = abs(protection - 1) + + new_temperature = round(new_temperature * temp_factor) + L.bodytemperature = new_temperature + +// L.bodytemperature = between(target_temperature,(L.bodytemperature - ((L.bodytemperature + potential_temperature_delta) * temp_factor) ), L.bodytemperature) + world << "Temperature of [L] is now [L.bodytemperature]." + + return 1 + +/obj/item/projectile/temp/hot + name = "heat beam" + target_temperature = 1000 /obj/item/projectile/meteor name = "meteor" diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index d634711379..ab83fbe8a0 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -381,10 +381,6 @@ if(type == CHEM_TOUCH) var/datum/reagents/R = C.touching return trans_to_holder(R, amount, multiplier, copy) - else if(isxeno(target)) - var/mob/living/simple_animal/xeno/X = target - var/datum/reagents/R = X.reagents - return trans_to_holder(R, amount, multiplier, copy) else var/datum/reagents/R = new /datum/reagents(amount) . = trans_to_holder(R, amount, multiplier, copy) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index ccf7c62ac1..3c71a0b089 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -2,7 +2,7 @@ #define LIQUID 2 #define GAS 3 -#define REAGENTS_PER_SHEET 20 + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -294,6 +294,7 @@ /obj/item/stack/material/phoron = "phoron", /obj/item/stack/material/gold = "gold", /obj/item/stack/material/silver = "silver", + /obj/item/stack/material/platinum = "platinum", /obj/item/stack/material/mhydrogen = "hydrogen" ) @@ -500,5 +501,3 @@ qdel(O) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break - -#undef REAGENTS_PER_SHEET diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index f6208f59ff..6fb44ad814 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -133,23 +133,19 @@ /datum/reagent/water/touch_mob(var/mob/living/L, var/amount) if(istype(L)) + // First, kill slimes. + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = L + S.adjustToxLoss(15 * amount) + S.visible_message("[S]'s flesh sizzles where the water touches it!", "Your flesh burns in the water!") + + // Then extinguish people on fire. var/needed = L.fire_stacks * 5 if(amount > needed) L.ExtinguishMob() L.adjust_fire_stacks(-(amount / 5)) remove_self(needed) -/datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - if(istype(M, /mob/living/carbon/slime)) - var/mob/living/carbon/slime/S = M - S.adjustToxLoss(15 * removed) // Babies have 150 health, adults have 200; So, 10 units and 13.5 - if(!S.client) - if(S.Target) // Like cats - S.Target = null - ++S.Discipline - if(dose == removed) - S.visible_message("[S]'s flesh sizzles where the water touches it!", "Your flesh burns in the water!") - /datum/reagent/fuel name = "Welding fuel" id = "fuel" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 6732f4c192..8cfb1b5e93 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -287,7 +287,7 @@ M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) + if(istype(M, /mob/living/simple_animal/slime)) M.bodytemperature = max(M.bodytemperature - rand(10,20), 0) holder.remove_reagent("capsaicin", 5) @@ -319,7 +319,7 @@ M.apply_effect(2, AGONY, 0) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") - if(istype(M, /mob/living/carbon/slime)) + if(istype(M, /mob/living/simple_animal/slime)) M.bodytemperature += rand(10, 25) holder.remove_reagent("frostoil", 5) @@ -404,7 +404,7 @@ M.apply_effect(4, AGONY, 0) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") - if(istype(M, /mob/living/carbon/slime)) + if(istype(M, /mob/living/simple_animal/slime)) M.bodytemperature += rand(15, 30) holder.remove_reagent("frostoil", 5) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 0a7c78f952..c554959435 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -169,6 +169,14 @@ reagent_state = SOLID color = "#B8B8C0" +/datum/reagent/platinum + name = "Platinum" + id = "platinum" + description = "Platinum is a dense, malleable, ductile, highly unreactive, precious, gray-white transition metal. It is very resistant to corrosion." + taste_description = "metal" + reagent_state = SOLID + color = "#777777" + /datum/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) affect_ingest(M, alien, removed) @@ -298,7 +306,7 @@ S.dirt = 0 T.clean_blood() - for(var/mob/living/carbon/slime/M in T) + for(var/mob/living/simple_animal/slime/M in T) M.adjustToxLoss(rand(5, 10)) /datum/reagent/space_cleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 8df309b1b8..5e38218ac0 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -604,16 +604,75 @@ /* Solidification */ -/datum/chemical_reaction/phoronsolidification +/datum/chemical_reaction/solidification + name = "Solid Iron" + id = "solidiron" + result = null + required_reagents = list("frostoil" = 5, "iron" = REAGENTS_PER_SHEET) + result_amount = 1 + var/sheet_to_give = /obj/item/stack/material/iron + +/datum/chemical_reaction/solidification/on_reaction(var/datum/reagents/holder, var/created_volume) + new sheet_to_give(get_turf(holder.my_atom), created_volume) + return + + +/datum/chemical_reaction/solidification/phoron name = "Solid Phoron" id = "solidphoron" - result = null - required_reagents = list("iron" = 5, "frostoil" = 5, "phoron" = 20) - result_amount = 1 + required_reagents = list("frostoil" = 5, "phoron" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/phoron + + +/datum/chemical_reaction/solidification/silver + name = "Solid Silver" + id = "solidsilver" + required_reagents = list("frostoil" = 5, "silver" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/silver + + +/datum/chemical_reaction/solidification/gold + name = "Solid Gold" + id = "solidgold" + required_reagents = list("frostoil" = 5, "gold" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/gold + + +/datum/chemical_reaction/solidification/platinum + name = "Solid Platinum" + id = "solidplatinum" + required_reagents = list("frostoil" = 5, "platinum" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/platinum + + +/datum/chemical_reaction/solidification/uranium + name = "Solid Uranium" + id = "soliduranium" + required_reagents = list("frostoil" = 5, "uranium" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/uranium + + +/datum/chemical_reaction/solidification/hydrogen + name = "Solid Hydrogen" + id = "solidhydrogen" + required_reagents = list("frostoil" = 100, "hydrogen" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/mhydrogen + + +// These are from Xenobio. +/datum/chemical_reaction/solidification/steel + name = "Solid Steel" + id = "solidsteel" + required_reagents = list("frostoil" = 5, "steel" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/steel + + +/datum/chemical_reaction/solidification/plasteel + name = "Solid Plasteel" + id = "solidplasteel" + required_reagents = list("frostoil" = 10, "plasteel" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/plasteel -/datum/chemical_reaction/phoronsolidification/on_reaction(var/datum/reagents/holder, var/created_volume) - new /obj/item/stack/material/phoron(get_turf(holder.my_atom), created_volume) - return /datum/chemical_reaction/plastication name = "Plastic" @@ -1038,30 +1097,6 @@ /datum/chemical_reaction/aluminum_paint/send_data() return "#F0F8FF" -/* Slime cores */ - -/datum/chemical_reaction/slime - var/required = null - -//Slimed monkeys -/datum/chemical_reaction/slime/can_happen(var/datum/reagents/holder) - if(holder.my_atom && istype(holder.my_atom, required)) - return ..() - return 0 - -/datum/chemical_reaction/slime/golem - name = "Prometheans" - id = "m_promethean" - result = null - required_reagents = list("mutationtoxin" = 1) - result_amount = 1 - required = /obj/item/weapon/reagent_containers/food/snacks/monkeycube - -/datum/chemical_reaction/slime/golem/on_reaction(var/datum/reagents/holder) - var/location = get_turf(holder.my_atom) - new /obj/item/slime_cube(location) - qdel(holder.my_atom) - /* Food */ /datum/chemical_reaction/food/tofu diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index f28b8c6b62..908c7d6332 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -90,8 +90,6 @@ user << "\The [blocked] is in the way!" return - if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else. - if (fullness <= (550 * (1 + M.overeatduration / 1000))) user.visible_message("[user] attempts to feed [M] [src].") else diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index bd670cc8bc..ba1df21038 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -42,8 +42,7 @@ /obj/machinery/smartfridge/, /obj/machinery/biogenerator, /obj/structure/frame, - /obj/machinery/radiocarbon_spectrometer, - /obj/machinery/xenobio2/manualinjector + /obj/machinery/radiocarbon_spectrometer ) /obj/item/weapon/reagent_containers/glass/New() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index fea929006e..536a069474 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -79,9 +79,6 @@ user << "There is already a blood sample in this syringe." return if(istype(target, /mob/living/carbon)) - if(istype(target, /mob/living/carbon/slime)) - user << "You are unable to locate any blood." - return var/amount = reagents.get_free_space() var/mob/living/carbon/T = target if(!T.dna) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 28b2e0575b..228d4296ed 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -471,6 +471,8 @@ qdel(H) /obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(istype(mover, /obj/item/projectile)) + return 1 if (istype(mover,/obj/item) && mover.throwing) var/obj/item/I = mover if(istype(I, /obj/item/projectile)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index fd75b22eaf..55981fd672 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -592,6 +592,20 @@ other types of metals and chemistry for reagents). build_path = /obj/item/weapon/gun/energy/floragun sort_string = "TBAAA" +/datum/design/item/weapon/slimebation + id = "slimebation" + req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3, TECH_COMBAT = 3) + materials = list(DEFAULT_WALL_MATERIAL = 5000) + build_path = /obj/item/weapon/melee/baton/slime + sort_string = "TBAAB" + +/datum/design/item/weapon/slimetaser + id = "slimetaser" + req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4) + materials = list(DEFAULT_WALL_MATERIAL = 5000) + build_path = /obj/item/weapon/gun/energy/taser/xeno + sort_string = "TBAAC" + /datum/design/item/stock_part/subspace_ansible id = "s-ansible" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) diff --git a/code/modules/surgery/slimes.dm b/code/modules/surgery/slimes.dm index 038dc7f6d4..256f4d377f 100644 --- a/code/modules/surgery/slimes.dm +++ b/code/modules/surgery/slimes.dm @@ -3,10 +3,10 @@ ////////////////////////////////////////////////////////////////// /datum/surgery_step/slime - is_valid_target(mob/living/carbon/slime/target) - return istype(target, /mob/living/carbon/slime/) + is_valid_target(mob/living/simple_animal/slime/target) + return istype(target, /mob/living/simple_animal/slime/) - can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) return target.stat == 2 /datum/surgery_step/slime/cut_flesh @@ -19,19 +19,19 @@ min_duration = 30 max_duration = 50 - can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) return ..() && istype(target) && target.core_removal_stage == 0 - begin_step(mob/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", \ "You start cutting through [target]'s flesh with \the [tool].") - end_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user] cuts through [target]'s flesh with \the [tool].", \ "You cut through [target]'s flesh with \the [tool], revealing its silky innards.") target.core_removal_stage = 1 - fail_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, tearing [target]'s flesh with \the [tool]!", \ "Your hand slips, tearing [target]'s flesh with \the [tool]!") @@ -45,19 +45,19 @@ min_duration = 30 max_duration = 50 - can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) return ..() && istype(target) && target.core_removal_stage == 1 - begin_step(mob/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool].", \ "You start cutting [target]'s silky innards apart with \the [tool].") - end_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user] cuts [target]'s innards apart with \the [tool], exposing the cores.", \ "You cut [target]'s innards apart with \the [tool], exposing the cores.") target.core_removal_stage = 2 - fail_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, tearing [target]'s innards with \the [tool]!", \ "Your hand slips, tearing [target]'s innards with \the [tool]!") @@ -70,14 +70,14 @@ min_duration = 50 max_duration = 70 - can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) return ..() && (istype(target) && target.core_removal_stage == 2 && target.cores > 0) //This is being passed a human as target, unsure why. - begin_step(mob/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool].", \ "You start cutting out one of [target]'s cores with \the [tool].") - end_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) target.cores-- user.visible_message("[user] cuts out one of [target]'s cores with \the [tool].",, \ "You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.") @@ -85,9 +85,9 @@ if(target.cores >= 0) new target.coretype(target.loc) if(target.cores <= 0) - target.icon_state = "[target.colour] baby slime dead-nocore" + target.icon_state = "slime extracted" - fail_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) + fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, causing \him to miss the core!", \ "Your hand slips, causing you to miss the core!") \ No newline at end of file diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index 1ece024833..8978305ec2 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -35,8 +35,8 @@ var/list/ventcrawl_machinery = list( remove_ventcrawl() add_ventcrawl(loc) -/mob/living/carbon/slime/can_ventcrawl() - if(Victim) +/mob/living/simple_animal/slime/can_ventcrawl() + if(victim) to_chat(src, "You cannot ventcrawl while feeding.") return FALSE . = ..() diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm new file mode 100644 index 0000000000..cf3e96c52a --- /dev/null +++ b/code/modules/xenobio/items/extracts.dm @@ -0,0 +1,973 @@ +// Base +/obj/item/slime_extract + name = "slime extract" + desc = "Goo extracted from a slime, which can do different things depending on its color and what it is injected with." + icon = 'icons/mob/slimes.dmi' + icon_state = "grey slime extract" + force = 1 + w_class = ITEMSIZE_TINY + throwforce = 0 + throw_speed = 3 + throw_range = 6 + origin_tech = list(TECH_BIO = 4) + var/uses = 1 // uses before it goes inert + var/enhanced = FALSE + flags = OPENCONTAINER + + +/obj/item/slime_extract/New() + ..() + create_reagents(60) + +/obj/item/slime_extract/attackby(obj/item/O, mob/user) + if(istype(O, /obj/item/slimepotion/enhancer)) + if(enhanced) + to_chat(user, "You cannot enhance this extract further!") + return ..() + to_chat(user, "You apply the enhancer to the slime extract. It may now be reused one more time.") + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + uses += 2 + enhanced = TRUE + name = initial(name) // To remove the 'inert' part of the name. + qdel(O) + ..() + +/obj/item/slime_extract/examine(mob/user) + ..() + if(uses) + to_chat(user, "This extract has [uses] more use\s.") + else + to_chat(user, "This extract is inert.") + +/datum/chemical_reaction/slime + var/required = null + +/datum/chemical_reaction/slime/can_happen(var/datum/reagents/holder) + if(holder.my_atom && istype(holder.my_atom, required)) + var/obj/item/slime_extract/T = holder.my_atom + if(T.uses > 0) + return ..() + return FALSE + +/datum/chemical_reaction/slime/on_reaction(var/datum/reagents/holder) + var/obj/item/slime_extract/T = holder.my_atom + T.uses-- + if(T.uses <= 0) + T.visible_message("\icon[T]\The [T] goes inert.") + T.name = "inert [initial(T.name)]" + + +// *************** +// * Grey slimes * +// *************** + + +/obj/item/slime_extract/grey + name = "grey slime extract" + icon_state = "grey slime extract" + description_info = "This extract will create a new grey baby slime if injected with phoron, or some new monkey cubes if injected with blood." + +/datum/chemical_reaction/slime/grey_new_slime + name = "Slime Spawn" + id = "m_spawn" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/grey + +/datum/chemical_reaction/slime/grey_new_slime/on_reaction(var/datum/reagents/holder) + holder.my_atom.visible_message("Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!") + new /mob/living/simple_animal/slime(get_turf(holder.my_atom)) + ..() + +/datum/chemical_reaction/slime/grey_monkey + name = "Slime Monkey" + id = "m_monkey" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/grey + +/datum/chemical_reaction/slime/grey_monkey/on_reaction(var/datum/reagents/holder) + for(var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom)) + ..() + + +// **************** +// * Metal slimes * +// **************** + + +/obj/item/slime_extract/metal + name = "metal slime extract" + icon_state = "metal slime extract" + description_info = "This extract will create a metamorphic liquid which will transform into metallic liquid it comes into contact with, when injected with phoron. \ + It can also create a metallic binding liquid which will force metallic liquids to mix to form alloys when solified, when injected with water." + +// 'Duplicates' liquid metals, consuming itself in the process. +/datum/reagent/toxin/metamorphic_metal + name = "Metamorphic Metal" + id = "metamorphic" + description = "A strange metallic liquid which can rearrange itself to take the form of other metals it touches." + taste_description = "metallic" + taste_mult = 1.1 + reagent_state = LIQUID + color = "#666666" + strength = 20 + +/datum/chemical_reaction/slime/metal_metamorphic + name = "Slime Metal" + id = "m_metal" + required_reagents = list("phoron" = 5) + result = "metamorphic" + result_amount = REAGENTS_PER_SHEET // Makes enough to make one sheet of any metal. + required = /obj/item/slime_extract/metal + + +/datum/chemical_reaction/metamorphic + result_amount = REAGENTS_PER_SHEET * 2 + + +/obj/item/weapon/reagent_containers/glass/bottle/metamorphic + name = "Metamorphic Metal Bottle" + desc = "A small bottle. Contains some really weird liquid metal." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + +/obj/item/weapon/reagent_containers/glass/bottle/metamorphic/New() + ..() + reagents.add_reagent("metamorphic", 60) + update_icon() + + +// This is kind of a waste since iron is in the chem dispenser but it would be inconsistent if this wasn't here. +/datum/chemical_reaction/metamorphic/iron + name = "Morph into Iron" + id = "morph_iron" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "iron" = REAGENTS_PER_SHEET) + result = "iron" + + +/datum/chemical_reaction/metamorphic/silver + name = "Morph into Silver" + id = "morph_silver" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "silver" = REAGENTS_PER_SHEET) + result = "silver" + + +/datum/chemical_reaction/metamorphic/gold + name = "Morph into Gold" + id = "morph_gold" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "gold" = REAGENTS_PER_SHEET) + result = "gold" + + +/datum/chemical_reaction/metamorphic/platinum + name = "Morph into Platinum" + id = "morph_platinum" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "platinum" = REAGENTS_PER_SHEET) + result = "platinum" + + +/datum/chemical_reaction/metamorphic/uranium + name = "Morph into Uranium" + id = "morph_uranium" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "uranium" = REAGENTS_PER_SHEET) + result = "uranium" + + +/datum/chemical_reaction/metamorphic/phoron + name = "Morph into Phoron" + id = "morph_phoron" + required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "phoron" = REAGENTS_PER_SHEET) + result = "phoron" + + +// Creates 'alloys' which can be finalized with frost oil. +/datum/chemical_reaction/slime/metal_binding + name = "Slime Binding" + id = "m_binding" + required_reagents = list("water" = 5) + result = "binding" + result_amount = REAGENTS_PER_SHEET // Makes enough to make one sheet of any metal. + required = /obj/item/slime_extract/metal + + +/datum/reagent/toxin/binding_metal + name = "Binding Metal" + id = "binding" + description = "A strange metallic liquid which can bind other metals together that would otherwise require intense heat to alloy." + taste_description = "metallic" + taste_mult = 1.1 + reagent_state = LIQUID + color = "#666666" + strength = 20 + +/obj/item/weapon/reagent_containers/glass/bottle/binding + name = "Binding Metal Bottle" + desc = "A small bottle. Contains some really weird liquid metal." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + +/obj/item/weapon/reagent_containers/glass/bottle/binding/New() + ..() + reagents.add_reagent("binding", 60) + update_icon() + + +/datum/chemical_reaction/binding + name = "Bind into Steel" + id = "bind_steel" + result = "steel" + required_reagents = list("binding" = REAGENTS_PER_SHEET, "iron" = REAGENTS_PER_SHEET, "carbon" = REAGENTS_PER_SHEET) + result_amount = REAGENTS_PER_SHEET + +/datum/reagent/steel + name = "Liquid Steel" + id = "steel" + description = "An 'alloy' of iron and carbon, forced to bind together by another strange metallic liquid." + taste_description = "metallic" + reagent_state = LIQUID + color = "#888888" + + +/datum/chemical_reaction/binding/plasteel // Two parts 'steel', one part platnium matches the smelter alloy recipe. + name = "Bind into Plasteel" + id = "bind_plasteel" + required_reagents = list("binding" = REAGENTS_PER_SHEET, "steel" = REAGENTS_PER_SHEET * 2, "platinum" = REAGENTS_PER_SHEET) + result = "plasteel" + +/datum/reagent/plasteel + name = "Liquid Plasteel" + id = "plasteel" + description = "An 'alloy' of iron, carbon, and platinum, forced to bind together by another strange metallic liquid." + taste_description = "metallic" + reagent_state = LIQUID + color = "#AAAAAA" + + +// *************** +// * Blue slimes * +// *************** + + +/obj/item/slime_extract/blue + name = "blue slime extract" + icon_state = "blue slime extract" + description_info = "This extract will create frost oil when injected with phoron, which can be used to solidify liquid metals. \ + The extract can also create a slime stability agent when injected with blood, which reduces the odds of newly created slimes mutating into \ + a different color when a slime reproduces." + +/datum/chemical_reaction/slime/blue_frostoil + name = "Slime Frost Oil" + id = "m_frostoil" + result = "frostoil" + required_reagents = list("phoron" = 5) + result_amount = 20 + required = /obj/item/slime_extract/blue + + +/datum/chemical_reaction/slime/blue_stability + name = "Slime Stability" + id = "m_stability" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/blue + +/datum/chemical_reaction/slime/blue_frostoil/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/stabilizer(get_turf(holder.my_atom)) + ..() + + +// ***************** +// * Purple slimes * +// ***************** + + +/obj/item/slime_extract/purple + name = "purple slime extract" + icon_state = "purple slime extract" + description_info = "This extract can create a slime steroid agent when injected with phoron, which increases the amount of slime extracts the processor \ + can extract from a slime specimen." + + +/datum/chemical_reaction/slime/purple_steroid + name = "Slime Steroid" + id = "m_steroid" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/purple + +/datum/chemical_reaction/slime/purple_steroid/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/steroid(get_turf(holder.my_atom)) + ..() + + +// ***************** +// * Orange slimes * +// ***************** + + +/obj/item/slime_extract/orange + name = "orange slime extract" + icon_state = "orange slime extract" + description_info = "This extract creates a fire when injected with phoron, after a five second delay." + +/datum/chemical_reaction/slime/orange_fire + name = "Slime Fire" + id = "m_fire" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/orange + +/datum/chemical_reaction/slime/orange_fire/on_reaction(var/datum/reagents/holder) + log_and_message_admins("Orange extract reaction (fire) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") + holder.my_atom.visible_message("\The [src] begins to vibrate violently!") + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 75, 1) + spawn(5 SECONDS) + if(holder && holder.my_atom) + var/turf/simulated/T = get_turf(holder.my_atom) + if(!istype(T)) + return + + for(var/turf/simulated/target_turf in view(2, T)) + target_turf.assume_gas("volatile_fuel", 33, 1500+T0C) + target_turf.assume_gas("oxygen", 66, 1500+T0C) + spawn(0) + target_turf.hotspot_expose(1500+T0C, 400) + + playsound(T, 'sound/effects/phasein.ogg', 75, 1) + ..() + + +// ***************** +// * Yellow slimes * +// ***************** + +/obj/item/slime_extract/yellow + name = "yellow slime extract" + icon_state = "yellow slime extract" + description_info = "This extract will create a special 10k capacity power cell that self recharges slowly over time, when injected with phoron. \ + When injected with blood, it will create a glob of slime which glows brightly. If injected with water, it will emit a strong EMP, after a five second delay." + +/datum/chemical_reaction/slime/yellow_emp + name = "Slime EMP" + id = "m_emp" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/yellow + +/datum/chemical_reaction/slime/yellow_emp/on_reaction(var/datum/reagents/holder) + log_and_message_admins("Yellow extract reaction (emp) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") + holder.my_atom.visible_message("\The [src] begins to vibrate violently!") + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 75, 1) + spawn(5 SECONDS) + if(holder && holder.my_atom) + empulse(get_turf(holder.my_atom), 2, 4, 7, 10) // As strong as a normal EMP grenade. + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 75, 1) + ..() + + +/datum/chemical_reaction/slime/yellow_battery + name = "Slime Cell" + id = "m_cell" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/yellow + +/datum/chemical_reaction/slime/yellow_battery/on_reaction(var/datum/reagents/holder) + new /obj/item/weapon/cell/slime(get_turf(holder.my_atom)) + ..() + + +/datum/chemical_reaction/slime/yellow_flashlight + name = "Slime Flashlight" + id = "m_flashlight" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/yellow + +/datum/chemical_reaction/slime/yellow_flashlight/on_reaction(var/datum/reagents/holder) + new /obj/item/device/flashlight/slime(get_turf(holder.my_atom)) + ..() + +// *************** +// * Gold slimes * +// *************** + +/obj/item/slime_extract/gold + name = "gold slime extract" + icon_state = "gold slime extract" + description_info = "This extract will create 5u liquid gold when injected with phoron." + + +/datum/chemical_reaction/slime/gold_gold + name = "Slime Gold" + id = "m_gold" + result = "gold" + required_reagents = list("phoron" = 5) + result_amount = 5 + required = /obj/item/slime_extract/gold + + +// ***************** +// * Silver slimes * +// ***************** + +/obj/item/slime_extract/silver + name = "silver slime extract" + icon_state = "silver slime extract" + description_info = "This extract will create 5u liquid silver when injected with phoron." + + +/datum/chemical_reaction/slime/silver_silver + name = "Slime Silver" + id = "m_silver" + result = "silver" + required_reagents = list("phoron" = 5) + result_amount = 5 + required = /obj/item/slime_extract/silver + + +// ********************** +// * Dark Purple slimes * +// ********************** + + +/obj/item/slime_extract/dark_purple + name = "dark purple slime extract" + icon_state = "dark purple slime extract" + description_info = "This extract will create 40u liquid phoron when injected with water." + + +/datum/chemical_reaction/slime/dark_purple_phoron + name = "Slime Phoron" + id = "m_phoron_harvest" + result = "phoron" + required_reagents = list("water" = 5) + result_amount = REAGENTS_PER_SHEET * 2 + required = /obj/item/slime_extract/dark_purple + + +// ******************** +// * Dark Blue slimes * +// ******************** + + +/obj/item/slime_extract/dark_blue + name = "dark blue slime extract" + icon_state = "dark blue slime extract" + description_info = "This extract will massively lower the temperature of the surrounding atmosphere when injected with phoron. \ + Slimes will suffer massive harm from the cold snap and most colors will die instantly. Other entities are also chilled, however \ + cold-resistant armor like winter coats can protect from this. Note that the user is not immune to the extract's effects." + + +/datum/chemical_reaction/slime/dark_blue_cold_snap + name = "Slime Cold Snap" + id = "m_cold_snap" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/dark_blue + +// This iterates over a ZAS zone's contents, so that things seperated in other zones aren't subjected to the temperature drop. +/datum/chemical_reaction/slime/dark_blue_cold_snap/on_reaction(var/datum/reagents/holder) + var/turf/simulated/T = get_turf(holder.my_atom) + if(!T) // Nullspace lacks zones. + return + + if(!istype(T)) + return + + var/zone/Z = T.zone + if(!Z) // Paranoid. + return + + log_and_message_admins("Dark Blue extract reaction (cold snap) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") + + var/list/nearby_things = view(T) + + // Hurt mobs. + for(var/mob/living/L in nearby_things) + var/turf/simulated/their_turf = get_turf(L) + if(!istype(their_turf)) // Not simulated. + continue + + if(!(their_turf in Z.contents)) // Not in the same zone. + continue + + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = L + if(S.cold_damage_per_tick <= 0) // Immune to cold. + to_chat(S, "A chill is felt around you, however it cannot harm you.") + continue + if(S.client) // Don't instantly kill player slimes. + to_chat(S, "You feel your body crystalize as an intense chill overwhelms you!") + S.adjustToxLoss(S.cold_damage_per_tick * 2) + else + S.adjustToxLoss(S.cold_damage_per_tick * 5) // Metal slimes can survive this 'slime nuke'. + continue + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + var/protection = H.get_cold_protection() + + if(protection < 1) + var/cold_factor = abs(protection - 1) + H.bodytemperature = between(50, (H.bodytemperature - ((H.bodytemperature - 50) * cold_factor) ), H.bodytemperature) + + if(protection < 0.7) + to_chat(L, "A chilling wave of cold overwhelms you!") + else + to_chat(L, "A chilling wave of cold passes by you, as your armor protects you from it.") + continue + + // Now make it very cold. + var/datum/gas_mixture/env = T.return_air() + if(env) + // This is most likely physically impossible but when has that stopped slimes before? + env.add_thermal_energy(-10 * 1000 * 1000) // For a moderately sized room this doesn't actually lower it that much. + + playsound(T, 'sound/effects/phasein.ogg', 75, 1) + + ..() + + +// ************** +// * Red slimes * +// ************** + +/obj/item/slime_extract/red + name = "red slime extract" + icon_state = "red slime extract" + description_info = "This extract will create a slime mutator agent when injected with phoron, which increases a slime's odds of mutating \ + into a different color when reproducing by 12%. Injecting with blood causes all slimes that can see the user to enrage, becoming very violent and \ + out of control." + + +/datum/chemical_reaction/slime/red_enrage + name = "Slime Enrage" + id = "m_enrage" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/red + +/datum/chemical_reaction/slime/red_enrage/on_reaction(var/datum/reagents/holder) + for(var/mob/living/simple_animal/slime/S in view(get_turf(holder.my_atom))) + if(S.stat || S.docile || S.rabid) + continue + + if(S.client) // Player slimes always have free will. + to_chat(S, "An intense wave of rage almost overcomes you, but you remain in control of yourself.") + continue + + S.enrage() + + log_and_message_admins("Red extract reaction (enrage) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 75, 1) + ..() + + + +/datum/chemical_reaction/slime/red_mutation + name = "Slime Mutation" + id = "m_mutation" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/red + +/datum/chemical_reaction/slime/red_mutation/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/mutator(get_turf(holder.my_atom)) + ..() + +// *************** +// * Green slime * +// *************** + +/obj/item/slime_extract/green + name = "green slime extract" + icon_state = "green slime extract" + description_info = "This extract will create 5u of liquid uranium when injected with phoron." + +/datum/chemical_reaction/slime/green_uranium + name = "Slime Uranium" + id = "m_uranium" + result = "uranium" + required_reagents = list("phoron" = 5) + result_amount = 5 + required = /obj/item/slime_extract/green + + +// *************** +// * Pink slimes * +// *************** + +/obj/item/slime_extract/pink + name = "pink slime extract" + icon_state = "pink slime extract" + description_info = "This extract will create 20u of blood clotting agent if injected with blood. It can also create 20u of bone binding agent if injected \ + with phoron. When injected with water, it will create an organ-mending agent. The slime medications have a very low threshold for overdosage, however." + + +/datum/chemical_reaction/slime/pink_clotting + name = "Slime Clotting Med" + id = "m_clotting" + result = "slime_bleed_fixer" + required_reagents = list("blood" = 5) + result_amount = 30 + required = /obj/item/slime_extract/pink + + +/datum/chemical_reaction/slime/pink_bone_fix + name = "Slime Bone Med" + id = "m_bone_fixer" + result = "slime_bone_fixer" + required_reagents = list("phoron" = 5) + result_amount = 30 + required = /obj/item/slime_extract/pink + + +/datum/chemical_reaction/slime/pink_organ_fix + name = "Slime Organ Med" + id = "m_organ_fixer" + result = "slime_organ_fixer" + required_reagents = list("water" = 5) + result_amount = 30 + required = /obj/item/slime_extract/pink + + +/datum/reagent/myelamine/slime + name = "Agent A" + id = "slime_bleed_fixer" + description = "A slimy liquid which appears to rapidly clot internal hemorrhages by increasing the effectiveness of platelets at low quantities. Toxic in high quantities." + taste_description = "slime" + overdose = 5 + +/datum/reagent/osteodaxon/slime + name = "Agent B" + id = "slime_bone_fixer" + description = "A slimy liquid which can be used to heal bone fractures at low quantities. Toxic in high quantities." + taste_description = "slime" + overdose = 5 + +/datum/reagent/peridaxon/slime + name = "Agent C" + id = "slime_organ_fixer" + description = "A slimy liquid which is used to encourage recovery of internal organs and nervous systems in low quantities. Toxic in high quantities." + taste_description = "slime" + overdose = 5 + + +// ************** +// * Oil slimes * +// ************** + +/obj/item/slime_extract/oil + name = "oil slime extract" + icon_state = "oil slime extract" + description_info = "This extract cause a moderately sized delayed explosion if injected with phoron. The delay is five seconds. Extract enhancers will \ + increase the power of the explosion instead of allowing for multiple explosions." + + +/datum/chemical_reaction/slime/oil_griff + name = "Slime Explosion" + id = "m_boom" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/oil + + +/datum/chemical_reaction/slime/oil_griff/on_reaction(var/datum/reagents/holder) + ..() + var/obj/item/slime_extract/E = holder.my_atom + var/power = 1 + if(E.enhanced) + power++ + E.uses = 0 + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 75, 1) + holder.my_atom.visible_message("\The [holder.my_atom] begins to vibrate violently!") + log_and_message_admins("Oil extract reaction (explosion) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") + + spawn(5 SECONDS) + if(holder && holder.my_atom) + explosion(get_turf(holder.my_atom), 1 * power, 3 * power, 6 * power) + + if(holder && holder.my_atom) // Explosion may or may not have deleted the extract. + qdel(holder.my_atom) + +// ******************** +// * Bluespace slimes * +// ******************** + +/obj/item/slime_extract/bluespace + name = "bluespace slime extract" + icon_state = "bluespace slime extract" + description_info = "This extract creates slime crystals. When injected with water, it creates five 'lesser' slime crystals, which allow for limited \ + short ranged, random teleporting. When injected with phoron, it creates one 'greater' slime crystal, which allows for a one time precise teleport to \ + a specific area." + +/datum/chemical_reaction/slime/bluespace_lesser + name = "Slime Lesser Tele" + id = "m_tele_lesser" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/bluespace + +/datum/chemical_reaction/slime/bluespace_lesser/on_reaction(var/datum/reagents/holder) + for(var/i = 1 to 5) + new /obj/item/slime_crystal(get_turf(holder.my_atom)) + ..() + +/datum/chemical_reaction/slime/bluespace_greater + name = "Slime Greater Tele" + id = "m_tele_lesser" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/bluespace + +/datum/chemical_reaction/slime/bluespace_greater/on_reaction(var/datum/reagents/holder) + new /obj/item/weapon/disposable_teleporter/slime(get_turf(holder.my_atom)) + ..() + +// ******************* +// * Cerulean slimes * +// ******************* + +/obj/item/slime_extract/cerulean + name = "cerulean slime extract" + icon_state = "cerulean slime extract" + description_info = "This extract creates a slime extract enhancer agent, when injected with phoron. The agent allows an extract to have more \ + 'charges' before it goes inert." + + +/datum/chemical_reaction/slime/cerulean_enhancer + name = "Slime Enhancer" + id = "m_enhancer" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/cerulean + +/datum/chemical_reaction/slime/cerulean_enhance/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/enhancer(get_turf(holder.my_atom)) + ..() + +// **************** +// * Amber slimes * +// **************** + +/obj/item/slime_extract/amber + name = "amber slime extract" + icon_state = "amber slime extract" + description_info = "This extract creates a slime feeding agent when injected with phoron, which will instantly feed the slime and make it reproduce. When \ + injected with water, it will create a very delicious and filling product." + + +/datum/chemical_reaction/slime/amber_slimefood + name = "Slime Feeding" + id = "m_slime_food" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/amber + +/datum/chemical_reaction/slime/amber_slimefood/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/feeding(get_turf(holder.my_atom)) + ..() + + +/datum/chemical_reaction/slime/amber_peoplefood + name = "Slime Food" + id = "m_people_food" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/amber + +/datum/chemical_reaction/slime/amber_peoplefood/on_reaction(var/datum/reagents/holder) + new /obj/item/weapon/reagent_containers/food/snacks/slime(get_turf(holder.my_atom)) + ..() + + +// ******************* +// * Sapphire slimes * +// ******************* +// Renamed from adamantine. + +/obj/item/slime_extract/sapphire + name = "sapphire slime extract" + icon_state = "sapphire slime extract" + description_info = "This extract will create one 'slime cube' when injected with phoron. The slime cube is needed to create a Promethean." + + +/datum/chemical_reaction/slime/sapphire_promethean + name = "Slime Promethean" + id = "m_promethean" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/sapphire + +/datum/chemical_reaction/slime/sapphire_promethean/on_reaction(var/datum/reagents/holder) + new /obj/item/slime_cube(get_turf(holder.my_atom)) + ..() + +// *************** +// * Ruby slimes * +// *************** + +/obj/item/slime_extract/ruby + name = "ruby slime extract" + icon_state = "ruby slime extract" + description_info = "This extract will cause all entities close to the extract to become stronger for ten minutes, when injected with phoron. \ + When injected with blood, makes a slime loyalty agent which will make the slime fight other dangerous entities but not station crew." + +/datum/chemical_reaction/slime/ruby_swole + name = "Slime Strength" + id = "m_strength" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/ruby + +/datum/chemical_reaction/slime/ruby_swole/on_reaction(var/datum/reagents/holder) + for(var/mob/living/L in range(1, holder.my_atom)) + L.add_modifier(/datum/modifier/slime_strength, 10 MINUTES, src) + ..() + + +/datum/modifier/slime_strength + name = "slime strength" + desc = "You feel much stronger than usual." + mob_overlay_state = "pink_sparkles" + + on_created_text = "Twinkling spores of goo surround you. It makes you feel stronger and more robust." + on_expired_text = "The spores of goo have faded, and you feel your strength returning to what it was before." + stacks = MODIFIER_STACK_EXTEND + + max_health_flat = 50 + outgoing_melee_damage_percent = 2 + disable_duration_percent = 0.5 + incoming_damage_percent = 0.75 + + +/datum/chemical_reaction/slime/ruby_loyalty + name = "Slime Loyalty" + id = "m_strength" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/ruby + +/datum/chemical_reaction/slime/ruby_loyalty/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/loyalty(get_turf(holder.my_atom)) + ..() + + +// ***************** +// * Emerald slime * +// ***************** + +/obj/item/slime_extract/emerald + name = "emerald slime extract" + icon_state = "emerald slime extract" + description_info = "This extract will cause all entities close to the extract to become more agile for ten minutes, when injected with phoron." + +/datum/chemical_reaction/slime/emerald_fast + name = "Slime Agility" + id = "m_agility" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/emerald + +/datum/chemical_reaction/slime/emerald_fast/on_reaction(var/datum/reagents/holder) + for(var/mob/living/L in range(1, holder.my_atom)) + L.add_modifier(/datum/modifier/slime_agility, 10 MINUTES, src) + ..() + +/datum/modifier/slime_agility + name = "slime agility" + desc = "You feel much faster than usual." + mob_overlay_state = "green_sparkles" + + on_created_text = "Twinkling spores of goo surround you. It makes you feel fast and more agile." + on_expired_text = "The spores of goo have faded, and you feel your agility returning to what it was before." + stacks = MODIFIER_STACK_EXTEND + + evasion = 2 + slowdown = -1 + + +// ********************* +// * Light Pink slimes * +// ********************* + +/obj/item/slime_extract/light_pink + name = "light pink slime extract" + icon_state = "light pink slime extract" + description_info = "This extract creates a slime docility agent when injected with water, which will make the slime be harmless forever. \ + When injected with phoron, it instead creates a slime friendship agent, which makes the slime consider the user their ally. The agent \ + might be useful on other specimens as well." + +/datum/chemical_reaction/slime/light_pink_docility + name = "Slime Docility" + id = "m_docile" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/light_pink + +/datum/chemical_reaction/slime/light_pink_docility/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/docility(get_turf(holder.my_atom)) + ..() + + +/datum/chemical_reaction/slime/light_pink_friendship + name = "Slime Friendship" + id = "m_friendship" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/light_pink + +/datum/chemical_reaction/slime/light_pink_friendship/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/friendship(get_turf(holder.my_atom)) + ..() + + +// ****************** +// * Rainbow slimes * +// ****************** + + +/obj/item/slime_extract/rainbow + name = "rainbow slime extract" + icon_state = "rainbow slime extract" + description_info = "This extract will create a baby slime of a random color when injected with phoron, or a slime unification agent if injected with water, \ + which makes slimes stop attacking other slime colors." + + +/datum/chemical_reaction/slime/rainbow_random_slime + name = "Slime Random Slime" + id = "m_rng_slime" + required_reagents = list("phoron" = 5) + result_amount = 1 + required = /obj/item/slime_extract/rainbow + +/datum/chemical_reaction/slime/rainbow_random_slime/on_reaction(var/datum/reagents/holder) + var/list/forbidden_types = list( + /mob/living/simple_animal/slime/rainbow/kendrick + ) + var/list/potential_types = typesof(/mob/living/simple_animal/slime) - forbidden_types + var/slime_type = pick(potential_types) + new slime_type(get_turf(holder.my_atom)) + ..() + + +/datum/chemical_reaction/slime/rainbow_unity + name = "Slime Unity" + id = "m_unity" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/rainbow + +/datum/chemical_reaction/slime/rainbow_unity/on_reaction(var/datum/reagents/holder) + new /obj/item/slimepotion/unity(get_turf(holder.my_atom)) + ..() + + + diff --git a/code/modules/xenobio/items/slime_objects.dm b/code/modules/xenobio/items/slime_objects.dm new file mode 100644 index 0000000000..03b048a49b --- /dev/null +++ b/code/modules/xenobio/items/slime_objects.dm @@ -0,0 +1,128 @@ +// Slime cube lives here. Makes Prometheans. +/obj/item/slime_cube + name = "slimy monkey cube" + desc = "Wonder what might come out of this." + icon = 'icons/mob/slime2.dmi' + icon_state = "slime cube" + description_info = "Use in your hand to attempt to create a Promethean. It functions similarly to a positronic brain, in that a ghost is needed to become the Promethean." + var/searching = 0 + +/obj/item/slime_cube/attack_self(mob/user as mob) + if(!searching) + user << "You stare at the slimy cube, watching as some activity occurs." + icon_state = "slime cube active" + searching = 1 + request_player() + spawn(60 SECONDS) + reset_search() + +// Sometime down the road it would be great to make all of these 'ask ghosts if they want to be X' procs into a generic datum. +/obj/item/slime_cube/proc/request_player() + for(var/mob/observer/dead/O in player_list) + if(!O.MayRespawn()) + continue + if(O.client) + if(O.client.prefs.be_special & BE_ALIEN) + question(O.client) + +/obj/item/slime_cube/proc/question(var/client/C) + spawn(0) + if(!C) + return + var/response = alert(C, "Someone is requesting a soul for a promethean. Would you like to play as one?", "Promethean request", "Yes", "No", "Never for this round") + if(response == "Yes") + response = alert(C, "Are you sure you want to play as a promethean?", "Promethean request", "Yes", "No") + if(!C || 2 == searching) + return //handle logouts that happen whilst the alert is waiting for a response, and responses issued after a brain has been located. + if(response == "Yes") + transfer_personality(C.mob) + else if(response == "Never for this round") + C.prefs.be_special ^= BE_ALIEN + +/obj/item/slime_cube/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. + icon_state = "slime cube" + if(searching == 1) + searching = 0 + var/turf/T = get_turf_or_move(src.loc) + for (var/mob/M in viewers(T)) + M.show_message("The activity in the cube dies down. Maybe it will spark another time.") + +/obj/item/slime_cube/proc/transfer_personality(var/mob/candidate) + announce_ghost_joinleave(candidate, 0, "They are a promethean now.") + src.searching = 2 + var/mob/living/carbon/human/S = new(get_turf(src)) + S.client = candidate.client + to_chat(S, "You are a promethean, brought into existence on [station_name()].") + S.mind.assigned_role = "Promethean" + S.set_species("Promethean") + S.shapeshifter_set_colour("#2398FF") + visible_message("The monkey cube suddenly takes the shape of a humanoid!") + var/newname = sanitize(input(S, "You are a Promethean. Would you like to change your name to something else?", "Name change") as null|text, MAX_NAME_LEN) + if(newname) + S.real_name = newname + S.name = S.real_name + S.dna.real_name = newname + if(S.mind) + S.mind.name = S.name + qdel(src) + + + +// More or less functionally identical to the telecrystal tele. +/obj/item/slime_crystal + name = "lesser slime cystal" + desc = "A small, gooy crystal." + description_info = "This will teleport you to a mostly 'safe' tile when used in-hand, consuming the slime crystal. \ + It can also teleport someone else, by throwing it at them or attacking them with it." + icon = 'icons/obj/objects.dmi' + icon_state = "slime_crystal_small" + w_class = ITEMSIZE_TINY + origin_tech = list(TECH_MAGNETS = 6, TECH_BLUESPACE = 3) + force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things + +/obj/item/slime_crystal/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + target.visible_message("\The [target] has been teleported with \the [src] by \the [user]!") + safe_blink(target, 14) + qdel(src) + +/obj/item/slime_crystal/attack_self(mob/user) + user.visible_message("\The [user] teleports themselves with \the [src]!") + safe_blink(user, 14) + qdel(src) + +/obj/item/slime_crystal/throw_impact(atom/movable/AM) + if(!istype(AM)) + return + + if(AM.anchored) + return + + AM.visible_message("\The [AM] has been teleported with \the [src]!") + safe_blink(AM, 14) + qdel(src) + +/obj/item/weapon/disposable_teleporter/slime + name = "greater slime crystal" + desc = "A larger, gooier crystal." + description_info = "This will teleport you to a specific area once, when used in-hand." + icon = 'icons/obj/objects.dmi' + icon_state = "slime_crystal_large" + uses = 1 + w_class = ITEMSIZE_SMALL + origin_tech = list(TECH_MAGNETS = 5, TECH_BLUESPACE = 4) + + + +// Very filling food. +/obj/item/weapon/reagent_containers/food/snacks/slime + name = "slimy clump" + desc = "A glob of slime that is thick as honey. For the brave Xenobiologist." + icon_state = "honeycomb" + filling_color = "#FFBB00" + center_of_mass = list("x"=17, "y"=10) + nutriment_amt = 25 // Very filling. + nutriment_desc = list("slime" = 10, "sweetness" = 10, "bliss" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/slime/New() + ..() + bitesize = 5 \ No newline at end of file diff --git a/code/modules/xenobio/items/slimepotions.dm b/code/modules/xenobio/items/slimepotions.dm new file mode 100644 index 0000000000..df03fdab6f --- /dev/null +++ b/code/modules/xenobio/items/slimepotions.dm @@ -0,0 +1,255 @@ +// These things get applied to slimes to do things. + +/obj/item/slimepotion + name = "slime agent" + desc = "A flask containing strange, mysterious substances excreted by a slime." + icon = 'icons/obj/chemical.dmi' + w_class = ITEMSIZE_TINY + origin_tech = list(TECH_BIO = 4) + +// This is actually applied to an extract, so no attack() overriding needed. +/obj/item/slimepotion/enhancer + name = "extract enhancer agent" + desc = "A potent chemical mix that will give a slime extract an additional two uses." + icon_state = "potpurple" + description_info = "This will even work on inert slime extracts, if it wasn't enhanced before. Extracts enhanced cannot be enhanced again." + +// Makes slimes less likely to mutate. +/obj/item/slimepotion/stabilizer + name = "slime stabilizer agent" + desc = "A potent chemical mix that will reduce the chance of a slime mutating." + icon_state = "potcyan" + description_info = "The slime needs to be alive for this to work. It will reduce the chances of mutation by 15%." + +/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user) + if(!istype(M)) + to_chat(user, "The stabilizer only works on slimes!") + return ..() + if(M.stat == DEAD) + to_chat(user, "The slime is dead!") + return ..() + if(M.mutation_chance == 0) + to_chat(user, "The slime already has no chance of mutating!") + return ..() + + to_chat(user, "You feed the slime the stabilizer. It is now less likely to mutate.") + M.mutation_chance = between(0, M.mutation_chance - 15, 100) + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + + +// The opposite, makes the slime more likely to mutate. +/obj/item/slimepotion/mutator + name = "slime mutator agent" + desc = "A potent chemical mix that will increase the chance of a slime mutating." + description_info = "The slime needs to be alive for this to work. It will increase the chances of mutation by 12%." + icon_state = "potred" + +/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user) + if(!istype(M)) + to_chat(user, "The mutator only works on slimes!") + return ..() + if(M.stat == DEAD) + to_chat(user, "The slime is dead!") + return ..() + if(M.mutation_chance == 100) + to_chat(user, "The slime is already guaranteed to mutate!") + return ..() + + to_chat(user, "You feed the slime the mutator. It is now more likely to mutate.") + M.mutation_chance = between(0, M.mutation_chance + 12, 100) + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + + +// Makes the slime friendly forever. +/obj/item/slimepotion/docility + name = "docility agent" + desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame. It might also work on other creatures?" + icon_state = "potlightpink" + description_info = "The target needs to be alive, not already passive, and have animal-like intelligence." + +/obj/item/slimepotion/docility/attack(mob/living/simple_animal/M, mob/user) + if(!istype(M)) + to_chat(user, "The agent only works on creatures!") + return ..() + if(M.stat == DEAD) + to_chat(user, "\The [M] is dead!") + return ..() + + // Slimes. + if(istype(M, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = M + if(S.docile) + to_chat(user, "The slime is already docile!") + return ..() + + S.pacify() + S.nutrition = 700 + to_chat(M, "You absorb the agent and feel your intense desire to feed melt away.") + to_chat(user, "You feed the slime the agent, removing its hunger and calming it.") + + // Simple Animals. + else if(istype(M, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = M + if(SA.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [SA] is too intellient for this to affect them.") + return ..() + if(!SA.hostile) + to_chat(user, "\The [SA] is already passive!") + return ..() + + SA.hostile = FALSE + to_chat(M, "You consume the agent and feel a serene sense of peace.") + to_chat(user, "You feed \the [SA] the agent, calming it.") + + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + var/newname = copytext(sanitize(input(user, "Would you like to give \the [M] a name?", "Name your new pet", M.name) as null|text),1,MAX_NAME_LEN) + + if(newname) + M.name = newname + M.real_name = newname + qdel(src) + + +// Makes slimes make more extracts. +/obj/item/slimepotion/steroid + name = "slime steroid agent" + desc = "A potent chemical mix that will increase the amount of extracts obtained from harvesting a slime." + description_info = "The slime needs to be alive and not an adult for this to work. It will increase the amount of extracts gained by one, up to a max of five per slime. \ + Extra extracts are not passed down to offspring when reproducing." + icon_state = "potpurple" + +/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user) + if(!istype(M)) + to_chat(user, "The steroid only works on slimes!") + return ..() + if(M.stat == DEAD) + to_chat(user, "The slime is dead!") + return ..() + if(M.is_adult) //Can't steroidify adults + to_chat(user, "Only baby slimes can use the steroid!") + return ..() + if(M.cores >= 5) + to_chat(user, "The slime already has the maximum amount of extract!") + return ..() + + to_chat(user, "You feed the slime the steroid. It will now produce one more extract.") + M.cores++ + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + + +// Makes slimes not try to murder other slime colors. +/obj/item/slimepotion/unity + name = "slime unity agent" + desc = "A potent chemical mix that makes the slime feel and be seen as all the colors at once, and as a result not be considered an enemy to any other color." + description_info = "The slime needs to be alive for this to work. Slimes unified will not attack or be attacked by other colored slimes, and this will \ + carry over to offspring when reproducing." + icon_state = "potpink" + +/obj/item/slimepotion/unity/attack(mob/living/simple_animal/slime/M, mob/user) + if(!istype(M)) + to_chat(user, "The agent only works on slimes!") + return ..() + if(M.stat == DEAD) + to_chat(user, "The slime is dead!") + return ..() + if(M.unity == TRUE) + to_chat(user, "The slime is already unified!") + return ..() + + to_chat(user, "You feed the slime the agent. It will now be friendly to all other slimes.") + to_chat(M, "\The [user] feeds you \the [src], and you suspect that all the other slimes will be \ + your friends, at least if you don't attack them first.") + M.unify() + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + +// Makes slimes not kill (most) humanoids but still fight spiders/carp/bears/etc. +/obj/item/slimepotion/loyalty + name = "slime loyalty agent" + desc = "A potent chemical mix that makes an animal deeply loyal to the species of whoever applies this, and will attack threats to them." + description_info = "The slime or other animal needs to be alive for this to work. The slime this is applied to will have their 'faction' change to \ + the user's faction, which means the slime will attack things that are hostile to the user's faction, such as carp, spiders, and other slimes." + icon_state = "potred" + +/obj/item/slimepotion/loyalty/attack(mob/living/simple_animal/M, mob/user) + if(!istype(M)) + to_chat(user, "The agent only works on animals!") + return ..() + if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [M] is too intellient for this to affect them.") + return ..() + if(M.stat == DEAD) + to_chat(user, "The animal is dead!") + return ..() + if(M.faction == user.faction) + to_chat(user, "\The [M] is already loyal to your species!") + return ..() + + to_chat(user, "You feed \the [M] the agent. It will now try to murder things that want to murder you instead.") + to_chat(M, "\The [user] feeds you \the [src], and feel that the others will regard you as an outsider now.") + M.faction = user.faction + M.attack_same = FALSE + M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + + +// User befriends the slime with this. +/obj/item/slimepotion/friendship + name = "slime friendship agent" + desc = "A potent chemical mix that makes an animal deeply loyal to the the specific entity which feeds them this agent." + description_info = "The slime or other animal needs to be alive for this to work. The slime this is applied to will consider the user \ + their 'friend', and will never attack them. This might also work on other things besides slimes." + icon_state = "potlightpink" + +/obj/item/slimepotion/friendship/attack(mob/living/simple_animal/M, mob/user) + if(!istype(M)) + to_chat(user, "The agent only works on animals!") + return ..() + if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [M] is too intellient for this to affect them.") + return ..() + if(M.stat == DEAD) + to_chat(user, "The animal is dead!") + return ..() + if(user in M.friends) + to_chat(user, "\The [M] is already loyal to you!") + return ..() + + to_chat(user, "You feed \the [M] the agent. It will now be your best friend.") + to_chat(M, "\The [user] feeds you \the [src], and feel that \the [user] wants to be best friends with you.") + if(isslime(M)) + var/mob/living/simple_animal/slime/S = M + S.befriend(user) + else + M.friends.Add(user) + M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) + + +// Feeds the slime instantly. +/obj/item/slimepotion/feeding + name = "slime feeding agent" + desc = "A potent chemical mix that will instantly sediate the slime." + description_info = "The slime needs to be alive for this to work. It will instantly grow the slime enough to reproduce." + icon_state = "potyellow" + +/obj/item/slimepotion/feeding/attack(mob/living/simple_animal/slime/M, mob/user) + if(!istype(M)) + to_chat(user, "The mutator only works on slimes!") + return ..() + if(M.stat == DEAD) + to_chat(user, "The slime is dead!") + return ..() + + to_chat(user, "You feed the slime the feeding agent. It will now instantly reproduce.") + M.make_adult() + M.amount_grown = 10 + M.reproduce() + playsound(src, 'sound/effects/bubbles.ogg', 50, 1) + qdel(src) diff --git a/code/modules/xenobio/items/weapons.dm b/code/modules/xenobio/items/weapons.dm new file mode 100644 index 0000000000..3fdc758f84 --- /dev/null +++ b/code/modules/xenobio/items/weapons.dm @@ -0,0 +1,105 @@ +/obj/item/weapon/melee/baton/slime + name = "slimebaton" + desc = "A modified stun baton designed to stun slimes and other lesser xeno lifeforms for handling." + icon_state = "slimebaton" + item_state = "slimebaton" + slot_flags = SLOT_BELT + force = 9 + lightcolor = "#33CCFF" + origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 4) + agonyforce = 10 //It's not supposed to be great at stunning human beings. + hitcost = 48 //Less zap for less cost + description_info = "This baton will stun a slime or other lesser lifeform for about five seconds, if hit with it while on." + +/obj/item/weapon/melee/baton/slime/attack(mob/M, mob/user, hit_zone) + // Simple Animals. + if(istype(M, /mob/living/simple_animal/slime) && status) + var/mob/living/simple_animal/SA = M + if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies. + SA.Weaken(5) + if(isslime(SA)) + var/mob/living/simple_animal/slime/S = SA + S.adjust_discipline(3) + + // Prometheans. + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.name == "Promethean" && status) + var/agony_to_apply = 60 - agonyforce + H.apply_damage(agony_to_apply, HALLOSS) + ..() + +/obj/item/weapon/melee/baton/slime/loaded/New() + ..() + bcell = new/obj/item/weapon/cell/device(src) + update_icon() + return + + +// Research borg's version +/obj/item/weapon/melee/baton/slime/robot + hitcost = 200 + +/obj/item/weapon/melee/baton/slime/robot/attack_self(mob/user) + //try to find our power cell + var/mob/living/silicon/robot/R = loc + if (istype(R)) + bcell = R.cell + return ..() + +/obj/item/weapon/melee/baton/slime/robot/attackby(obj/item/weapon/W, mob/user) + return + + +// Xeno stun gun + projectile +/obj/item/weapon/gun/energy/taser/xeno + name = "xeno taser gun" + desc = "Straight out of NT's testing laboratories, this small gun is used to subdue non-humanoid xeno life forms. \ + While marketed towards handling slimes, it may be useful for other creatures." + desc = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \ + xeno lifeforms at a distance. It is ineffective at stunning larger lifeforms such as humanoids." + icon_state = "taserold" + fire_sound = 'sound/weapons/taser2.ogg' + charge_cost = 120 // Twice as many shots. + projectile_type = /obj/item/projectile/beam/stun/xeno + accuracy = 2 // Make it a bit easier to hit the slimes. + description_info = "This gun will stun a slime or other lesser lifeform for about two seconds, if hit with the projectile it fires." + +/obj/item/weapon/gun/energy/taser/xeno/robot // Borg version + self_recharge = 1 + use_external_power = 1 + recharge_time = 3 + + +/obj/item/projectile/beam/stun/xeno + icon_state = "omni" + agony = 4 + nodamage = TRUE + // For whatever reason the projectile qdels itself early if this is on, meaning on_hit() won't be called on prometheans. + // Probably for the best so that it doesn't harm the slime. + taser_effect = FALSE + + muzzle_type = /obj/effect/projectile/laser_omni/muzzle + tracer_type = /obj/effect/projectile/laser_omni/tracer + impact_type = /obj/effect/projectile/laser_omni/impact + +/obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0) + if(istype(target, /mob/living)) + var/mob/living/L = target + + // Simple Animals. + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/SA = L + if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies. + SA.Weaken(2) // Less powerful since its ranged, and therefore safer. + if(isslime(SA)) + var/mob/living/simple_animal/slime/S = SA + S.adjust_discipline(2) + + // Prometheans. + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.species && H.species.name == "Promethean") + var/agony_to_apply = 60 - agony + H.apply_damage(agony_to_apply, HALLOSS) + ..() \ No newline at end of file diff --git a/code/modules/xenobio/machinery/processor.dm b/code/modules/xenobio/machinery/processor.dm new file mode 100644 index 0000000000..56b7cee3bf --- /dev/null +++ b/code/modules/xenobio/machinery/processor.dm @@ -0,0 +1,118 @@ +// This is specifically for slimes since we don't have a 'normal' processor now. +// Feel free to rename it if that ever changes. + +/obj/machinery/processor + name = "slime processor" + desc = "An industrial grinder used to automate the process of slime core extraction. It can also recycle biomatter." + icon = 'icons/obj/kitchen.dmi' + icon_state = "processor1" + density = TRUE + anchored = TRUE + var/processing = FALSE // So I heard you like processing. + var/list/to_be_processed = list() + var/monkeys_recycled = 0 + description_info = "Clickdrag dead slimes or monkeys to it to insert them. It will make a new monkey cube for every four monkeys it processes." + +/obj/item/weapon/circuitboard/processor + name = T_BOARD("slime processor") + build_path = /obj/machinery/processor + origin_tech = list(TECH_DATA = 2, TECH_BIO = 2) + +/obj/machinery/processor/attack_hand(mob/living/user) + if(processing) + to_chat(user, "The processor is in the process of processing!") + return + if(to_be_processed.len) + spawn(1) + begin_processing() + else + to_chat(user, "The processor is empty.") + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + +// Verb to remove everything. +/obj/machinery/processor/verb/eject() + set category = "Object" + set name = "Eject Processor" + set src in oview(1) + + if(usr.stat || !usr.canmove || usr.restrained()) + return + empty() + add_fingerprint(usr) + return + +// Ejects all the things out of the machine. +/obj/machinery/processor/proc/empty() + for(var/atom/movable/AM in to_be_processed) + to_be_processed.Remove(AM) + AM.forceMove(get_turf(src)) + +// Ejects all the things out of the machine. +/obj/machinery/processor/proc/insert(var/atom/movable/AM, var/mob/living/user) + if(!Adjacent(AM)) + return + if(!can_insert(AM)) + to_chat(user, "\The [src] cannot process \the [AM] at this time.") + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + to_be_processed.Add(AM) + AM.forceMove(src) + visible_message("\the [user] places [AM] inside \the [src].") + +/obj/machinery/processor/proc/begin_processing() + if(processing) + return // Already doing it. + processing = TRUE + playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) + for(var/atom/movable/AM in to_be_processed) + extract(AM) + sleep(1 SECONDS) + + while(monkeys_recycled >= 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(src)) + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + monkeys_recycled -= 4 + sleep(1 SECOND) + + processing = FALSE + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + +/obj/machinery/processor/proc/extract(var/atom/movable/AM) + if(istype(AM, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = AM + while(S.cores) + new S.coretype(get_turf(src)) + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + S.cores-- + sleep(1 SECOND) + to_be_processed.Remove(S) + qdel(S) + + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/M = AM + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + to_be_processed.Remove(M) + qdel(M) + monkeys_recycled++ + sleep(1 SECOND) + +/obj/machinery/processor/proc/can_insert(var/atom/movable/AM) + if(istype(AM, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/S = AM + if(S.stat != DEAD) + return FALSE + return TRUE + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = AM + if(!istype(H.species, /datum/species/monkey)) + return FALSE + if(H.stat != DEAD) + return FALSE + return TRUE + return FALSE + +/obj/machinery/processor/MouseDrop_T(var/atom/movable/AM, var/mob/living/user) + if(user.stat || user.incapacitated(INCAPACITATION_DISABLED) || !istype(user)) + return + insert(AM, user) \ No newline at end of file diff --git a/code/modules/xenobio2/tools/slime_handling_tools.dm b/code/modules/xenobio2/tools/slime_handling_tools.dm index 050a97bc41..e69de29bb2 100644 --- a/code/modules/xenobio2/tools/slime_handling_tools.dm +++ b/code/modules/xenobio2/tools/slime_handling_tools.dm @@ -1,70 +0,0 @@ -/* What this file contains: - - * A specialized stun prod, for handling fiesty slimes - - * A specialized stun gun, for handling many fiesty slimes - - * A stun projectile for handling xenomorphs. - -*/ -/obj/item/weapon/melee/baton/slime - name = "slimebaton" - desc = "A modified stun baton designed to stun slimes for handling." - icon_state = "slimebaton" - item_state = "slimebaton" - slot_flags = SLOT_BELT - force = 9 - lightcolor = "#33CCFF" - origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 4) - agonyforce = 10 //It's not supposed to be great at stunning human beings. - var/stasisforce = 60 //How much stasis it does to slimes, and 1/3rd to non-slimes. - hitcost = 48 //Less zap for less cost - -/obj/item/weapon/melee/baton/slime/attack(mob/M, mob/user) - if(istype(M, /mob/living/simple_animal/xeno)) - var/mob/living/simple_animal/xeno/X = M - if(istype(M, /mob/living/simple_animal/xeno/slime)) - X.stasis += stasisforce - else - X.stasis += (stasisforce / 6) - ..() - -/obj/item/weapon/melee/baton/slime/loaded/New() - ..() - bcell = new/obj/item/weapon/cell/device(src) - update_icon() - return - - -// Xeno stun gun + projectile -/obj/item/weapon/gun/energy/taser/xeno - name = "xeno taser gun" - desc = "Straight out of NT's testing laboratories, this small gun is used to subdue non-humanoid xeno life forms. While marketed towards handling slimes, it may be useful for other creatures." - icon_state = "taserold" - fire_sound = 'sound/weapons/taser2.ogg' - projectile_type = /obj/item/projectile/beam/stun/xeno - -/obj/item/projectile/beam/stun/xeno - icon_state = "omni" - agony = 4 - var/stasisforce = 40 - - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact -/* -/obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0) - if(istype(target, /mob/living/simple_animal/xeno)) - world << "is xeno" - var/mob/living/simple_animal/xeno/X = target - world << "[target.name]" - if(istype(X, /mob/living/simple_animal/xeno/slime)) - world << "is slime" - X.stasis += stasisforce - else - world << "is not slime" - X.stasis += (stasisforce / 8) - else - world << "is not xeno" - ..() -*/ \ No newline at end of file diff --git a/code/world.dm b/code/world.dm index 9a031dda0f..9ef6abf8aa 100644 --- a/code/world.dm +++ b/code/world.dm @@ -76,9 +76,6 @@ var/global/datum/global_init/init = new () // Set up roundstart seed list. plant_controller = new() - // Set up roundstart gene masking - xenobio_controller = new() - // This is kinda important. Set up details of what the hell things are made of. populate_material_list() diff --git a/icons/mob/modifier_effects.dmi b/icons/mob/modifier_effects.dmi index e0fe0b1697c4e0b39333e4c7b09183348dd4dd3a..eca5286d9bacd4d48144f867490e4bf0607a9467 100644 GIT binary patch literal 14624 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 Z2}gx|QPWOoiTEo3)K#>UD;2HY{2w+}tEK<| literal 11981 zcmZ8{cOYEf*7g|$i7uk|5(LqOVUVaH2ohyRi{6ReM-oxOXi-A+-iaE$_g*JDF?x%h zLHH)Wd++<+_xoe^*=3!*ç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 QT37~*^h|WCbQ~i712Hohf&c&j diff --git a/icons/mob/slime2.dmi b/icons/mob/slime2.dmi index 33ef237cba47742e6bbe9e607185ed15a5747ff3..a0b605166547002c9c4bde4b194e2ed9f6e0c793 100644 GIT binary patch literal 32723 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 z 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 diff --git a/icons/mob/slimes.dmi b/icons/mob/slimes.dmi index f2da09ad8f7b773ff41ad83b7c1267ea79ddfa59..b452a1526d9e2a0387123af6c0b3802ae98f1df2 100644 GIT binary patch delta 19571 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 literal 923 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 literal 43357 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

$m&Yzkc@Q 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 literal 34092 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

*llpF^C! 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 diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 83e20f0af30bba16af41460fcebdbcaa8fe7d3dc..32827b2b811b7471ea7e840625950ca80b9870d0 100644 GIT binary patch delta 14970 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 BCUF1& diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 214428603e3e2e940b91ee4fbc6317cc24b55160..8cc8557888ce7614d37d06777f6f70c8fad7ee51 100644 GIT binary patch delta 55927 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 gU#rY6eG>G}+j!zY4CK`nfmsw_ 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 T{bCG4{irKzKd)3Y5B~oEbWn(T diff --git a/maps/example/example.dm b/maps/example/example.dm index a103a32625..46ee489d5a 100644 --- a/maps/example/example.dm +++ b/maps/example/example.dm @@ -1,11 +1,13 @@ #if !defined(USING_MAP_DATUM) - #include "example-1.dmm" - #include "example-2.dmm" +// #include "example-1.dmm" +// #include "example-2.dmm" + #include "xenobio_test.dmm" #include "example_defines.dm" - #include "example_elevator.dm" - #include "example_areas.dm" +// #include "example_elevator.dm" +// #include "example_areas.dm" + #define USING_MAP_DATUM /datum/map/example diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 9bc000a95d..ae027eeab8 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -4887,7 +4887,7 @@ "bPY" = (/obj/machinery/computer/aifixer,/obj/effect/floor_decal/corner/purple/full,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPZ" = (/obj/machinery/computer/robotics,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bQa" = (/obj/machinery/computer/mecha,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/ai_status_display{pixel_y = -32},/obj/machinery/camera/network/research{c_tag = "SCI - RD's Office"; dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) -"bQb" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_animal/slime/science,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) +"bQb" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_animal/slime/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bQc" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) "bQd" = (/obj/structure/table/standard,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/simulated/floor/tiled,/area/assembly/robotics) "bQe" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/pink{dir = 4},/turf/simulated/floor/tiled,/area/assembly/robotics) @@ -9879,7 +9879,7 @@ "dHZ" = (/turf/space,/area/skipjack_station/southeast_solars) "dIa" = (/turf/space,/area/syndicate_station/south) "dIb" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless,/area/solar/starboard) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm index bb133806a4..28d2dc5f94 100644 --- a/maps/northern_star/polaris-5.dmm +++ b/maps/northern_star/polaris-5.dmm @@ -273,7 +273,7 @@ "fm" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/light,/turf/simulated/floor/plating,/area/outpost/research/toxins_misc_lab) "fn" = (/obj/structure/table/standard,/obj/machinery/microwave,/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/research/toxins_misc_lab) "fo" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/wall/r_wall,/area/outpost/research/toxins_misc_lab) -"fp" = (/obj/machinery/xenobio2/manualinjector,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) +"fp" = (/obj,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fq" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fr" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/outpost/research/hallway/toxins_hallway) "fs" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/item/device/suit_cooling_unit,/turf/simulated/floor/plating,/area/outpost/research/hallway/toxins_hallway) @@ -299,17 +299,17 @@ "fM" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/outpost/research/xenobiology) "fO" = (/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) -"fP" = (/obj/machinery/xenobio/editor,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) +"fP" = (/obj,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fQ" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/outpost/research/hallway/toxins_hallway) "fR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "toxins_airlock_exterior"; locked = 1; name = "Toxins External Airlock"; req_access = list(7)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxins_airlock_control"; name = "Toxins Access Button"; pixel_x = 26; pixel_y = 0; req_access = list(7)},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway) "fS" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "fT" = (/obj/structure/sink{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "fU" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) -"fV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenobiology Fore Port"; dir = 2},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/computer/xenobio2,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) +"fV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenobiology Fore Port"; dir = 2},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "fW" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/button/remote/blast_door{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "fX" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "fY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) -"fZ" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/computer/xenobio2,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) +"fZ" = (/obj/effect/floor_decal/industrial/warning,/obj,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "ga" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/obj/machinery/button/remote/blast_door{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "gb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "gc" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenobiology Fore Starboard"; dir = 2},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) @@ -321,8 +321,8 @@ "gi" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/mine/explored) "gj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/xenobiology) "gk" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) -"gl" = (/obj/machinery/slime/extractor,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) -"gm" = (/obj/machinery/computer/xenobio2,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) +"gl" = (/obj,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) +"gm" = (/obj,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "gn" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "go" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "gp" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) @@ -370,7 +370,7 @@ "hf" = (/obj/machinery/shower{pixel_y = 3},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/freezer,/area/outpost/research/xenobiology) "hg" = (/obj/structure/table/standard,/obj/machinery/reagentgrinder,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "hh" = (/obj/machinery/smartfridge/secure/extract,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) -"hi" = (/obj/machinery/slime/replicator,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) +"hi" = (/obj,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "hj" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "hk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "hl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/outpost/research/xenobiology) @@ -445,7 +445,7 @@ "iC" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "iD" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/research/hallway/catwalk) "iE" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) -"iF" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/melee/baton/slime/loaded,/obj/item/device/analyzer/xeno_analyzer,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) +"iF" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/melee/baton/slime/loaded,/obj,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) "iG" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "iH" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "iI" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 0; pixel_y = -28; req_access = list(55)},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) @@ -458,10 +458,10 @@ "iP" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "iQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "iR" = (/obj/structure/table/standard,/obj/item/weapon/folder/red{pixel_y = 3},/obj/item/weapon/folder/blue{pixel_x = 5},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) -"iS" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenobiology Aft Starboard"; dir = 1},/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/light,/obj/machinery/computer/xenobio2,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) +"iS" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenobiology Aft Starboard"; dir = 1},/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/light,/obj,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "iT" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled,/area/outpost/research/hallway/catwalk) "iU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/outpost/research/hallway/catwalk) -"iV" = (/obj/structure/table/steel,/obj/item/clothing/glasses/science,/obj/item/device/analyzer/xeno_analyzer,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) +"iV" = (/obj/structure/table/steel,/obj/item/clothing/glasses/science,/obj,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) "iW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/blue,/turf/simulated/floor/plating,/area/outpost/research/xenobiology) "iX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "iY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/blue,/turf/simulated/floor/plating,/area/outpost/research/xenobiology) @@ -469,9 +469,9 @@ "ja" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "jb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/blue,/turf/simulated/floor/plating,/area/outpost/research/xenobiology) "jc" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) -"jd" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/xenobiodisk,/obj/item/weapon/melee/baton/slime/loaded,/obj/item/device/analyzer/xeno_analyzer,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) +"jd" = (/obj/structure/table/standard,/obj,/obj/item/weapon/melee/baton/slime/loaded,/obj,/turf/simulated/floor/tiled/white,/area/outpost/research/xenobiology) "je" = (/turf/simulated/wall,/area/outpost/research/xenobiology) -"jf" = (/obj/structure/closet,/obj/item/toy/figure/scientist,/obj/item/clothing/accessory/armband/science,/obj/item/device/analyzer/xeno_analyzer,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) +"jf" = (/obj/structure/closet,/obj/item/toy/figure/scientist,/obj/item/clothing/accessory/armband/science,/obj,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) "jg" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/outpost/research/hallway/catwalk) "jh" = (/obj/machinery/light/small{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "ji" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) @@ -1587,7 +1587,7 @@ "EA" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/mining_main/refinery) "EB" = (/obj/effect/floor_decal/industrial/warning/dust/corner,/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/mining_main/refinery) "EC" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) -"ED" = (/obj/machinery/xenobio/extractor,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) +"ED" = (/obj,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology) "EE" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "EF" = (/obj/machinery/recharger/wallcharger{pixel_x = 32},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "EG" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) @@ -1910,7 +1910,7 @@ "KL" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "KM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) "KN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/polaris.dme b/polaris.dme index 94ce131288..959eb6c298 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1662,18 +1662,6 @@ #include "code\modules\mob\living\carbon\human\species\station\prometheans.dm" #include "code\modules\mob\living\carbon\human\species\station\seromi.dm" #include "code\modules\mob\living\carbon\human\species\station\station.dm" -#include "code\modules\mob\living\carbon\metroid\death.dm" -#include "code\modules\mob\living\carbon\metroid\emote.dm" -#include "code\modules\mob\living\carbon\metroid\examine.dm" -#include "code\modules\mob\living\carbon\metroid\hud.dm" -#include "code\modules\mob\living\carbon\metroid\items.dm" -#include "code\modules\mob\living\carbon\metroid\life.dm" -#include "code\modules\mob\living\carbon\metroid\login.dm" -#include "code\modules\mob\living\carbon\metroid\metroid.dm" -#include "code\modules\mob\living\carbon\metroid\powers.dm" -#include "code\modules\mob\living\carbon\metroid\say.dm" -#include "code\modules\mob\living\carbon\metroid\subtypes.dm" -#include "code\modules\mob\living\carbon\metroid\update_icons.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\laws.dm" #include "code\modules\mob\living\silicon\login.dm" @@ -1751,7 +1739,6 @@ #include "code\modules\mob\living\simple_animal\animals\mouse.dm" #include "code\modules\mob\living\simple_animal\animals\parrot.dm" #include "code\modules\mob\living\simple_animal\animals\penguin.dm" -#include "code\modules\mob\living\simple_animal\animals\slime.dm" #include "code\modules\mob\living\simple_animal\animals\spiderbot.dm" #include "code\modules\mob\living\simple_animal\animals\tomato.dm" #include "code\modules\mob\living\simple_animal\animals\tree.dm" @@ -1769,6 +1756,12 @@ #include "code\modules\mob\living\simple_animal\humanoids\pirate.dm" #include "code\modules\mob\living\simple_animal\humanoids\russian.dm" #include "code\modules\mob\living\simple_animal\humanoids\syndicate.dm" +#include "code\modules\mob\living\simple_animal\slime\ai.dm" +#include "code\modules\mob\living\simple_animal\slime\combat.dm" +#include "code\modules\mob\living\simple_animal\slime\death.dm" +#include "code\modules\mob\living\simple_animal\slime\life.dm" +#include "code\modules\mob\living\simple_animal\slime\slime.dm" +#include "code\modules\mob\living\simple_animal\slime\subtypes.dm" #include "code\modules\mob\living\voice\voice.dm" #include "code\modules\mob\new_player\login.dm" #include "code\modules\mob\new_player\logout.dm" @@ -2125,7 +2118,6 @@ #include "code\modules\surgery\organs_internal.dm" #include "code\modules\surgery\other.dm" #include "code\modules\surgery\robotics.dm" -#include "code\modules\surgery\slimes.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\~defines.dm" #include "code\modules\tables\bench.dm" @@ -2216,23 +2208,11 @@ #include "code\modules\xenoarcheaology\tools\suspension_generator.dm" #include "code\modules\xenoarcheaology\tools\tools.dm" #include "code\modules\xenoarcheaology\tools\tools_pickaxe.dm" -#include "code\modules\xenobio2\_xeno_setup.dm" -#include "code\modules\xenobio2\controller.dm" -#include "code\modules\xenobio2\machinery\core_extractor.dm" -#include "code\modules\xenobio2\machinery\gene_manipulators.dm" -#include "code\modules\xenobio2\machinery\injector.dm" -#include "code\modules\xenobio2\machinery\injector_computer.dm" -#include "code\modules\xenobio2\machinery\slime_replicator.dm" -#include "code\modules\xenobio2\mob\xeno procs.dm" -#include "code\modules\xenobio2\mob\xeno.dm" -#include "code\modules\xenobio2\mob\xeno_product.dm" -#include "code\modules\xenobio2\mob\slime\slime life.dm" -#include "code\modules\xenobio2\mob\slime\slime procs.dm" -#include "code\modules\xenobio2\mob\slime\slime.dm" -#include "code\modules\xenobio2\mob\slime\slime_core.dm" -#include "code\modules\xenobio2\mob\slime\slime_monkey.dm" -#include "code\modules\xenobio2\tools\slime_handling_tools.dm" -#include "code\modules\xenobio2\tools\xeno_trait_scanner.dm" +#include "code\modules\xenobio\items\extracts.dm" +#include "code\modules\xenobio\items\slime_objects.dm" +#include "code\modules\xenobio\items\slimepotions.dm" +#include "code\modules\xenobio\items\weapons.dm" +#include "code\modules\xenobio\machinery\processor.dm" #include "code\modules\xgm\xgm_gas_data.dm" #include "code\modules\xgm\xgm_gas_mixture.dm" #include "code\unit_tests\loadout_tests.dm" @@ -2262,6 +2242,7 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\northern_star\northern_star.dm" +#include "maps\example\example.dm" +#include "maps\example\xenobio_test.dmm" #include "maps\~map_system\maps.dm" // END_INCLUDE