Adds new reagents and recipes (#3688)

This pr adds some new reagents and recipes, to be used properly with the feature added by #3522.
This commit is contained in:
Alberyk
2017-11-15 20:11:51 -02:00
committed by Werner
parent 7dc02be204
commit 8dd97ed30b
12 changed files with 233 additions and 49 deletions

View File

@@ -23,6 +23,7 @@
#define IS_XENOS 32
#define IS_MACHINE 64
#define IS_VAURCA 128
#define IS_UNDEAD 256
#define CE_STABLE "stable" // Inaprovaline
#define CE_ANTIBIOTIC "antibiotic" // Spaceacilin

View File

@@ -74,7 +74,7 @@
if(stat & (NOPOWER|BROKEN))
return
if(operating)
user << "<span class='danger'>The gibber is locked and running, wait for it to finish.</span>"
user << "<span class='danger'>\The [src] is locked and running, wait for it to finish.</span>"
return
else
src.startgibbing(user)
@@ -85,21 +85,22 @@
/obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user)
emagged = !emagged
user << "<span class='danger'>You [emagged ? "disable" : "enable"] the gibber safety guard.</span>"
user << "<span class='danger'>You [emagged ? "disable" : "enable"] \the [src]'s safety guard.</span>"
return 1
/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user)
var/obj/item/weapon/grab/G = W
if(istype(W, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = W
if(G.state < GRAB_AGGRESSIVE)
to_chat(user, "<span class='danger'>You need a better grip to do that!</span>")
return
move_into_gibber(user,G.affecting)
user.drop_from_inventory(G)
if(!istype(G))
return ..()
if(G.state < 2)
user << "<span class='danger'>You need a better grip to do that!</span>"
return
move_into_gibber(user,G.affecting)
// Grab() process should clean up the grab item, no need to del it.
else if(istype(W, /obj/item/organ))
user.drop_from_inventory(W)
qdel(W)
user.visible_message("<span class='danger'>\The [user] feeds \the [W] into \the [src], obliterating it.</span>")
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
@@ -110,6 +111,7 @@
M.visible_message("<span class='danger'>[user]'s hair catches in the [src]!</span>", "<span class='danger'>Your hair gets caught in the [src]!</span>")
M.say("*scream")
/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user)
if(user.stat || user.restrained())
return
@@ -118,27 +120,27 @@
/obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim)
if(src.occupant)
user << "<span class='danger'>The gibber is full, empty it first!</span>"
user << "<span class='danger'>\The [src] is full, empty it first!</span>"
return
if(operating)
user << "<span class='danger'>The gibber is locked and running, wait for it to finish.</span>"
user << "<span class='danger'>\The [src] is locked and running, wait for it to finish.</span>"
return
if(!(istype(victim, /mob/living/carbon)) && !(istype(victim, /mob/living/simple_animal)) )
user << "<span class='danger'>This is not suitable for the gibber!</span>"
user << "<span class='danger'>This is not suitable for \the [src]!</span>"
return
if(istype(victim,/mob/living/carbon/human) && !emagged)
user << "<span class='danger'>The gibber safety guard is engaged!</span>"
user << "<span class='danger'>\The [src] safety guard is engaged!</span>"
return
if(victim.abiotic(1))
user << "<span class='danger'>Subject may not have abiotic items on.</span>"
user << "<span class='danger'>\The [victim] may not have abiotic items on.</span>"
return
user.visible_message("<span class='danger'>[user] starts to put [victim] into the gibber!</span>")
user.visible_message("<span class='danger'>\The [user] starts to put \the [victim] into \the [src]!</span>")
src.add_fingerprint(user)
if(do_after(user, 30 SECONDS, act_target = src) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
user.visible_message("<span class='danger'>[user] stuffs [victim] into the gibber!</span>")
@@ -181,11 +183,10 @@
visible_message("<span class='danger'>You hear a loud metallic grinding sound.</span>")
return
use_power(1000)
visible_message("<span class='danger'>You hear a loud squelchy grinding sound.</span>")
visible_message("<span class='danger'>You hear a loud [occupant.isSynthetic() ? "metallic" : "squelchy"] grinding sound.</span>")
src.operating = 1
update_icon()
var/slab_name = occupant.name
var/slab_count = 3
var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat
var/slab_nutrition = src.occupant.nutrition / 15
@@ -199,7 +200,6 @@
slab_type = critter.meat_type
else if(istype(src.occupant,/mob/living/carbon/human))
var/mob/living/carbon/human/H = occupant
slab_name = src.occupant.real_name
slab_type = H.species.meat_type
// Small mobs don't give as much nutrition.
@@ -208,12 +208,11 @@
slab_nutrition /= slab_count
for(var/i=1 to slab_count)
var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src)
new_meat.name = "[slab_name] [new_meat.name]"
new_meat.reagents.add_reagent("nutriment",slab_nutrition)
if(src.occupant.reagents)
src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1))
var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8))
if(istype(new_meat))
new_meat.reagents.add_reagent("nutriment",slab_nutrition)
if(src.occupant.reagents)
src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1))
src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by <b>[user]/[user.ckey]</b>" //One shall not simply gib a mob unnoticed!
user.attack_log += "\[[time_stamp()]\] Gibbed <b>[src.occupant]/[src.occupant.ckey]</b>"
@@ -232,7 +231,7 @@
for (var/obj/thing in contents)
// Todo: unify limbs and internal organs
// There's a chance that the gibber will fail to destroy some evidence.
if((istype(thing,/obj/item/organ) || istype(thing,/obj/item/organ)) && prob(80))
if(istype(thing,/obj/item/organ) && prob(80))
qdel(thing)
continue
thing.loc = get_turf(thing) // Drop it onto the turf for throwing.

View File

@@ -20,6 +20,10 @@
taste_sensitivity = TASTE_NUMB
breakcuffs = list(MALE,FEMALE,NEUTER)
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/undead
reagent_tag = IS_UNDEAD
virus_immune = 1
rarity_value = 10
@@ -86,12 +90,16 @@
virus_immune = 1
reagent_tag = IS_UNDEAD
rarity_value = 10
blurb = "Apparitions are vengeful spirits, they are given temporary bodies to fulfill the wicked \
desires of their masters. A common sight among the ranks of the geometer of blood."
remains_type = /obj/effect/decal/cleanable/ash
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/undead
flesh_color = "#551A8B"
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_EMBED

View File

@@ -412,7 +412,7 @@
light_range = 2
light_power = 0.5
meat_type = /obj/item/stack/material/steel
unarmed_types = list(/datum/unarmed_attack/punch)
rarity_value = 2

View File

@@ -608,3 +608,47 @@
/datum/reagent/ipecac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.adjustToxLoss(2 * removed) //If you inject it you're doing it wrong
/datum/reagent/azoth
name = "Azoth"
id = "azoth"
description = "Azoth is a miraculous medicine, capable of healing internal injuries."
reagent_state = LIQUID
color = "#BF0000"
taste_description = "bitter metal"
overdose = 5
/datum/reagent/azoth/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
for (var/A in H.organs)
var/obj/item/organ/external/E = A
for (var/X in E.wounds)
var/datum/wound/W = X
if (W && W.internal)
E.wounds -= W
return 1
if(E.status & ORGAN_BROKEN)
E.status &= ~ORGAN_BROKEN
E.stage = 0
return 1
/datum/reagent/azoth/overdose(var/mob/living/carbon/M, var/alien)
M.adjustBruteLoss(5)
/datum/reagent/elixir
name = "Elixir of Life"
id = "elixir_life"
description = "A mythical substance, the cure for the ultimate illness."
color = "#ffd700"
affects_dead = 1
taste_description = "eternal blissfulness"
/datum/reagent/elixir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(ishuman(M))
if(M && M.stat == DEAD)
M.stat = 0
M.visible_message("<span class='danger'>\The [M] shudders violently!!</span>")

View File

@@ -448,4 +448,60 @@
if (!modifier)
modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN)
if(isskeleton(M))
M.heal_organ_damage(10 * removed, 15 * removed)
M.heal_organ_damage(10 * removed, 15 * removed)
/datum/reagent/liquid_fire
name = "Liquid Fire"
id = "liquid_fire"
description = "A dangerous flammable chemical, capable of causing fires when in contact with organic matter."
reagent_state = LIQUID
color = "#E25822"
touch_met = 5
taste_description = "metal"
/datum/reagent/liquid_fire/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(istype(M))
M.adjust_fire_stacks(25)
M.IgniteMob()
/datum/reagent/liquid_fire/touch_mob(var/mob/living/L, var/amount)
if(istype(L))
L.adjust_fire_stacks(25)
L.IgniteMob()
/datum/reagent/black_matter
name = "Unstable Black Matter"
id = "black_matter"
description = "A pitch black blend of cosmic origins, handle with care."
color = "#000000"
taste_description = "emptyness"
/datum/reagent/black_matter/touch_turf(var/turf/T)
new /obj/effect/portal/wormhole/jaunt_tunnel(T, volume)
remove_self(volume)
return
/datum/reagent/bluespace_dust
name = "Bluespace Dust"
id = "bluespace_dust"
description = "A dust composed of microscopic bluespace crystals."
color = "#1f8999"
taste_description = "fizzling blue"
/datum/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(prob(25))
M.make_jittery(5)
M << "<span class='warning'>You feel unstable...</span>"
if(prob(10))
do_teleport(M, get_turf(M), 5, asoundin = 'sound/effects/phasein.ogg')
/datum/reagent/bluespace_dust/touch_mob(var/mob/living/L, var/amount)
do_teleport(L, get_turf(L), amount, asoundin = 'sound/effects/phasein.ogg')
/datum/reagent/philosopher_stone
name = "Philosopher's Stone"
id = "philosopher_stone"
description = "A mythical compound, rumored to be the catalyst of fantastic reactions."
color = "#f4c430"
taste_description = "heavenly knowledge"

View File

@@ -606,3 +606,18 @@
/datum/reagent/xenomicrobes/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.contract_disease(new /datum/disease/xeno_transformation(0), 1)
/datum/reagent/toxin/undead
name = "Undead Ichor"
id = "undead_ichor"
description = "A wicked liquid with unknown origins and uses."
color = "#b2beb5"
strength = 25
taste_description = "ashes"
/datum/reagent/toxin/undead/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien && alien == IS_UNDEAD)
M.heal_organ_damage(10 * removed, 15 * removed)
return
..()

View File

@@ -2492,4 +2492,49 @@
id = "bluebird"
result = "bluebird"
required_reagents = list("gintonic" = 3, "bluecuracao" = 1)
result_amount = 4
result_amount = 4
//transmutation
/datum/chemical_reaction/transmutation_silver
name = "Transmutation: Silver"
id = "transmutation_silver"
result = null
required_reagents = list("iron" = 5, "copper" = 5)
catalysts = list("philosopher_stone" = 1)
result_amount = 1
/datum/chemical_reaction/transmutation_silver/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/stack/material/silver(location)
return
/datum/chemical_reaction/transmutation_gold
name = "Transmutation: Gold"
id = "transmutation_gold"
result = null
required_reagents = list("aluminum" = 5, "silver" = 5)
catalysts = list("philosopher_stone" = 1)
result_amount = 1
/datum/chemical_reaction/transmutation_gold/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/stack/material/gold(location)
return
/datum/chemical_reaction/transmutation_diamond
name = "Transmutation: Diamond"
id = "transmutation_diamond"
result = null
required_reagents = list("carbon" = 5, "gold" = 5)
catalysts = list("philosopher_stone" = 1)
result_amount = 1
/datum/chemical_reaction/transmutation_diamond/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/stack/material/diamond(location)
return

View File

@@ -6,11 +6,12 @@
filling_color = "#FF1C1C"
center_of_mass = list("x"=16, "y"=14)
cooked_icon = "meatstake"
Initialize()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("triglyceride", 2)
src.bitesize = 1.5
/obj/item/weapon/reagent_containers/food/snacks/meat/Initialize()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("triglyceride", 2)
src.bitesize = 1.5
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/material/knife))
@@ -41,11 +42,11 @@
/obj/item/weapon/reagent_containers/food/snacks/meat/bug
filling_color = "#E6E600"
Initialize()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("phoron", 27)
src.bitesize = 1.5
/obj/item/weapon/reagent_containers/food/snacks/meat/bug/Initialize()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("phoron", 27)
src.bitesize = 1.5
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey
//same as plain meat
@@ -54,13 +55,25 @@
name = "corgi meat"
desc = "Tastes like... well, you know."
/obj/item/weapon/reagent_containers/food/snacks/meat/chicken
name = "chicken"
icon_state = "chickenbreast"
cooked_icon = "chickenbreast_cooked"
filling_color = "#BBBBAA"
Initialize()
. = ..()
reagents.remove_reagent("triglyceride", INFINITY)
//Chicken is low fat. Less total calories than other meats
/obj/item/weapon/reagent_containers/food/snacks/meat/chicken/Initialize()
. = ..()
reagents.remove_reagent("triglyceride", INFINITY)
//Chicken is low fat. Less total calories than other meats
/obj/item/weapon/reagent_containers/food/snacks/meat/undead
name = "rotten meat"
desc = "A slab of rotten meat."
icon_state = "shadowmeat"
health = 180
filling_color = "#FF1C1C"
/obj/item/weapon/reagent_containers/food/snacks/meat/undead/Initialize()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("undead_ichor", 5)

View File

@@ -139,9 +139,11 @@
var/lich = null
/obj/item/phylactery/New()
..()
/obj/item/phylactery/Initialize()
. = ..()
world_phylactery += src
create_reagents(30)
reagents.add_reagent("undead_ichor", 30)
/obj/item/phylactery/Destroy()
lich << "<span class='danger'>Your phylactery was destroyed, your soul is cast into the abyss as your immortality vanishes away!</span>"

View File

@@ -14,7 +14,8 @@
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
create_reagents(10)
reagents.add_reagent("bluespace_dust", blink_range)
/obj/item/bluespace_crystal/attack_self(mob/user)
user.visible_message("<span class='warning'>[user] crushes [src]!</span>", "<span class='danger'>You crush [src]!</span>")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 129 KiB