mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 06:22:14 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>")
|
||||
@@ -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"
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user