Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into lavaland_megafauna

# Conflicts:
#	code/modules/mob/living/carbon/human/species/station.dm
#	icons/mob/screen_alert.dmi
This commit is contained in:
Markolie
2017-01-11 23:11:29 +01:00
97 changed files with 1104 additions and 845 deletions
@@ -117,3 +117,13 @@
display_name = "science beret"
path = /obj/item/clothing/head/beret/sci
allowed_roles = list("Research Director", "Scientist")
/datum/gear/hat/surgicalcap_purple
display_name = "surgical cap, purple"
path = /obj/item/clothing/head/surgery/purple
allowed_roles = list("Chief Medical Officer", "Medical Doctor")
/datum/gear/hat/surgicalcap_green
display_name = "surgical cap, green"
path = /obj/item/clothing/head/surgery/green
allowed_roles = list("Chief Medical Officer", "Medical Doctor")
@@ -98,6 +98,19 @@
path = /obj/item/clothing/under/rank/head_of_security/skirt
allowed_roles = list("Head of Security")
/datum/gear/uniform/job/medical/scrubs
subtype_path = /datum/gear/uniform/job/medical/scrubs
/datum/gear/uniform/job/medical/scrubs/purple
display_name = "medical scrubs, purple"
path = /obj/item/clothing/under/rank/medical/purple
allowed_roles = list("Chief Medical Officer", "Medical Doctor")
/datum/gear/uniform/job/medical/scrubs/green
display_name = "medical scrubs, green"
path = /obj/item/clothing/under/rank/medical/green
allowed_roles = list("Chief Medical Officer", "Medical Doctor")
/datum/gear/uniform/sec
subtype_path = /datum/gear/uniform/sec
@@ -23,6 +23,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
// ROLE_GANG = 21,
ROLE_BORER = 21,
ROLE_NINJA = 21,
ROLE_GSPIDER = 21,
ROLE_ABDUCTOR = 30,
)
+15 -2
View File
@@ -79,9 +79,17 @@
name = "cueball helmet"
desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
item_state = "cueball"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
item_state="cueball"
flags_inv = 0
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/snowman
name = "snowman head"
desc = "A ball of white styrofoam. So festive."
icon_state = "snowman_h"
item_state = "snowman_h"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/that
name = "sturdy top-hat"
@@ -348,6 +356,11 @@
attack_verb = list("warned", "cautioned", "smashed")
burn_state = FIRE_PROOF
/obj/item/clothing/head/jester
name = "jester hat"
desc = "A hat with bells, to add some merryness to the suit."
icon_state = "jester_hat"
/obj/item/clothing/head/griffin
name = "griffon head"
desc = "Why not 'eagle head'? Who knows."
@@ -139,6 +139,13 @@
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/joy
name = "joy mask"
desc = "Express your happiness or hide your sorrows with this face with tears of joy cutout."
icon_state = "joy"
flags = MASKCOVERSMOUTH
flags_inv = HIDEFACE
/obj/item/clothing/mask/pig
name = "pig mask"
desc = "A rubber pig mask."
@@ -188,6 +195,58 @@
if(user.real_name == "[originalname][temporaryname]" || user.real_name == "A Horse With No Name") //if it's somehow changed while the mask is on it doesn't revert
user.real_name = originalname
/obj/item/clothing/mask/face
flags = MASKCOVERSMOUTH
flags_inv = HIDEFACE
/obj/item/clothing/mask/face/rat
name = "rat mask"
desc = "A mask made of soft vinyl and latex, representing the head of a rat."
icon_state = "rat"
item_state = "rat"
/obj/item/clothing/mask/face/fox
name = "fox mask"
desc = "A mask made of soft vinyl and latex, representing the head of a fox."
icon_state = "fox"
item_state = "fox"
/obj/item/clothing/mask/face/bee
name = "bee mask"
desc = "A mask made of soft vinyl and latex, representing the head of a bee."
icon_state = "bee"
item_state = "bee"
/obj/item/clothing/mask/face/bear
name = "bear mask"
desc = "A mask made of soft vinyl and latex, representing the head of a bear."
icon_state = "bear"
item_state = "bear"
/obj/item/clothing/mask/face/bat
name = "bat mask"
desc = "A mask made of soft vinyl and latex, representing the head of a bat."
icon_state = "bat"
item_state = "bat"
/obj/item/clothing/mask/face/raven
name = "raven mask"
desc = "A mask made of soft vinyl and latex, representing the head of a raven."
icon_state = "raven"
item_state = "raven"
/obj/item/clothing/mask/face/jackal
name = "jackal mask"
desc = "A mask made of soft vinyl and latex, representing the head of a jackal."
icon_state = "jackal"
item_state = "jackal"
/obj/item/clothing/mask/face/tribal
name = "tribal mask"
desc = "A mask carved out of wood, detailed carefully by hand."
icon_state = "bumba"
item_state = "bumba"
/obj/item/clothing/mask/fawkes
name = "Guy Fawkes mask"
desc = "A mask designed to help you remember a specific date."
@@ -212,3 +212,15 @@
righthand_file = 'icons/goonstation/mob/inhands/clothing_righthand.dmi'
flags = NODROP
shoe_sound = "clownstep"
/obj/item/clothing/shoes/singery
name = "yellow performer's boots"
desc = "These boots were made for dancing."
icon_state = "ysing"
put_on_delay = 50
/obj/item/clothing/shoes/singerb
name = "blue performer's boots"
desc = "These boots were made for dancing."
icon_state = "bsing"
put_on_delay = 50
@@ -249,6 +249,13 @@
I.overlays += image(icon = 'icons/mob/robots.dmi' , icon_state = "eyes-robot") //gotta look realistic
H.add_alt_appearance("standard_borg_disguise", I, silicon_mob_list+H) //you look like a robot to robots! (including yourself because you're totally a robot)
/obj/item/clothing/suit/snowman
name = "snowman outfit"
desc = "Two white spheres covered in white glitter. 'Tis the season."
icon_state = "snowman"
item_state = "snowman"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
flags_inv = HIDEJUMPSUIT
/obj/item/clothing/suit/poncho
name = "poncho"
@@ -279,6 +286,44 @@
item_state = "ponchoshame"
flags = NODROP
/obj/item/clothing/suit/hooded/carp_costume
name = "carp costume"
desc = "A costume made from 'synthetic' carp scales, it smells."
icon_state = "carp_casual"
item_state = "labcoat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
allowed = list(/obj/item/weapon/tank/emergency_oxygen)
hoodtype = /obj/item/clothing/head/hooded/carp_hood
/obj/item/clothing/head/hooded/carp_hood
name = "carp hood"
desc = "A hood attached to a carp costume."
icon_state = "carp_casual"
body_parts_covered = HEAD
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP|BLOCKHAIR
flags_inv = HIDEEARS
/obj/item/clothing/suit/hooded/bee_costume // It's Hip!
name = "bee costume"
desc = "Bee the true Queen!"
icon_state = "bee"
item_state = "labcoat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
flags = THICKMATERIAL
hoodtype = /obj/item/clothing/head/hooded/bee_hood
/obj/item/clothing/head/hooded/bee_hood
name = "bee hood"
desc = "A hood attached to a bee costume."
icon_state = "bee"
body_parts_covered = HEAD
flags = THICKMATERIAL|NODROP|BLOCKHAIR
flags_inv = HIDEEARS
/obj/item/clothing/suit/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!?
name = "bloated human suit"
desc = "A horribly bloated suit made from human skins."
@@ -495,6 +495,26 @@
item_color = "janimaid"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/singery
name = "yellow performer's outfit"
desc = "Just looking at this makes you want to sing."
icon_state = "ysing"
item_state = "ysing"
item_color = "ysing"
/obj/item/clothing/under/singerb
name = "blue performer's outfit"
desc = "Just looking at this makes you want to sing."
icon_state = "bsing"
item_state = "bsing"
item_color = "bsing"
/obj/item/clothing/under/jester
name = "jester suit"
desc = "A jolly dress, well suited to entertain your master, nuncle."
icon_state = "jester"
item_color = "jester"
/obj/item/clothing/under/flappers
name = "flappers"
desc = "Nothing like the roarin' '20s, flapping the night away on the dance floor."
+20
View File
@@ -154,6 +154,14 @@
icon_on = "guessipon"
icon_off = "guessip"
/obj/item/weapon/lighter/zippo/fluff/duckchan // Duckchan: Rybys Romney
name = "Monogrammed Zippo"
desc = " A shiny purple zippo lighter, engraved with Rybys Romney and BuzzPing's name, with a festive green flame."
icon = 'icons/obj/custom_items.dmi'
icon_state = "rybysfluff"
icon_on = "rybysfluffopen"
icon_off = "rybysfluff"
/obj/item/weapon/fluff/dogwhistle //phantasmicdream: Zeke Varloss
name = "Sax's whistle"
desc = "This whistle seems to have a strange aura about it. Maybe you should blow on it?"
@@ -376,6 +384,18 @@
icon_state = "kakicharakiti"
//////////// Suits ////////////
/obj/item/clothing/suit/fluff/dusty_jacket //ComputerlessCitizen: Screech
name = "Dusty Jacket"
desc = "A worn leather jacket. Some burn holes have been patched."
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
icon = 'icons/obj/custom_items.dmi'
icon_state = "dusty_jacket"
ignore_suitadjust = 1
actions_types = list()
adjust_flavour = null
species_fit = null
sprite_sheets = null
/obj/item/clothing/suit/storage/labcoat/fluff/aeneas_rinil //Socialsystem: Lynn Fea
name = "Robotics labcoat"
desc = "A labcoat with a few markings denoting it as the labcoat of roboticist."
+4 -3
View File
@@ -5,7 +5,8 @@
possible_transfer_amounts = null
volume = 50 //Sets the default container amount for all food items.
var/filling_color = "#FFFFFF" //Used by sandwiches.
var/bitesize = 1
var/junkiness = 0 //for junk food. used to lower human satiety.
var/bitesize = 2
var/consume_sound = 'sound/items/eatfood.ogg'
var/apply_type = INGEST
var/apply_method = "swallow"
@@ -15,5 +16,5 @@
/obj/item/weapon/reagent_containers/food/New()
..()
pixel_x = rand(-10, 10) //Randomizes postion
pixel_y = rand(-10, 10)
pixel_x = rand(-5, 5) //Randomizes postion
pixel_y = rand(-5, 5)
+11 -14
View File
@@ -22,7 +22,6 @@
desc = "Such sweet, fattening food."
icon_state = "chocolatebar"
filling_color = "#7D5F46"
bitesize = 2
list_reagents = list("nutriment" = 2, "chocolate" = 4)
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel
@@ -30,7 +29,6 @@
desc = "Chewy and dense, yet it practically melts in your mouth!"
icon_state = "caramel"
filling_color = "#DB944D"
bitesize = 2
list_reagents = list("cream" = 2, "sugar" = 2)
@@ -39,7 +37,6 @@
desc = "A hard, brittle candy with a distinctive taste."
icon_state = "toffee"
filling_color = "#7D5F46"
bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat
@@ -47,7 +44,6 @@
desc = "A soft, chewy candy commonly found in candybars."
icon_state = "nougat"
filling_color = "#7D5F46"
bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy
@@ -55,7 +51,6 @@
desc = "Old fashioned saltwater taffy. Chewy!"
icon_state = "candy1"
filling_color = "#7D5F46"
bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy/New()
@@ -111,7 +106,6 @@
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
icon_state = "candycorn"
filling_color = "#FFFCB0"
bitesize = 2
list_reagents = list("nutriment" = 4, "sugar" = 2)
// ***********************************************************
@@ -134,14 +128,15 @@
trash = /obj/item/trash/candy
filling_color = "#7D5F46"
bitesize = 3
list_reagents = list("nutriment" = 2, "chocolate" = 5)
junkiness = 25
list_reagents = list("nutriment" = 1, "chocolate" = 1)
/obj/item/weapon/reagent_containers/food/snacks/candy/candycane
name = "candy cane"
desc = "A festive mint candy cane."
icon_state = "candycane"
filling_color = "#F2F2F2"
bitesize = 2
list_reagents = list("minttoxin" = 1, "sugar" = 5)
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear
@@ -181,7 +176,6 @@
desc = "Not legal tender. Tasty though."
icon_state = "candy_cash"
filling_color = "#302000"
bitesize = 2
list_reagents = list("nutriment" = 2, "chocolate" = 4)
/obj/item/weapon/reagent_containers/food/snacks/candy/coin
@@ -511,32 +505,35 @@
// Candybar Flavors
// ***********************************************************
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/rice
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery
list_reagents = list("nutriment" = 1, "chocolate" = 1)
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/rice
name = "Asteroid Crunch Bar"
desc = "Crunchy rice deposits in delicious chocolate! A favorite of miners galaxy-wide."
icon_state = "asteroidcrunch"
trash = /obj/item/trash/candy
filling_color = "#7D5F46"
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/toffee
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/toffee
name = "Yum-baton Bar"
desc = "Chocolate and toffee in the shape of a baton. Security sure knows how to pound these down!"
icon_state = "yumbaton"
filling_color = "#7D5F46"
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel
name = "Malper Bar"
desc = "A chocolate syringe filled with a caramel injection. Just what the doctor ordered!"
icon_state = "malper"
filling_color = "#7D5F46"
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel_nougat
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel_nougat
name = "Toxins Test Bar"
desc = "An explosive combination of chocolate, caramel, and nougat. Research has never been so tasty!"
icon_state = "toxinstest"
filling_color = "#7D5F46"
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/nougat
/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/nougat
name = "Tool-erone Bar"
desc = "Chocolate-covered nougat, shaped like a wrench. Great for an engineer on the go!"
icon_state = "toolerone"
@@ -69,6 +69,7 @@
icon_state = "breadslice"
var/baseicon = "sandwich"
var/basename = "sandwich"
bitesize = 4
var/top = 1 //Do we have a top?
var/obj/item/toptype
var/add_overlays = 1 //Do we stack?
@@ -76,7 +77,6 @@
var/sandwich_limit = 40
var/fullycustom = 0
trash = /obj/item/trash/plate
bitesize = 2
var/list/ingredients = list()
list_reagents = list("nutriment" = 8)
+12 -12
View File
@@ -6,7 +6,7 @@
icon_state = "fishfillet"
filling_color = "#FFDEFE"
bitesize = 6
list_reagents = list("protein" = 3, "carpotoxin" = 3)
list_reagents = list("protein" = 3, "carpotoxin" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/salmonmeat
name = "raw salmon"
@@ -14,8 +14,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfillet"
filling_color = "#FFDEFE"
bitesize = 3
list_reagents = list("protein" = 3)
bitesize = 6
list_reagents = list("protein" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/salmonsteak
name = "Salmon steak"
@@ -25,7 +25,7 @@
trash = /obj/item/trash/plate
filling_color = "#7A3D11"
bitesize = 3
list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1)
list_reagents = list("nutriment" = 4, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/catfishmeat
name = "raw catfish"
@@ -33,8 +33,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfillet"
filling_color = "#FFDEFE"
bitesize = 3
list_reagents = list("protein" = 3)
bitesize = 6
list_reagents = list("protein" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/fishfingers
name = "Fish Fingers"
@@ -42,8 +42,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfingers"
filling_color = "#FFDEFE"
bitesize = 3
list_reagents = list("nutriment" = 4, "carpotoxin" = 3)
bitesize = 1
list_reagents = list("nutriment" = 4)
/obj/item/weapon/reagent_containers/food/snacks/fishburger
name = "Fillet -o- Carp Sandwich"
@@ -52,7 +52,7 @@
icon_state = "fishburger"
filling_color = "#FFDEFE"
bitesize = 3
list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/cubancarp
name = "Cuban Carp"
@@ -62,7 +62,7 @@
trash = /obj/item/trash/plate
filling_color = "#E9ADFF"
bitesize = 3
list_reagents = list("nutriment" = 6, "carpotoxin" = 3, "capsaicin" = 3)
list_reagents = list("nutriment" = 6, "capsaicin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/fishandchips
name = "Fish and Chips"
@@ -71,7 +71,7 @@
icon_state = "fishandchips"
filling_color = "#E3D796"
bitesize = 3
list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/sashimi
name = "carp sashimi"
@@ -79,7 +79,7 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "sashimi"
bitesize = 3
list_reagents = list("nutriment" = 6, "toxin" = 5)
list_reagents = list("nutriment" = 6, "capsaicin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/fried_shrimp
name = "fried shrimp"
File diff suppressed because it is too large Load Diff
@@ -505,7 +505,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel,
)
result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel
result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel
/datum/recipe/candy/toolerone
reagents = list()
@@ -513,7 +513,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat,
)
result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/nougat
result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/nougat
/datum/recipe/candy/yumbaton
reagents = list()
@@ -521,14 +521,14 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/toffee,
)
result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/toffee
result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/toffee
/datum/recipe/candy/crunch
reagents = list("rice" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
)
result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/rice
result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/rice
/datum/recipe/candy/toxinstest
reagents = list()
@@ -537,4 +537,4 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel,
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat,
)
result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel_nougat
result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel_nougat
@@ -29,24 +29,24 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly
/datum/recipe/microwave/jellydonut/cherry
reagents = list("cherryjelly" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly
/datum/recipe/microwave/donut
reagents = list("sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
result = /obj/item/weapon/reagent_containers/food/snacks/donut
/datum/recipe/microwave/donut/sprinkles
reagents = list("sugar" = 5, "sprinkles" = 3)
reagents = list("sugar" = 5, "sprinkles" = 2)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
@@ -671,12 +671,6 @@ datum/recipe/microwave/slimesandwich
)
result = /obj/item/weapon/reagent_containers/food/snacks/taco
/datum/recipe/microwave/meatball
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawmeatball
)
result = /obj/item/weapon/reagent_containers/food/snacks/meatball
/datum/recipe/microwave/fries
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
+35 -35
View File
@@ -3,7 +3,7 @@
name = "chili"
seed_name = "chili"
display_name = "chili plants"
chems = list("capsaicin" = list(3,5), "plantmatter" = list(1,25))
chems = list("capsaicin" = list(3,5), "plantmatter" = list(1,25), "vitamin" = list(1,25))
mutants = list("icechili", "ghostchili")
kitchen_tag = "chili"
preset_icon = "chilipepper"
@@ -24,7 +24,7 @@
seed_name = "ice pepper"
display_name = "ice-pepper plants"
mutants = null
chems = list("frostoil" = list(3,5), "plantmatter" = list(1,50))
chems = list("frostoil" = list(3,5), "plantmatter" = list(1,50), "vitamin" = list(1,50))
kitchen_tag = "icechili"
preset_icon = "icepepper"
@@ -58,7 +58,7 @@
seed_name = "berry"
display_name = "berry bush"
mutants = list("glowberries","poisonberries")
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "berries"
preset_icon = "berrypile"
@@ -79,7 +79,7 @@
seed_name = "glowberry"
display_name = "glowberry bush"
mutants = null
chems = list("plantmatter" = list(1,10), "uranium" = list(3,5))
chems = list("plantmatter" = list(1,10), "uranium" = list(3,5), "vitamin" = list(1,25))
preset_icon = "glowberrypile"
/datum/seed/berry/glow/New()
@@ -99,7 +99,7 @@
seed_name = "poison berry"
display_name = "poison berry bush"
mutants = list("deathberries")
chems = list("plantmatter" = list(1), "toxin" = list(3,5))
chems = list("plantmatter" = list(1), "toxin" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "poisonberries"
preset_icon = "poisonberrypile"
@@ -113,7 +113,7 @@
seed_name = "death berry"
display_name = "death berry bush"
mutants = null
chems = list("plantmatter" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5))
chems = list("plantmatter" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5), "vitamin" = list(1,25))
preset_icon = "deathberrypile"
/datum/seed/berry/poison/death/New()
@@ -169,7 +169,7 @@
seed_name = "tomato"
display_name = "tomato plant"
mutants = list("bluetomato","bloodtomato","killertomato")
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "tomato"
preset_icon = "tomato"
@@ -190,7 +190,7 @@
seed_name = "blood tomato"
display_name = "blood tomato plant"
mutants = list("killertomato")
chems = list("protein" = list(1,10), "blood" = list(1,5))
chems = list("protein" = list(1,10), "blood" = list(1,5), "vitamin" = list(1,25))
splat_type = /obj/effect/decal/cleanable/blood/splatter
kitchen_tag = "bloodtomato"
preset_icon = "bloodtomato"
@@ -222,7 +222,7 @@
seed_name = "blue tomato"
display_name = "blue tomato plant"
mutants = list("bluespacetomato")
chems = list("plantmatter" = list(1,20), "lube" = list(1,5))
chems = list("plantmatter" = list(1,20), "lube" = list(1,5), "vitamin" = list(1,25))
preset_icon = "bluetomato"
/datum/seed/tomato/blue/New()
@@ -237,7 +237,7 @@
seed_name = "bluespace tomato"
display_name = "bluespace tomato plant"
mutants = null
chems = list("plantmatter" = list(1,20), "singulo" = list(10,5))
chems = list("plantmatter" = list(1,20), "singulo" = list(10,5), "vitamin" = list(1,25))
preset_icon = "bluespacetomato"
/datum/seed/tomato/blue/teleport/New()
@@ -254,7 +254,7 @@
seed_name = "eggplant"
display_name = "eggplants"
mutants = list("egg-plant")
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "eggplant"
preset_icon = "eggplant"
@@ -294,7 +294,7 @@
seed_name = "apple"
display_name = "apple tree"
mutants = list("poisonapple","goldapple")
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "apple"
preset_icon = "apple"
@@ -320,7 +320,7 @@
seed_name = "golden apple"
display_name = "gold apple tree"
mutants = null
chems = list("plantmatter" = list(1,10), "gold" = list(1,5))
chems = list("plantmatter" = list(1,10), "gold" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "goldapple"
preset_icon = "goldapple"
@@ -339,7 +339,7 @@
seed_name = "ambrosia vulgaris"
display_name = "ambrosia vulgaris"
mutants = list("ambrosiadeus")
chems = list("plantmatter" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "toxin" = list(1,10))
chems = list("plantmatter" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "vitamin" = list(1,25), "toxin" = list(1,10))
kitchen_tag = "ambrosia"
preset_icon = "ambrosiavulgaris"
@@ -359,7 +359,7 @@
seed_name = "ambrosia deus"
display_name = "ambrosia deus"
mutants = null
chems = list("plantmatter" = list(1), "styptic_powder" = list(1,8), "synaptizine" = list(1,8,1), "methamphetamine" = list(1,10,1), "thc" = list(1,10))
chems = list("plantmatter" = list(1), "styptic_powder" = list(1,8), "synaptizine" = list(1,8,1), "methamphetamine" = list(1,10,1), "vitamin" = list(1,25), "thc" = list(1,10))
kitchen_tag = "ambrosiadeus"
preset_icon = "ambrosiadeus"
@@ -431,7 +431,7 @@
seed_name = "tea aspera"
display_name = "tea aspera"
mutants = list("teaastra")
chems = list("teapowder" = list(1,20), "charcoal" = list(1,30))
chems = list("teapowder" = list(1,20), "charcoal" = list(1,30), "vitamin" = list(1,25))
preset_icon = "tea_aspera_leaves"
/datum/seed/teaaspera/New()
@@ -449,7 +449,7 @@
name = "teaastra"
seed_name = "tea astra"
display_name = "tea astra"
chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30))
chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30), "vitamin" = list(1,25))
preset_icon = "tea_astra_leaves"
/datum/seed/teaastra/New()
@@ -471,7 +471,7 @@
seed_name = "coffee arabica"
display_name = "coffee arabica"
mutants = list("coffeer")
chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40))
chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40), "vitamin" = list(1,25))
kitchen_tag = "coffeea"
preset_icon = "coffee_arabica"
@@ -490,7 +490,7 @@
name = "coffeer"
seed_name = "coffee robusta"
display_name = "coffee robusta"
chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40))
chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40), "vitamin" = list(1,25))
kitchen_tag = "coffeer"
preset_icon = "coffee_robusta"
@@ -551,7 +551,7 @@
seed_name = "plump helmet"
display_name = "plump helmet mushrooms"
mutants = list("walkingmushroom","towercap")
chems = list("plantmatter" = list(2,10))
chems = list("plantmatter" = list(2,10), "vitamin" = list(1,25))
kitchen_tag = "plumphelmet"
preset_icon = "plumphelmet"
@@ -786,7 +786,7 @@
/datum/seed/flower/moonflower
name = "moonflowers"
seed_name = "moonflowers"
chems = list("plantmatter" = list(1,50), "moonshine" = list(1,10))
chems = list("plantmatter" = list(1,50), "moonshine" = list(1,10), "vitamin" = list(1,25))
mutants = null
display_name = "moonflowers"
preset_icon = "moonflower"
@@ -824,7 +824,7 @@
seed_name = "grape"
display_name = "grapevines"
mutants = list("greengrapes")
chems = list("plantmatter" = list(1,10), "sugar" = list(1,5))
chems = list("plantmatter" = list(1,10), "sugar" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "grapes"
preset_icon = "grapes"
@@ -845,7 +845,7 @@
seed_name = "green grape"
display_name = "green grapevines"
mutants = null
chems = list("plantmatter" = list(1,10), "silver_sulfadiazine" = list(3,5))
chems = list("plantmatter" = list(1,10), "silver_sulfadiazine" = list(3,5), "vitamin" = list(1,25))
preset_icon = "greengrapes"
/datum/seed/grapes/green/New()
@@ -857,7 +857,7 @@
name = "soybean"
seed_name = "soybean"
display_name = "soybeans"
chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20))
chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20), "vitamin" = list(1,25))
mutants = list("koibean")
kitchen_tag = "soybeans"
preset_icon = "soybeans"
@@ -877,7 +877,7 @@
name = "koibean"
seed_name = "koibean"
display_name = "koi beans"
chems = list("plantmatter" = list(1,30), "carpotoxin" = list(1,20))
chems = list("plantmatter" = list(1,30), "carpotoxin" = list(1,20), "vitamin" = list(1,25))
mutants = null
kitchen_tag = "koibean"
preset_icon = "koibeans"
@@ -918,7 +918,7 @@
name = "cabbage"
seed_name = "cabbage"
display_name = "cabbages"
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "cabbage"
preset_icon = "cabbage"
@@ -938,7 +938,7 @@
name = "banana"
seed_name = "banana"
display_name = "banana tree"
chems = list("banana" = list(10,10))
chems = list("banana" = list(10,10), "vitamin" = list(1,25))
trash_type = /obj/item/weapon/bananapeel
kitchen_tag = "banana"
preset_icon = "banana"
@@ -958,7 +958,7 @@
name = "corn"
seed_name = "corn"
display_name = "ears of corn"
chems = list("plantmatter" = list(1,10), "corn_starch" = list(3,5))
chems = list("plantmatter" = list(1,10), "corn_starch" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "corn"
trash_type = /obj/item/weapon/corncob
preset_icon = "corn"
@@ -978,7 +978,7 @@
name = "potato"
seed_name = "potato"
display_name = "potatoes"
chems = list("plantmatter" = list(1,10))
chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "potato"
preset_icon = "potato"
@@ -1035,7 +1035,7 @@
name = "carrot"
seed_name = "carrot"
display_name = "carrots"
chems = list("plantmatter" = list(1,20), "oculine" = list(3,5))
chems = list("plantmatter" = list(1,20), "oculine" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "carrot"
preset_icon = "carrot"
@@ -1070,7 +1070,7 @@
name = "whitebeet"
seed_name = "white-beet"
display_name = "white-beets"
chems = list("plantmatter" = list(0,20), "sugar" = list(1,5))
chems = list("plantmatter" = list(0,20), "sugar" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "whitebeet"
preset_icon = "whitebeet"
@@ -1109,7 +1109,7 @@
name = "watermelon"
seed_name = "watermelon"
display_name = "watermelon vine"
chems = list("plantmatter" = list(1,6))
chems = list("plantmatter" = list(1,6), "vitamin" = list(1,25))
kitchen_tag = "watermelon"
preset_icon = "watermelon"
@@ -1130,7 +1130,7 @@
name = "pumpkin"
seed_name = "pumpkin"
display_name = "pumpkin vine"
chems = list("plantmatter" = list(1,6))
chems = list("plantmatter" = list(1,6), "vitamin" = list(1,25))
kitchen_tag = "pumpkin"
preset_icon = "pumpkin"
@@ -1150,7 +1150,7 @@
name = "lime"
seed_name = "lime"
display_name = "lime trees"
chems = list("plantmatter" = list(1,20))
chems = list("plantmatter" = list(1,20), "vitamin" = list(1,25))
kitchen_tag = "lime"
preset_icon = "lime"
@@ -1170,7 +1170,7 @@
name = "lemon"
seed_name = "lemon"
display_name = "lemon trees"
chems = list("plantmatter" = list(1,20))
chems = list("plantmatter" = list(1,20), "vitamin" = list(1,25))
mutants = list("cashtree")
kitchen_tag = "lemon"
preset_icon = "lemon"
+26 -8
View File
@@ -737,6 +737,7 @@
healable = 0
var/mode = MINEDRONE_COLLECT
var/light_on = 0
var/mesons_active
var/datum/action/innate/minedrone/toggle_light/toggle_light_action
var/datum/action/innate/minedrone/toggle_meson_vision/toggle_meson_vision_action
@@ -863,6 +864,28 @@
mode = MINEDRONE_COLLECT
SetCollectBehavior()
/mob/living/simple_animal/hostile/mining_drone/update_sight()
if(!client)
return
if(stat == DEAD)
grant_death_vision()
return
if(mesons_active)
sight |= SEE_TURFS
see_invisible = SEE_INVISIBLE_MINIMUM
else
sight &= ~SEE_TURFS
see_invisible = SEE_INVISIBLE_LIVING
see_in_dark = initial(see_in_dark)
if(client.eye != src)
var/atom/A = client.eye
if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
return
//Actions for sentient minebots
/datum/action/innate/minedrone
@@ -889,15 +912,10 @@
/datum/action/innate/minedrone/toggle_meson_vision/Activate()
var/mob/living/simple_animal/hostile/mining_drone/user = owner
user.mesons_active = !user.mesons_active
user.update_sight()
if(user.sight & SEE_TURFS)
user.sight &= ~SEE_TURFS
user.see_invisible = SEE_INVISIBLE_LIVING
else
user.sight |= SEE_TURFS
user.see_invisible = SEE_INVISIBLE_MINIMUM
to_chat(user, "<span class='notice'>You toggle your meson vision [(user.sight & SEE_TURFS) ? "on" : "off"].</span>")
to_chat(user, "<span class='notice'>You toggle your meson vision [(user.mesons_active) ? "on" : "off"].</span>")
/datum/action/innate/minedrone/toggle_mode
name = "Toggle Mode"
+2 -1
View File
@@ -226,6 +226,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(client.statpanel == "Status")
show_stat_station_time()
show_stat_emergency_shuttle_eta()
stat(null, "Respawnability: [(src in respawnable_list) ? "Yes" : "No"]")
/mob/dead/observer/verb/reenter_corpse()
set category = "Ghost"
@@ -667,4 +668,4 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
mind.active = 1
mind.transfer_to(new_char)
else
new_char.key = key
new_char.key = key
+22 -19
View File
@@ -34,12 +34,12 @@
/mob/living/carbon/Move(NewLoc, direct)
. = ..()
if(.)
if(src.nutrition && src.stat != 2)
src.nutrition -= HUNGER_FACTOR/10
if(src.m_intent == "run")
src.nutrition -= HUNGER_FACTOR/10
if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
src.bodytemperature += 2
if(nutrition && stat != DEAD)
nutrition -= HUNGER_FACTOR/10
if(m_intent == "run")
nutrition -= HUNGER_FACTOR/10
if((FAT in mutations) && m_intent == "run" && bodytemperature <= 360)
bodytemperature += 2
// Moving around increases germ_level faster
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
@@ -939,9 +939,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user)
if(!istype(toEat))
return 0
var/fullness = 0
var/fullness = nutrition + 10
if(istype(toEat, /obj/item/weapon/reagent_containers/food/snacks))
fullness = nutrition + (reagents.get_reagent_amount("nutriment") * 20) + (reagents.get_reagent_amount("protein") * 25) + (reagents.get_reagent_amount("plantmatter") * 25)
for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting
fullness += C.nutriment_factor * C.volume / C.metabolization_rate
if(user == src)
if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks))
if(!selfDrink(toEat))
@@ -960,15 +961,18 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(istype(toEat, /obj/item/weapon/reagent_containers/food/pill))
to_chat(src, "<span class='notify'>You [toEat.apply_method] [toEat].</span>")
else
if(toEat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50 )
to_chat(src, "<span class='notice'>You don't feel like eating any more junk food at the moment.</span>")
return 0
if(fullness <= 50)
to_chat(src, "<span class='warning'>You hungrily chew out a piece of [toEat] and gobble it!</span>")
else if(fullness > 50 && fullness <= 150)
else if(fullness > 50 && fullness < 150)
to_chat(src, "<span class='notice'>You hungrily begin to eat [toEat].</span>")
else if(fullness > 150 && fullness <= 350)
else if(fullness > 150 && fullness < 500)
to_chat(src, "<span class='notice'>You take a bite of [toEat].</span>")
else if(fullness > 350 && fullness <= 550)
else if(fullness > 500 && fullness < 600)
to_chat(src, "<span class='notice'>You unwillingly chew a bit of [toEat].</span>")
else if(fullness > (550 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
else if(fullness > (600 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
to_chat(src, "<span class='warning'>You cannot force any more of [toEat] to go down your throat.</span>")
return 0
return 1
@@ -977,7 +981,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
return 1
/mob/living/carbon/proc/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness)
if(fullness <= (550 * (1 + overeatduration / 1000)))
if(fullness <= (600 * (1 + overeatduration / 1000)))
if(!toEat.instant_application)
visible_message("<span class='warning'>[user] attempts to force [src] to [toEat.apply_method] [toEat].</span>")
else
@@ -1005,15 +1009,14 @@ so that different stomachs can handle things in different ways VB*/
/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat)
if(!toEat.reagents)
return
if(satiety > -200)
satiety -= toEat.junkiness
if(toEat.consume_sound)
playsound(loc, toEat.consume_sound, rand(10,50), 1)
if(toEat.reagents.total_volume)
toEat.reagents.reaction(src, toEat.apply_type)
spawn(0)
if(toEat.reagents.total_volume > toEat.bitesize)
toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency)
else
toEat.reagents.trans_to(src, toEat.reagents.total_volume*toEat.transfer_efficiency)
var/fraction = min(toEat.bitesize/toEat.reagents.total_volume, 1)
toEat.reagents.reaction(src, toEat.apply_type, fraction)
toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency)
/mob/living/carbon/get_access()
. = ..()
@@ -253,10 +253,10 @@
if(5)
msg += "[t_He] looks absolutely soaked.\n"
if(nutrition < 100)
if(nutrition < NUTRITION_LEVEL_STARVING - 50)
msg += "[t_He] [t_is] severely malnourished.\n"
else if(nutrition >= 500)
if(user.nutrition < 100)
else if(nutrition >= NUTRITION_LEVEL_FAT)
if(user.nutrition < NUTRITION_LEVEL_STARVING - 50)
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
else
msg += "[t_He] [t_is] quite chubby.\n"
@@ -516,7 +516,7 @@
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health/health_advanced) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)
else
return 0
else if(istype(M, /mob/living/silicon))
else if(isrobot(M) || isAI(M)) //Stand-in/Stopgap to prevent pAIs from freely altering records, pending a more advanced Records system
switch(hudtype)
if("security")
return 1
@@ -351,9 +351,7 @@ emp_act
if(ismob(I.thrower))
var/mob/M = I.thrower
if(M)
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a [I], thrown by [key_name(M)]</font>")
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [key_name(src)] with a thrown [I]</font>")
msg_admin_attack("[key_name_admin(src)] was hit by a [I], thrown by [key_name_admin(M)]", print_attack_log = I.throwforce)
add_logs(M, src, "hit", I, " (thrown)", print_attack_log = I.throwforce)
//thrown weapon embedded object code.
if(dtype == BRUTE && istype(I))
@@ -442,7 +442,7 @@
var/static/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/breadslice,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti,/obj/item/trash/plate,/obj/item/trash/bowl)
var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawmeatball, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/dough_ball, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon)
var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon)
try
var/list/allContents = getAllContents()
+34 -24
View File
@@ -506,17 +506,14 @@
//END FIRE CODE
/mob/living/carbon/human/proc/stabilize_temperature_from_calories()
var/body_temperature_difference = species.body_temperature - bodytemperature
if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects.
if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up.
nutrition -= 2
var/body_temperature_difference = species.body_temperature - bodytemperature
bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
bodytemperature += max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1)
var/body_temperature_difference = species.body_temperature - bodytemperature
bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR
bodytemperature += body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR
if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
//We totally need a sweat system cause it totally makes sense...~
var/body_temperature_difference = species.body_temperature - bodytemperature
bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
@@ -676,11 +673,20 @@
becomeFat()
// nutrition decrease
if(nutrition > 0 && stat != 2)
nutrition = max (0, nutrition - HUNGER_FACTOR)
if(nutrition > 0 && stat != DEAD)
// THEY HUNGER
var/hunger_rate = HUNGER_FACTOR
if(satiety > 0)
satiety--
if(satiety < 0)
satiety++
if(prob(round(-satiety/40)))
Jitter(5)
hunger_rate = 3 * HUNGER_FACTOR
nutrition = max(0, nutrition - hunger_rate)
if(nutrition > 450)
if(overeatduration < 800) //capped so people don't take forever to unfat
if(nutrition > NUTRITION_LEVEL_FULL)
if(overeatduration < 600) //capped so people don't take forever to unfat
overeatduration++
else
@@ -690,6 +696,22 @@
else
overeatduration -= 2
//metabolism change
if(nutrition > NUTRITION_LEVEL_FAT)
metabolism_efficiency = 1
else if(nutrition > NUTRITION_LEVEL_FED && satiety > 80)
if(metabolism_efficiency != 1.25)
to_chat(src, "<span class='notice'>You feel vigorous.</span>")
metabolism_efficiency = 1.25
else if(nutrition < NUTRITION_LEVEL_STARVING + 50)
if(metabolism_efficiency != 0.8)
to_chat(src, "<span class='notice'>You feel sluggish.</span>")
metabolism_efficiency = 0.8
else
if(metabolism_efficiency == 1.25)
to_chat(src, "<span class='notice'>You no longer feel vigorous.</span>")
metabolism_efficiency = 1
if(drowsyness)
AdjustDrowsy(-1)
EyeBlurry(2)
@@ -932,20 +954,8 @@
if(getToxLoss() >= 45 && nutrition > 20)
lastpuke ++
if(lastpuke >= 25) // about 25 second delay I guess
Stun(5)
visible_message("<span class='danger'>[src] throws up!</span>", \
"<span class='userdanger'>[src] throws up!</span>")
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
var/turf/location = loc
if(istype(location, /turf/simulated))
location.add_vomit_floor(src, 1)
nutrition -= 20
vomit(20, 0, 1, 0, 1)
adjustToxLoss(-3)
// make it so you can only puke so fast
lastpuke = 0
//0.1% chance of playing a scary sound to someone who's in complete darkness
@@ -559,8 +559,12 @@
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
H.throw_alert("nutrition", /obj/screen/alert/fat)
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
H.clear_alert("nutrition")
if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
H.throw_alert("nutrition", /obj/screen/alert/full)
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
H.throw_alert("nutrition", /obj/screen/alert/well_fed)
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
H.throw_alert("nutrition", /obj/screen/alert/fed)
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
H.throw_alert("nutrition", /obj/screen/alert/hungry)
else
@@ -817,8 +817,8 @@
H.nutrition += light_amount
H.traumatic_shock -= light_amount
if(H.nutrition > 450)
H.nutrition = 450
if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
H.nutrition = NUTRITION_LEVEL_WELL_FED
if(light_amount > 0)
H.clear_alert("nolight")
+1 -1
View File
@@ -345,7 +345,7 @@
SetDruggy(0)
SetHallucinate(0)
blinded = 0
nutrition = 400
nutrition = NUTRITION_LEVEL_FED + 50
bodytemperature = 310
CureBlind()
CureNearsighted()
@@ -32,6 +32,7 @@
var/implanting = 0 //Used for the mind-slave implant
var/floating = 0
var/mob_size = MOB_SIZE_HUMAN
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/nightvision = 0
var/bloodcrawl = 0 //0 No blood crawling, 1 blood crawling, 2 blood crawling+mob devour
+22 -6
View File
@@ -408,9 +408,22 @@ proc/get_radio_key_from_channel(var/channel)
return
var/atom/whisper_loc = get_whisper_loc()
var/list/listening = hearers(message_range, whisper_loc)
var/list/listening = hear(message_range, whisper_loc)
listening |= src
var/list/hearturfs = list()
//Pass whispers on to anything inside the immediate listeners.
// This comes before the ghosts do so that ghosts don't act as whisper relays
for(var/atom/L in listening)
if(ismob(L))
for(var/mob/C in L.contents)
if(isliving(C))
listening += C
hearturfs += get_turf(L)
if(isobj(L))
hearturfs += get_turf(L)
//ghosts
for(var/mob/M in dead_mob_list) //does this include players who joined as observers as well?
if(!M.client)
@@ -418,11 +431,14 @@ proc/get_radio_key_from_channel(var/channel)
if(M.stat == DEAD && M.client && M.get_preference(CHAT_GHOSTEARS))
listening |= M
//Pass whispers on to anything inside the immediate listeners.
for(var/mob/L in listening)
for(var/mob/C in L.contents)
if(isliving(C))
listening += C
// This, in tandem with "hearturfs", lets nested mobs hear whispers that are in range
// Grifted from saycode above.
for(var/mob/M in player_list)
if(!M.client || isnewplayer(M))
continue //skip monkeys and leavers
if(get_turf(M) in hearturfs)
listening |= M
//pass on the message to objects that can hear us.
for(var/obj/O in view(message_range, whisper_loc))
@@ -24,6 +24,5 @@
//Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak
if(mind) qdel(mind)
living_mob_list -= src
ghostize()
if(icon_state != "[chassis]_dead" || cleanWipe)
qdel(src)
+8 -3
View File
@@ -114,6 +114,11 @@
C.toff = 1
..()
/mob/living/silicon/pai/update_icons()
if(stat == DEAD)
icon_state = "[chassis]_dead"
else
icon_state = resting ? "[chassis]_rest" : "[chassis]"
// this function shows the information about being silenced as a pAI in the Status panel
/mob/living/silicon/pai/proc/show_silenced()
@@ -420,17 +425,17 @@
set category = "IC"
// Pass lying down or getting up to our pet human, if we're in a rig.
if(istype(src.loc,/obj/item/device/paicard))
if(stat == CONSCIOUS && istype(src.loc,/obj/item/device/paicard))
resting = 0
var/obj/item/weapon/rig/rig = src.get_rig()
if(istype(rig))
rig.force_rest(src)
else
resting = !resting
icon_state = resting ? "[chassis]_rest" : "[chassis]"
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>")
canmove = !resting
update_icons()
update_canmove()
//Overriding this will stop a number of headaches down the track.
/mob/living/silicon/pai/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
@@ -28,6 +28,9 @@ var/datum/paiController/paiController // Global handler for pAI candidates
if("signup" in href_list)
var/mob/dead/observer/O = locate(href_list["signup"])
if(!O) return
if(!(O in respawnable_list))
to_chat(O, "You've given up your ability to respawn!")
return
if(!check_recruit(O)) return
recruitWindow(O)
return
@@ -361,6 +364,8 @@ var/datum/paiController/paiController // Global handler for pAI candidates
return 0
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
return 0
if(!(O in respawnable_list))
return 0
if(O.client)
return 1
return 0
+7 -4
View File
@@ -6,8 +6,11 @@
/mob/living/silicon/pai/get_whisper_loc()
if(loc == card) // currently in its card?
if(istype(card.loc, /mob/living))
return card.loc // allow a pai being held or in pocket to whisper
var/atom/movable/whisper_loc = card
if(istype(card.loc, /obj/item/device/pda)) // Step up 1 level if in a PDA
whisper_loc = card.loc
if(istype(whisper_loc.loc, /mob/living))
return whisper_loc.loc // allow a pai being held or in pocket to whisper
else
return card // allow a pai in its card to whisper
return ..()
return whisper_loc // allow a pai in its card to whisper
return ..()
@@ -14,10 +14,6 @@
return 0
O.mouse_opacity = 2
if(istype(O,/obj/item/borg/sight))
var/obj/item/borg/sight/S = O
sight_mode &= ~S.sight_mode
update_sight()
if(client)
client.screen -= O
@@ -53,7 +49,6 @@
if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
to_chat(src, "Not enough power to activate [B.name]!")
return
var/activated_thingy = null
if(!module_state_1)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_1 = O
@@ -61,7 +56,6 @@
O.plane = HUD_PLANE
O.screen_loc = inv1.screen_loc
contents += O
activated_thingy = O
else if(!module_state_2)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_2 = O
@@ -69,7 +63,6 @@
O.plane = HUD_PLANE
O.screen_loc = inv2.screen_loc
contents += O
activated_thingy = O
else if(!module_state_3)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_3 = O
@@ -77,11 +70,8 @@
O.plane = HUD_PLANE
O.screen_loc = inv3.screen_loc
contents += O
activated_thingy = O
else
to_chat(src, "You need to disable a module first!")
if(istype(activated_thingy,/obj/item/borg/sight))
update_sight()
update_icons()
/mob/living/silicon/robot/proc/uneq_active()
+11 -14
View File
@@ -86,6 +86,7 @@ var/list/robot_verbs_default = list(
var/datum/effect/system/ion_trail_follow/ion_trail // Ionpulse effect.
var/datum/action/item_action/toggle_research_scanner/scanner = null
var/list/module_actions = list()
/mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0)
spark_system = new /datum/effect/system/spark_spread()
@@ -371,7 +372,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
module.add_subsystems(src)
module.add_subsystems_and_actions(src)
//Custom_sprite check and entry
if(custom_sprite == 1)
@@ -976,21 +977,17 @@ var/list/robot_verbs_default = list(
else
overlays -= "eyes"
if(opened && custom_sprite == 1) //Custom borgs also have custom panels, heh
if(wiresexposed)
overlays += "[src.ckey]-openpanel +w"
else if(cell)
overlays += "[src.ckey]-openpanel +c"
else
overlays += "[src.ckey]-openpanel -c"
if(opened)
var/panelprefix = "ov"
if(custom_sprite) //Custom borgs also have custom panels, heh
panelprefix = "[ckey]"
if(wiresexposed)
overlays += "ov-openpanel +w"
overlays += "[panelprefix]-openpanel +w"
else if(cell)
overlays += "ov-openpanel +c"
overlays += "[panelprefix]-openpanel +c"
else
overlays += "ov-openpanel -c"
overlays += "[panelprefix]-openpanel -c"
var/combat = list("Combat","Peacekeeper")
if(modtype in combat)
@@ -1424,7 +1421,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
module.add_subsystems(src)
module.add_subsystems_and_actions(src)
status_flags &= ~CANPUSH
@@ -1443,7 +1440,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
module.add_subsystems(src)
module.add_subsystems_and_actions(src)
status_flags &= ~CANPUSH
@@ -0,0 +1,37 @@
/datum/action/innate/robot_sight
var/sight_mode = null
icon_icon = 'icons/obj/decals.dmi'
button_icon_state = "securearea"
/datum/action/innate/robot_sight/Activate()
var/mob/living/silicon/robot/R = owner
R.sight_mode |= sight_mode
R.update_sight()
active = 1
/datum/action/innate/robot_sight/Deactivate()
var/mob/living/silicon/robot/R = owner
R.sight_mode &= ~sight_mode
R.update_sight()
active = 0
/datum/action/innate/robot_sight/xray
name = "X-ray Vision"
sight_mode = BORGXRAY
/datum/action/innate/robot_sight/thermal
name = "Thermal Vision"
sight_mode = BORGTHERM
icon_icon = 'icons/obj/clothing/glasses.dmi'
button_icon_state = "thermal"
// ayylmao
/datum/action/innate/robot_sight/thermal/alien
icon_icon = 'icons/mob/alien.dmi'
button_icon_state = "borg-extra-vision"
/datum/action/innate/robot_sight/meson
name = "Meson Vision"
sight_mode = BORGMESON
icon_icon = 'icons/obj/clothing/glasses.dmi'
button_icon_state = "meson"
@@ -9,6 +9,7 @@
var/list/modules = list()
var/obj/item/emag = null
var/list/subsystems = list()
var/list/module_actions = list()
var/module_type = "NoMod" // For icon usage
@@ -92,11 +93,19 @@
R.add_language("Orluum", 0)
R.add_language("Clownish",0)
/obj/item/weapon/robot_module/proc/add_subsystems(mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs |= subsystems
for(var/A in module_actions)
var/datum/action/act = new A()
act.Grant(R)
R.module_actions += act
/obj/item/weapon/robot_module/proc/remove_subsystems(mob/living/silicon/robot/R)
/obj/item/weapon/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs -= subsystems
for(var/datum/action/A in R.module_actions)
A.Remove(R)
qdel(A)
R.module_actions.Cut()
/obj/item/weapon/robot_module/standard
name = "standard robot module"
@@ -166,6 +175,9 @@
name = "engineering robot module"
module_type = "Engineer"
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
module_actions = list(
/datum/action/innate/robot_sight/meson,
)
stacktypes = list(
/obj/item/stack/sheet/metal/cyborg = 50,
@@ -178,7 +190,6 @@
/obj/item/weapon/robot_module/engineering/New()
..()
modules += new /obj/item/borg/sight/meson(src)
modules += new /obj/item/weapon/rcd/borg(src)
modules += new /obj/item/weapon/extinguisher(src)
modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src)
@@ -297,10 +308,12 @@
/obj/item/weapon/robot_module/miner
name = "miner robot module"
module_type = "Miner"
module_actions = list(
/datum/action/innate/robot_sight/meson,
)
/obj/item/weapon/robot_module/miner/New()
..()
modules += new /obj/item/borg/sight/meson(src)
modules += new /obj/item/weapon/storage/bag/ore/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/cyborg(src)
modules += new /obj/item/weapon/shovel(src)
@@ -317,10 +330,12 @@
/obj/item/weapon/robot_module/deathsquad
name = "NT advanced combat module"
module_type = "Malf"
module_actions = list(
/datum/action/innate/robot_sight/thermal,
)
/obj/item/weapon/robot_module/deathsquad/New()
..()
modules += new /obj/item/borg/sight/thermal(src)
modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
modules += new /obj/item/weapon/gun/energy/pulse/cyborg(src)
modules += new /obj/item/weapon/crowbar(src)
@@ -385,11 +400,13 @@
/obj/item/weapon/robot_module/combat
name = "combat robot module"
module_type = "Malf"
module_actions = list(
/datum/action/innate/robot_sight/thermal,
)
/obj/item/weapon/robot_module/combat/New()
..()
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/borg/sight/thermal(src)
modules += new /obj/item/weapon/gun/energy/gun/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/jackhammer(src)
modules += new /obj/item/borg/combat/shield(src)
@@ -418,11 +435,13 @@
/obj/item/weapon/robot_module/alien/hunter
name = "alien hunter module"
module_type = "Standard"
module_actions = list(
/datum/action/innate/robot_sight/thermal/alien,
)
/obj/item/weapon/robot_module/alien/hunter/New()
modules += new /obj/item/weapon/melee/energy/alien/claws(src)
modules += new /obj/item/device/flash/cyborg/alien(src)
modules += new /obj/item/borg/sight/thermal/alien(src)
var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src)
S.reagents.add_reagent("ether",250) //nerfed to sleeptoxin to make it less instant drop.
modules += S
+2 -1
View File
@@ -67,7 +67,8 @@
var/bodytemperature = 310.055 //98.7 F
var/flying = 0
var/charges = 0.0
var/nutrition = 400.0//Carbon
var/nutrition = NUTRITION_LEVEL_FED + 50 //Carbon
var/satiety = 0 //Carbon
var/overeatduration = 0 // How long this guy is overeating //Carbon
var/intent = null//Living
@@ -494,6 +494,9 @@
if(mind.assigned_role == "Clown") //give them a clownname if they are a clown
new_character.real_name = pick(clown_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("clown")
else if(mind.assigned_role == "Mime")
new_character.real_name = pick(mime_names)
new_character.rename_self("mime")
else if(new_character.species == "Diona")
new_character.real_name = pick(diona_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("diona")
+1 -1
View File
@@ -15,7 +15,7 @@
return STATUS_UPDATE // Ghosts can view updates
/mob/living/silicon/pai/default_can_use_topic(var/src_object)
if(src_object == src && !stat)
if((src_object == src || src_object == radio) && stat == CONSCIOUS)
return STATUS_INTERACTIVE
else
return ..()
+3 -3
View File
@@ -678,7 +678,7 @@
to_chat(H, "<span class='warning'>The APC power currents surge erratically, damaging your chassis!</span>")
H.adjustFireLoss(10,0)
else if(src.cell && src.cell.charge > 0)
if(H.nutrition < 450)
if(H.nutrition < NUTRITION_LEVEL_WELL_FED)
if(src.cell.charge >= 500)
H.nutrition += 50
src.cell.charge -= 500
@@ -689,8 +689,8 @@
to_chat(user, "<span class='notice'>You slot your fingers into the APC interface and siphon off some of the stored charge for your own use.</span>")
if(src.cell.charge < 0)
src.cell.charge = 0
if(H.nutrition > 500)
H.nutrition = 500
if(H.nutrition > NUTRITION_LEVEL_WELL_FED + 50)
H.nutrition = NUTRITION_LEVEL_WELL_FED + 50
src.charging = 1
else
to_chat(user, "<span class='notice'>You are already fully charged.</span>")
+1 -1
View File
@@ -68,7 +68,7 @@
var/message ="<span class='warning'>You irradiate yourself with pure energy! "
message += pick("Do not pass go. Do not collect 200 zorkmids.</span>","You feel more confident in your spell casting skills.</span>","You Die...</span>","Do you want your possessions identified?</span>")
to_chat(user, message)
user.adjustFireLoss(500)
user.adjustFireLoss(3000)
charges--
..()
+6 -3
View File
@@ -10,9 +10,6 @@
/obj/item/projectile/magic/death
name = "bolt of death"
icon_state = "pulse1_bl"
damage_type = BURN //OXY does not kill IPCs
damage = 50000
nodamage = 0
/obj/item/projectile/magic/fireball
name = "bolt of fireball"
@@ -27,6 +24,12 @@
var/exp_flash = 3
var/exp_fire = 2
/obj/item/projectile/magic/death/on_hit(var/mob/living/carbon/G)
. = ..()
if(isliving(G))
G.adjustFireLoss(3000)
visible_message("<span class='danger'>[G] topples backwards as the death bolt impacts them!</span>")
/obj/item/projectile/magic/fireball/Range()
var/turf/T1 = get_step(src,turn(dir, -45))
var/turf/T2 = get_step(src,turn(dir, 45))
@@ -136,12 +136,11 @@
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
if(H.species.flags & IS_PLANT)
if(prob(15))
M.apply_effect((rand(30,80)),IRRADIATE)
M.Weaken(5)
for(var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as \his vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
M.visible_message("<span class='warning'>[M] writhes in pain as \his vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='italics'>You hear the crunching of leaves.</span>")
if(prob(35))
if(prob(80))
randmutb(M)
@@ -152,7 +151,7 @@
else
M.adjustFireLoss(rand(5,15))
M.show_message("<span class='warning'>The radiation beam singes you!</span>")
else if(istype(target, /mob/living/carbon/))
else if(iscarbon(target))
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
@@ -170,9 +169,9 @@
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
M.nutrition += 30
else if(istype(target, /mob/living/carbon/))
if(H.species.flags & IS_PLANT)
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
else if(iscarbon(target))
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
+1 -1
View File
@@ -73,7 +73,7 @@
/datum/reagent/proc/on_mob_life(mob/living/M)
current_cycle++
holder.remove_reagent(id, metabolization_rate) //By default it slowly disappears.
holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
/datum/reagent/proc/on_mob_death(mob/living/M) //use this to have chems have a "death-triggered" effect
return
@@ -37,7 +37,7 @@
name = "Beer"
id = "beer"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
nutriment_factor = 2 * REAGENTS_METABOLISM
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
drink_icon ="beerglass"
@@ -49,6 +49,7 @@
id = "cider"
description = "An alcoholic beverage derived from apples."
color = "#174116"
nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "rewriter"
drink_name = "Cider"
@@ -217,6 +218,7 @@
description = "A potent mixture of caffeine and alcohol."
reagent_state = LIQUID
color = "#102000" // rgb: 16, 32, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.3
heart_rate_increase = 1
drink_icon = "thirteen_loko_glass"
@@ -240,6 +242,7 @@
description = "This appears to be beer mixed with milk. Disgusting."
reagent_state = LIQUID
color = "#895C4C" // rgb: 137, 92, 76
nutriment_factor = 2 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "glass_brown"
drink_name = "Glass of bilk"
@@ -714,6 +717,7 @@
description = "A Vikings drink, though a cheap one."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "meadglass"
drink_name = "Mead"
@@ -213,7 +213,7 @@
name = "Hot Chocolate"
id = "hot_coco"
description = "Made with love! And coco beans."
nutriment_factor = 2 * REAGENTS_METABOLISM
nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#403010" // rgb: 64, 48, 16
adj_temp_hot = 5
drink_icon = "hot_coco"
@@ -225,6 +225,7 @@
id = "coffee"
description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant."
color = "#482000" // rgb: 72, 32, 0
nutriment_factor = 0
adj_dizzy = -5
adj_drowsy = -3
adj_sleepy = -2
@@ -307,6 +308,7 @@
id = "tea"
description = "Tasty black tea: It has antioxidants. It's good for you!"
color = "#101000" // rgb: 16, 16, 0
nutriment_factor = 0
adj_dizzy = -2
adj_drowsy = -1
adj_sleepy = -3
@@ -21,7 +21,7 @@
id = "nutriment"
description = "A questionable mixture of various pure nutrients commonly found in processed foods."
reagent_state = SOLID
nutriment_factor = 12 * REAGENTS_METABOLISM
nutriment_factor = 15 * REAGENTS_METABOLISM
color = "#664330" // rgb: 102, 67, 48
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M)
@@ -42,14 +42,12 @@
name = "Protein"
id = "protein"
description = "Various essential proteins and fats commonly found in animal flesh and blood."
nutriment_factor = 15 * REAGENTS_METABOLISM
diet_flags = DIET_CARN | DIET_OMNI
/datum/reagent/consumable/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
name = "Plant-matter"
id = "plantmatter"
description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce."
nutriment_factor = 15 * REAGENTS_METABOLISM
diet_flags = DIET_HERB | DIET_OMNI
/datum/reagent/consumable/vitamin
@@ -63,6 +61,8 @@
if(prob(50))
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
if(M.satiety < 600)
M.satiety += 30
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.exotic_blood)
@@ -72,6 +72,38 @@
H.vessel.add_reagent("blood", 0.5)
..()
/datum/reagent/consumable/sugar
name = "Sugar"
id = "sugar"
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 255, 255, 255
nutriment_factor = 5 * REAGENTS_METABOLISM
overdose_threshold = 200 // Hyperglycaemic shock
/datum/reagent/consumable/sugar/on_mob_life(mob/living/M)
M.AdjustDrowsy(-5)
if(current_cycle >= 90)
M.AdjustJitter(2)
if(prob(50))
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
..()
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "<span class='danger'>You pass out from hyperglycemic shock!</span>")
M.emote("collapse")
..()
/datum/reagent/consumable/sugar/overdose_process(mob/living/M, severity)
M.Paralyse(3 * severity)
M.Weaken(4 * severity)
if(prob(8))
M.adjustToxLoss(severity)
/datum/reagent/consumable/soysauce
name = "Soysauce"
id = "soysauce"
@@ -351,6 +383,7 @@
id = "rice"
description = "Enjoy the great taste of nothing."
reagent_state = SOLID
nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#FFFFFF" // rgb: 0, 0, 0
/datum/reagent/consumable/cherryjelly
@@ -409,9 +442,10 @@
description = "A sweet substance produced by bees through partial digestion. Bee barf."
reagent_state = LIQUID
color = "#d3a308"
nutriment_factor = 15 * REAGENTS_METABOLISM
/datum/reagent/consumable/honey/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 0.4)
M.reagents.add_reagent("sugar", 3)
if(prob(20))
M.adjustBruteLoss(-3)
M.adjustFireLoss(-1)
@@ -483,8 +517,6 @@
description = "Some cheese. Pour it out to make it solid."
reagent_state = SOLID
color = "#FFFF00"
metabolization_rate = 0 //heheheh
nutriment_factor = 0
/datum/reagent/consumable/cheese/on_mob_life(mob/living/M)
if(prob(3))
@@ -514,9 +546,7 @@
description = "Hell, I don't even know if this IS cheese. Whatever it is, it ain't normal. If you want to, pour it out to make it solid."
reagent_state = SOLID
color = "#50FF00"
metabolization_rate = 0 //heheheh
addiction_chance = 5
nutriment_factor = 0
/datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M)
if(prob(5))
@@ -671,37 +701,6 @@
///Food Related, but non-nutritious
/datum/reagent/sugar
name = "Sugar"
id = "sugar"
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 255, 255, 255
overdose_threshold = 200 // Hyperglycaemic shock
/datum/reagent/sugar/on_mob_life(mob/living/M)
M.AdjustDrowsy(-5)
if(current_cycle >= 90)
M.AdjustJitter(2)
if(prob(50))
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
..()
/datum/reagent/sugar/overdose_start(mob/living/M)
to_chat(M, "<span class='danger'>You pass out from hyperglycemic shock!</span>")
M.emote("collapse")
..()
/datum/reagent/sugar/overdose_process(mob/living/M, severity)
M.Paralyse(3 * severity)
M.Weaken(4 * severity)
if(prob(8))
M.adjustToxLoss(severity)
/datum/reagent/questionmark // food poisoning
name = "????"
id = "????"
@@ -2,6 +2,10 @@
name = "Medicine"
id = "medicine"
/datum/reagent/medicine/on_mob_life(mob/living/M)
current_cycle++
holder.remove_reagent(id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
/datum/reagent/medicine/hydrocodone
name = "Hydrocodone"
id = "hydrocodone"
@@ -343,28 +343,31 @@
category = list("Computer Boards")
datum/design/GAC
name = "Circuit Design (General Air Control)"
name = "Console Board (General Air Control)"
desc = "Allows for the construction of circuit boards used to build a General Air Control Computer."
id = "GAC"
req_tech = list("programming" = 3, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/air_management
category = list("Computer Boards")
datum/design/tank_control
name = "Circuit Design (Large Tank Control)"
name = "Console Board (Large Tank Control)"
desc = "Allows for the construction of circuit boards used to build a Large Tank Control Computer."
id = "tankcontrol"
req_tech = list("programming" = 3, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/large_tank_control
category = list("Computer Boards")
datum/design/AAC
name = "Circuit Design (Atmospheric Automations Console)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Autmations Console."
name = "Console Board (Atmospheric Automations Console)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Automations Console."
id = "AAC"
req_tech = list("programming" = 4, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/atmos_automation
build_path = /obj/item/weapon/circuitboard/atmos_automation
category = list("Computer Boards")
@@ -164,7 +164,7 @@
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
icon_state = "chest_implant"
implant_color = "#00AA00"
var/hunger_threshold = 150
var/hunger_threshold = NUTRITION_LEVEL_STARVING
var/synthesizing = 0
var/poison_amount = 5
slot = "stomach"
@@ -195,7 +195,7 @@
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
icon_state = "chest_implant"
implant_color = "#006607"
hunger_threshold = 300
hunger_threshold = NUTRITION_LEVEL_HUNGRY
poison_amount = 10
origin_tech = "materials=5;programming=3;biotech=5"
+1 -1
View File
@@ -66,7 +66,7 @@
if(mind) //Handles vampires "eating" blood that isn't their own.
if(mind in ticker.mode.vampires)
for(var/datum/reagent/blood/BL in vessel.reagent_list)
if(nutrition >= 450)
if(nutrition >= NUTRITION_LEVEL_WELL_FED)
break //We don't want blood tranfusions making vampires fat.
if(BL.data["donor"] != src)
nutrition += (15 * REAGENTS_METABOLISM)
@@ -103,7 +103,7 @@
can_stand = 1
/obj/item/organ/external/foot/remove()
if(owner.shoes) owner.unEquip(owner.shoes)
if(owner && owner.shoes) owner.unEquip(owner.shoes)
. = ..()
/obj/item/organ/external/foot/right
@@ -128,12 +128,13 @@
can_grasp = 1
/obj/item/organ/external/hand/remove()
if(owner.gloves)
owner.unEquip(owner.gloves)
if(owner.l_hand)
owner.unEquip(owner.l_hand,1)
if(owner.r_hand)
owner.unEquip(owner.r_hand,1)
if(owner)
if(owner.gloves)
owner.unEquip(owner.gloves)
if(owner.l_hand)
owner.unEquip(owner.l_hand,1)
if(owner.r_hand)
owner.unEquip(owner.r_hand,1)
. = ..()