mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 20:17:15 +01:00
Merge branch 'master' into shadow_fluff
This commit is contained in:
@@ -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,29 @@
|
||||
|
||||
/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(
|
||||
"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_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',
|
||||
"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',
|
||||
)
|
||||
@@ -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(
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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.")
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
@@ -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"
|
||||
|
||||
@@ -213,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()
|
||||
|
||||
@@ -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,63 +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)
|
||||
S.tgui_interact(src)
|
||||
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
|
||||
|
||||
@@ -12,14 +12,11 @@
|
||||
// Whether pAIs should automatically receive this module at no cost
|
||||
var/default = 0
|
||||
|
||||
proc/on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
return
|
||||
/datum/pai_software/proc/toggle(mob/living/silicon/pai/user)
|
||||
return
|
||||
|
||||
proc/toggle(mob/living/silicon/pai/user)
|
||||
return
|
||||
|
||||
proc/is_active(mob/living/silicon/pai/user)
|
||||
return 0
|
||||
/datum/pai_software/proc/is_active(mob/living/silicon/pai/user)
|
||||
return 0
|
||||
|
||||
/datum/pai_software/tgui_state(mob/user)
|
||||
return GLOB.tgui_always_state
|
||||
@@ -36,55 +33,58 @@
|
||||
toggle = 0
|
||||
default = 1
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/directives/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, "pAIDirectives", name, parent_ui)
|
||||
ui.open()
|
||||
|
||||
data["master"] = user.master
|
||||
data["dna"] = user.master_dna
|
||||
data["prime"] = user.pai_law0
|
||||
data["supplemental"] = user.pai_laws
|
||||
/datum/pai_software/directives/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = list()
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_directives.tmpl", "pAI Directives", 450, 600)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
data["master"] = user.master
|
||||
data["dna"] = user.master_dna
|
||||
data["prime"] = user.pai_law0
|
||||
data["supplemental"] = user.pai_laws
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
return data
|
||||
|
||||
if(href_list["getdna"])
|
||||
var/mob/living/M = P.loc
|
||||
var/count = 0
|
||||
/datum/pai_software/directives/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P))
|
||||
return TRUE
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
// Find the carrier
|
||||
while(!istype(M, /mob/living))
|
||||
if(!M || !M.loc || count > 6)
|
||||
//For a runtime where M ends up in nullspace (similar to bluespace but less colourful)
|
||||
to_chat(src, "You are not being carried by anyone!")
|
||||
return 0
|
||||
M = M.loc
|
||||
count++
|
||||
if(action == "getdna")
|
||||
var/mob/living/M = P.loc
|
||||
|
||||
// Check the carrier
|
||||
var/datum/gender/TM = gender_datums[M.get_visible_gender()]
|
||||
var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No")
|
||||
if(answer == "Yes")
|
||||
var/turf/T = get_turf_or_move(P.loc)
|
||||
for (var/mob/v in viewers(T))
|
||||
v.show_message("<span class='notice'>[M] presses [TM.his] thumb against [P].</span>", 3, "<span class='notice'>[P] makes a sharp clicking sound as it extracts DNA material from [M].</span>", 2)
|
||||
var/datum/dna/dna = M.dna
|
||||
to_chat(P, "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>")
|
||||
if(dna.unique_enzymes == P.master_dna)
|
||||
to_chat(P, "<b>DNA is a match to stored Master DNA.</b>")
|
||||
else
|
||||
to_chat(P, "<b>DNA does not match stored Master DNA.</b>")
|
||||
var/count = 0
|
||||
// Find the carrier
|
||||
while(!istype(M, /mob/living))
|
||||
if(!M || !M.loc || count > 6)
|
||||
//For a runtime where M ends up in nullspace (similar to bluespace but less colourful)
|
||||
to_chat(src, "You are not being carried by anyone!")
|
||||
return 0
|
||||
M = M.loc
|
||||
count++
|
||||
|
||||
// Check the carrier
|
||||
var/datum/gender/TM = gender_datums[M.get_visible_gender()]
|
||||
var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No")
|
||||
if(answer == "Yes")
|
||||
var/turf/T = get_turf(P.loc)
|
||||
for (var/mob/v in viewers(T))
|
||||
v.show_message("<span class='notice'>[M] presses [TM.his] thumb against [P].</span>", 3, "<span class='notice'>[P] makes a sharp clicking sound as it extracts DNA material from [M].</span>", 2)
|
||||
var/datum/dna/dna = M.dna
|
||||
to_chat(P, "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>")
|
||||
if(dna.unique_enzymes == P.master_dna)
|
||||
to_chat(P, "<b>DNA is a match to stored Master DNA.</b>")
|
||||
else
|
||||
to_chat(P, "[M] does not seem like [TM.he] is going to provide a DNA sample willingly.")
|
||||
return 1
|
||||
to_chat(P, "<b>DNA does not match stored Master DNA.</b>")
|
||||
else
|
||||
to_chat(P, "[M] does not seem like [TM.he] is going to provide a DNA sample willingly.")
|
||||
return TRUE
|
||||
|
||||
/datum/pai_software/radio_config
|
||||
name = "Radio Configuration"
|
||||
@@ -93,35 +93,8 @@
|
||||
toggle = 0
|
||||
default = 1
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui = null, force_open = 1)
|
||||
var/data[0]
|
||||
|
||||
data["listening"] = user.radio.broadcasting
|
||||
data["frequency"] = format_frequency(user.radio.frequency)
|
||||
|
||||
var/channels[0]
|
||||
for(var/ch_name in user.radio.channels)
|
||||
var/ch_stat = user.radio.channels[ch_name]
|
||||
var/ch_dat[0]
|
||||
ch_dat["name"] = ch_name
|
||||
// FREQ_LISTENING is const in /obj/item/device/radio
|
||||
ch_dat["listening"] = !!(ch_stat & user.radio.FREQ_LISTENING)
|
||||
channels[++channels.len] = ch_dat
|
||||
|
||||
data["channels"] = channels
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, user, id, "pai_radio.tmpl", "Radio Configuration", 300, 150)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
|
||||
P.radio.Topic(href, href_list)
|
||||
return 1
|
||||
/datum/pai_software/radio_config/tgui_interact(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||
return user.radio.tgui_interact(user, parent_ui = parent_ui)
|
||||
|
||||
/datum/pai_software/crew_manifest
|
||||
name = "Crew Manifest"
|
||||
@@ -129,20 +102,18 @@
|
||||
id = "manifest"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
/datum/pai_software/crew_manifest/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, "CrewManifest", name, parent_ui)
|
||||
ui.open()
|
||||
|
||||
/datum/pai_software/crew_manifest/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
if(data_core)
|
||||
data_core.get_manifest_list()
|
||||
|
||||
var/data[0]
|
||||
// This is dumb, but NanoUI breaks if it has no data to send
|
||||
data["manifest"] = PDA_Manifest
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "crew_manifest.tmpl", "Crew Manifest", 450, 600)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
data["manifest"] = PDA_Manifest
|
||||
return data
|
||||
|
||||
/datum/pai_software/messenger
|
||||
name = "Digital Messenger"
|
||||
@@ -151,7 +122,7 @@
|
||||
toggle = 0
|
||||
|
||||
/datum/pai_software/messenger/tgui_interact(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||
return user.pda.tgui_interact(user)
|
||||
return user.pda.tgui_interact(user, parent_ui = parent_ui)
|
||||
|
||||
/datum/pai_software/med_records
|
||||
name = "Medical Records"
|
||||
@@ -159,53 +130,55 @@
|
||||
id = "med_records"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/med_records/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, "pAIMedrecords", name, parent_ui)
|
||||
ui.open()
|
||||
|
||||
var/records[0]
|
||||
for(var/datum/data/record/general in sortRecord(data_core.general))
|
||||
var/record[0]
|
||||
record["name"] = general.fields["name"]
|
||||
record["ref"] = "\ref[general]"
|
||||
records[++records.len] = record
|
||||
/datum/pai_software/med_records/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
var/list/records = list()
|
||||
for(var/datum/data/record/general in sortRecord(data_core.general))
|
||||
var/list/record = list()
|
||||
record["name"] = general.fields["name"]
|
||||
record["ref"] = "\ref[general]"
|
||||
records.Add(list(record))
|
||||
|
||||
data["records"] = records
|
||||
data["records"] = records
|
||||
|
||||
var/datum/data/record/G = user.medicalActive1
|
||||
var/datum/data/record/M = user.medicalActive2
|
||||
data["general"] = G ? G.fields : null
|
||||
data["medical"] = M ? M.fields : null
|
||||
data["could_not_find"] = user.medical_cannotfind
|
||||
var/datum/data/record/G = user.medicalActive1
|
||||
var/datum/data/record/M = user.medicalActive2
|
||||
data["general"] = G ? G.fields : null
|
||||
data["medical"] = M ? M.fields : null
|
||||
data["could_not_find"] = user.medical_cannotfind
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_medrecords.tmpl", "Medical Records", 450, 600)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
return data
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
/datum/pai_software/med_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
. = ..()
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P))
|
||||
return
|
||||
|
||||
if(href_list["select"])
|
||||
var/datum/data/record/record = locate(href_list["select"])
|
||||
if(record)
|
||||
var/datum/data/record/R = record
|
||||
var/datum/data/record/M = null
|
||||
if (!( data_core.general.Find(R) ))
|
||||
P.medical_cannotfind = 1
|
||||
else
|
||||
P.medical_cannotfind = 0
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
M = E
|
||||
P.medicalActive1 = R
|
||||
P.medicalActive2 = M
|
||||
else
|
||||
if(action == "select")
|
||||
var/datum/data/record/record = locate(params["select"])
|
||||
if(record)
|
||||
var/datum/data/record/R = record
|
||||
var/datum/data/record/M = null
|
||||
if (!( data_core.general.Find(R) ))
|
||||
P.medical_cannotfind = 1
|
||||
return 1
|
||||
else
|
||||
P.medical_cannotfind = 0
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
M = E
|
||||
P.medicalActive1 = R
|
||||
P.medicalActive2 = M
|
||||
else
|
||||
P.medical_cannotfind = 1
|
||||
return 1
|
||||
|
||||
/datum/pai_software/sec_records
|
||||
name = "Security Records"
|
||||
@@ -213,57 +186,59 @@
|
||||
id = "sec_records"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/sec_records/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, "pAISecrecords", name, parent_ui)
|
||||
ui.open()
|
||||
|
||||
var/records[0]
|
||||
for(var/datum/data/record/general in sortRecord(data_core.general))
|
||||
var/record[0]
|
||||
record["name"] = general.fields["name"]
|
||||
record["ref"] = "\ref[general]"
|
||||
records[++records.len] = record
|
||||
/datum/pai_software/sec_records/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
var/list/records = list()
|
||||
for(var/datum/data/record/general in sortRecord(data_core.general))
|
||||
var/list/record = list()
|
||||
record["name"] = general.fields["name"]
|
||||
record["ref"] = "\ref[general]"
|
||||
records.Add(list(record))
|
||||
|
||||
data["records"] = records
|
||||
data["records"] = records
|
||||
|
||||
var/datum/data/record/G = user.securityActive1
|
||||
var/datum/data/record/S = user.securityActive2
|
||||
data["general"] = G ? G.fields : null
|
||||
data["security"] = S ? S.fields : null
|
||||
data["could_not_find"] = user.security_cannotfind
|
||||
var/datum/data/record/G = user.securityActive1
|
||||
var/datum/data/record/S = user.securityActive2
|
||||
data["general"] = G ? G.fields : null
|
||||
data["security"] = S ? S.fields : null
|
||||
data["could_not_find"] = user.security_cannotfind
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_secrecords.tmpl", "Security Records", 450, 600)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
return data
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
/datum/pai_software/sec_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
. = ..()
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P))
|
||||
return
|
||||
|
||||
if(href_list["select"])
|
||||
var/datum/data/record/record = locate(href_list["select"])
|
||||
if(record)
|
||||
var/datum/data/record/R = record
|
||||
var/datum/data/record/S = null
|
||||
if (!( data_core.general.Find(R) ))
|
||||
P.securityActive1 = null
|
||||
P.securityActive2 = null
|
||||
P.security_cannotfind = 1
|
||||
else
|
||||
P.security_cannotfind = 0
|
||||
for(var/datum/data/record/E in data_core.security)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
S = E
|
||||
P.securityActive1 = R
|
||||
P.securityActive2 = S
|
||||
else
|
||||
if(action == "select")
|
||||
var/datum/data/record/record = locate(params["select"])
|
||||
if(record)
|
||||
var/datum/data/record/R = record
|
||||
var/datum/data/record/S = null
|
||||
if (!( data_core.general.Find(R) ))
|
||||
P.securityActive1 = null
|
||||
P.securityActive2 = null
|
||||
P.security_cannotfind = 1
|
||||
return 1
|
||||
else
|
||||
P.security_cannotfind = 0
|
||||
for(var/datum/data/record/E in data_core.security)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
S = E
|
||||
P.securityActive1 = R
|
||||
P.securityActive2 = S
|
||||
else
|
||||
P.securityActive1 = null
|
||||
P.securityActive2 = null
|
||||
P.security_cannotfind = 1
|
||||
return TRUE
|
||||
|
||||
/datum/pai_software/door_jack
|
||||
name = "Door Jack"
|
||||
@@ -271,47 +246,49 @@
|
||||
id = "door_jack"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/door_jack/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, "pAIDoorjack", "Door Jack", parent_ui)
|
||||
ui.open()
|
||||
|
||||
data["cable"] = user.cable != null
|
||||
data["machine"] = user.cable && (user.cable.machine != null)
|
||||
data["inprogress"] = user.hackdoor != null
|
||||
data["progress_a"] = round(user.hackprogress / 10)
|
||||
data["progress_b"] = user.hackprogress % 10
|
||||
data["aborted"] = user.hack_aborted
|
||||
/datum/pai_software/door_jack/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_doorjack.tmpl", "Door Jack", 300, 150)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
data["cable"] = user.cable != null
|
||||
data["machine"] = user.cable && (user.cable.machine != null)
|
||||
data["inprogress"] = user.hackdoor != null
|
||||
data["progress_a"] = round(user.hackprogress / 10)
|
||||
data["progress_b"] = user.hackprogress % 10
|
||||
data["aborted"] = user.hack_aborted
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
return data
|
||||
|
||||
if(href_list["jack"])
|
||||
/datum/pai_software/door_jack/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P) || ..())
|
||||
return TRUE
|
||||
|
||||
switch(action)
|
||||
if("jack")
|
||||
if(P.cable && P.cable.machine)
|
||||
P.hackdoor = P.cable.machine
|
||||
P.hackloop()
|
||||
return 1
|
||||
else if(href_list["cancel"])
|
||||
if("cancel")
|
||||
P.hackdoor = null
|
||||
return 1
|
||||
else if(href_list["cable"])
|
||||
var/turf/T = get_turf_or_move(P.loc)
|
||||
if("cable")
|
||||
var/turf/T = get_turf(P)
|
||||
P.hack_aborted = 0
|
||||
P.cable = new /obj/item/weapon/pai_cable(T)
|
||||
for(var/mob/M in viewers(T))
|
||||
M.show_message("<span class='warning'>A port on [P] opens to reveal [P.cable], which promptly falls to the floor.</span>", 3,
|
||||
"<span class='warning'>You hear the soft click of something light and hard falling to the ground.</span>", 2)
|
||||
"<span class='warning'>You hear the soft click of something light and hard falling to the ground.</span>", 2)
|
||||
return 1
|
||||
|
||||
/mob/living/silicon/pai/proc/hackloop()
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/living/silicon/ai/AI in player_list)
|
||||
if(T.loc)
|
||||
to_chat(AI, "<font color = red><b>Network Alert: Brute-force encryption crack in progress in [T.loc].</b></font>")
|
||||
@@ -345,134 +322,155 @@
|
||||
id = "atmos_sense"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/atmosphere_sensor/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, "pAIAtmos", name, parent_ui)
|
||||
ui.open()
|
||||
|
||||
var/turf/T = get_turf_or_move(user.loc)
|
||||
if(!T)
|
||||
data["reading"] = 0
|
||||
data["pressure"] = 0
|
||||
data["temperature"] = 0
|
||||
data["temperatureC"] = 0
|
||||
data["gas"] = list()
|
||||
else
|
||||
var/datum/gas_mixture/env = T.return_air()
|
||||
data["reading"] = 1
|
||||
var/pres = env.return_pressure() * 10
|
||||
data["pressure"] = "[round(pres/10)].[pres%10]"
|
||||
data["temperature"] = round(env.temperature)
|
||||
data["temperatureC"] = round(env.temperature-T0C)
|
||||
/datum/pai_software/atmosphere_sensor/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
var/t_moles = env.total_moles
|
||||
var/gases[0]
|
||||
for(var/g in env.gas)
|
||||
var/gas[0]
|
||||
gas["name"] = gas_data.name[g]
|
||||
gas["percent"] = round((env.gas[g] / t_moles) * 100)
|
||||
gases[++gases.len] = gas
|
||||
data["gas"] = gases
|
||||
var/list/results = list()
|
||||
var/turf/T = get_turf(user)
|
||||
if(!isnull(T))
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
var/pressure = environment.return_pressure()
|
||||
var/total_moles = environment.total_moles
|
||||
if (total_moles)
|
||||
var/o2_level = environment.gas["oxygen"]/total_moles
|
||||
var/n2_level = environment.gas["nitrogen"]/total_moles
|
||||
var/co2_level = environment.gas["carbon_dioxide"]/total_moles
|
||||
var/phoron_level = environment.gas["phoron"]/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_atmosphere.tmpl", "Atmosphere Sensor", 350, 300)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
// entry is what the element is describing
|
||||
// Type identifies which unit or other special characters to use
|
||||
// Val is the information reported
|
||||
// Bad_high/_low are the values outside of which the entry reports as dangerous
|
||||
// Poor_high/_low are the values outside of which the entry reports as unideal
|
||||
// Values were extracted from the template itself
|
||||
results = list(
|
||||
list("entry" = "Pressure", "units" = "kPa", "val" = "[round(pressure,0.1)]", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80),
|
||||
list("entry" = "Temperature", "units" = "°C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5),
|
||||
list("entry" = "Oxygen", "units" = "kPa", "val" = "[round(o2_level*100,0.1)]", "bad_high" = 140, "poor_high" = 135, "poor_low" = 19, "bad_low" = 17),
|
||||
list("entry" = "Nitrogen", "units" = "kPa", "val" = "[round(n2_level*100,0.1)]", "bad_high" = 105, "poor_high" = 85, "poor_low" = 50, "bad_low" = 40),
|
||||
list("entry" = "Carbon Dioxide", "units" = "kPa", "val" = "[round(co2_level*100,0.1)]", "bad_high" = 10, "poor_high" = 5, "poor_low" = 0, "bad_low" = 0),
|
||||
list("entry" = "Phoron", "units" = "kPa", "val" = "[round(phoron_level*100,0.01)]", "bad_high" = 0.5, "poor_high" = 0, "poor_low" = 0, "bad_low" = 0),
|
||||
list("entry" = "Other", "units" = "kPa", "val" = "[round(unknown_level, 0.01)]", "bad_high" = 1, "poor_high" = 0.5, "poor_low" = 0, "bad_low" = 0)
|
||||
)
|
||||
|
||||
if(isnull(results))
|
||||
results = list(list("entry" = "pressure", "units" = "kPa", "val" = "0", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80))
|
||||
|
||||
data["aircontents"] = results
|
||||
|
||||
return data
|
||||
|
||||
/datum/pai_software/sec_hud
|
||||
name = "Security HUD"
|
||||
ram_cost = 20
|
||||
id = "sec_hud"
|
||||
|
||||
toggle(mob/living/silicon/pai/user)
|
||||
user.secHUD = !user.secHUD
|
||||
user.plane_holder.set_vis(VIS_CH_ID, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_WANTED, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPTRACK, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPLOYAL, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPCHEM, user.secHUD)
|
||||
/datum/pai_software/sec_hud/toggle(mob/living/silicon/pai/user)
|
||||
user.secHUD = !user.secHUD
|
||||
user.plane_holder.set_vis(VIS_CH_ID, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_WANTED, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPTRACK, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPLOYAL, user.secHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_IMPCHEM, user.secHUD)
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
return user.secHUD
|
||||
/datum/pai_software/sec_hud/is_active(mob/living/silicon/pai/user)
|
||||
return user.secHUD
|
||||
|
||||
/datum/pai_software/med_hud
|
||||
name = "Medical HUD"
|
||||
ram_cost = 20
|
||||
id = "med_hud"
|
||||
|
||||
toggle(mob/living/silicon/pai/user)
|
||||
user.medHUD = !user.medHUD
|
||||
user.plane_holder.set_vis(VIS_CH_STATUS, user.medHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_HEALTH, user.medHUD)
|
||||
/datum/pai_software/med_hud/toggle(mob/living/silicon/pai/user)
|
||||
user.medHUD = !user.medHUD
|
||||
user.plane_holder.set_vis(VIS_CH_STATUS, user.medHUD)
|
||||
user.plane_holder.set_vis(VIS_CH_HEALTH, user.medHUD)
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
return user.medHUD
|
||||
/datum/pai_software/med_hud/is_active(mob/living/silicon/pai/user)
|
||||
return user.medHUD
|
||||
|
||||
/datum/pai_software/translator
|
||||
name = "Universal Translator"
|
||||
ram_cost = 35
|
||||
id = "translator"
|
||||
|
||||
toggle(mob/living/silicon/pai/user)
|
||||
// Sol Common, Tradeband, Terminus and Gutter are added with New() and are therefore the current default, always active languages
|
||||
user.translator_on = !user.translator_on
|
||||
if(user.translator_on)
|
||||
user.add_language(LANGUAGE_UNATHI)
|
||||
user.add_language(LANGUAGE_SIIK)
|
||||
user.add_language(LANGUAGE_AKHANI)
|
||||
user.add_language(LANGUAGE_SKRELLIAN)
|
||||
user.add_language(LANGUAGE_ZADDAT)
|
||||
user.add_language(LANGUAGE_SCHECHI)
|
||||
else
|
||||
user.remove_language(LANGUAGE_UNATHI)
|
||||
user.remove_language(LANGUAGE_SIIK)
|
||||
user.remove_language(LANGUAGE_AKHANI)
|
||||
user.remove_language(LANGUAGE_SKRELLIAN)
|
||||
user.remove_language(LANGUAGE_ZADDAT)
|
||||
user.remove_language(LANGUAGE_SCHECHI)
|
||||
/datum/pai_software/translator/toggle(mob/living/silicon/pai/user)
|
||||
// Sol Common, Tradeband, Terminus and Gutter are added with New() and are therefore the current default, always active languages
|
||||
user.translator_on = !user.translator_on
|
||||
if(user.translator_on)
|
||||
user.add_language(LANGUAGE_UNATHI)
|
||||
user.add_language(LANGUAGE_SIIK)
|
||||
user.add_language(LANGUAGE_AKHANI)
|
||||
user.add_language(LANGUAGE_SKRELLIAN)
|
||||
user.add_language(LANGUAGE_ZADDAT)
|
||||
user.add_language(LANGUAGE_SCHECHI)
|
||||
else
|
||||
user.remove_language(LANGUAGE_UNATHI)
|
||||
user.remove_language(LANGUAGE_SIIK)
|
||||
user.remove_language(LANGUAGE_AKHANI)
|
||||
user.remove_language(LANGUAGE_SKRELLIAN)
|
||||
user.remove_language(LANGUAGE_ZADDAT)
|
||||
user.remove_language(LANGUAGE_SCHECHI)
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
return user.translator_on
|
||||
/datum/pai_software/translator/is_active(mob/living/silicon/pai/user)
|
||||
return user.translator_on
|
||||
|
||||
/datum/pai_software/signaller
|
||||
name = "Remote Signaller"
|
||||
name = "Remote Signaler"
|
||||
ram_cost = 5
|
||||
id = "signaller"
|
||||
toggle = 0
|
||||
|
||||
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
|
||||
var/data[0]
|
||||
/datum/pai_software/signaller/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, "Signaler", "Signaler", parent_ui)
|
||||
ui.open()
|
||||
|
||||
data["frequency"] = format_frequency(user.sradio.frequency)
|
||||
data["code"] = user.sradio.code
|
||||
/datum/pai_software/signaller/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
var/obj/item/radio/integrated/signal/R = user.sradio
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
|
||||
if(!ui)
|
||||
// Don't copy-paste this unless you're making a pAI software module!
|
||||
ui = new(user, user, id, "pai_signaller.tmpl", "Signaller", 320, 150)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
data["frequency"] = R.frequency
|
||||
data["minFrequency"] = RADIO_LOW_FREQ
|
||||
data["maxFrequency"] = RADIO_HIGH_FREQ
|
||||
data["code"] = R.code
|
||||
|
||||
Topic(href, href_list)
|
||||
var/mob/living/silicon/pai/P = usr
|
||||
if(!istype(P)) return
|
||||
return data
|
||||
|
||||
if(href_list["send"])
|
||||
P.sradio.send_signal("ACTIVATE")
|
||||
for(var/mob/O in hearers(1, P.loc))
|
||||
O.show_message("[bicon(P)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||
return 1
|
||||
/datum/pai_software/signaller/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
else if(href_list["freq"])
|
||||
var/new_frequency = (P.sradio.frequency + text2num(href_list["freq"]))
|
||||
if(new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ)
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
P.sradio.set_frequency(new_frequency)
|
||||
return 1
|
||||
var/mob/living/silicon/pai/user = usr
|
||||
if(istype(user))
|
||||
var/obj/item/radio/integrated/signal/R = user.sradio
|
||||
|
||||
else if(href_list["code"])
|
||||
P.sradio.code += text2num(href_list["code"])
|
||||
P.sradio.code = round(P.sradio.code)
|
||||
P.sradio.code = min(100, P.sradio.code)
|
||||
P.sradio.code = max(1, P.sradio.code)
|
||||
return 1
|
||||
switch(action)
|
||||
if("signal")
|
||||
spawn(0)
|
||||
R.send_signal("ACTIVATE")
|
||||
for(var/mob/O in hearers(1, R.loc))
|
||||
O.show_message("[bicon(R)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||
if("freq")
|
||||
var/frequency = unformat_frequency(params["freq"])
|
||||
frequency = sanitize_frequency(frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ)
|
||||
R.set_frequency(frequency)
|
||||
. = TRUE
|
||||
if("code")
|
||||
R.code = clamp(round(text2num(params["code"])), 1, 100)
|
||||
. = TRUE
|
||||
if("reset")
|
||||
if(params["reset"] == "freq")
|
||||
R.set_frequency(initial(R.frequency))
|
||||
else
|
||||
R.code = initial(R.code)
|
||||
. = TRUE
|
||||
|
||||
@@ -349,12 +349,6 @@
|
||||
updatename()
|
||||
updateicon()
|
||||
|
||||
// this verb lets cyborgs see the stations manifest
|
||||
/mob/living/silicon/robot/verb/cmd_station_manifest()
|
||||
set category = "Robot Commands"
|
||||
set name = "Show Crew Manifest"
|
||||
show_station_manifest()
|
||||
|
||||
/mob/living/silicon/robot/proc/self_diagnosis()
|
||||
if(!is_component_functioning("diagnosis unit"))
|
||||
return null
|
||||
|
||||
@@ -149,7 +149,8 @@
|
||||
pto_type = PTO_SCIENCE
|
||||
vr_sprites = list(
|
||||
"Acheron" = "mechoid-Science",
|
||||
"ZOOM-BA" = "zoomba-research"
|
||||
"ZOOM-BA" = "zoomba-research",
|
||||
"XI-GUS" = "spiderscience"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/security/combat
|
||||
|
||||
@@ -53,7 +53,8 @@
|
||||
"zoomba-service",
|
||||
"zoomba-combat",
|
||||
"zoomba-combat-roll",
|
||||
"zoomba-combat-shield"
|
||||
"zoomba-combat-shield",
|
||||
"spiderscience"
|
||||
) //List of all used sprites that are in robots_vr.dmi
|
||||
|
||||
|
||||
|
||||
@@ -153,18 +153,6 @@
|
||||
show_malf_ai()
|
||||
..()
|
||||
|
||||
// this function displays the stations manifest in a separate window
|
||||
/mob/living/silicon/proc/show_station_manifest()
|
||||
var/dat = "<div align='center'>"
|
||||
if(!data_core)
|
||||
to_chat(src, "<span class='notice'>There is no data to form a manifest with. Contact your Nanotrasen administrator.</span>")
|
||||
return
|
||||
dat += data_core.get_manifest(1) //The 1 makes it monochrome.
|
||||
|
||||
var/datum/browser/popup = new(src, "Crew Manifest", "Crew Manifest", 370, 420, src)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
//can't inject synths
|
||||
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
|
||||
if(error_msg)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
var/register_alarms = 1
|
||||
var/datum/tgui_module/alarm_monitor/all/robot/alarm_monitor
|
||||
var/datum/tgui_module/atmos_control/robot/atmos_control
|
||||
var/datum/tgui_module/crew_manifest/robot/crew_manifest
|
||||
var/datum/tgui_module/crew_monitor/robot/crew_monitor
|
||||
var/datum/tgui_module/law_manager/robot/law_manager
|
||||
var/datum/tgui_module/power_monitor/robot/power_monitor
|
||||
@@ -10,6 +11,7 @@
|
||||
/mob/living/silicon
|
||||
var/list/silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
||||
/mob/living/silicon/proc/subsystem_crew_manifest,
|
||||
/mob/living/silicon/proc/subsystem_law_manager
|
||||
)
|
||||
|
||||
@@ -17,6 +19,7 @@
|
||||
silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
||||
/mob/living/silicon/proc/subsystem_atmos_control,
|
||||
/mob/living/silicon/proc/subsystem_crew_manifest,
|
||||
/mob/living/silicon/proc/subsystem_crew_monitor,
|
||||
/mob/living/silicon/proc/subsystem_law_manager,
|
||||
/mob/living/silicon/proc/subsystem_power_monitor,
|
||||
@@ -30,6 +33,7 @@
|
||||
/mob/living/silicon/proc/init_subsystems()
|
||||
alarm_monitor = new(src)
|
||||
atmos_control = new(src)
|
||||
crew_manifest = new(src)
|
||||
crew_monitor = new(src)
|
||||
law_manager = new(src)
|
||||
power_monitor = new(src)
|
||||
@@ -60,6 +64,15 @@
|
||||
|
||||
atmos_control.tgui_interact(usr)
|
||||
|
||||
/********************
|
||||
* Crew Manifest *
|
||||
********************/
|
||||
/mob/living/silicon/proc/subsystem_crew_manifest()
|
||||
set category = "Subystems"
|
||||
set name = "Crew Manifest"
|
||||
|
||||
crew_manifest.tgui_interact(usr)
|
||||
|
||||
/********************
|
||||
* Crew Monitor *
|
||||
********************/
|
||||
|
||||
@@ -25,7 +25,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
|
||||
say_list_type = /datum/say_list/chicken
|
||||
|
||||
meat_amount = 2
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/chicken
|
||||
|
||||
var/eggsleft = 0
|
||||
var/body_color
|
||||
@@ -125,7 +125,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
|
||||
say_list_type = /datum/say_list/chick
|
||||
|
||||
meat_amount = 1
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/chicken
|
||||
|
||||
var/amount_grown = 0
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
see_in_dark = 7
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 25
|
||||
@@ -122,4 +123,4 @@
|
||||
/mob/living/simple_mob/animal/space/alien/death()
|
||||
..()
|
||||
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
|
||||
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
|
||||
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/mob/Logout()
|
||||
SSnanoui.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
|
||||
SStgui.on_logout(src) // Cleanup any TGUIs the user has open
|
||||
player_list -= src
|
||||
disconnect_time = world.realtime //VOREStation Addition: logging when we disappear.
|
||||
|
||||
@@ -240,13 +240,6 @@
|
||||
icon_state = "hair_fingerwave"
|
||||
species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
|
||||
|
||||
teshari_fluffymohawk
|
||||
name = "Teshari Fluffy Mohawk"
|
||||
icon = 'icons/mob/human_face_vr.dmi'
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
icon_state = "teshari_fluffymohawk"
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
//Teshari things
|
||||
teshari
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
@@ -290,6 +283,22 @@
|
||||
teshari_mushroom
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
teshari_twies
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
teshari_backstrafe
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
teshari_longway
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
teshari_tree
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
teshari_fluffymohawk
|
||||
icon = 'icons/mob/human_face_vr.dmi'
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
//Skrell 'hairstyles' - these were requested for a chimera and screw it, if one wants to eat seafood, go nuts
|
||||
skr_tentacle_veryshort
|
||||
name = "Skrell Very Short Tentacles"
|
||||
@@ -1166,3 +1175,8 @@
|
||||
icon_state = "dnose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
bee_stripes
|
||||
name = "bee stripes"
|
||||
icon_state = "beestripes"
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
@@ -24,7 +24,7 @@
|
||||
// If you create a program which is limited to Laptops and Consoles you don't have to add it's icon_state overlay for Tablets too, for example.
|
||||
|
||||
icon = null // This thing isn't meant to be used on it's own. Subtypes should supply their own icon.
|
||||
var/overlay_icon = null
|
||||
var/overlay_icon = null // Icon file used for overlays
|
||||
icon_state = null
|
||||
center_of_mass = null // No pixelshifting by placing on tables, etc.
|
||||
randpixel = 0 // And no random pixelshifting on-creation either.
|
||||
|
||||
@@ -220,12 +220,6 @@
|
||||
else
|
||||
return -1
|
||||
|
||||
/obj/item/modular_computer/initial_data()
|
||||
return get_header_data()
|
||||
|
||||
/obj/item/modular_computer/update_layout()
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/apply_visual(mob/M)
|
||||
if(TM)
|
||||
return TM.apply_visual(M)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/*
|
||||
This state checks that the user is an admin, end of story
|
||||
*/
|
||||
/var/global/datum/topic_state/admin_state/admin_state = new()
|
||||
|
||||
/datum/topic_state/admin_state/can_use_topic(var/src_object, var/mob/user)
|
||||
return check_rights(R_ADMIN|R_EVENT, 0, user) ? STATUS_INTERACTIVE : STATUS_CLOSE
|
||||
@@ -1,37 +0,0 @@
|
||||
/datum/proc/nano_host()
|
||||
return src
|
||||
|
||||
/datum/proc/nano_container()
|
||||
return src
|
||||
|
||||
/datum/proc/CanUseTopic(var/mob/user, var/datum/topic_state/state)
|
||||
var/src_object = nano_host()
|
||||
return state.can_use_topic(src_object, user)
|
||||
|
||||
/datum/topic_state/proc/href_list(var/mob/user)
|
||||
return list()
|
||||
|
||||
/datum/topic_state/proc/can_use_topic(var/src_object, var/mob/user)
|
||||
return STATUS_CLOSE
|
||||
|
||||
/mob/proc/shared_nano_interaction()
|
||||
if (src.stat || !client)
|
||||
return STATUS_CLOSE // no updates, close the interface
|
||||
else if (incapacitated())
|
||||
return STATUS_UPDATE // update only (orange visibility)
|
||||
return STATUS_INTERACTIVE
|
||||
|
||||
/mob/living/silicon/ai/shared_nano_interaction()
|
||||
if(lacks_power())
|
||||
return STATUS_CLOSE
|
||||
if (check_unable(1, 0))
|
||||
return STATUS_CLOSE
|
||||
return ..()
|
||||
|
||||
/mob/living/silicon/robot/shared_nano_interaction()
|
||||
. = STATUS_INTERACTIVE
|
||||
if(!has_power)
|
||||
return STATUS_CLOSE
|
||||
if(lockdown)
|
||||
. = STATUS_DISABLED
|
||||
return min(., ..())
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user