Merge branch 'master' into kk-adminships

This commit is contained in:
Novacat
2020-09-27 17:02:08 -04:00
committed by GitHub
746 changed files with 49441 additions and 38323 deletions
-1
View File
@@ -181,7 +181,6 @@ var/list/admin_verbs_server = list(
/datum/admins/proc/toggle_space_ninja,
/client/proc/toggle_random_events,
/client/proc/check_customitem_activity,
/client/proc/nanomapgen_DumpImage,
/client/proc/modify_server_news,
/client/proc/recipe_dump,
/client/proc/panicbunker,
+67 -79
View File
@@ -6,36 +6,36 @@
"tgui.bundle.css" = 'tgui/packages/tgui/public/tgui.bundle.css',
)
// /datum/asset/simple/headers
// assets = list(
// "alarm_green.gif" = 'icons/program_icons/alarm_green.gif',
// "alarm_red.gif" = 'icons/program_icons/alarm_red.gif',
// "batt_5.gif" = 'icons/program_icons/batt_5.gif',
// "batt_20.gif" = 'icons/program_icons/batt_20.gif',
// "batt_40.gif" = 'icons/program_icons/batt_40.gif',
// "batt_60.gif" = 'icons/program_icons/batt_60.gif',
// "batt_80.gif" = 'icons/program_icons/batt_80.gif',
// "batt_100.gif" = 'icons/program_icons/batt_100.gif',
// "charging.gif" = 'icons/program_icons/charging.gif',
// "downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif',
// "downloader_running.gif" = 'icons/program_icons/downloader_running.gif',
// "ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif',
// "ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif',
// "power_norm.gif" = 'icons/program_icons/power_norm.gif',
// "power_warn.gif" = 'icons/program_icons/power_warn.gif',
// "sig_high.gif" = 'icons/program_icons/sig_high.gif',
// "sig_low.gif" = 'icons/program_icons/sig_low.gif',
// "sig_lan.gif" = 'icons/program_icons/sig_lan.gif',
// "sig_none.gif" = 'icons/program_icons/sig_none.gif',
// "smmon_0.gif" = 'icons/program_icons/smmon_0.gif',
// "smmon_1.gif" = 'icons/program_icons/smmon_1.gif',
// "smmon_2.gif" = 'icons/program_icons/smmon_2.gif',
// "smmon_3.gif" = 'icons/program_icons/smmon_3.gif',
// "smmon_4.gif" = 'icons/program_icons/smmon_4.gif',
// "smmon_5.gif" = 'icons/program_icons/smmon_5.gif',
// "smmon_6.gif" = 'icons/program_icons/smmon_6.gif',
// "borg_mon.gif" = 'icons/program_icons/borg_mon.gif'
// )
/datum/asset/simple/headers
assets = list(
"alarm_green.gif" = 'icons/program_icons/alarm_green.gif',
"alarm_red.gif" = 'icons/program_icons/alarm_red.gif',
"batt_5.gif" = 'icons/program_icons/batt_5.gif',
"batt_20.gif" = 'icons/program_icons/batt_20.gif',
"batt_40.gif" = 'icons/program_icons/batt_40.gif',
"batt_60.gif" = 'icons/program_icons/batt_60.gif',
"batt_80.gif" = 'icons/program_icons/batt_80.gif',
"batt_100.gif" = 'icons/program_icons/batt_100.gif',
"charging.gif" = 'icons/program_icons/charging.gif',
"downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif',
"downloader_running.gif" = 'icons/program_icons/downloader_running.gif',
"ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif',
"ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif',
"power_norm.gif" = 'icons/program_icons/power_norm.gif',
"power_warn.gif" = 'icons/program_icons/power_warn.gif',
"sig_high.gif" = 'icons/program_icons/sig_high.gif',
"sig_low.gif" = 'icons/program_icons/sig_low.gif',
"sig_lan.gif" = 'icons/program_icons/sig_lan.gif',
"sig_none.gif" = 'icons/program_icons/sig_none.gif',
"smmon_0.gif" = 'icons/program_icons/smmon_0.gif',
"smmon_1.gif" = 'icons/program_icons/smmon_1.gif',
"smmon_2.gif" = 'icons/program_icons/smmon_2.gif',
"smmon_3.gif" = 'icons/program_icons/smmon_3.gif',
"smmon_4.gif" = 'icons/program_icons/smmon_4.gif',
"smmon_5.gif" = 'icons/program_icons/smmon_5.gif',
"smmon_6.gif" = 'icons/program_icons/smmon_6.gif',
// "borg_mon.gif" = 'icons/program_icons/borg_mon.gif'
)
// /datum/asset/simple/radar_assets
// assets = list(
@@ -206,15 +206,15 @@
// "none_button.png" = 'html/none_button.png',
// )
// /datum/asset/simple/arcade
// assets = list(
// "boss1.gif" = 'icons/UI_Icons/Arcade/boss1.gif',
// "boss2.gif" = 'icons/UI_Icons/Arcade/boss2.gif',
// "boss3.gif" = 'icons/UI_Icons/Arcade/boss3.gif',
// "boss4.gif" = 'icons/UI_Icons/Arcade/boss4.gif',
// "boss5.gif" = 'icons/UI_Icons/Arcade/boss5.gif',
// "boss6.gif" = 'icons/UI_Icons/Arcade/boss6.gif',
// )
/datum/asset/simple/arcade
assets = list(
"boss1.gif" = 'icons/UI_Icons/Arcade/boss1.gif',
"boss2.gif" = 'icons/UI_Icons/Arcade/boss2.gif',
"boss3.gif" = 'icons/UI_Icons/Arcade/boss3.gif',
"boss4.gif" = 'icons/UI_Icons/Arcade/boss4.gif',
"boss5.gif" = 'icons/UI_Icons/Arcade/boss5.gif',
"boss6.gif" = 'icons/UI_Icons/Arcade/boss6.gif',
)
// /datum/asset/spritesheet/simple/achievements
// name ="achievements"
@@ -433,45 +433,6 @@
// Insert("polycrystal", 'icons/obj/telescience.dmi', "polycrystal")
// ..()
/datum/asset/nanoui
var/list/common = list()
var/list/common_dirs = list(
"nano/css/",
"nano/images/",
"nano/images/modular_computers/",
"nano/js/"
)
var/list/template_dirs = list(
"nano/templates/"
)
/datum/asset/nanoui/register()
// Crawl the directories to find files.
for(var/path in common_dirs)
var/list/filenames = flist(path)
for(var/filename in filenames)
if(copytext(filename, length(filename)) != "/") // Ignore directories.
if(fexists(path + filename))
common[filename] = fcopy_rsc(path + filename)
register_asset(filename, common[filename])
// Combine all templates into a single bundle.
var/list/template_data = list()
for(var/path in template_dirs)
var/list/filenames = flist(path)
for(var/filename in filenames)
if(copytext(filename, length(filename) - 4) == ".tmpl") // Ignore directories.
template_data[filename] = file2text(path + filename)
var/template_bundle = "function nanouiTemplateBundle(){return [json_encode(template_data)];}"
var/fname = "data/nano_templates_bundle.js"
fdel(fname)
text2file(template_bundle, fname)
register_asset("nano_templates_bundle.js", fcopy_rsc(fname))
fdel(fname)
/datum/asset/nanoui/send(client)
send_asset_list(client, common)
//Pill sprites for UIs
/datum/asset/chem_master
var/assets = list()
@@ -522,4 +483,31 @@
/datum/asset/spritesheet/sheetmaterials/register()
InsertAll("", 'icons/obj/stacks.dmi')
..()
..()
// Nanomaps
/datum/asset/simple/nanomaps
// It REALLY doesnt matter too much if these arent up to date
// They are relatively big
assets = list(
// VOREStation Edit: We don't need Southern Cross
// "southern_cross_nanomap_z1.png" = 'icons/_nanomaps/southern_cross_nanomap_z1.png',
// "southern_cross_nanomap_z10.png" = 'icons/_nanomaps/southern_cross_nanomap_z10.png',
// "southern_cross_nanomap_z2.png" = 'icons/_nanomaps/southern_cross_nanomap_z2.png',
// "southern_cross_nanomap_z3.png" = 'icons/_nanomaps/southern_cross_nanomap_z3.png',
// "southern_cross_nanomap_z5.png" = 'icons/_nanomaps/southern_cross_nanomap_z5.png',
// "southern_cross_nanomap_z6.png" = 'icons/_nanomaps/southern_cross_nanomap_z6.png',
"tether_nanomap_z1.png" = 'icons/_nanomaps/tether_nanomap_z1.png',
"tether_nanomap_z2.png" = 'icons/_nanomaps/tether_nanomap_z2.png',
"tether_nanomap_z3.png" = 'icons/_nanomaps/tether_nanomap_z3.png',
"tether_nanomap_z4.png" = 'icons/_nanomaps/tether_nanomap_z4.png',
"tether_nanomap_z5.png" = 'icons/_nanomaps/tether_nanomap_z5.png',
"tether_nanomap_z6.png" = 'icons/_nanomaps/tether_nanomap_z6.png',
"tether_nanomap_z7.png" = 'icons/_nanomaps/tether_nanomap_z7.png',
"tether_nanomap_z8.png" = 'icons/_nanomaps/tether_nanomap_z8.png',
"tether_nanomap_z9.png" = 'icons/_nanomaps/tether_nanomap_z9.png',
"tether_nanomap_z10.png" = 'icons/_nanomaps/tether_nanomap_z10.png',
"tether_nanomap_z13.png" = 'icons/_nanomaps/tether_nanomap_z13.png',
"tether_nanomap_z14.png" = 'icons/_nanomaps/tether_nanomap_z14.png',
// VOREStation Edit End
)
+6 -1
View File
@@ -391,4 +391,9 @@
/obj/structure/symbol/sa
desc = "It looks like a right triangle with a dot to the side. It reminds you of a wooden strut between a wall and ceiling."
icon_state = "sa"
icon_state = "sa"
/obj/structure/symbol/maint
name = "maintenance panel"
desc = "This sign suggests that the wall it's attached to can be opened somehow."
icon_state = "maintenance_panel"
@@ -5,6 +5,16 @@
slot = slot_glasses
sort_category = "Glasses and Eyewear"
/datum/gear/eyes/eyepatchwhite
display_name = "eyepatch (recolorable)"
path = /obj/item/clothing/glasses/eyepatchwhite
slot = slot_glasses
sort_category = "Glasses and Eyewear"
/datum/gear/eyes/eyepatchwhite/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/eyes/glasses
display_name = "Glasses, prescription"
path = /obj/item/clothing/glasses/regular
@@ -911,6 +911,13 @@
ckeywhitelist = list("theskringdinger")
character_name = list("Monty Kopic")
/datum/gear/fluff/shadow_laptop
path = /obj/item/modular_computer/laptop/preset/custom_loadout/advanced/shadowlarkens
display_name = "Shadow's Laptop"
ckeywhitelist = list("tigercat2000")
character_name = list("Shadow Larkens")
cost = 5
/datum/gear/fluff/konor_medal
path = /obj/item/clothing/accessory/medal/silver/unity
display_name = "Konor's Unity Medal"
+7 -1
View File
@@ -2,7 +2,7 @@
name = "clothing"
siemens_coefficient = 0.9
drop_sound = 'sound/items/drop/clothing.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
pickup_sound = 'sound/items/pickup/clothing.ogg'
var/list/species_restricted = null //Only these species can wear this kit.
var/gunshot_residue //Used by forensics.
@@ -435,6 +435,8 @@
fingerprint_chance = 100
punch_force = 2
body_parts_covered = 0
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
///////////////////////////////////////////////////////////////////////
//Head
@@ -573,6 +575,9 @@
var/list/say_messages
var/list/say_verbs
drop_sound = "generic_drop"
pickup_sound = "generic_pickup"
/obj/item/clothing/mask/update_clothing_icon()
if (ismob(src.loc))
var/mob/M = src.loc
@@ -733,6 +738,7 @@
siemens_coefficient = 0.9
w_class = ITEMSIZE_NORMAL
preserve_item = 1
equip_sound = 'sound/items/jumpsuit_equip.ogg'
sprite_sheets = list(
+4 -4
View File
@@ -53,8 +53,8 @@
desc = "A delicate golden chain worn by female skrell to decorate their head tails."
icon_state = "skrell_chain"
item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5")
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/ears/skrell/chain/silver
name = "Silver headtail chains"
@@ -85,8 +85,8 @@
desc = "Golden metallic bands worn by male skrell to adorn their head tails."
icon_state = "skrell_band"
item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5")
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/ears/skrell/band/silver
name = "Silver headtail bands"
+24
View File
@@ -199,6 +199,30 @@ BLIND // can't see anything
icon_state = initial(icon_state)
update_clothing_icon()
/obj/item/clothing/glasses/eyepatchwhite
name = "eyepatch"
desc = "A simple eyepatch made of a strip of cloth tied around the head."
icon_state = "eyepatch_white"
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
body_parts_covered = 0
var/eye = null
drop_sound = 'sound/items/drop/gloves.ogg'
pickup_sound = 'sound/items/pickup/gloves.ogg'
/obj/item/clothing/glasses/eyepatchwhite/verb/switcheye()
set name = "Switch Eyepatch"
set category = "Object"
set src in usr
if(!istype(usr, /mob/living)) return
if(usr.stat) return
eye = !eye
if(eye)
icon_state = "[icon_state]_1"
else
icon_state = initial(icon_state)
update_clothing_icon()
/obj/item/clothing/glasses/monocle
name = "monocle"
desc = "Such a dapper eyepiece!"
-12
View File
@@ -8,8 +8,6 @@
var/obj/item/clothing/glasses/hud/omni/hud = null
var/mode = "civ"
icon_state = "glasses"
var/datum/nano_module/arscreen
var/arscreen_path
var/datum/tgui_module/tgarscreen
var/tgarscreen_path
var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection
@@ -18,34 +16,24 @@
/obj/item/clothing/glasses/omnihud/New()
..()
if(arscreen_path)
arscreen = new arscreen_path(src)
if(tgarscreen_path)
tgarscreen = new tgarscreen_path(src)
/obj/item/clothing/glasses/omnihud/Destroy()
QDEL_NULL(arscreen)
QDEL_NULL(tgarscreen)
. = ..()
/obj/item/clothing/glasses/omnihud/dropped()
if(arscreen)
SSnanoui.close_uis(src)
if(tgarscreen)
SStgui.close_uis(src)
..()
/obj/item/clothing/glasses/omnihud/emp_act(var/severity)
if(arscreen)
SSnanoui.close_uis(src)
if(tgarscreen)
SStgui.close_uis(src)
var/disconnect_ar = arscreen
var/disconnect_tgar = tgarscreen
arscreen = null
tgarscreen = null
spawn(20 SECONDS)
arscreen = disconnect_ar
tgarscreen = disconnect_tgar
//extra fun for non-sci variants; a small chance flip the state to the dumb 3d glasses when EMP'd
@@ -37,6 +37,7 @@
icon_state = "sunflower_crown"
body_parts_covered = 0
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
/obj/item/clothing/head/lavender_crown
name = "lavender crown"
@@ -44,6 +45,7 @@
icon_state = "lavender_crown"
body_parts_covered = 0
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
/obj/item/clothing/head/poppy_crown
name = "poppy crown"
@@ -51,6 +53,7 @@
icon_state = "poppy_crown"
body_parts_covered = 0
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
/obj/item/clothing/head/rose_crown
name = "rose crown"
@@ -58,3 +61,4 @@
icon_state = "poppy_crown"
body_parts_covered = 0
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
+4 -3
View File
@@ -17,8 +17,8 @@
desc = "A nice hair pin."
slot_flags = SLOT_HEAD | SLOT_EARS
body_parts_covered = 0
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
/obj/item/clothing/head/pin/pink
icon_state = "pinkpin"
@@ -424,7 +424,8 @@
desc = "A jeweled headpiece originating in India."
icon_state = "maangtikka"
body_parts_covered = 0
drop_sound = 'sound/items/drop/accessory.ogg'
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/head/jingasa
name = "jingasa"
+2
View File
@@ -10,6 +10,8 @@
permeability_coefficient = 0.50
var/hanging = 0
action_button_name = "Adjust Breath Mask"
pickup_sound = 'sound/items/pickup/component.ogg'
drop_sound = 'sound/items/drop/component.ogg'
/obj/item/clothing/mask/breath/proc/adjust_mask(mob/user)
+1
View File
@@ -13,6 +13,7 @@
var/gas_filter_strength = 1 //For gas mask filters
var/list/filtered_gases = list("phoron", "nitrous_oxide")
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0)
pickup_sound = 'sound/items/pickup/rubber.ogg'
/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air)
var/datum/gas_mixture/gas_filtered = new
+2 -2
View File
@@ -108,7 +108,7 @@ obj/item/clothing/shoes/sandal/clogs
species_restricted = null
w_class = ITEMSIZE_SMALL
drop_sound = 'sound/items/drop/clothing.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
pickup_sound = 'sound/items/pickup/clothing.ogg'
/obj/item/clothing/shoes/slippers/worn
name = "worn bunny slippers"
@@ -172,7 +172,7 @@ obj/item/clothing/shoes/sandal/clogs
w_class = ITEMSIZE_SMALL
species_restricted = null
drop_sound = 'sound/items/drop/clothing.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
pickup_sound = 'sound/items/pickup/clothing.ogg'
/obj/item/clothing/shoes/boots/ranger
var/bootcolor = "white"
@@ -23,7 +23,7 @@
to_chat(usr, "Your module is not installed in a hardsuit.")
return
module.holder.ui_interact(usr, nano_state = contained_state)
module.holder.tgui_interact(usr, custom_state = GLOB.tgui_contained_state)
/obj/item/rig_module/ai_container
@@ -134,7 +134,7 @@
if(!target)
if(ai_card)
if(istype(ai_card,/obj/item/device/aicard))
ai_card.tgui_interact(H, custom_state = deep_inventory_state)
ai_card.tgui_interact(H, custom_state = GLOB.tgui_deep_inventory_state)
else
eject_ai(H)
update_verb_holder()
@@ -13,9 +13,6 @@
var/stored_name
var/badge_string = "Corporate Security"
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/badge/old
name = "faded badge"
+157 -155
View File
@@ -15,7 +15,7 @@
var/const/fund_cap = 1000000
/obj/machinery/account_database/proc/get_access_level()
if (!held_card)
if(!held_card)
return 0
if(access_cent_captain in held_card.access)
return 2
@@ -53,19 +53,24 @@
O.loc = src
held_card = O
SSnanoui.update_uis(src)
SStgui.update_uis(src)
attack_hand(user)
/obj/machinery/account_database/attack_hand(mob/user as mob)
if(stat & (NOPOWER|BROKEN)) return
ui_interact(user)
tgui_interact(user)
/obj/machinery/account_database/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
user.set_machine(src)
/obj/machinery/account_database/tgui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AccountsTerminal", name)
ui.open()
/obj/machinery/account_database/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
var/data[0]
data["src"] = "\ref[src]"
data["id_inserted"] = !!held_card
data["id_card"] = held_card ? text("[held_card.registered_name], [held_card.assignment]") : "-----"
data["access_level"] = get_access_level()
@@ -73,10 +78,14 @@
data["creating_new_account"] = creating_new_account
data["detailed_account_view"] = !!detailed_account_view
data["station_account_number"] = station_account.account_number
data["transactions"] = null
data["accounts"] = null
if (detailed_account_view)
data["account_number"] = null
data["owner_name"] = null
data["money"] = null
data["suspended"] = null
data["transactions"] = list()
if(detailed_account_view)
data["account_number"] = detailed_account_view.account_number
data["owner_name"] = detailed_account_view.owner_name
data["money"] = detailed_account_view.money
@@ -92,11 +101,10 @@
"amount" = T.amount, \
"source_terminal" = T.source_terminal)))
if (trx.len > 0)
data["transactions"] = trx
data["transactions"] = trx
var/list/accounts[0]
for(var/i=1, i<=all_money_accounts.len, i++)
var/list/accounts = list()
for(var/i in 1 to LAZYLEN(all_money_accounts))
var/datum/money_account/D = all_money_accounts[i]
if(D.offmap)
continue
@@ -106,174 +114,168 @@
"suspended"=D.suspended ? "SUSPENDED" : "",\
"account_index"=i)))
if (accounts.len > 0)
data["accounts"] = accounts
data["accounts"] = accounts
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "accounts_terminal.tmpl", src.name, 400, 640)
ui.set_initial_data(data)
ui.open()
return data
/obj/machinery/account_database/Topic(href, href_list)
/obj/machinery/account_database/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
if(..())
return 1
return TRUE
var/datum/nanoui/ui = SSnanoui.get_open_ui(usr, src, "main")
switch(action)
if("create_account")
creating_new_account = 1
if(href_list["choice"])
switch(href_list["choice"])
if("create_account")
creating_new_account = 1
if("add_funds")
var/amount = input("Enter the amount you wish to add", "Silently add funds") as num
if(detailed_account_view)
detailed_account_view.money = min(detailed_account_view.money + amount, fund_cap)
if("add_funds")
var/amount = input("Enter the amount you wish to add", "Silently add funds") as num
if(detailed_account_view)
detailed_account_view.money = min(detailed_account_view.money + amount, fund_cap)
if("remove_funds")
var/amount = input("Enter the amount you wish to remove", "Silently remove funds") as num
if(detailed_account_view)
detailed_account_view.money = max(detailed_account_view.money - amount, -fund_cap)
if("remove_funds")
var/amount = input("Enter the amount you wish to remove", "Silently remove funds") as num
if(detailed_account_view)
detailed_account_view.money = max(detailed_account_view.money - amount, -fund_cap)
if("toggle_suspension")
if(detailed_account_view)
detailed_account_view.suspended = !detailed_account_view.suspended
callHook("change_account_status", list(detailed_account_view))
if("toggle_suspension")
if(detailed_account_view)
detailed_account_view.suspended = !detailed_account_view.suspended
callHook("change_account_status", list(detailed_account_view))
if("finalise_create_account")
var/account_name = params["holder_name"]
var/starting_funds = max(text2num(params["starting_funds"]), 0)
if("finalise_create_account")
var/account_name = href_list["holder_name"]
var/starting_funds = max(text2num(href_list["starting_funds"]), 0)
starting_funds = CLAMP(starting_funds, 0, station_account.money) // Not authorized to put the station in debt.
starting_funds = min(starting_funds, fund_cap) // Not authorized to give more than the fund cap.
starting_funds = CLAMP(starting_funds, 0, station_account.money) // Not authorized to put the station in debt.
starting_funds = min(starting_funds, fund_cap) // Not authorized to give more than the fund cap.
create_account(account_name, starting_funds, src)
if(starting_funds > 0)
//subtract the money
station_account.money -= starting_funds
create_account(account_name, starting_funds, src)
if(starting_funds > 0)
//subtract the money
station_account.money -= starting_funds
//create a transaction log entry
var/trx = create_transation(account_name, "New account activation", "([starting_funds])")
station_account.transaction_log.Add(trx)
creating_new_account = 0
ui.close()
//create a transaction log entry
var/trx = create_transation(account_name, "New account activation", "([starting_funds])")
station_account.transaction_log.Add(trx)
creating_new_account = 0
if("insert_card")
if(held_card)
held_card.loc = src.loc
if(ishuman(usr) && !usr.get_active_hand())
usr.put_in_hands(held_card)
held_card = null
creating_new_account = 0
if("insert_card")
if(held_card)
held_card.loc = src.loc
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = I
usr.drop_item()
C.loc = src
held_card = C
if(ishuman(usr) && !usr.get_active_hand())
usr.put_in_hands(held_card)
held_card = null
if("view_account_detail")
var/index = text2num(href_list["account_index"])
if(index && index <= all_money_accounts.len)
detailed_account_view = all_money_accounts[index]
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = I
usr.drop_item()
C.loc = src
held_card = C
if("view_accounts_list")
detailed_account_view = null
creating_new_account = 0
if("view_account_detail")
var/index = text2num(params["account_index"])
if(index && index <= all_money_accounts.len)
detailed_account_view = all_money_accounts[index]
if("revoke_payroll")
var/funds = detailed_account_view.money
var/account_trx = create_transation(station_account.owner_name, "Revoke payroll", "([funds])")
var/station_trx = create_transation(detailed_account_view.owner_name, "Revoke payroll", funds)
if("view_accounts_list")
detailed_account_view = null
creating_new_account = 0
station_account.money += funds
detailed_account_view.money = 0
if("revoke_payroll")
var/funds = detailed_account_view.money
var/account_trx = create_transation(station_account.owner_name, "Revoke payroll", "([funds])")
var/station_trx = create_transation(detailed_account_view.owner_name, "Revoke payroll", funds)
detailed_account_view.transaction_log.Add(account_trx)
station_account.transaction_log.Add(station_trx)
station_account.money += funds
detailed_account_view.money = 0
callHook("revoke_payroll", list(detailed_account_view))
detailed_account_view.transaction_log.Add(account_trx)
station_account.transaction_log.Add(station_trx)
if("print")
var/text
var/obj/item/weapon/paper/P = new(loc)
if (detailed_account_view)
P.name = "account #[detailed_account_view.account_number] details"
var/title = "Account #[detailed_account_view.account_number] Details"
text = {"
[accounting_letterhead(title)]
<u>Holder:</u> [detailed_account_view.owner_name]<br>
<u>Balance:</u> $[detailed_account_view.money]<br>
<u>Status:</u> [detailed_account_view.suspended ? "Suspended" : "Active"]<br>
<u>Transactions:</u> ([detailed_account_view.transaction_log.len])<br>
<table>
<thead>
<tr>
<td>Timestamp</td>
<td>Target</td>
<td>Reason</td>
<td>Value</td>
<td>Terminal</td>
</tr>
</thead>
<tbody>
"}
callHook("revoke_payroll", list(detailed_account_view))
for (var/datum/transaction/T in detailed_account_view.transaction_log)
text += {"
<tr>
<td>[T.date] [T.time]</td>
<td>[T.target_name]</td>
<td>[T.purpose]</td>
<td>[T.amount]</td>
<td>[T.source_terminal]</td>
</tr>
"}
if("print")
print()
text += {"
</tbody>
</table>
"}
return TRUE
else
P.name = "financial account list"
text = {"
[accounting_letterhead("Financial Account List")]
/obj/machinery/account_database/proc/print()
var/text
var/obj/item/weapon/paper/P = new(loc)
if(detailed_account_view)
P.name = "account #[detailed_account_view.account_number] details"
var/title = "Account #[detailed_account_view.account_number] Details"
text = {"
[accounting_letterhead(title)]
<u>Holder:</u> [detailed_account_view.owner_name]<br>
<u>Balance:</u> $[detailed_account_view.money]<br>
<u>Status:</u> [detailed_account_view.suspended ? "Suspended" : "Active"]<br>
<u>Transactions:</u> ([detailed_account_view.transaction_log.len])<br>
<table>
<thead>
<tr>
<td>Timestamp</td>
<td>Target</td>
<td>Reason</td>
<td>Value</td>
<td>Terminal</td>
</tr>
</thead>
<tbody>
"}
<table>
<thead>
<tr>
<td>Account Number</td>
<td>Holder</td>
<td>Balance</td>
<td>Status</td>
</tr>
</thead>
<tbody>
"}
for (var/datum/transaction/T in detailed_account_view.transaction_log)
text += {"
<tr>
<td>[T.date] [T.time]</td>
<td>[T.target_name]</td>
<td>[T.purpose]</td>
<td>[T.amount]</td>
<td>[T.source_terminal]</td>
</tr>
"}
for(var/i=1, i<=all_money_accounts.len, i++)
var/datum/money_account/D = all_money_accounts[i]
text += {"
<tr>
<td>#[D.account_number]</td>
<td>[D.owner_name]</td>
<td>$[D.money]</td>
<td>[D.suspended ? "Suspended" : "Active"]</td>
</tr>
"}
text += {"
</tbody>
</table>
"}
text += {"
</tbody>
</table>
"}
else
P.name = "financial account list"
text = {"
[accounting_letterhead("Financial Account List")]
P.info = text
state("The terminal prints out a report.")
<table>
<thead>
<tr>
<td>Account Number</td>
<td>Holder</td>
<td>Balance</td>
<td>Status</td>
</tr>
</thead>
<tbody>
"}
return 1
for(var/i=1, i<=all_money_accounts.len, i++)
var/datum/money_account/D = all_money_accounts[i]
text += {"
<tr>
<td>#[D.account_number]</td>
<td>[D.owner_name]</td>
<td>$[D.money]</td>
<td>[D.suspended ? "Suspended" : "Active"]</td>
</tr>
"}
text += {"
</tbody>
</table>
"}
P.info = text
state("The terminal prints out a report.")
+7 -15
View File
@@ -36,7 +36,11 @@
var/obj/item/device/pda/P
var/list/viables = list()
for(var/obj/item/device/pda/check_pda in sortAtom(PDAs))
if (!check_pda.owner||check_pda.toff||check_pda == src||check_pda.hidden)
if (!check_pda.owner || check_pda == src || check_pda.hidden)
continue
var/datum/data/pda/app/messenger/M = check_pda.find_program(/datum/data/pda/app/messenger)
if(!M || M.toff)
continue
viables.Add(check_pda)
@@ -112,17 +116,5 @@
//Commented out because we don't send messages like this anymore. Instead it will just popup in their chat window.
//P.tnote += "<i><b>&larr; From [sender] (Unknown / spam?):</b></i><br>[message]<br>"
if (!P.message_silent)
playsound(P, 'sound/machines/twobeep.ogg', 50, 1)
for (var/mob/O in hearers(3, P.loc))
if(!P.message_silent) O.show_message(text("[bicon(P)] *[P.ttone]*"))
//Search for holder of the PDA.
var/mob/living/L = null
if(P.loc && isliving(P.loc))
L = P.loc
//Maybe they are a pAI!
else
L = get(P, /mob/living/silicon)
if(L)
to_chat(L, "[bicon(P)] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")
var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger)
PM.notify("<b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)", 0)
+2 -10
View File
@@ -84,17 +84,9 @@
var/datum/supply_demand_order/random = pick(required_items)
command_announcement.Announce("What happened? Accounting is here right now and they're already asking where that [random.name] is. Damn, I gotta go", my_department)
var/message = "The delivery deadline was reached with the following needs outstanding:<hr>"
for (var/datum/supply_demand_order/req in required_items)
for(var/datum/supply_demand_order/req in required_items)
message += req.describe() + "<br>"
for (var/obj/machinery/computer/communications/C in machines)
if(C.operable())
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc )
P.name = "'[my_department] Mission Summary'"
P.info = message
P.update_space(P.info)
P.update_icon()
C.messagetitle.Add("[my_department] Mission Summary")
C.messagetext.Add(P.info)
post_comm_message("'[my_department] Mission Summary'", message)
/**
* Event Handler for responding to the supply shuttle arriving at centcom.
*/
+8 -2
View File
@@ -5,8 +5,8 @@
name = "drink"
desc = "yummy"
icon = 'icons/obj/drinks.dmi'
drop_sound = 'sound/items/drop/bottle.ogg'
pickup_sound = 'sound/items/pickup/bottle.ogg'
drop_sound = 'sound/items/drop/drinkglass.ogg'
pickup_sound = 'sound/items/pickup/drinkglass.ogg'
icon_state = null
flags = OPENCONTAINER
amount_per_transfer_from_this = 5
@@ -234,6 +234,7 @@
trash = /obj/item/trash/coffee
center_of_mass = list("x"=15, "y"=13)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/Initialize()
..()
@@ -248,6 +249,7 @@
trash = /obj/item/trash/coffee
center_of_mass = list("x"=16, "y"=14)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/greentea/Initialize()
. = ..()
@@ -262,6 +264,7 @@
trash = /obj/item/trash/coffee
center_of_mass = list("x"=16, "y"=14)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/chaitea/Initialize()
. = ..()
@@ -276,6 +279,7 @@
trash = /obj/item/trash/coffee
center_of_mass = list("x"=16, "y"=14)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/decaf/Initialize()
. = ..()
@@ -289,6 +293,7 @@
trash = /obj/item/trash/ramen
center_of_mass = list("x"=16, "y"=11)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/Initialize()
..()
@@ -302,6 +307,7 @@
volume = 10
center_of_mass = list("x"=16, "y"=12)
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/weapon/reagent_containers/food/drinks/sillycup/Initialize()
. = ..()
+1
View File
@@ -19,6 +19,7 @@
if(isGlass)
unacidable = 1
drop_sound = 'sound/items/drop/bottle.ogg'
pickup_sound = 'sound/items/pickup/bottle.ogg'
/obj/item/weapon/reagent_containers/food/drinks/bottle/Destroy()
if(rag)
@@ -8,8 +8,6 @@
volume = 30
unacidable = 1 //glass
center_of_mass = list("x"=16, "y"=10)
drop_sound = 'sound/items/drop/drinkglass.ogg'
pickup_sound = 'sound/items/pickup/drinkglass.ogg'
matter = list("glass" = 500)
on_reagent_change()
+3
View File
@@ -318,6 +318,7 @@
nutriment_amt = 1
nutriment_desc = list("candy" = 1)
/obj/item/weapon/reagent_containers/food/snacks/candy/Initialize()
. = ..()
reagents.add_reagent("sugar", 3)
@@ -4161,6 +4162,8 @@
trash = /obj/item/trash/unajerky
filling_color = "#631212"
center_of_mass = list("x"=15, "y"=9)
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
/obj/item/weapon/reagent_containers/food/snacks/unajerky/Initialize()
. =..()
@@ -16,7 +16,7 @@
use_power = USE_POWER_IDLE
idle_power_usage = 5 // Power used when turned on, but not processing anything
active_power_usage = 1000 // Power used when turned on and actively cooking something
var/cooking_power = 0 // Effectiveness/speed at cooking
var/cooking_coeff = 0 // Optimal power * proximity to optimal temp; used to calc. cooking power.
var/heating_power = 1000 // Effectiveness at heating up; not used for mixers, should be equal to active_power_usage
@@ -44,9 +44,9 @@
/obj/machinery/appliance/Initialize()
. = ..()
default_apply_parts()
if(output_options.len)
verbs += /obj/machinery/appliance/proc/choose_output
@@ -206,7 +206,7 @@
//Handles all validity checking and error messages for inserting things
/obj/machinery/appliance/proc/can_insert(var/obj/item/I, var/mob/user)
if (istype(I, /obj/item/weapon/gripper))
if(istype(I.loc, /mob/living/silicon))
return 0
else if (istype(I.loc, /obj/item/rig_module))
return 0
@@ -266,26 +266,52 @@
to_chat(user, "<span class='warning'>\The [src] is not working.</span>")
return FALSE
var/result = can_insert(I, user)
if(!result)
if(!(default_deconstruction_screwdriver(user, I)))
default_part_replacement(user, I)
return FALSE
var/obj/item/ToCook = I
if(result == 2)
var/obj/item/weapon/grab/G = I
if (G && istype(G) && G.affecting)
cook_mob(G.affecting, user)
return FALSE
if(istype(I, /obj/item/weapon/gripper))
var/obj/item/weapon/gripper/GR = I
var/obj/item/Wrap = GR.wrapped
if(Wrap)
Wrap.loc = get_turf(src)
var/result = can_insert(Wrap, user)
if(!result)
Wrap.forceMove(GR)
if(!(default_deconstruction_screwdriver(user, I)))
default_part_replacement(user, I)
return
if(QDELETED(GR.wrapped))
GR.wrapped = null
if(GR?.wrapped.loc != src)
GR.drop_item_nm()
ToCook = Wrap
else
attack_hand(user)
return
else
var/result = can_insert(I, user)
if(!result)
if(!(default_deconstruction_screwdriver(user, I)))
default_part_replacement(user, I)
return
if(result == 2)
var/obj/item/weapon/grab/G = I
if (G && istype(G) && G.affecting)
cook_mob(G.affecting, user)
return
//From here we can start cooking food
. = add_content(I, user)
add_content(ToCook, user)
update_icon()
//Override for container mechanics
/obj/machinery/appliance/proc/add_content(var/obj/item/I, var/mob/user)
if(!user.unEquip(I))
return FALSE
if(!user.unEquip(I) && !isturf(I.loc))
return
var/datum/cooking_item/CI = has_space(I)
if (istype(I, /obj/item/weapon/reagent_containers/cooking_container) && CI == 1)
@@ -458,7 +484,7 @@
//Final step. Cook function just cooks batter for now.
for (var/obj/item/weapon/reagent_containers/food/snacks/S in CI.container)
S.cook()
//Combination cooking involves combining the names and reagents of ingredients into a predefined output object
//The ingredients represent flavours or fillings. EG: donut pizza, cheese bread
@@ -566,7 +592,7 @@
smoke.attach(src)
smoke.set_up(10, 0, get_turf(src), 300)
smoke.start()
// Set off fire alarms!
var/obj/machinery/firealarm/FA = locate() in get_area(src)
if(FA)
@@ -32,13 +32,26 @@
/obj/item/weapon/reagent_containers/cooking_container/attackby(var/obj/item/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/gripper))
var/obj/item/weapon/gripper/GR = I
if(GR.wrapped)
GR.wrapped.forceMove(get_turf(src))
attackby(GR.wrapped, user)
if(QDELETED(GR.wrapped))
GR.wrapped = null
if(GR?.wrapped.loc != src)
GR.wrapped = null
return
for (var/possible_type in insertable)
if (istype(I, possible_type))
if (!can_fit(I))
to_chat(user, "<span class='warning'>There's no more space in the [src] for that!</span>")
return 0
if(!user.unEquip(I))
if(!user.unEquip(I) && !isturf(I.loc))
return
I.forceMove(src)
to_chat(user, "<span class='notice'>You put the [I] into the [src].</span>")
@@ -152,7 +165,7 @@
/obj/item/weapon/reagent_containers/cooking_container/oven/Initialize()
. = ..()
// We add to the insertable list specifically for the oven trays, to allow specialty cakes.
insertable += list(
/obj/item/clothing/head/cakehat, // This is because we want to allow birthday cakes to be makeable.
@@ -164,7 +177,7 @@
shortname = "basket"
desc = "Put ingredients in this; designed for use with a deep fryer. Warranty void if used incorrectly. Alt click to remove contents."
icon_state = "basket"
/obj/item/weapon/reagent_containers/cooking_container/grill
name = "grill rack"
shortname = "rack"
+3 -3
View File
@@ -81,7 +81,7 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
)
result = /obj/item/weapon/reagent_containers/food/snacks/flatbread
/datum/recipe/tortilla
appliance = OVEN
reagents = list("flour" = 5)
@@ -408,7 +408,7 @@
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
/datum/recipe/cake/peanut
fruit = list("peanut" = 3)
reagents = list("milk" = 5, "flour" = 10, "sugar" = 5, "egg" = 6, "peanutbutter" = 5)
@@ -458,7 +458,7 @@
/datum/recipe/pancakes
appliance = OVEN
fruit = list("blueberries" = 2)
fruit = list("berries" = 2)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
@@ -35,7 +35,11 @@
var/list/viables = list()
for(var/obj/item/device/pda/check_pda in sortAtom(PDAs))
if(!check_pda.owner || check_pda.toff || check_pda.hidden || check_pda.spam_proof)
if (!check_pda.owner || check_pda == src || check_pda.hidden)
continue
var/datum/data/pda/app/messenger/M = check_pda.find_program(/datum/data/pda/app/messenger)
if(!M || M.toff)
continue
viables += check_pda
@@ -93,7 +97,7 @@
message = pick("Luxury watches for Blowout sale prices!",\
"Watches, Jewelry & Accessories, Bags & Wallets !",\
"Deposit 100$ and get 300$ totally free!",\
" 100K NT.|WOWGOLD õnly $89 <HOT>",\
" 100K NT.|WOWGOLD nly $89 <HOT>",\
"We have been filed with a complaint from one of your customers in respect of their business relations with you.",\
"We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..")
if(4)
@@ -127,7 +131,8 @@
/datum/event2/event/pda_spam/proc/send_spam(obj/item/device/pda/P, sender, message)
last_spam_time = world.time
P.spam_message(sender, message)
var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger)
PM.notify("<b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)", 0)
if(spam_debug)
log_debug("PDA Spam event sent spam to \the [P].")
@@ -218,7 +218,7 @@
/datum/event2/event/prison_break/start()
for(var/area/A in areas_to_break)
spawn(0) // So we don't block the ticker.
A.prison_break(open_blast_doors = !ignore_blast_doors)
A.prison_break(TRUE, TRUE, !ignore_blast_doors) // Naming `open_blast_doors` causes mysterious runtimes.
// There's between 40 seconds and one minute before the whole station knows.
// If there's a baddie engineer, they can choose to keep their early announcement to themselves and get a minute to exploit it.
File diff suppressed because it is too large Load Diff
+3
View File
@@ -337,3 +337,6 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
/obj/item/seeds/sifbulb
seed_type = "sifbulb"
/obj/item/seeds/wurmwoad
seed_type = "wurmwoad"
+4 -2
View File
@@ -138,7 +138,8 @@
/obj/item/seeds/wabback = 2,
/obj/item/seeds/watermelonseed = 3,
/obj/item/seeds/wheatseed = 3,
/obj/item/seeds/whitebeetseed = 3
/obj/item/seeds/whitebeetseed = 3,
/obj/item/seeds/wurmwoad = 3
)
/obj/machinery/seed_storage/xenobotany
@@ -195,7 +196,8 @@
/obj/item/seeds/wabback = 2,
/obj/item/seeds/watermelonseed = 3,
/obj/item/seeds/wheatseed = 3,
/obj/item/seeds/whitebeetseed = 3
/obj/item/seeds/whitebeetseed = 3,
/obj/item/seeds/wurmwoad = 3
)
/obj/machinery/seed_storage/attack_hand(mob/user as mob)
@@ -0,0 +1,15 @@
/datum/seed/amauri
name = "amauri"
seed_name = "amauri"
display_name = "amauri plant"
kitchen_tag = "amauri"
chems = list("zombiepowder" = list(1,10),"condensedcapsaicin" = list(1,5),"nutriment" = list(1,5))
/datum/seed/amauri/New()
..()
set_trait(TRAIT_PLANT_ICON,"bush4")
set_trait(TRAIT_ENDURANCE,10)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,9)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
@@ -0,0 +1,46 @@
//Ambrosia/varieties.
/datum/seed/ambrosia
name = "ambrosia"
seed_name = "ambrosia vulgaris"
display_name = "ambrosia vulgaris"
kitchen_tag = "ambrosia"
mutants = list("ambrosiadeus")
chems = list("nutriment" = list(1), "space_drugs" = list(1,8), "kelotane" = list(1,8,1), "bicaridine" = list(1,10,1), "toxin" = list(1,10))
/datum/seed/ambrosia/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"ambrosia")
set_trait(TRAIT_PRODUCT_COLOUR,"#9FAD55")
set_trait(TRAIT_PLANT_ICON,"ambrosia")
set_trait(TRAIT_IDEAL_LIGHT, 6)
/datum/seed/ambrosia/deus
name = "ambrosiadeus"
seed_name = "ambrosia deus"
display_name = "ambrosia deus"
kitchen_tag = "ambrosiadeus"
mutants = list("ambrosiainfernus")
chems = list("nutriment" = list(1), "bicaridine" = list(1,8), "synaptizine" = list(1,8,1), "hyperzine" = list(1,10,1), "space_drugs" = list(1,10))
/datum/seed/ambrosia/deus/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#A3F0AD")
set_trait(TRAIT_PLANT_COLOUR,"#2A9C61")
/datum/seed/ambrosia/infernus
name = "ambrosiainfernus"
seed_name = "ambrosia infernus"
display_name = "ambrosia infernus"
kitchen_tag = "ambrosiainfernus"
mutants = null
chems = list("nutriment" = list(1,3), "oxycodone" = list(1,8), "impedrezene" = list(1,10), "mindbreaker" = list(1,10))
/datum/seed/ambrosia/infernus/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#dc143c")
set_trait(TRAIT_PLANT_COLOUR,"#b22222")
@@ -0,0 +1,62 @@
//Apples/varieties.
/datum/seed/apple
name = "apple"
seed_name = "apple"
display_name = "apple tree"
kitchen_tag = "apple"
mutants = list("poisonapple","goldapple")
chems = list("nutriment" = list(1,10),"applejuice" = list(10,20))
/datum/seed/apple/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"apple")
set_trait(TRAIT_PRODUCT_COLOUR,"#FF540A")
set_trait(TRAIT_PLANT_ICON,"tree2")
set_trait(TRAIT_FLESH_COLOUR,"#E8E39B")
set_trait(TRAIT_IDEAL_LIGHT, 4)
/datum/seed/apple/poison
name = "poisonapple"
mutants = null
chems = list("cyanide" = list(1,5))
/datum/seed/apple/gold
name = "goldapple"
seed_name = "golden apple"
display_name = "gold apple tree"
kitchen_tag = "goldapple"
mutants = null
chems = list("nutriment" = list(1,10), "gold" = list(1,5))
/datum/seed/apple/gold/New()
..()
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,10)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_PRODUCT_COLOUR,"#FFDD00")
set_trait(TRAIT_PLANT_COLOUR,"#D6B44D")
/datum/seed/apple/sif
name = "sifbulb"
seed_name = "sivian tree"
display_name = "sivian pod"
kitchen_tag = "apple"
chems = list("nutriment" = list(1,5),"sifsap" = list(10,20))
/datum/seed/apple/sif/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,10)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,12)
set_trait(TRAIT_PRODUCT_ICON,"alien3")
set_trait(TRAIT_PRODUCT_COLOUR,"#0720c3")
set_trait(TRAIT_PLANT_ICON,"tree5")
set_trait(TRAIT_FLESH_COLOUR,"#05157d")
set_trait(TRAIT_IDEAL_LIGHT, 1)
@@ -0,0 +1,21 @@
/datum/seed/banana
name = "banana"
seed_name = "banana"
display_name = "banana tree"
kitchen_tag = "banana"
chems = list("banana" = list(10,10))
trash_type = /obj/item/weapon/bananapeel
/datum/seed/banana/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_PRODUCT_ICON,"bananas")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFEC1F")
set_trait(TRAIT_PLANT_COLOUR,"#69AD50")
set_trait(TRAIT_PLANT_ICON,"tree4")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 7)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,70 @@
// Berry plants/variants.
/datum/seed/berry
name = "berries"
seed_name = "berry"
display_name = "berry bush"
kitchen_tag = "berries"
mutants = list("glowberries","poisonberries")
chems = list("nutriment" = list(1,10), "berryjuice" = list(10,10))
/datum/seed/berry/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_JUICY,1)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"berry")
set_trait(TRAIT_PRODUCT_COLOUR,"#FA1616")
set_trait(TRAIT_PLANT_ICON,"bush")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
/datum/seed/berry/glow
name = "glowberries"
seed_name = "glowberry"
display_name = "glowberry bush"
mutants = null
chems = list("nutriment" = list(1,10), "uranium" = list(3,5))
/datum/seed/berry/glow/New()
..()
set_trait(TRAIT_SPREAD,1)
set_trait(TRAIT_BIOLUM,1)
set_trait(TRAIT_BIOLUM_COLOUR,"#006622")
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_COLOUR,"#c9fa16")
set_trait(TRAIT_WATER_CONSUMPTION, 3)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25)
/datum/seed/berry/poison
name = "poisonberries"
seed_name = "poison berry"
kitchen_tag = "poisonberries"
display_name = "poison berry bush"
mutants = list("deathberries")
chems = list("nutriment" = list(1), "toxin" = list(3,5), "poisonberryjuice" = list(10,5))
/datum/seed/berry/poison/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#6DC961")
set_trait(TRAIT_WATER_CONSUMPTION, 3)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25)
/datum/seed/berry/poison/death
name = "deathberries"
seed_name = "death berry"
display_name = "death berry bush"
mutants = null
chems = list("nutriment" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5))
/datum/seed/berry/poison/death/New()
..()
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,50)
set_trait(TRAIT_PRODUCT_COLOUR,"#7A5454")
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.35)
@@ -0,0 +1,21 @@
/datum/seed/cabbage
name = "cabbage"
seed_name = "cabbage"
display_name = "cabbages"
kitchen_tag = "cabbage"
chems = list("nutriment" = list(1,10))
/datum/seed/cabbage/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"cabbage")
set_trait(TRAIT_PRODUCT_COLOUR,"#84BD82")
set_trait(TRAIT_PLANT_COLOUR,"#6D9C6B")
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,17 @@
/datum/seed/carrots
name = "carrot"
seed_name = "carrot"
display_name = "carrots"
kitchen_tag = "carrot"
chems = list("nutriment" = list(1,20), "imidazoline" = list(3,5), "carrotjuice" = list(10,20))
/datum/seed/carrots/New()
..()
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"carrot")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFDB4A")
set_trait(TRAIT_PLANT_ICON,"carrot")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,17 @@
/datum/seed/celery
name = "celery"
seed_name = "celery"
display_name = "celery"
kitchen_tag = "celery"
chems = list("nutriment" = list(5,20))
/datum/seed/celery/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,8)
set_trait(TRAIT_PRODUCT_ICON,"stalk")
set_trait(TRAIT_PRODUCT_COLOUR,"#56FD56")
set_trait(TRAIT_PLANT_ICON,"stalk3")
@@ -0,0 +1,20 @@
/datum/seed/cherries
name = "cherry"
seed_name = "cherry"
seed_noun = "pits"
display_name = "cherry tree"
kitchen_tag = "cherries"
chems = list("nutriment" = list(1,15), "sugar" = list(1,15), "cherryjelly" = list(10,15))
/datum/seed/cherries/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_JUICY,1)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"cherry")
set_trait(TRAIT_PRODUCT_COLOUR,"#A80000")
set_trait(TRAIT_PLANT_ICON,"tree2")
set_trait(TRAIT_PLANT_COLOUR,"#2F7D2D")
@@ -0,0 +1,35 @@
// Chili plants/variants.
/datum/seed/chili
name = "chili"
seed_name = "chili"
display_name = "chili plants"
kitchen_tag = "chili"
chems = list("capsaicin" = list(3,5), "nutriment" = list(1,25))
mutants = list("icechili")
/datum/seed/chili/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"chili")
set_trait(TRAIT_PRODUCT_COLOUR,"#ED3300")
set_trait(TRAIT_PLANT_ICON,"bush2")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 7)
/datum/seed/chili/ice
name = "icechili"
seed_name = "ice pepper"
display_name = "ice-pepper plants"
kitchen_tag = "icechili"
mutants = null
chems = list("frostoil" = list(3,5), "nutriment" = list(1,50))
/datum/seed/chili/ice/New()
..()
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_PRODUCT_COLOUR,"#00EDC6")
@@ -0,0 +1,46 @@
/datum/seed/citrus
name = "lime"
seed_name = "lime"
display_name = "lime trees"
kitchen_tag = "lime"
chems = list("nutriment" = list(1,20), "limejuice" = list(10,20))
/datum/seed/citrus/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_JUICY,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,15)
set_trait(TRAIT_PRODUCT_ICON,"treefruit")
set_trait(TRAIT_PRODUCT_COLOUR,"#3AF026")
set_trait(TRAIT_PLANT_ICON,"tree")
set_trait(TRAIT_FLESH_COLOUR,"#3AF026")
/datum/seed/citrus/lemon
name = "lemon"
seed_name = "lemon"
display_name = "lemon trees"
kitchen_tag = "lemon"
chems = list("nutriment" = list(1,20), "lemonjuice" = list(10,20))
/datum/seed/citrus/lemon/New()
..()
set_trait(TRAIT_PRODUCES_POWER,1)
set_trait(TRAIT_PRODUCT_ICON,"lemon")
set_trait(TRAIT_PRODUCT_COLOUR,"#F0E226")
set_trait(TRAIT_FLESH_COLOUR,"#F0E226")
set_trait(TRAIT_IDEAL_LIGHT, 6)
/datum/seed/citrus/orange
name = "orange"
seed_name = "orange"
display_name = "orange trees"
kitchen_tag = "orange"
chems = list("nutriment" = list(1,20), "orangejuice" = list(10,20))
/datum/seed/citrus/orange/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#FFC20A")
set_trait(TRAIT_FLESH_COLOUR,"#FFC20A")
@@ -0,0 +1,19 @@
/datum/seed/cocoa
name = "cocoa"
seed_name = "cacao"
display_name = "cacao tree"
kitchen_tag = "cocoa"
chems = list("nutriment" = list(1,10), "coco" = list(4,5))
/datum/seed/cocoa/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"treefruit")
set_trait(TRAIT_PRODUCT_COLOUR,"#CCA935")
set_trait(TRAIT_PLANT_ICON,"tree2")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,21 @@
/datum/seed/corn
name = "corn"
seed_name = "corn"
display_name = "ears of corn"
kitchen_tag = "corn"
chems = list("nutriment" = list(1,10), "cornoil" = list(3,15))
trash_type = /obj/item/weapon/corncob
/datum/seed/corn/New()
..()
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"corn")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B")
set_trait(TRAIT_PLANT_COLOUR,"#87C969")
set_trait(TRAIT_PLANT_ICON,"corn")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,21 @@
/datum/seed/diona
name = "diona"
seed_name = "diona"
seed_noun = "nodes"
display_name = "replicant pods"
can_self_harvest = 1
apply_color_to_mob = FALSE
has_mob_product = /mob/living/carbon/alien/diona
/datum/seed/diona/New()
..()
set_trait(TRAIT_IMMUTABLE,1)
set_trait(TRAIT_ENDURANCE,8)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,10)
set_trait(TRAIT_YIELD,1)
set_trait(TRAIT_POTENCY,30)
set_trait(TRAIT_PRODUCT_ICON,"diona")
set_trait(TRAIT_PRODUCT_COLOUR,"#799957")
set_trait(TRAIT_PLANT_COLOUR,"#66804B")
set_trait(TRAIT_PLANT_ICON,"alien4")
@@ -0,0 +1,21 @@
/datum/seed/durian
name = "durian"
seed_name = "durian"
seed_noun = "pits"
display_name = "durian"
kitchen_tag = "durian"
chems = list("nutriment" = list(1,5), "durianpaste" = list(1, 20))
/datum/seed/durian/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"spinefruit")
set_trait(TRAIT_PRODUCT_COLOUR,"#757631")
set_trait(TRAIT_PLANT_COLOUR,"#87C969")
set_trait(TRAIT_PLANT_ICON,"tree")
set_trait(TRAIT_IDEAL_LIGHT, 8)
set_trait(TRAIT_WATER_CONSUMPTION, 8)
@@ -0,0 +1,31 @@
//Eggplants/varieties.
/datum/seed/eggplant
name = "eggplant"
seed_name = "eggplant"
display_name = "eggplants"
kitchen_tag = "eggplant"
mutants = list("egg-plant")
chems = list("nutriment" = list(1,10))
/datum/seed/eggplant/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"eggplant")
set_trait(TRAIT_PRODUCT_COLOUR,"#892694")
set_trait(TRAIT_PLANT_ICON,"bush4")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 7)
// Return of Eggy. Just makes purple eggs. If the reagents are separated from the egg production by xenobotany or RNG, it's still an Egg plant.
/datum/seed/eggplant/egg
name = "egg-plant"
seed_name = "egg-plant"
display_name = "egg-plants"
kitchen_tag = "egg-plant"
mutants = null
chems = list("nutriment" = list(1,5), "egg" = list(3,12))
has_item_product = /obj/item/weapon/reagent_containers/food/snacks/egg/purple
@@ -0,0 +1,108 @@
//Flowers/varieties
/datum/seed/flower
name = "harebells"
seed_name = "harebell"
display_name = "harebells"
kitchen_tag = "harebell"
chems = list("nutriment" = list(1,20))
/datum/seed/flower/New()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_PRODUCT_ICON,"flower5")
set_trait(TRAIT_PRODUCT_COLOUR,"#C492D6")
set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E")
set_trait(TRAIT_PLANT_ICON,"flower")
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
/datum/seed/flower/poppy
name = "poppies"
seed_name = "poppy"
display_name = "poppies"
kitchen_tag = "poppy"
chems = list("nutriment" = list(1,20), "bicaridine" = list(1,10))
/datum/seed/flower/poppy/New()
..()
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_PRODUCT_ICON,"flower3")
set_trait(TRAIT_PRODUCT_COLOUR,"#B33715")
set_trait(TRAIT_PLANT_ICON,"flower3")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
/datum/seed/flower/sunflower
name = "sunflowers"
seed_name = "sunflower"
display_name = "sunflowers"
kitchen_tag = "sunflower"
/datum/seed/flower/sunflower/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCT_ICON,"flower2")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFF700")
set_trait(TRAIT_PLANT_ICON,"flower2")
set_trait(TRAIT_IDEAL_LIGHT, 7)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
/datum/seed/flower/lavender
name = "lavender"
seed_name = "lavender"
display_name = "lavender"
kitchen_tag = "lavender"
chems = list("nutriment" = list(1,20), "bicaridine" = list(1,10))
/datum/seed/flower/lavender/New()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_PRODUCT_ICON,"flower6")
set_trait(TRAIT_PRODUCT_COLOUR,"#B57EDC")
set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E")
set_trait(TRAIT_PLANT_ICON,"flower4")
set_trait(TRAIT_IDEAL_LIGHT, 7)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.05)
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
/datum/seed/flower/rose
name = "rose"
seed_name = "rose"
display_name = "rose"
kitchen_tag = "rose"
mutants = list("bloodrose")
chems = list("nutriment" = list(1,5), "stoxin" = list(0,2))
/datum/seed/flower/rose/New()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_PRODUCT_ICON,"flowers")
set_trait(TRAIT_PRODUCT_COLOUR,"#ce0e0e")
set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E")
set_trait(TRAIT_PLANT_ICON,"bush5")
set_trait(TRAIT_IDEAL_LIGHT, 7)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.1)
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
set_trait(TRAIT_STINGS,1)
/datum/seed/flower/rose/blood
name = "bloodrose"
display_name = "bleeding rose"
mutants = null
chems = list("nutriment" = list(1,5), "stoxin" = list(1,5), "blood" = list(0,2))
/datum/seed/flower/rose/blood/New()
..()
set_trait(TRAIT_IDEAL_LIGHT, 1)
set_trait(TRAIT_PLANT_COLOUR,"#5e0303")
set_trait(TRAIT_CARNIVOROUS,1)
@@ -0,0 +1,15 @@
/datum/seed/gelthi
name = "gelthi"
seed_name = "gelthi"
display_name = "gelthi plant"
kitchen_tag = "gelthi"
chems = list("stoxin" = list(1,5),"capsaicin" = list(1,5),"nutriment" = list(1,5))
/datum/seed/gelthi/New()
..()
set_trait(TRAIT_PLANT_ICON,"mushroom3")
set_trait(TRAIT_ENDURANCE,15)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,1)
@@ -0,0 +1,25 @@
// Gnomes
/datum/seed/gnomes
name = "gnomes"
seed_name = "gnomes"
display_name = "gnomes"
force_layer = 3
chems = list("magicdust" = list(5,20))
/datum/seed/gnomes/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_PLANT_ICON,"gnomes")
set_trait(TRAIT_PRODUCT_ICON,"gnomes")
set_trait(TRAIT_PRODUCT_COLOUR,"")
set_trait(TRAIT_FLESH_COLOUR,"")
set_trait(TRAIT_PLANT_COLOUR,"")
set_trait(TRAIT_BIOLUM_COLOUR,"#fff200")
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_BIOLUM,1)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_SPREAD,1)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_REQUIRES_NUTRIENTS,0)
set_trait(TRAIT_REQUIRES_WATER,0)
@@ -0,0 +1,33 @@
//Grapes/varieties
/datum/seed/grapes
name = "grapes"
seed_name = "grape"
display_name = "grapevines"
kitchen_tag = "grapes"
mutants = list("greengrapes")
chems = list("nutriment" = list(1,10), "sugar" = list(1,5), "grapejuice" = list(10,10))
/datum/seed/grapes/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"grapes")
set_trait(TRAIT_PRODUCT_COLOUR,"#BB6AC4")
set_trait(TRAIT_PLANT_COLOUR,"#378F2E")
set_trait(TRAIT_PLANT_ICON,"vine")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
/datum/seed/grapes/green
name = "greengrapes"
seed_name = "green grape"
display_name = "green grapevines"
mutants = null
chems = list("nutriment" = list(1,10), "kelotane" = list(3,5), "grapejuice" = list(10,10))
/datum/seed/grapes/green/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"42ed2f")
@@ -0,0 +1,19 @@
/datum/seed/grass
name = "grass"
seed_name = "grass"
display_name = "grass"
kitchen_tag = "grass"
chems = list("nutriment" = list(1,20))
/datum/seed/grass/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,2)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_PRODUCT_ICON,"grass")
set_trait(TRAIT_PRODUCT_COLOUR,"#09FF00")
set_trait(TRAIT_PLANT_COLOUR,"#07D900")
set_trait(TRAIT_PLANT_ICON,"grass")
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,15 @@
/datum/seed/jurlmah
name = "jurlmah"
seed_name = "jurl'mah"
display_name = "jurl'mah reeds"
kitchen_tag = "jurlmah"
chems = list("serotrotium" = list(1,5),"nutriment" = list(1,5))
/datum/seed/jurlmah/New()
..()
set_trait(TRAIT_PLANT_ICON,"mushroom9")
set_trait(TRAIT_ENDURANCE,12)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,9)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,10)
@@ -0,0 +1,19 @@
/datum/seed/kudzu
name = "kudzu"
seed_name = "kudzu"
display_name = "kudzu vines"
kitchen_tag = "kudzu"
chems = list("nutriment" = list(1,50), "anti_toxin" = list(1,25))
/datum/seed/kudzu/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_SPREAD,2)
set_trait(TRAIT_PRODUCT_ICON,"treefruit")
set_trait(TRAIT_PRODUCT_COLOUR,"#96D278")
set_trait(TRAIT_PLANT_COLOUR,"#6F7A63")
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
@@ -0,0 +1,34 @@
// Lettuce/varieties.
/datum/seed/lettuce
name = "lettuce"
seed_name = "lettuce"
display_name = "lettuce"
kitchen_tag = "cabbage"
chems = list("nutriment" = list(1,15))
/datum/seed/lettuce/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,8)
set_trait(TRAIT_PRODUCT_ICON,"lettuce")
set_trait(TRAIT_PRODUCT_COLOUR,"#A8D0A7")
set_trait(TRAIT_PLANT_COLOUR,"#6D9C6B")
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 8)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.13)
/datum/seed/lettuce/ice
name = "siflettuce"
seed_name = "glacial lettuce"
display_name = "glacial lettuce"
kitchen_tag = "icelettuce"
chems = list("nutriment" = list(1,5), "paracetamol" = list(0,2))
/datum/seed/lettuce/ice/New()
..()
set_trait(TRAIT_ALTER_TEMP, -5)
set_trait(TRAIT_PRODUCT_COLOUR,"#9ABCC9")
@@ -0,0 +1,19 @@
/datum/seed/mtear
name = "mtear"
seed_name = "Malani's tear"
display_name = "Malani's tear leaves"
kitchen_tag = "mtear"
chems = list("honey" = list(1,10), "kelotane" = list(3,5))
/datum/seed/mtear/New()
..()
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"alien4")
set_trait(TRAIT_PRODUCT_COLOUR,"#4CC5C7")
set_trait(TRAIT_PLANT_COLOUR,"#4CC789")
set_trait(TRAIT_PLANT_ICON,"bush7")
set_trait(TRAIT_IDEAL_HEAT, 283)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,200 @@
//Mushrooms/varieties.
/datum/seed/mushroom
name = "mushrooms"
seed_name = "chanterelle"
seed_noun = "spores"
display_name = "chanterelle mushrooms"
mutants = list("reishi","amanita","plumphelmet")
chems = list("nutriment" = list(1,25))
splat_type = /obj/effect/plant
kitchen_tag = "mushroom"
/datum/seed/mushroom/New()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_POTENCY,1)
set_trait(TRAIT_PRODUCT_ICON,"mushroom4")
set_trait(TRAIT_PRODUCT_COLOUR,"#DBDA72")
set_trait(TRAIT_PLANT_COLOUR,"#D9C94E")
set_trait(TRAIT_PLANT_ICON,"mushroom")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_IDEAL_HEAT, 288)
set_trait(TRAIT_LIGHT_TOLERANCE, 6)
/datum/seed/mushroom/mold
name = "mold"
seed_name = "brown mold"
display_name = "brown mold"
mutants = null
/datum/seed/mushroom/mold/New()
..()
set_trait(TRAIT_SPREAD,1)
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_YIELD,-1)
set_trait(TRAIT_PRODUCT_ICON,"mushroom5")
set_trait(TRAIT_PRODUCT_COLOUR,"#7A5F20")
set_trait(TRAIT_PLANT_COLOUR,"#7A5F20")
set_trait(TRAIT_PLANT_ICON,"mushroom9")
/datum/seed/mushroom/plump
name = "plumphelmet"
seed_name = "plump helmet"
display_name = "plump helmet mushrooms"
mutants = list("walkingmushroom","towercap")
chems = list("nutriment" = list(2,10))
kitchen_tag = "plumphelmet"
/datum/seed/mushroom/plump/New()
..()
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,0)
set_trait(TRAIT_PRODUCT_ICON,"mushroom10")
set_trait(TRAIT_PRODUCT_COLOUR,"#B57BB0")
set_trait(TRAIT_PLANT_COLOUR,"#9E4F9D")
set_trait(TRAIT_PLANT_ICON,"mushroom2")
/datum/seed/mushroom/hallucinogenic
name = "reishi"
seed_name = "reishi"
display_name = "reishi"
mutants = list("libertycap","glowshroom")
chems = list("nutriment" = list(1,50), "psilocybin" = list(3,5))
/datum/seed/mushroom/hallucinogenic/New()
..()
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,15)
set_trait(TRAIT_PRODUCT_ICON,"mushroom11")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFB70F")
set_trait(TRAIT_PLANT_COLOUR,"#F58A18")
set_trait(TRAIT_PLANT_ICON,"mushroom6")
/datum/seed/mushroom/hallucinogenic/strong
name = "libertycap"
seed_name = "liberty cap"
display_name = "liberty cap mushrooms"
mutants = null
chems = list("nutriment" = list(1), "stoxin" = list(3,3), "space_drugs" = list(1,25))
/datum/seed/mushroom/hallucinogenic/strong/New()
..()
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_POTENCY,15)
set_trait(TRAIT_PRODUCT_ICON,"mushroom8")
set_trait(TRAIT_PRODUCT_COLOUR,"#F2E550")
set_trait(TRAIT_PLANT_COLOUR,"#D1CA82")
set_trait(TRAIT_PLANT_ICON,"mushroom3")
/datum/seed/mushroom/poison
name = "amanita"
seed_name = "fly amanita"
display_name = "fly amanita mushrooms"
mutants = list("destroyingangel","plastic")
chems = list("nutriment" = list(1), "amatoxin" = list(3,3), "psilocybin" = list(1,25))
/datum/seed/mushroom/poison/New()
..()
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"mushroom")
set_trait(TRAIT_PRODUCT_COLOUR,"#FF4545")
set_trait(TRAIT_PLANT_COLOUR,"#E0DDBA")
set_trait(TRAIT_PLANT_ICON,"mushroom4")
/datum/seed/mushroom/poison/death
name = "destroyingangel"
seed_name = "destroying angel"
display_name = "destroying angel mushrooms"
mutants = null
chems = list("nutriment" = list(1,50), "amatoxin" = list(13,3), "psilocybin" = list(1,25))
/datum/seed/mushroom/poison/death/New()
..()
set_trait(TRAIT_MATURATION,12)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,35)
set_trait(TRAIT_PRODUCT_ICON,"mushroom3")
set_trait(TRAIT_PRODUCT_COLOUR,"#EDE8EA")
set_trait(TRAIT_PLANT_COLOUR,"#E6D8DD")
set_trait(TRAIT_PLANT_ICON,"mushroom5")
/datum/seed/mushroom/towercap
name = "towercap"
seed_name = "tower cap"
display_name = "tower caps"
chems = list("woodpulp" = list(10,1))
mutants = null
has_item_product = /obj/item/stack/material/log
/datum/seed/mushroom/towercap/New()
..()
set_trait(TRAIT_MATURATION,15)
set_trait(TRAIT_PRODUCT_ICON,"mushroom7")
set_trait(TRAIT_PRODUCT_COLOUR,"#79A36D")
set_trait(TRAIT_PLANT_COLOUR,"#857F41")
set_trait(TRAIT_PLANT_ICON,"mushroom8")
/datum/seed/mushroom/glowshroom
name = "glowshroom"
seed_name = "glowshroom"
display_name = "glowshrooms"
mutants = null
chems = list("radium" = list(1,20))
/datum/seed/mushroom/glowshroom/New()
..()
set_trait(TRAIT_SPREAD,1)
set_trait(TRAIT_MATURATION,15)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,30)
set_trait(TRAIT_BIOLUM,1)
set_trait(TRAIT_BIOLUM_COLOUR,"#006622")
set_trait(TRAIT_PRODUCT_ICON,"mushroom2")
set_trait(TRAIT_PRODUCT_COLOUR,"#DDFAB6")
set_trait(TRAIT_PLANT_COLOUR,"#EFFF8A")
set_trait(TRAIT_PLANT_ICON,"mushroom7")
/datum/seed/mushroom/plastic
name = "plastic"
seed_name = "plastellium"
display_name = "plastellium"
mutants = null
chems = list("plasticide" = list(1,10))
/datum/seed/mushroom/plastic/New()
..()
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"mushroom6")
set_trait(TRAIT_PRODUCT_COLOUR,"#E6E6E6")
set_trait(TRAIT_PLANT_COLOUR,"#E6E6E6")
set_trait(TRAIT_PLANT_ICON,"mushroom10")
/datum/seed/mushroom/spore
name = "sporeshroom"
seed_name = "corpellian"
display_name = "corpellian"
mutants = null
chems = list("serotrotium" = list(5,10), "mold" = list(1,10))
/datum/seed/mushroom/spore/New()
..()
set_trait(TRAIT_MATURATION,15)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"mushroom5")
set_trait(TRAIT_PRODUCT_COLOUR,"#e29cd2")
set_trait(TRAIT_PLANT_COLOUR,"#f8e6f4")
set_trait(TRAIT_PLANT_ICON,"mushroom9")
set_trait(TRAIT_SPORING, TRUE)
@@ -0,0 +1,35 @@
// Nettles/variants.
/datum/seed/nettle
name = "nettle"
seed_name = "nettle"
display_name = "nettles"
mutants = list("deathnettle")
chems = list("nutriment" = list(1,50), "sacid" = list(0,1))
kitchen_tag = "nettle"
/datum/seed/nettle/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_STINGS,1)
set_trait(TRAIT_PLANT_ICON,"bush5")
set_trait(TRAIT_PRODUCT_ICON,"nettles")
set_trait(TRAIT_PRODUCT_COLOUR,"#728A54")
/datum/seed/nettle/death
name = "deathnettle"
seed_name = "death nettle"
display_name = "death nettles"
kitchen_tag = "deathnettle"
mutants = null
chems = list("nutriment" = list(1,50), "pacid" = list(0,1))
/datum/seed/nettle/death/New()
..()
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_PRODUCT_COLOUR,"#8C5030")
set_trait(TRAIT_PLANT_COLOUR,"#634941")
@@ -0,0 +1,17 @@
/datum/seed/onion
name = "onion"
seed_name = "onion"
display_name = "onions"
kitchen_tag = "onion"
chems = list("nutriment" = list(1,10))
/datum/seed/onion/New()
..()
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"onion")
set_trait(TRAIT_PRODUCT_COLOUR,"#E0C367")
set_trait(TRAIT_PLANT_ICON,"carrot")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,19 @@
//Everything else
/datum/seed/peanuts
name = "peanut"
seed_name = "peanut"
display_name = "peanut vines"
kitchen_tag = "peanut"
chems = list("nutriment" = list(1,10), "peanutoil" = list(3,10))
/datum/seed/peanuts/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"nuts")
set_trait(TRAIT_PRODUCT_COLOUR,"#C4AE7A")
set_trait(TRAIT_PLANT_ICON,"bush2")
set_trait(TRAIT_IDEAL_LIGHT, 6)
@@ -0,0 +1,18 @@
/datum/seed/potato
name = "potato"
seed_name = "potato"
display_name = "potatoes"
kitchen_tag = "potato"
chems = list("nutriment" = list(1,10), "potatojuice" = list(10,10))
/datum/seed/potato/New()
..()
set_trait(TRAIT_PRODUCES_POWER,1)
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"potato")
set_trait(TRAIT_PRODUCT_COLOUR,"#D4CAB4")
set_trait(TRAIT_PLANT_ICON,"bush2")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,19 @@
/datum/seed/pumpkin
name = "pumpkin"
seed_name = "pumpkin"
display_name = "pumpkin vine"
kitchen_tag = "pumpkin"
chems = list("nutriment" = list(1,6))
/datum/seed/pumpkin/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"vine2")
set_trait(TRAIT_PRODUCT_COLOUR,"#DBAC02")
set_trait(TRAIT_PLANT_COLOUR,"#21661E")
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,17 @@
/datum/seed/rhubarb
name = "rhubarb"
seed_name = "rhubarb"
display_name = "rhubarb"
kitchen_tag = "rhubarb"
chems = list("nutriment" = list(1,15))
/datum/seed/rhubarb/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,5)
set_trait(TRAIT_POTENCY,6)
set_trait(TRAIT_PRODUCT_ICON,"stalk")
set_trait(TRAIT_PRODUCT_COLOUR,"#FD5656")
set_trait(TRAIT_PLANT_ICON,"stalk3")
@@ -0,0 +1,19 @@
/datum/seed/rice
name = "rice"
seed_name = "rice"
display_name = "rice stalks"
kitchen_tag = "rice"
chems = list("nutriment" = list(1,25), "rice" = list(10,15))
/datum/seed/rice/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"rice")
set_trait(TRAIT_PRODUCT_COLOUR,"#D5E6D1")
set_trait(TRAIT_PLANT_COLOUR,"#8ED17D")
set_trait(TRAIT_PLANT_ICON,"stalk2")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,19 @@
/datum/seed/shand
name = "shand"
seed_name = "Selem's hand"
display_name = "Selem's hand leaves"
kitchen_tag = "shand"
chems = list("bicaridine" = list(0,10))
/datum/seed/shand/New()
..()
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"alien3")
set_trait(TRAIT_PRODUCT_COLOUR,"#378C61")
set_trait(TRAIT_PLANT_COLOUR,"#378C61")
set_trait(TRAIT_PLANT_ICON,"tree5")
set_trait(TRAIT_IDEAL_HEAT, 283)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,17 @@
/datum/seed/soybean
name = "soybean"
seed_name = "soybean"
display_name = "soybeans"
kitchen_tag = "soybeans"
chems = list("nutriment" = list(1,20), "soymilk" = list(10,20))
/datum/seed/soybean/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"bean")
set_trait(TRAIT_PRODUCT_COLOUR,"#EBE7C0")
set_trait(TRAIT_PLANT_ICON,"stalk")
@@ -0,0 +1,22 @@
/datum/seed/spineapple
name = "spineapple"
seed_name = "spineapple"
display_name = "spineapple"
kitchen_tag = "pineapple"
chems = list("nutriment" = list(1,5), "enzyme" = list(1,5), "pineapplejuice" = list(1, 20))
/datum/seed/spineapple/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,10)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,1)
set_trait(TRAIT_POTENCY,13)
set_trait(TRAIT_PRODUCT_ICON,"pineapple")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFF23B")
set_trait(TRAIT_PLANT_COLOUR,"#87C969")
set_trait(TRAIT_PLANT_ICON,"corn")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 4)
set_trait(TRAIT_WATER_CONSUMPTION, 8)
set_trait(TRAIT_STINGS,1)
@@ -0,0 +1,19 @@
/datum/seed/sugarcane
name = "sugarcane"
seed_name = "sugarcane"
display_name = "sugarcanes"
kitchen_tag = "sugarcanes"
chems = list("sugar" = list(4,5))
/datum/seed/sugarcane/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,3)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"stalk")
set_trait(TRAIT_PRODUCT_COLOUR,"#B4D6BD")
set_trait(TRAIT_PLANT_COLOUR,"#6BBD68")
set_trait(TRAIT_PLANT_ICON,"stalk3")
set_trait(TRAIT_IDEAL_HEAT, 298)
@@ -0,0 +1,15 @@
/datum/seed/surik
name = "surik"
seed_name = "surik"
display_name = "surik vine"
kitchen_tag = "surik"
chems = list("impedrezene" = list(1,3),"synaptizine" = list(1,2),"nutriment" = list(1,5))
/datum/seed/surik/New()
..()
set_trait(TRAIT_PLANT_ICON,"bush6")
set_trait(TRAIT_ENDURANCE,18)
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,7)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,3)
@@ -0,0 +1,16 @@
/datum/seed/telriis
name = "telriis"
seed_name = "telriis"
display_name = "telriis grass"
kitchen_tag = "telriis"
chems = list("pwine" = list(1,5), "nutriment" = list(1,6))
/datum/seed/telriis/New()
..()
set_trait(TRAIT_PLANT_ICON,"ambrosia")
set_trait(TRAIT_PRODUCT_ICON,"ambrosia")
set_trait(TRAIT_ENDURANCE,50)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,5)
@@ -0,0 +1,16 @@
/datum/seed/thaadra
name = "thaadra"
seed_name = "thaa'dra"
display_name = "thaa'dra lichen"
kitchen_tag = "thaadra"
chems = list("frostoil" = list(1,5),"nutriment" = list(1,5))
/datum/seed/thaadra/New()
..()
set_trait(TRAIT_PLANT_ICON,"grass")
set_trait(TRAIT_PLANT_COLOUR,"#ABC7D2")
set_trait(TRAIT_ENDURANCE,10)
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,9)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,5)
@@ -0,0 +1,75 @@
//Tomatoes/variants.
/datum/seed/tomato
name = "tomato"
seed_name = "tomato"
display_name = "tomato plant"
mutants = list("bluetomato","bloodtomato")
chems = list("nutriment" = list(1,10), "tomatojuice" = list(10,10))
kitchen_tag = "tomato"
/datum/seed/tomato/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_JUICY,1)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"tomato")
set_trait(TRAIT_PRODUCT_COLOUR,"#D10000")
set_trait(TRAIT_PLANT_ICON,"bush3")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25)
/datum/seed/tomato/blood
name = "bloodtomato"
seed_name = "blood tomato"
display_name = "blood tomato plant"
mutants = list("killertomato")
chems = list("nutriment" = list(1,10), "blood" = list(1,5))
splat_type = /obj/effect/decal/cleanable/blood/splatter
/datum/seed/tomato/blood/New()
..()
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_PRODUCT_COLOUR,"#FF0000")
/datum/seed/tomato/killer
name = "killertomato"
seed_name = "killer tomato"
display_name = "killer tomato plant"
mutants = null
can_self_harvest = 1
has_mob_product = /mob/living/simple_mob/tomato
/datum/seed/tomato/killer/New()
..()
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_PRODUCT_COLOUR,"#A86747")
/datum/seed/tomato/blue
name = "bluetomato"
seed_name = "blue tomato"
display_name = "blue tomato plant"
mutants = list("bluespacetomato")
chems = list("nutriment" = list(1,20), "lube" = list(1,5))
/datum/seed/tomato/blue/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#4D86E8")
set_trait(TRAIT_PLANT_COLOUR,"#070AAD")
/datum/seed/tomato/blue/teleport
name = "bluespacetomato"
seed_name = "bluespace tomato"
display_name = "bluespace tomato plant"
mutants = null
chems = list("nutriment" = list(1,20), "singulo" = list(10,5))
/datum/seed/tomato/blue/teleport/New()
..()
set_trait(TRAIT_TELEPORTING,1)
set_trait(TRAIT_PRODUCT_COLOUR,"#00E5FF")
set_trait(TRAIT_BIOLUM,1)
set_trait(TRAIT_BIOLUM_COLOUR,"#4DA4A8")
@@ -0,0 +1,15 @@
/datum/seed/vale
name = "vale"
seed_name = "vale"
display_name = "vale bush"
kitchen_tag = "vale"
chems = list("paracetamol" = list(1,5),"dexalin" = list(1,2),"nutriment"= list(1,5))
/datum/seed/vale/New()
..()
set_trait(TRAIT_PLANT_ICON,"flower4")
set_trait(TRAIT_ENDURANCE,15)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,10)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,3)
@@ -0,0 +1,19 @@
/datum/seed/vanilla
name = "vanilla"
seed_name = "vanilla"
display_name = "vanilla"
kitchen_tag = "vanilla"
chems = list("nutriment" = list(1,10), "vanilla" = list(2,8), "sugar" = list(1, 4))
/datum/seed/vanilla/New()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,5)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_PRODUCT_ICON,"chili")
set_trait(TRAIT_PRODUCT_COLOUR,"#B57EDC")
set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E")
set_trait(TRAIT_PLANT_ICON,"bush5")
set_trait(TRAIT_IDEAL_LIGHT, 8)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.3)
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
@@ -0,0 +1,54 @@
//Wabback / varieties.
/datum/seed/wabback
name = "whitewabback"
seed_name = "white wabback"
seed_noun = "nodes"
display_name = "white wabback"
chems = list("nutriment" = list(1,10), "protein" = list(1,5), "enzyme" = list(0,3))
kitchen_tag = "wabback"
mutants = list("blackwabback","wildwabback")
has_item_product = /obj/item/stack/material/cloth
/datum/seed/wabback/New()
..()
set_trait(TRAIT_IDEAL_LIGHT, 5)
set_trait(TRAIT_MATURATION,8)
set_trait(TRAIT_PRODUCTION,3)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"carrot2")
set_trait(TRAIT_PRODUCT_COLOUR,"#E6EDFA")
set_trait(TRAIT_PLANT_ICON,"chute")
set_trait(TRAIT_PLANT_COLOUR, "#0650ce")
set_trait(TRAIT_WATER_CONSUMPTION, 10)
set_trait(TRAIT_ALTER_TEMP, -1)
set_trait(TRAIT_CARNIVOROUS,1)
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_SPREAD,1)
/datum/seed/wabback/vine
name = "blackwabback"
seed_name = "black wabback"
display_name = "black wabback"
mutants = null
chems = list("nutriment" = list(1,3), "protein" = list(1,10), "serotrotium_v" = list(0,1))
/datum/seed/wabback/vine/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#2E2F32")
set_trait(TRAIT_CARNIVOROUS,2)
/datum/seed/wabback/wild
name = "wildwabback"
seed_name = "wild wabback"
display_name = "wild wabback"
mutants = list("whitewabback")
has_item_product = null
chems = list("nutriment" = list(1,15), "protein" = list(0,2), "enzyme" = list(0,1))
/datum/seed/wabback/wild/New()
..()
set_trait(TRAIT_IDEAL_LIGHT, 3)
set_trait(TRAIT_WATER_CONSUMPTION, 7)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.1)
set_trait(TRAIT_YIELD,5)
@@ -0,0 +1,23 @@
/datum/seed/watermelon
name = "watermelon"
seed_name = "watermelon"
display_name = "watermelon vine"
kitchen_tag = "watermelon"
chems = list("nutriment" = list(1,6), "watermelonjuice" = list(10,6))
/datum/seed/watermelon/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_JUICY,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,1)
set_trait(TRAIT_PRODUCT_ICON,"vine")
set_trait(TRAIT_PRODUCT_COLOUR,"#3D8C3A")
set_trait(TRAIT_PLANT_COLOUR,"#257522")
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_FLESH_COLOUR,"#F22C2C")
set_trait(TRAIT_IDEAL_HEAT, 298)
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,16 @@
/datum/seed/weeds
name = "weeds"
seed_name = "weed"
display_name = "weeds"
/datum/seed/weeds/New()
..()
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,-1)
set_trait(TRAIT_POTENCY,-1)
set_trait(TRAIT_IMMUTABLE,-1)
set_trait(TRAIT_PRODUCT_ICON,"flower4")
set_trait(TRAIT_PRODUCT_COLOUR,"#FCEB2B")
set_trait(TRAIT_PLANT_COLOUR,"#59945A")
set_trait(TRAIT_PLANT_ICON,"bush6")
@@ -0,0 +1,19 @@
/datum/seed/wheat
name = "wheat"
seed_name = "wheat"
display_name = "wheat stalks"
kitchen_tag = "wheat"
chems = list("nutriment" = list(1,25), "flour" = list(10,30))
/datum/seed/wheat/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,4)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"wheat")
set_trait(TRAIT_PRODUCT_COLOUR,"#DBD37D")
set_trait(TRAIT_PLANT_COLOUR,"#BFAF82")
set_trait(TRAIT_PLANT_ICON,"stalk2")
set_trait(TRAIT_IDEAL_LIGHT, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
@@ -0,0 +1,18 @@
/datum/seed/whitebeets
name = "whitebeet"
seed_name = "white-beet"
display_name = "white-beets"
kitchen_tag = "whitebeet"
chems = list("nutriment" = list(0,20), "sugar" = list(1,5))
/datum/seed/whitebeets/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"carrot2")
set_trait(TRAIT_PRODUCT_COLOUR,"#EEF5B0")
set_trait(TRAIT_PLANT_COLOUR,"#4D8F53")
set_trait(TRAIT_PLANT_ICON,"carrot2")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
@@ -0,0 +1,23 @@
// Wurmwoad, the Space Spice maker. Totally is actually, 100% literal worms.
/datum/seed/wurmwoad
name = "wurmwoad"
seed_name = "wurmwoad"
display_name = "wurmwoad growth"
chems = list("nutriment" = list(1,10), "spacespice" = list(5,15))
kitchen_tag = "wurmwoad"
/datum/seed/wurmwoad/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,8)
set_trait(TRAIT_PRODUCT_ICON,"eyepod")
set_trait(TRAIT_PRODUCT_COLOUR,"#e08702")
set_trait(TRAIT_PLANT_COLOUR,"#f1d1d2")
set_trait(TRAIT_PLANT_ICON,"worm")
set_trait(TRAIT_IDEAL_LIGHT, 1)
set_trait(TRAIT_WATER_CONSUMPTION, 8)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25)
@@ -0,0 +1,19 @@
// Alien weeds.
/datum/seed/xenomorph
name = "xenomorph"
seed_name = "alien weed"
display_name = "alien weeds"
force_layer = 3
chems = list("phoron" = list(1,3))
/datum/seed/xenomorph/New()
..()
set_trait(TRAIT_PLANT_ICON,"vine2")
set_trait(TRAIT_IMMUTABLE,1)
set_trait(TRAIT_PRODUCT_COLOUR,"#3D1934")
set_trait(TRAIT_FLESH_COLOUR,"#3D1934")
set_trait(TRAIT_PLANT_COLOUR,"#3D1934")
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,-1)
set_trait(TRAIT_SPREAD,2)
set_trait(TRAIT_POTENCY,50)
+9 -3
View File
@@ -19,6 +19,10 @@
var/datum/seed/last_seed
var/list/last_reagents
/obj/item/device/analyzer/plant_analyzer/Destroy()
. = ..()
QDEL_NULL(last_seed)
/obj/item/device/analyzer/plant_analyzer/attack_self(mob/user)
tgui_interact(user)
@@ -34,7 +38,7 @@
/obj/item/device/analyzer/plant_analyzer/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
var/datum/seed/grown_seed = locate(last_seed)
var/datum/seed/grown_seed = last_seed
if(!istype(grown_seed))
return list("no_seed" = TRUE)
@@ -95,7 +99,9 @@
to_chat(user, "<span class='danger'>[src] can tell you nothing about \the [target].</span>")
return
last_seed = REF(grown_seed)
last_seed = grown_seed.diverge()
if(!istype(last_seed))
last_seed = grown_seed // TRAIT_IMMUTABLE makes diverge() return null
user.visible_message("<span class='notice'>[user] runs the scanner over \the [target].</span>")
@@ -119,7 +125,7 @@
print_report(usr)
/obj/item/device/analyzer/plant_analyzer/proc/print_report(var/mob/living/user)
var/datum/seed/grown_seed = locate(last_seed)
var/datum/seed/grown_seed = last_seed
if(!istype(grown_seed))
to_chat(user, "<span class='warning'>There is no scan data to print.</span>")
return
@@ -78,7 +78,7 @@
output.assembly = src
/obj/item/device/electronic_assembly/device/check_interactivity(mob/user)
if(!CanInteract(user, state = deep_inventory_state))
if(!CanInteract(user, state = GLOB.tgui_deep_inventory_state))
return 0
return 1
@@ -40,8 +40,8 @@ D [1]/ ||
holder = null
. = ..()
/datum/integrated_io/nano_host()
return holder.nano_host()
/datum/integrated_io/tgui_host()
return holder.tgui_host()
/datum/integrated_io/proc/data_as_type(var/as_type)
@@ -117,7 +117,7 @@
/datum/integrated_io/list/display_pin_type()
return IC_FORMAT_LIST
/datum/integrated_io/list/Topic(href, href_list, state = interactive_state)
/datum/integrated_io/list/Topic(href, href_list, state = GLOB.tgui_always_state)
if(!holder.check_interactivity(usr))
return
if(..())
@@ -115,7 +115,7 @@
/obj/item/device/integrated_electronics/debugger/attack_self(mob/user)
var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number","ref", "null")
if(!CanInteract(user, physical_state))
if(!CanInteract(user, GLOB.tgui_physical_state))
return
var/new_data = null
@@ -124,13 +124,13 @@
accepting_refs = 0
new_data = input("Now type in a string.","[src] string writing") as null|text
new_data = sanitizeSafe(new_data, MAX_MESSAGE_LEN, 0, 0)
if(istext(new_data) && CanInteract(user, physical_state))
if(istext(new_data) && CanInteract(user, GLOB.tgui_physical_state))
data_to_write = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to \"[new_data]\".</span>")
if("number")
accepting_refs = 0
new_data = input("Now type in a number.","[src] number writing") as null|num
if(isnum(new_data) && CanInteract(user, physical_state))
if(isnum(new_data) && CanInteract(user, GLOB.tgui_physical_state))
data_to_write = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to [new_data].</span>")
if("ref")
@@ -54,7 +54,7 @@
/obj/item/integrated_circuit/input/numberpad/ask_for_input(mob/user)
var/new_input = input(user, "Enter a number, please.","Number pad", get_pin_data(IC_OUTPUT, 1)) as null|num
if(isnum(new_input) && CanInteract(user, physical_state))
if(isnum(new_input) && CanInteract(user, GLOB.tgui_physical_state))
set_pin_data(IC_OUTPUT, 1, new_input)
push_data()
activate_pin(1)
@@ -73,7 +73,7 @@
/obj/item/integrated_circuit/input/textpad/ask_for_input(mob/user)
var/new_input = input(user, "Enter some words, please.","Number pad", get_pin_data(IC_OUTPUT, 1)) as null|text
if(istext(new_input) && CanInteract(user, physical_state))
if(istext(new_input) && CanInteract(user, GLOB.tgui_physical_state))
set_pin_data(IC_OUTPUT, 1, new_input)
push_data()
activate_pin(1)
@@ -92,7 +92,7 @@
/obj/item/integrated_circuit/input/colorpad/ask_for_input(mob/user)
var/new_color = input(user, "Enter a color, please.", "Color pad", get_pin_data(IC_OUTPUT, 1)) as color|null
if(new_color && CanInteract(user, physical_state))
if(new_color && CanInteract(user, GLOB.tgui_physical_state))
set_pin_data(IC_OUTPUT, 1, new_color)
push_data()
activate_pin(1)
@@ -89,7 +89,7 @@
/obj/item/integrated_circuit/memory/constant/attack_self(mob/user)
var/datum/integrated_io/O = outputs[1]
var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number","ref", "null")
if(!CanInteract(user, physical_state))
if(!CanInteract(user, GLOB.tgui_physical_state))
return
var/new_data = null
@@ -97,13 +97,13 @@
if("string")
accepting_refs = 0
new_data = input("Now type in a string.","[src] string writing") as null|text
if(istext(new_data) && CanInteract(user, physical_state))
if(istext(new_data) && CanInteract(user, GLOB.tgui_physical_state))
O.data = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to [O.display_data(O.data)].</span>")
if("number")
accepting_refs = 0
new_data = input("Now type in a number.","[src] number writing") as null|num
if(isnum(new_data) && CanInteract(user, physical_state))
if(isnum(new_data) && CanInteract(user, GLOB.tgui_physical_state))
O.data = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to [O.display_data(O.data)].</span>")
if("ref")
+2 -2
View File
@@ -403,8 +403,8 @@
no_variants = FALSE
pass_color = TRUE
strict_color_stacking = TRUE
drop_sound = 'sound/items/drop/cloth.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
drop_sound = 'sound/items/drop/clothing.ogg'
pickup_sound = 'sound/items/pickup/clothing.ogg'
/obj/item/stack/material/cloth/diyaab
color = "#c6ccf0"
+1
View File
@@ -220,6 +220,7 @@
target_types += /obj/effect/decal/cleanable/liquid_fuel
target_types += /obj/effect/decal/cleanable/mucus
target_types += /obj/effect/decal/cleanable/dirt
target_types += /obj/effect/decal/cleanable/filth
if(blood)
target_types += /obj/effect/decal/cleanable/blood
@@ -210,7 +210,7 @@
return
spread_fire(AM)
..() // call parent because we moved behavior to parent
// Get rank from ID, ID inside PDA, PDA, ID in wallet, etc.
@@ -220,7 +220,7 @@
if (pda.id)
return pda.id.rank ? pda.id.rank : if_no_job
else
return pda.ownrank
return pda.ownrank ? pda.ownrank : if_no_job
else
var/obj/item/weapon/card/id/id = get_idcard()
if(id)
@@ -236,7 +236,7 @@
if (pda.id)
return pda.id.assignment
else
return pda.ownjob
return pda.ownjob ? pda.ownjob : if_no_job
else
var/obj/item/weapon/card/id/id = get_idcard()
if(id)
@@ -252,7 +252,7 @@
if (pda.id)
return pda.id.registered_name
else
return pda.owner
return pda.owner ? pda.owner : if_no_id
else
var/obj/item/weapon/card/id/id = get_idcard()
if(id)
@@ -285,7 +285,7 @@
. = if_no_id
if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/P = wear_id
return P.owner
return P.owner ? P.owner : if_no_id
if(wear_id)
var/obj/item/weapon/card/id/I = wear_id.GetID()
if(I)
+12 -6
View File
@@ -1290,13 +1290,19 @@
clear_fullscreen("blind")
clear_alert("blind")
if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription
if(glasses) //to every /obj/item
var/apply_nearsighted_overlay = FALSE
if(disabilities & NEARSIGHTED)
apply_nearsighted_overlay = TRUE
if(glasses)
var/obj/item/clothing/glasses/G = glasses
if(!G.prescription)
set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
else if (!nif || !nif.flag_check(NIF_V_CORRECTIVE,NIF_FLAGS_VISION)) //VOREStation Edit - NIF
set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
if(G.prescription)
apply_nearsighted_overlay = FALSE
if(nif && nif.flag_check(NIF_V_CORRECTIVE, NIF_FLAGS_VISION)) // VOREStation Edit - NIF
apply_nearsighted_overlay = FALSE
set_fullscreen(apply_nearsighted_overlay, "nearsighted", /obj/screen/fullscreen/impaired, 1)
set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
set_fullscreen(druggy, "high", /obj/screen/fullscreen/high)
@@ -95,7 +95,7 @@
var/list/potentials = living_mobs(0)
if(potentials.len)
var/mob/living/target = pick(potentials)
if(istype(target) && vore_selected)
if(istype(target) && target.devourable && target.can_be_drop_prey && vore_selected)
target.forceMove(vore_selected)
to_chat(target,"<span class='warning'>\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
@@ -257,7 +257,7 @@
var/list/potentials = living_mobs(0)
if(potentials.len)
var/mob/living/target = pick(potentials)
if(istype(target) && vore_selected)
if(istype(target) && target.devourable && target.can_be_drop_prey && vore_selected)
if(target.buckled)
target.buckled.unbuckle_mob(target, force = TRUE)
target.forceMove(vore_selected)
@@ -58,14 +58,22 @@
var/stripping
var/obj/item/held = user.get_active_hand()
if(!istype(held) || is_robot_module(held))
stripping = TRUE
else
var/obj/item/weapon/holder/holder = held
if(istype(holder) && src == holder.held_mob)
stripping = TRUE
else
var/obj/item/weapon/grab/grab = held
if(istype(grab) && grab.affecting == src)
stripping = TRUE
if(stripping)
if(!istype(target_slot)) // They aren't holding anything valid and there's nothing to remove, why are we even here?
return
if(!target_slot.canremove)
to_chat(user, "<span class='warning'>You cannot remove \the [src]'s [target_slot.name].</span>")
return
stripping = 1
if(stripping)
visible_message("<span class='danger'>\The [user] is trying to remove \the [src]'s [target_slot.name]!</span>")
else
if(slot_to_strip == slot_wear_mask && istype(held, /obj/item/weapon/grenade))
@@ -76,8 +84,14 @@
if(!do_after(user,HUMAN_STRIP_DELAY,src))
return
if(!stripping && user.get_active_hand() != held)
return
if(!stripping)
if(user.get_active_hand() != held)
return
var/obj/item/weapon/holder/mobheld = held
if(istype(mobheld)&&mobheld.held_mob==src)
to_chat(user, "<span class='warning'>You can't put someone on themselves! Stop trying to break reality!</span>")
return
if(stripping)
add_attack_logs(user,src,"Removed equipment from slot [target_slot]")
-3
View File
@@ -10,9 +10,6 @@
if(!loc)
return
if(machine && !CanMouseDrop(machine, src))
machine = null
var/datum/gas_mixture/environment = loc.return_air()
//handle_modifiers() // Do this early since it might affect other things later. //VOREStation Edit
+2 -11
View File
@@ -20,7 +20,6 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/ai_call_shuttle,
/mob/living/silicon/ai/proc/ai_camera_track,
/mob/living/silicon/ai/proc/ai_camera_list,
/mob/living/silicon/ai/proc/ai_roster,
/mob/living/silicon/ai/proc/ai_checklaws,
/mob/living/silicon/ai/proc/toggle_camera_light,
/mob/living/silicon/ai/proc/take_image,
@@ -48,7 +47,7 @@ var/list/ai_verbs_default = list(
anchored = 1 // -- TLE
density = 1
status_flags = CANSTUN|CANPARALYSE|CANPUSH
shouldnt_see = list(/obj/effect/rune)
shouldnt_see = list(/mob/observer/eye, /obj/effect/rune)
var/list/network = list(NETWORK_DEFAULT)
var/obj/machinery/camera/camera = null
var/aiRestorePowerRoutine = 0
@@ -355,12 +354,6 @@ var/list/ai_verbs_default = list(
if(new_sprite) selected_sprite = new_sprite
updateicon()
// this verb lets the ai see the stations manifest
/mob/living/silicon/ai/proc/ai_roster()
set category = "AI Commands"
set name = "Show Crew Manifest"
show_station_manifest()
/mob/living/silicon/ai/var/message_cooldown = 0
/mob/living/silicon/ai/proc/ai_announcement()
set category = "AI Commands"
@@ -399,9 +392,7 @@ var/list/ai_verbs_default = list(
// hack to display shuttle timer
if(emergency_shuttle.online())
var/obj/machinery/computer/communications/C = locate() in machines
if(C)
C.post_status("shuttle")
post_status(src, "shuttle", user = src)
/mob/living/silicon/ai/proc/ai_recall_shuttle()
set category = "AI Commands"
+5 -2
View File
@@ -122,7 +122,10 @@
pda.ownjob = "Personal Assistant"
pda.owner = text("[]", src)
pda.name = pda.owner + " (" + pda.ownjob + ")"
pda.toff = 1
var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger)
if(M)
M.toff = TRUE
..()
/mob/living/silicon/pai/Login()
@@ -210,7 +213,7 @@
medicalActive1 = null
medicalActive2 = null
medical_cannotfind = 0
SSnanoui.update_uis(src)
SStgui.update_uis(src)
to_chat(usr, "<span class='notice'>You reset your record-viewing software.</span>")
/mob/living/silicon/pai/cancel_camera()
+43 -56
View File
@@ -41,27 +41,24 @@ var/global/list/default_pai_software = list()
set category = "pAI Commands"
set name = "Software Interface"
ui_interact(src)
tgui_interact(src)
/mob/living/silicon/pai/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
if(user != src)
if(ui) ui.set_status(STATUS_CLOSE, 0)
return
/mob/living/silicon/pai/tgui_state(mob/user)
return GLOB.tgui_self_state
if(ui_key != "main")
var/datum/pai_software/S = software[ui_key]
if(S && !S.toggle)
S.on_ui_interact(src, ui, force_open)
else
if(ui) ui.set_status(STATUS_CLOSE, 0)
return
var/data[0]
/mob/living/silicon/pai/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "pAIInterface", "pAI Software Interface")
ui.open()
/mob/living/silicon/pai/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
// Software we have bought
var/bought_software[0]
var/list/bought_software = list()
// Software we have not bought
var/not_bought_software[0]
var/list/not_bought_software = list()
for(var/key in pai_software_by_key)
var/datum/pai_software/S = pai_software_by_key[key]
@@ -70,62 +67,52 @@ var/global/list/default_pai_software = list()
software_data["id"] = S.id
if(key in software)
software_data["on"] = S.is_active(src)
bought_software[++bought_software.len] = software_data
bought_software.Add(list(software_data))
else
software_data["ram"] = S.ram_cost
not_bought_software[++not_bought_software.len] = software_data
not_bought_software.Add(list(software_data))
data["bought"] = bought_software
data["not_bought"] = not_bought_software
data["available_ram"] = ram
// Emotions
var/emotions[0]
var/list/emotions = list()
for(var/name in pai_emotions)
var/emote[0]
var/list/emote = list()
emote["name"] = name
emote["id"] = pai_emotions[name]
emotions[++emotions.len] = emote
emotions.Add(list(emote))
data["emotions"] = emotions
data["current_emotion"] = card.current_emotion
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "pai_interface.tmpl", "pAI Software Interface", 450, 600)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
return data
/mob/living/silicon/pai/Topic(href, href_list)
. = ..()
if(.) return
/mob/living/silicon/pai/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
if(..())
return TRUE
if(href_list["software"])
var/soft = href_list["software"]
var/datum/pai_software/S = software[soft]
if(S.toggle)
S.toggle(src)
else
ui_interact(src, ui_key = soft)
return 1
switch(action)
if("software")
var/soft = params["software"]
var/datum/pai_software/S = software[soft]
if(S.toggle)
S.toggle(src)
else
S.tgui_interact(src, parent_ui = ui)
return TRUE
else if(href_list["stopic"])
var/soft = href_list["stopic"]
var/datum/pai_software/S = software[soft]
if(S)
return S.Topic(href, href_list)
if("purchase")
var/soft = params["purchase"]
var/datum/pai_software/S = pai_software_by_key[soft]
if(S && (ram >= S.ram_cost))
ram -= S.ram_cost
software[S.id] = S
return TRUE
else if(href_list["purchase"])
var/soft = href_list["purchase"]
var/datum/pai_software/S = pai_software_by_key[soft]
if(S && (ram >= S.ram_cost))
ram -= S.ram_cost
software[S.id] = S
return 1
else if(href_list["image"])
var/img = text2num(href_list["image"])
if(1 <= img && img <= (pai_emotions.len))
card.setEmotion(img)
return 1
if("image")
var/img = text2num(params["image"])
if(1 <= img && img <= (pai_emotions.len))
card.setEmotion(img)
return TRUE

Some files were not shown because too many files have changed in this diff Show More