mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
Merge pull request #5064 from DaveTheHeadcrab/personal_crafting
Personal Crafting
This commit is contained in:
@@ -30,9 +30,8 @@
|
||||
#define slot_in_backpack 18
|
||||
#define slot_legcuffed 19
|
||||
#define slot_r_ear 20
|
||||
#define slot_wear_pda 21
|
||||
#define slot_tie 22
|
||||
#define slots_amt 22
|
||||
#define slot_tie 21
|
||||
#define slots_amt 21
|
||||
|
||||
//Cant seem to find a mob bitflags area other than the powers one
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#define CAT_NONE ""
|
||||
#define CAT_WEAPON "Weaponry"
|
||||
#define CAT_AMMO "Ammunition"
|
||||
#define CAT_ROBOT "Robots"
|
||||
#define CAT_FOOD "Food"
|
||||
#define CAT_MISC "Misc"
|
||||
#define CAT_PRIMAL "Tribal"
|
||||
@@ -102,10 +102,9 @@
|
||||
#define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets.
|
||||
#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets.
|
||||
#define SLOT_TWOEARS 8192
|
||||
#define SLOT_PDA 16384
|
||||
#define SLOT_TIE 32768
|
||||
#define SLOT_TIE 16384
|
||||
|
||||
//ORGAN TYPE FLAGS
|
||||
#define AFFECT_ROBOTIC_ORGAN 1
|
||||
#define AFFECT_ORGANIC_ORGAN 2
|
||||
#define AFFECT_ALL_ORGANS 3
|
||||
#define AFFECT_ALL_ORGANS 3
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
if(S.flags & IS_WHITELISTED)
|
||||
whitelisted_species += S.name
|
||||
|
||||
init_subtypes(/datum/table_recipe, table_recipes)
|
||||
init_subtypes(/datum/crafting_recipe, crafting_recipes)
|
||||
return 1
|
||||
|
||||
/* // Uncomment to debug chemical reaction list.
|
||||
|
||||
@@ -11,7 +11,7 @@ var/global/list/joblist = list() //list of all jobstypes, minus borg and AI
|
||||
var/global/list/airlocks = list() //list of all airlocks
|
||||
var/global/list/singularities = list() //list of all singularities
|
||||
var/global/list/janitorial_equipment = list() //list of janitorial equipment
|
||||
var/global/list/table_recipes = list() //list of all table craft recipes
|
||||
var/global/list/crafting_recipes = list() //list of all crafting recipes
|
||||
|
||||
var/global/list/all_areas = list()
|
||||
var/global/list/machines = list()
|
||||
@@ -30,4 +30,4 @@ var/global/list/beacons = list()
|
||||
var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none.
|
||||
var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
|
||||
var/global/list/abductor_equipment = list() //list of all abductor equipment
|
||||
var/global/list/global_intercoms = list() //list of all intercomms, across all z-levels
|
||||
var/global/list/global_intercoms = list() //list of all intercomms, across all z-levels
|
||||
|
||||
@@ -35,8 +35,7 @@
|
||||
#define ui_swaphand2 "CENTER: 16,SOUTH+1:5"
|
||||
#define ui_storage1 "CENTER+1:18,SOUTH:5"
|
||||
#define ui_storage2 "CENTER+2:20,SOUTH:5"
|
||||
|
||||
#define ui_pda "CENTER+3:22,SOUTH:5"
|
||||
#define ui_crafting "12:-10,1:5"
|
||||
|
||||
#define ui_alien_head "4:12,1:5" //aliens
|
||||
#define ui_alien_oclothing "5:14,1:5" //aliens
|
||||
@@ -154,4 +153,4 @@
|
||||
#define HUD_VERSIONS 3 //used in show_hud()
|
||||
//1 = standard hud
|
||||
//2 = reduced hud (just hands and intent switcher)
|
||||
//3 = no hud (for screenshots)
|
||||
//3 = no hud (for screenshots)
|
||||
|
||||
@@ -60,6 +60,12 @@
|
||||
var/obj/screen/using
|
||||
var/obj/screen/inventory/inv_box
|
||||
|
||||
using = new /obj/screen/inventory/craft
|
||||
using.icon = ui_style
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/act_intent()
|
||||
using.icon_state = mymob.a_intent
|
||||
using.color = ui_color
|
||||
@@ -151,16 +157,6 @@
|
||||
inv_box.alpha = ui_alpha
|
||||
static_inventory += inv_box
|
||||
|
||||
inv_box = new /obj/screen/inventory()
|
||||
inv_box.name = "pda"
|
||||
inv_box.icon = ui_style
|
||||
inv_box.icon_state = "pda"
|
||||
inv_box.screen_loc = ui_pda
|
||||
inv_box.slot_id = slot_wear_pda
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
static_inventory += inv_box
|
||||
|
||||
inv_box = new /obj/screen/inventory()
|
||||
inv_box.name = "mask"
|
||||
inv_box.icon = ui_style
|
||||
@@ -397,9 +393,6 @@
|
||||
if(H.wear_id)
|
||||
H.wear_id.screen_loc = ui_id
|
||||
H.client.screen += H.wear_id
|
||||
if(H.wear_pda)
|
||||
H.wear_pda.screen_loc = ui_pda
|
||||
H.client.screen += H.wear_pda
|
||||
if(H.belt)
|
||||
H.belt.screen_loc = ui_belt
|
||||
H.client.screen += H.belt
|
||||
@@ -417,8 +410,6 @@
|
||||
H.s_store.screen_loc = null
|
||||
if(H.wear_id)
|
||||
H.wear_id.screen_loc = null
|
||||
if(H.wear_pda)
|
||||
H.wear_pda.screen_loc = null
|
||||
if(H.belt)
|
||||
H.belt.screen_loc = null
|
||||
if(H.back)
|
||||
@@ -452,4 +443,4 @@
|
||||
hud_used.hotkey_ui_hidden = 0
|
||||
else
|
||||
client.screen -= hud_used.hotkeybuttons
|
||||
hud_used.hotkey_ui_hidden = 1
|
||||
hud_used.hotkey_ui_hidden = 1
|
||||
|
||||
@@ -361,6 +361,16 @@
|
||||
/obj/screen/zone_sel/robot
|
||||
icon = 'icons/mob/screen_robot.dmi'
|
||||
|
||||
/obj/screen/inventory/craft
|
||||
name = "crafting menu"
|
||||
icon = 'icons/mob/screen_midnight.dmi'
|
||||
icon_state = "craft"
|
||||
screen_loc = ui_crafting
|
||||
|
||||
/obj/screen/inventory/craft/Click()
|
||||
var/mob/living/M = usr
|
||||
M.OpenCraftingMenu()
|
||||
|
||||
/obj/screen/inventory
|
||||
var/slot_id //The indentifier for the slot. It has nothing to do with ID cards.
|
||||
layer = 19
|
||||
@@ -473,4 +483,3 @@
|
||||
name = "health doll"
|
||||
icon_state = "healthdoll_DEAD"
|
||||
screen_loc = ui_healthdoll
|
||||
|
||||
|
||||
@@ -990,7 +990,6 @@
|
||||
qdel(H.head)
|
||||
qdel(H.shoes)
|
||||
qdel(H.wear_id)
|
||||
qdel(H.wear_pda)
|
||||
qdel(H.wear_suit)
|
||||
qdel(H.w_uniform)
|
||||
|
||||
@@ -1322,7 +1321,6 @@
|
||||
qdel(H.head)
|
||||
qdel(H.shoes)
|
||||
qdel(H.wear_id)
|
||||
qdel(H.wear_pda)
|
||||
qdel(H.wear_suit)
|
||||
qdel(H.w_uniform)
|
||||
|
||||
|
||||
+14
-3
@@ -79,8 +79,19 @@
|
||||
invisibility = 101
|
||||
return ..()
|
||||
|
||||
/atom/proc/CheckParts()
|
||||
return
|
||||
/atom/proc/CheckParts(list/parts_list)
|
||||
for(var/A in parts_list)
|
||||
if(istype(A, /datum/reagent))
|
||||
if(!reagents)
|
||||
reagents = new()
|
||||
reagents.reagent_list.Add(A)
|
||||
reagents.conditional_update()
|
||||
else if(istype(A, /atom/movable))
|
||||
var/atom/movable/M = A
|
||||
if(istype(M.loc, /mob/living))
|
||||
var/mob/living/L = M.loc
|
||||
L.unEquip(M)
|
||||
M.loc = src
|
||||
|
||||
/atom/proc/assume_air(datum/gas_mixture/giver)
|
||||
qdel(giver)
|
||||
@@ -442,4 +453,4 @@
|
||||
O.show_message("<span class='game say'><span class='name'>[src]</span> [atom_say_verb], \"[message]\"</span>",2)
|
||||
|
||||
/atom/proc/speech_bubble(var/bubble_state = "",var/bubble_loc = src, var/list/bubble_recipients = list())
|
||||
return
|
||||
return
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
//There's no define for this / get all items ?
|
||||
var/list/slots = list(slot_back,slot_w_uniform,slot_wear_suit,\
|
||||
slot_wear_mask,slot_head,slot_shoes,slot_gloves,slot_l_ear,slot_r_ear,\
|
||||
slot_glasses,slot_belt,slot_s_store,slot_l_store,slot_r_store,slot_wear_id,slot_wear_pda)
|
||||
slot_glasses,slot_belt,slot_s_store,slot_l_store,slot_r_store,slot_wear_id)
|
||||
|
||||
for(var/slot in slots)
|
||||
var/obj/item/I = H.get_item_by_slot(slot)
|
||||
@@ -277,4 +277,4 @@
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,300)
|
||||
owner.gib()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
/obj/item/weapon/pinpointer/nukeop
|
||||
var/mode = 0 //Mode 0 locates disk, mode 1 locates the shuttle
|
||||
var/obj/docking_port/mobile/home = null
|
||||
slot_flags = SLOT_PDA | SLOT_BELT
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/pinpointer/nukeop/attack_self(mob/user as mob)
|
||||
if(!active)
|
||||
|
||||
@@ -166,7 +166,6 @@
|
||||
M.real_name = "Corpse"
|
||||
M.death()
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/pda/engineering(M), slot_wear_pda)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(M), slot_shoes)
|
||||
// M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
|
||||
|
||||
@@ -409,10 +409,6 @@ var/global/list/multiverse = list()
|
||||
if(belt)
|
||||
M.equip_to_slot_or_del(new belt.type(M), slot_belt)
|
||||
|
||||
var/obj/pda = H.get_item_by_slot(slot_wear_pda)
|
||||
if(pda)
|
||||
M.equip_to_slot_or_del(new pda.type(M), slot_wear_pda)
|
||||
|
||||
var/obj/back = H.get_item_by_slot(slot_back)
|
||||
if(back)
|
||||
M.equip_to_slot_or_del(new back.type(M), slot_back)
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/white(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/centcom(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(H), slot_in_backpack)
|
||||
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/dust(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(H), slot_in_backpack)
|
||||
@@ -61,13 +61,13 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/combat(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/centcom(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer/navy(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/space/deathsquad/officer(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/dust(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(H), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
@@ -77,4 +77,4 @@
|
||||
return 1
|
||||
|
||||
/datum/job/ntspecops/get_access()
|
||||
return get_centcom_access(title)
|
||||
return get_centcom_access(title)
|
||||
|
||||
@@ -27,16 +27,16 @@
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ce(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ce(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat/white(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black/ce(H), slot_gloves)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -64,14 +64,14 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/t_scanner(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -99,12 +99,12 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/atmos(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/device/pda/atmos(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
/datum/job/mechanic
|
||||
@@ -129,12 +129,12 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/mechanic(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/t_scanner(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/cmo(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/cmo(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/cmo(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
@@ -89,7 +89,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
@@ -127,7 +127,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/science(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/chemist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1
|
||||
@@ -157,7 +157,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/genetics(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
@@ -185,7 +185,7 @@
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_vir(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/viro(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/viro(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/virologist(H), slot_wear_suit)
|
||||
@@ -228,7 +228,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
@@ -257,7 +257,7 @@
|
||||
if(H.backbag == 3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/cigarette(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/soft/blue(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
@@ -71,7 +71,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1
|
||||
@@ -106,11 +106,11 @@
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/hos(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hos(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hos(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black/hos(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/HoS(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
@@ -72,7 +72,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/warden(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/warden(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/warden(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
// H.equip_or_collect(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
|
||||
@@ -115,7 +115,7 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/det(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/detective(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/detective(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/toy/crayon/white(H), slot_l_store)
|
||||
/* var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H)
|
||||
CIG.light("")
|
||||
@@ -173,7 +173,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/security(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store)
|
||||
@@ -212,7 +212,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/fr_jacket(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/health/health_advanced, slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
@@ -247,7 +247,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/jacket/pilot(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store)
|
||||
@@ -261,4 +261,4 @@
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -25,7 +25,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
U.accessories += M
|
||||
M.on_attached(U)
|
||||
H.equip_or_collect(U, slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/captain(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/captain(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/caphat(H), slot_head)
|
||||
@@ -84,7 +84,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hopcap(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hop(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hop(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/ids(H), slot_r_hand)
|
||||
else
|
||||
@@ -130,7 +130,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/ntrep(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/ntrep(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ntrep(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ntrep(H), slot_belt)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
@@ -170,7 +170,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/health/health_advanced, slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/blueshield(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/blueshield(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/blueshield(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/blueshield(H), slot_belt)
|
||||
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/deathimp(H), slot_r_hand)
|
||||
@@ -216,7 +216,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/powdered_wig(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/magistrate(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/magistrate(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_r_store)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
@@ -251,7 +251,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/device/pda/lawyer(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/lawyer(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_r_store)
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/bar(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/bandolier/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/device/pda/bar(H), slot_belt)
|
||||
|
||||
if(H.backbag == 1)
|
||||
var/obj/item/weapon/storage/box/survival/Barpack = new /obj/item/weapon/storage/box/survival(H)
|
||||
@@ -31,6 +30,7 @@
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/toy/russian_revolver(H.back), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/bandolier/full(H), slot_in_backpack)
|
||||
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
H.mutations += SOBER
|
||||
@@ -64,7 +64,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/chef(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/chefhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chef(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chef(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
else
|
||||
@@ -99,7 +99,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/apron(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/botanist(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/botanist(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/quartermaster(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/quartermaster(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
if(H.backbag == 1)
|
||||
@@ -161,7 +161,7 @@
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/cargo(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/cargo(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
else
|
||||
@@ -196,7 +196,7 @@
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/fingerless(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/pda/shaftminer(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/shaftminer(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/seclite(H), slot_r_store)
|
||||
@@ -234,7 +234,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/clown_shoes(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/clown(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/clown(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/bikehorn(H), slot_in_backpack)
|
||||
@@ -277,7 +277,7 @@
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/mime(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/mime(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/white(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit)
|
||||
@@ -315,7 +315,7 @@
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/janitor(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/janitor(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
else
|
||||
@@ -346,7 +346,7 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/librarian(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/librarian(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/barcodescanner(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chaplain(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chaplain(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
if(H.backbag == 1)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
|
||||
@@ -594,7 +594,7 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
H.equip_to_slot_or_del(C, slot_wear_id)
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt)
|
||||
if(locate(/obj/item/device/pda,H))
|
||||
var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H)
|
||||
pda.owner = H.real_name
|
||||
|
||||
@@ -362,6 +362,7 @@ Class Procs:
|
||||
return ..()
|
||||
|
||||
/obj/machinery/CheckParts()
|
||||
..()
|
||||
RefreshParts()
|
||||
return
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/obj/item/device/guitar/Topic(href, href_list)
|
||||
song.Topic(href, href_list)
|
||||
|
||||
/datum/table_recipe/guitar
|
||||
/datum/crafting_recipe/guitar
|
||||
name = "Guitar"
|
||||
result = /obj/item/device/guitar
|
||||
reqs = list(/obj/item/stack/sheet/wood = 5,
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
overlays += "[icon_state]-charge[ratio]"
|
||||
|
||||
/obj/item/weapon/defibrillator/CheckParts()
|
||||
..()
|
||||
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
|
||||
update_icon()
|
||||
|
||||
@@ -561,4 +562,4 @@
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to target your patient's chest with [src].</span>")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/CheckParts()
|
||||
..()
|
||||
weldtool = locate(/obj/item/weapon/weldingtool) in contents
|
||||
igniter = locate(/obj/item/device/assembly/igniter) in contents
|
||||
update_icon()
|
||||
@@ -226,4 +227,4 @@
|
||||
var/target_turf = get_turf(owner)
|
||||
ignite_turf(target_turf, 100)
|
||||
qdel(ptank)
|
||||
return 1 //It hit the flamethrower, not them
|
||||
return 1 //It hit the flamethrower, not them
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
range = pick(2,2,2,3,3,3,4)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/CheckParts()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/cans/can = locate() in contents
|
||||
if(can)
|
||||
underlays += can
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
maxWeightClass = 7
|
||||
gasPerThrow = 5
|
||||
|
||||
/datum/table_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
|
||||
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
|
||||
name = "Pneumatic Cannon"
|
||||
result = /obj/item/weapon/pneumatic_cannon/ghetto
|
||||
tools = list(/obj/item/weapon/weldingtool,
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
sleep(8)
|
||||
delayed = 0
|
||||
|
||||
/datum/table_recipe/picket_sign
|
||||
/datum/crafting_recipe/picket_sign
|
||||
name = "Picket Sign"
|
||||
result = /obj/item/weapon/picket_sign
|
||||
reqs = list(/obj/item/stack/rods = 1,
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/CheckParts()
|
||||
..()
|
||||
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
|
||||
update_icon()
|
||||
|
||||
@@ -205,4 +206,4 @@
|
||||
else if(!bcell)
|
||||
icon_state = "stunprod_nocell"
|
||||
else
|
||||
icon_state = "stunprod"
|
||||
icon_state = "stunprod"
|
||||
|
||||
+15
-17
@@ -241,7 +241,7 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/ert/engineer(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/responseteam(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
@@ -256,7 +256,7 @@ var/ert_request_answered = 0
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-engineer"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
|
||||
|
||||
if("Security")
|
||||
@@ -265,7 +265,7 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/ert/security(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/responseteam(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
@@ -280,7 +280,7 @@ var/ert_request_answered = 0
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-security"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
|
||||
|
||||
if("Medic")
|
||||
@@ -302,7 +302,7 @@ var/ert_request_answered = 0
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-medical"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
|
||||
|
||||
if("Commander")
|
||||
@@ -329,7 +329,7 @@ var/ert_request_answered = 0
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Emergency Response Team Leader"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
|
||||
/datum/response_team/proc/cannot_send_team()
|
||||
command_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.", "ERT Unavailable")
|
||||
@@ -382,13 +382,12 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/ert/medical(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical/response_team(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/ert/medical(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/o2(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/brute(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical/response_team(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
@@ -399,12 +398,11 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/ert/command(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/ert/command(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/lockbox/loyalty(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
@@ -464,7 +462,6 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/medical(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/health_advanced(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/loaded(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/medical(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_in_backpack)
|
||||
@@ -473,6 +470,7 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/surgery(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/loaded(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
@@ -483,12 +481,12 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/commander(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/commander(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/lockbox/loyalty(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack)
|
||||
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
@@ -546,12 +544,12 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/medical(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/night(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/loaded(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/medical(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/surgery(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/loaded(M), slot_in_backpack)
|
||||
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
@@ -564,13 +562,13 @@ var/ert_request_answered = 0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/commander(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/night(M), slot_glasses)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/commander(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/lockbox/loyalty(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack)
|
||||
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
|
||||
@@ -856,7 +856,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Reaper"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
equip_special_id(M,get_all_accesses(), "Reaper", /obj/item/weapon/card/id/syndicate)
|
||||
|
||||
if("spy")
|
||||
@@ -899,7 +899,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/that(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/device/pda/(M), slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/device/pda/(M), slot_belt)
|
||||
equip_special_id(M,get_centcom_access("VIP Guest"), "VIP Guest", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
if("nt navy officer")
|
||||
@@ -908,10 +908,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
|
||||
@@ -926,10 +926,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
|
||||
@@ -970,7 +970,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) // job has /obj/item/clothing/head/beret/centcom/officer/navy
|
||||
M.equip_to_slot_or_del(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/pda/centcom(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // job has /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
|
||||
@@ -998,18 +998,20 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // special
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_in_backpack)
|
||||
|
||||
var/obj/item/device/pda/centcom/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Special Operations Officer"
|
||||
pda.icon_state = "pda-syndi"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
|
||||
M.equip_or_collect(pda, slot_wear_pda)
|
||||
|
||||
M.equip_or_collect(pda, slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
@@ -111,7 +111,7 @@ var/global/sent_honksquad = 0
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/pda/clown(src), slot_wear_pda)
|
||||
equip_to_slot_or_del(new /obj/item/device/pda/clown(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/bikehorn(src), slot_in_backpack)
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
desc = "Looks sneaky."
|
||||
icon_state = "sheet-cloth"
|
||||
|
||||
/datum/table_recipe/shoe_rags
|
||||
/datum/crafting_recipe/shoe_rags
|
||||
name = "Shoe Rags"
|
||||
|
||||
result = /obj/item/shoe_silencer
|
||||
|
||||
@@ -0,0 +1,340 @@
|
||||
/datum/personal_crafting
|
||||
var/busy
|
||||
var/viewing_category = 1 //typical powergamer starting on the Weapons tab
|
||||
var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* This is what procs do:
|
||||
get_environment - gets a list of things accessable for crafting by user
|
||||
get_surroundings - takes a list of things and makes a list of key-types to values-amounts of said type in the list
|
||||
check_contents - takes a recipe and a key-type list and checks if said recipe can be done with available stuff
|
||||
check_tools - takes recipe, a key-type list, and a user and checks if there are enough tools to do the stuff, checks bugs one level deep
|
||||
construct_item - takes a recipe and a user, call all the checking procs, calls do_after, checks all the things again, calls del_reqs, creates result, calls CheckParts of said result with argument being list returned by deel_reqs
|
||||
del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/personal_crafting/proc/check_contents(datum/crafting_recipe/R, list/contents)
|
||||
main_loop:
|
||||
for(var/A in R.reqs)
|
||||
var/needed_amount = R.reqs[A]
|
||||
for(var/B in contents)
|
||||
if(ispath(B, A))
|
||||
if(contents[B] >= R.reqs[A])
|
||||
continue main_loop
|
||||
else
|
||||
needed_amount -= contents[B]
|
||||
if(needed_amount <= 0)
|
||||
continue main_loop
|
||||
else
|
||||
continue
|
||||
return 0
|
||||
for(var/A in R.chem_catalists)
|
||||
if(contents[A] < R.chem_catalists[A])
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/personal_crafting/proc/get_environment(mob/user)
|
||||
. = list()
|
||||
. += user.r_hand
|
||||
. += user.l_hand
|
||||
if(!istype(user.loc, /turf))
|
||||
return
|
||||
var/list/L = block(get_step(user, SOUTHWEST), get_step(user, NORTHEAST))
|
||||
for(var/A in L)
|
||||
var/turf/T = A
|
||||
if(T.Adjacent(user))
|
||||
. += T.contents
|
||||
|
||||
|
||||
/datum/personal_crafting/proc/get_surroundings(mob/user)
|
||||
. = list()
|
||||
for(var/obj/item/I in get_environment(user))
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
.[I.type] += S.amount
|
||||
else
|
||||
if(istype(I, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = I
|
||||
if(RC.flags & OPENCONTAINER)
|
||||
for(var/datum/reagent/A in RC.reagents.reagent_list)
|
||||
.[A.type] += A.volume
|
||||
.[I.type] += 1
|
||||
|
||||
/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents)
|
||||
if(!R.tools.len)
|
||||
return 1
|
||||
var/list/possible_tools = list()
|
||||
for(var/obj/item/I in user.contents)
|
||||
if(istype(I, /obj/item/weapon/storage))
|
||||
for(var/obj/item/SI in I.contents)
|
||||
possible_tools += SI.type
|
||||
possible_tools += I.type
|
||||
possible_tools += contents
|
||||
|
||||
main_loop:
|
||||
for(var/A in R.tools)
|
||||
for(var/I in possible_tools)
|
||||
if(ispath(I,A))
|
||||
continue main_loop
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R)
|
||||
for(var/A in R.parts)
|
||||
var/list/contents = get_surroundings(user)
|
||||
var/send_feedback = 1
|
||||
if(check_contents(R, contents))
|
||||
if(check_tools(user, R, contents))
|
||||
if(do_after(user, R.time, target = user))
|
||||
contents = get_surroundings(user)
|
||||
if(!check_contents(R, contents))
|
||||
return ", missing component."
|
||||
if(!check_tools(user, R, contents))
|
||||
return ", missing tool."
|
||||
var/list/parts = del_reqs(R, user)
|
||||
var/atom/movable/I = new R.result (get_turf(user.loc))
|
||||
I.CheckParts(parts, R)
|
||||
if(send_feedback)
|
||||
feedback_add_details("object_crafted","[I.type]")
|
||||
return 0
|
||||
return "."
|
||||
return ", missing tool."
|
||||
return ", missing component."
|
||||
|
||||
|
||||
/*Del reqs works like this:
|
||||
Loop over reqs var of the recipe
|
||||
Set var amt to the value current cycle req is pointing to, its amount of type we need to delete
|
||||
Get var/surroundings list of things accessable to crafting by get_environment()
|
||||
Check the type of the current cycle req
|
||||
If its reagent then do a while loop, inside it try to locate() reagent containers, inside such containers try to locate needed reagent, if there isnt remove thing from surroundings
|
||||
If there is enough reagent in the search result then delete the needed amount, create the same type of reagent with the same data var and put it into deletion list
|
||||
If there isnt enough take all of that reagent from the container, put into deletion list, substract the amt var by the volume of reagent, remove the container from surroundings list and keep searching
|
||||
While doing above stuff check deletion list if it already has such reagnet, if yes merge instead of adding second one
|
||||
If its stack check if it has enough amount
|
||||
If yes create new stack with the needed amount and put in into deletion list, substract taken amount from the stack
|
||||
If no put all of the stack in the deletion list, substract its amount from amt and keep searching
|
||||
While doing above stuff check deletion list if it already has such stack type, if yes try to merge them instead of adding new one
|
||||
If its anything else just locate() in in the list in a while loop, each find --s the amt var and puts the found stuff in deletion loop
|
||||
Then do a loop over parts var of the recipe
|
||||
Do similar stuff to what we have done above, but now in deletion list, until the parts conditions are satisfied keep taking from the deletion list and putting it into parts list for return
|
||||
After its done loop over deletion list and delete all the shit that wasnt taken by parts loop
|
||||
del_reqs return the list of parts resulting object will recieve as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already
|
||||
*/
|
||||
|
||||
/datum/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user)
|
||||
var/list/surroundings
|
||||
var/list/Deletion = list()
|
||||
. = list()
|
||||
var/data
|
||||
var/amt
|
||||
main_loop:
|
||||
for(var/A in R.reqs)
|
||||
amt = R.reqs[A]
|
||||
surroundings = get_environment(user)
|
||||
surroundings -= Deletion
|
||||
if(ispath(A, /datum/reagent))
|
||||
var/datum/reagent/RG = new A
|
||||
var/datum/reagent/RGNT
|
||||
while(amt > 0)
|
||||
var/obj/item/weapon/reagent_containers/RC = locate() in surroundings
|
||||
RG = RC.reagents.get_reagent(A)
|
||||
if(RG)
|
||||
if(!locate(RG.type) in Deletion)
|
||||
Deletion += new RG.type()
|
||||
if(RG.volume > amt)
|
||||
RG.volume -= amt
|
||||
data = RG.data
|
||||
RC.reagents.conditional_update(RC)
|
||||
RG = locate(RG.type) in Deletion
|
||||
RG.volume = amt
|
||||
RG.data += data
|
||||
continue main_loop
|
||||
else
|
||||
surroundings -= RC
|
||||
amt -= RG.volume
|
||||
RC.reagents.reagent_list -= RG
|
||||
RC.reagents.conditional_update(RC)
|
||||
RGNT = locate(RG.type) in Deletion
|
||||
RGNT.volume += RG.volume
|
||||
RGNT.data += RG.data
|
||||
qdel(RG)
|
||||
else
|
||||
surroundings -= RC
|
||||
else if(ispath(A, /obj/item/stack))
|
||||
var/obj/item/stack/S
|
||||
var/obj/item/stack/SD
|
||||
while(amt > 0)
|
||||
S = locate(A) in surroundings
|
||||
if(S.amount >= amt)
|
||||
if(!locate(S.type) in Deletion)
|
||||
SD = new S.type()
|
||||
Deletion += SD
|
||||
S.use(amt)
|
||||
SD = locate(S.type) in Deletion
|
||||
SD.amount += amt
|
||||
continue main_loop
|
||||
else
|
||||
amt -= S.amount
|
||||
if(!locate(S.type) in Deletion)
|
||||
Deletion += S
|
||||
else
|
||||
data = S.amount
|
||||
S = locate(S.type) in Deletion
|
||||
S.amount += data
|
||||
surroundings -= S
|
||||
else
|
||||
var/atom/movable/I
|
||||
while(amt > 0)
|
||||
I = locate(A) in surroundings
|
||||
Deletion += I
|
||||
surroundings -= I
|
||||
amt--
|
||||
var/list/partlist = list(R.parts.len)
|
||||
for(var/M in R.parts)
|
||||
partlist[M] = R.parts[M]
|
||||
for(var/A in R.parts)
|
||||
if(istype(A, /datum/reagent))
|
||||
var/datum/reagent/RG = locate(A) in Deletion
|
||||
if(RG.volume > partlist[A])
|
||||
RG.volume = partlist[A]
|
||||
. += RG
|
||||
Deletion -= RG
|
||||
continue
|
||||
else if(istype(A, /obj/item/stack))
|
||||
var/obj/item/stack/ST = locate(A) in Deletion
|
||||
if(ST.amount > partlist[A])
|
||||
ST.amount = partlist[A]
|
||||
. += ST
|
||||
Deletion -= ST
|
||||
continue
|
||||
else
|
||||
while(partlist[A] > 0)
|
||||
var/atom/movable/AM = locate(A) in Deletion
|
||||
. += AM
|
||||
Deletion -= AM
|
||||
partlist[A] -= 1
|
||||
while(Deletion.len)
|
||||
var/DL = Deletion[Deletion.len]
|
||||
Deletion.Cut(Deletion.len)
|
||||
qdel(DL)
|
||||
|
||||
/datum/personal_crafting/proc/craft(mob/user)
|
||||
if(user.incapacitated() || user.lying || istype(user.loc, /obj/mecha))
|
||||
return
|
||||
var/list/surroundings = get_surroundings(user)
|
||||
var/dat = "<h3>Crafting menu</h3>"
|
||||
if(busy)
|
||||
dat += "<div class='statusDisplay'>"
|
||||
dat += "Crafting in progress...</div>"
|
||||
else
|
||||
dat += "<A href='?src=\ref[src];backwardCat=1'><--</A>"
|
||||
dat += " [categories[prev_cat()]] |"
|
||||
dat += " <B>[categories[viewing_category]]</B> "
|
||||
dat += "| [categories[next_cat()]] "
|
||||
dat += "<A href='?src=\ref[src];forwardCat=1'>--></A><BR><BR>"
|
||||
|
||||
dat += "<div class='statusDisplay'>"
|
||||
|
||||
//Filter the recipes we can craft to the top
|
||||
var/list/can_craft = list()
|
||||
var/list/cant_craft = list()
|
||||
for(var/datum/crafting_recipe/R in crafting_recipes)
|
||||
if(R.category != categories[viewing_category])
|
||||
continue
|
||||
if(check_contents(R, surroundings))
|
||||
can_craft += R
|
||||
else
|
||||
cant_craft += R
|
||||
|
||||
for(var/datum/crafting_recipe/R in can_craft)
|
||||
dat += build_recipe_text(R, surroundings)
|
||||
for(var/datum/crafting_recipe/R in cant_craft)
|
||||
dat += build_recipe_text(R, surroundings)
|
||||
|
||||
|
||||
dat += "</div>"
|
||||
|
||||
var/datum/browser/popup = new(user, "crafting", "Crafting", 500, 500)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
return
|
||||
|
||||
/datum/personal_crafting/Topic(href, href_list)
|
||||
if(usr.stat || usr.lying)
|
||||
return
|
||||
if(href_list["make"])
|
||||
var/datum/crafting_recipe/TR = locate(href_list["make"])
|
||||
busy = 1
|
||||
craft(usr)
|
||||
var/fail_msg = construct_item(usr, TR)
|
||||
if(!fail_msg)
|
||||
usr << "<span class='notice'>[TR.name] constructed.</span>"
|
||||
else
|
||||
usr << "<span class ='warning'>Construction failed[fail_msg]</span>"
|
||||
busy = 0
|
||||
craft(usr)
|
||||
if(href_list["forwardCat"])
|
||||
viewing_category = next_cat()
|
||||
usr << "<span class='notice'>Category is now [categories[viewing_category]].</span>"
|
||||
craft(usr)
|
||||
if(href_list["backwardCat"])
|
||||
viewing_category = prev_cat()
|
||||
usr << "<span class='notice'>Category is now [categories[viewing_category]].</span>"
|
||||
craft(usr)
|
||||
|
||||
//Next works nicely with modular arithmetic
|
||||
/datum/personal_crafting/proc/next_cat()
|
||||
. = viewing_category % categories.len + 1
|
||||
|
||||
//Previous can go fuck itself
|
||||
/datum/personal_crafting/proc/prev_cat()
|
||||
if(viewing_category == categories.len)
|
||||
. = viewing_category-1
|
||||
else
|
||||
. = viewing_category % categories.len - 1
|
||||
if(. <= 0)
|
||||
. = categories.len
|
||||
|
||||
/datum/personal_crafting/proc/build_recipe_text(datum/crafting_recipe/R, list/contents)
|
||||
. = ""
|
||||
var/name_text = ""
|
||||
var/req_text = ""
|
||||
var/tool_text = ""
|
||||
var/catalist_text = ""
|
||||
if(check_contents(R, contents))
|
||||
name_text ="<A href='?src=\ref[src];make=\ref[R]'>[R.name]</A>"
|
||||
|
||||
else
|
||||
name_text = "<span class='linkOff'>[R.name]</span>"
|
||||
|
||||
if(name_text)
|
||||
for(var/A in R.reqs)
|
||||
if(ispath(A, /obj))
|
||||
var/obj/O = A
|
||||
req_text += " [R.reqs[A]] [initial(O.name)]"
|
||||
else if(ispath(A, /datum/reagent))
|
||||
var/datum/reagent/RE = A
|
||||
req_text += " [R.reqs[A]] [initial(RE.name)]"
|
||||
|
||||
if(R.chem_catalists.len)
|
||||
catalist_text += ", Catalysts:"
|
||||
for(var/C in R.chem_catalists)
|
||||
if(ispath(C, /datum/reagent))
|
||||
var/datum/reagent/RE = C
|
||||
catalist_text += " [R.chem_catalists[C]] [initial(RE.name)]"
|
||||
|
||||
if(R.tools.len)
|
||||
tool_text += ", Tools:"
|
||||
for(var/O in R.tools)
|
||||
if(ispath(O, /obj))
|
||||
var/obj/T = O
|
||||
tool_text += " [R.tools[O]] [initial(T.name)]"
|
||||
|
||||
. = "[name_text][req_text][tool_text][catalist_text]<BR>"
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/table_recipe
|
||||
/datum/crafting_recipe
|
||||
var/name = "" //in-game display name
|
||||
var/reqs[] = list() //type paths of items consumed associated with how many are needed
|
||||
var/result //type path of item resulting from this craft
|
||||
@@ -7,14 +7,15 @@
|
||||
var/parts[] = list() //type paths of items that will be placed in the result
|
||||
var/chem_catalists[] = list() //like tools but for reagents
|
||||
var/fruit[] = list() //grown products required by the recipe
|
||||
var/category = CAT_MISC // Recipe category
|
||||
|
||||
/datum/table_recipe/proc/AdjustChems(var/obj/resultobj as obj)
|
||||
/datum/crafting_recipe/proc/AdjustChems(var/obj/resultobj as obj)
|
||||
//This proc is to replace the make_food proc of recipes from microwaves and such that are being converted to table crafting recipes.
|
||||
//Use it to handle the removal of reagents after the food has been created (like removing toxins from a salad made with ambrosia)
|
||||
//If a recipe does not require it's chems adjusted, don't bother declaring this for the recipe, as it will call this placeholder
|
||||
return
|
||||
|
||||
/datum/table_recipe/IED
|
||||
/datum/crafting_recipe/IED
|
||||
name = "IED"
|
||||
result = /obj/item/weapon/grenade/iedcasing/filled
|
||||
reqs = list(/datum/reagent/fuel = 50,
|
||||
@@ -23,8 +24,9 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans = 1)
|
||||
parts = list(/obj/item/weapon/reagent_containers/food/drinks/cans = 1)
|
||||
time = 80
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/stunprod
|
||||
/datum/crafting_recipe/stunprod
|
||||
name = "Stunprod"
|
||||
result = /obj/item/weapon/melee/baton/cattleprod
|
||||
reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1,
|
||||
@@ -33,8 +35,9 @@
|
||||
/obj/item/weapon/stock_parts/cell = 1)
|
||||
time = 80
|
||||
parts = list(/obj/item/weapon/stock_parts/cell = 1)
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/ed209
|
||||
/datum/crafting_recipe/ed209
|
||||
name = "ED209"
|
||||
result = /mob/living/simple_animal/bot/ed209
|
||||
reqs = list(/obj/item/robot_parts/robot_suit = 1,
|
||||
@@ -50,8 +53,9 @@
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
tools = list(/obj/item/weapon/weldingtool, /obj/item/weapon/screwdriver)
|
||||
time = 120
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/table_recipe/secbot
|
||||
/datum/crafting_recipe/secbot
|
||||
name = "Secbot"
|
||||
result = /mob/living/simple_animal/bot/secbot
|
||||
reqs = list(/obj/item/device/assembly/signaler = 1,
|
||||
@@ -61,16 +65,18 @@
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
tools = list(/obj/item/weapon/weldingtool)
|
||||
time = 120
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/table_recipe/cleanbot
|
||||
/datum/crafting_recipe/cleanbot
|
||||
name = "Cleanbot"
|
||||
result = /mob/living/simple_animal/bot/cleanbot
|
||||
reqs = list(/obj/item/weapon/reagent_containers/glass/bucket = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 80
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/table_recipe/floorbot
|
||||
/datum/crafting_recipe/floorbot
|
||||
name = "Floorbot"
|
||||
result = /mob/living/simple_animal/bot/floorbot
|
||||
reqs = list(/obj/item/weapon/storage/toolbox/mechanical = 1,
|
||||
@@ -78,8 +84,9 @@
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 80
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/table_recipe/medbot
|
||||
/datum/crafting_recipe/medbot
|
||||
name = "Medbot"
|
||||
result = /mob/living/simple_animal/bot/medbot
|
||||
reqs = list(/obj/item/device/healthanalyzer = 1,
|
||||
@@ -87,8 +94,9 @@
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 80
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/table_recipe/flamethrower
|
||||
/datum/crafting_recipe/flamethrower
|
||||
name = "Flamethrower"
|
||||
result = /obj/item/weapon/flamethrower
|
||||
reqs = list(/obj/item/weapon/weldingtool = 1,
|
||||
@@ -96,8 +104,9 @@
|
||||
/obj/item/stack/rods = 2)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 20
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/meteorshot
|
||||
/datum/crafting_recipe/meteorshot
|
||||
name = "Meteorshot Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/meteorshot
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
@@ -105,8 +114,9 @@
|
||||
/obj/item/weapon/stock_parts/manipulator = 2)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/pulseslug
|
||||
/datum/crafting_recipe/pulseslug
|
||||
name = "Pulse Slug Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/pulseslug
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
@@ -114,16 +124,18 @@
|
||||
/obj/item/weapon/stock_parts/micro_laser/ultra = 1)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/dragonsbreath
|
||||
/datum/crafting_recipe/dragonsbreath
|
||||
name = "Dragonsbreath Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/datum/reagent/phosphorus = 5,)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/frag12
|
||||
/datum/crafting_recipe/frag12
|
||||
name = "FRAG-12 Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/frag12
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
@@ -132,8 +144,9 @@
|
||||
/datum/reagent/facid = 5,)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/ionslug
|
||||
/datum/crafting_recipe/ionslug
|
||||
name = "Ion Scatter Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/ion
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
@@ -141,8 +154,9 @@
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 1)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/improvisedslug
|
||||
/datum/crafting_recipe/improvisedslug
|
||||
name = "Improvised Shotgun Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/improvised
|
||||
reqs = list(/obj/item/weapon/grenade/chem_grenade = 1,
|
||||
@@ -151,16 +165,18 @@
|
||||
/datum/reagent/fuel = 10)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/improvisedslugoverload
|
||||
/datum/crafting_recipe/improvisedslugoverload
|
||||
name = "Overload Improvised Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/improvised/overload
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1,
|
||||
/datum/reagent/blackpowder = 5)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/laserslug
|
||||
/datum/crafting_recipe/laserslug
|
||||
name = "Laser Slug Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/laserslug
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
@@ -168,8 +184,9 @@
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 1)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/ishotgun
|
||||
/datum/crafting_recipe/ishotgun
|
||||
name = "Improvised Shotgun"
|
||||
result = /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised
|
||||
reqs = list(/obj/item/weaponcrafting/receiver = 1,
|
||||
@@ -178,8 +195,9 @@
|
||||
/obj/item/stack/packageWrap = 5,)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 200
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/spooky_camera
|
||||
/datum/crafting_recipe/spooky_camera
|
||||
name = "Camera Obscura"
|
||||
result = /obj/item/device/camera/spooky
|
||||
time = 15
|
||||
@@ -187,29 +205,31 @@
|
||||
/datum/reagent/holywater = 10)
|
||||
parts = list(/obj/item/device/camera = 1)
|
||||
|
||||
/datum/table_recipe/notreallysoap
|
||||
/datum/crafting_recipe/notreallysoap
|
||||
name = "Homemade Soap"
|
||||
result = /obj/item/weapon/soap/ducttape
|
||||
time = 100
|
||||
reqs = list(/obj/item/stack/tape_roll = 1,
|
||||
/datum/reagent/liquidgibs = 10)
|
||||
|
||||
/datum/table_recipe/garrote
|
||||
/datum/crafting_recipe/garrote
|
||||
name = "Makeshift Garrote"
|
||||
result = /obj/item/weapon/twohanded/garrote/improvised
|
||||
time = 15
|
||||
reqs = list(/obj/item/stack/sheet/wood = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
tools = list(/obj/item/weapon/kitchen/knife) // Gotta carve the wood into handles
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/makeshift_bolt
|
||||
/datum/crafting_recipe/makeshift_bolt
|
||||
name = "Makeshift Bolt"
|
||||
result = /obj/item/weapon/arrow/rod
|
||||
time = 15
|
||||
reqs = list(/obj/item/stack/rods = 1)
|
||||
tools = list(/obj/item/weapon/weldingtool)
|
||||
category = CAT_AMMO
|
||||
|
||||
/datum/table_recipe/crossbow
|
||||
/datum/crafting_recipe/crossbow
|
||||
name = "Powered Crossbow"
|
||||
result = /obj/item/weapon/gun/throw/crossbow
|
||||
time = 300
|
||||
@@ -219,10 +239,11 @@
|
||||
/obj/item/stack/sheet/wood = 5)
|
||||
tools = list(/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/screwdriver)
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/glove_balloon
|
||||
/datum/crafting_recipe/glove_balloon
|
||||
name = "Latex Glove Balloon"
|
||||
result = /obj/item/latexballon
|
||||
time = 15
|
||||
reqs = list(/obj/item/clothing/gloves/color/latex = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
|
||||
@@ -1,225 +0,0 @@
|
||||
#define TABLECRAFT_MAX_ITEMS 30
|
||||
|
||||
/obj/structure/table
|
||||
var/list/table_contents = list()
|
||||
|
||||
/obj/structure/table/MouseDrop(atom/over)
|
||||
if(over != usr)
|
||||
return
|
||||
interact(usr)
|
||||
|
||||
/obj/structure/table/proc/check_contents(datum/table_recipe/R)
|
||||
check_table()
|
||||
main_loop:
|
||||
if(R.fruit)
|
||||
for(var/A in R.fruit)
|
||||
for(var/B in table_contents)
|
||||
if(B == A)
|
||||
if(table_contents[B] >= R.fruit[A])
|
||||
continue main_loop
|
||||
return 0
|
||||
for(var/A in R.reqs)
|
||||
for(var/B in table_contents)
|
||||
if(ispath(B, A))
|
||||
if(table_contents[B] >= R.reqs[A])
|
||||
continue main_loop
|
||||
return 0
|
||||
for(var/A in R.chem_catalists)
|
||||
if(table_contents[A] < R.chem_catalists[A])
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/table/proc/check_table()
|
||||
table_contents = list()
|
||||
for(var/obj/item/I in loc)
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
table_contents[I.type] += S.amount
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = I
|
||||
if(G.seed && G.seed.kitchen_tag)
|
||||
table_contents[G.seed.kitchen_tag] += 1
|
||||
else
|
||||
if(istype(I, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = I
|
||||
if(RC.flags & OPENCONTAINER)
|
||||
for(var/datum/reagent/A in RC.reagents.reagent_list)
|
||||
table_contents[A.type] += A.volume
|
||||
table_contents[I.type] += 1
|
||||
|
||||
/obj/structure/table/proc/check_tools(mob/user, datum/table_recipe/R)
|
||||
if(!R.tools.len)
|
||||
return 1
|
||||
var/list/possible_tools = list()
|
||||
for(var/obj/item/I in user.contents)
|
||||
if(istype(I, /obj/item/weapon/storage))
|
||||
for(var/obj/item/SI in I.contents)
|
||||
possible_tools += SI.type
|
||||
else
|
||||
possible_tools += I.type
|
||||
possible_tools += table_contents
|
||||
var/i = R.tools.len
|
||||
var/I
|
||||
for(var/A in R.tools)
|
||||
I = possible_tools.Find(A)
|
||||
if(I)
|
||||
possible_tools.Cut(I, I+1)
|
||||
i--
|
||||
else
|
||||
break
|
||||
return !i
|
||||
|
||||
/obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R)
|
||||
check_table()
|
||||
if(check_contents(R) && check_tools(user, R))
|
||||
if(do_after(user, R.time, target = src))
|
||||
if(!check_contents(R) || !check_tools(user, R))
|
||||
return 0
|
||||
var/atom/movable/I = new R.result (loc)
|
||||
var/list/parts = del_reqs(R, I)
|
||||
for(var/A in parts)
|
||||
if(istype(A, /obj/item))
|
||||
var/atom/movable/B = A
|
||||
B.loc = I
|
||||
else
|
||||
if(!I.reagents)
|
||||
I.reagents = new /datum/reagents()
|
||||
I.reagents.reagent_list.Add(A)
|
||||
I.CheckParts()
|
||||
R.AdjustChems(I)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/structure/table/proc/del_reqs(datum/table_recipe/R, atom/movable/resultobject)
|
||||
var/list/Deletion = list()
|
||||
var/amt
|
||||
var/reagenttransfer = 0
|
||||
if(istype(resultobject,/obj/item/weapon/reagent_containers))
|
||||
reagenttransfer = 1
|
||||
if(R.fruit)
|
||||
for(var/A in R.fruit)
|
||||
amt = R.fruit[A]
|
||||
fruit_loop: //ha
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in loc)
|
||||
if(G.seed && G.seed.kitchen_tag && (G.seed.kitchen_tag == A))
|
||||
amt--
|
||||
G.loc = null //remove it from the table loc so that we don't locate the same fruit every time
|
||||
if(reagenttransfer)
|
||||
G.reagents.trans_to(resultobject, G.reagents.total_volume)
|
||||
qdel(G)
|
||||
if(amt <= 0)
|
||||
break fruit_loop
|
||||
for(var/A in R.reqs)
|
||||
amt = R.reqs[A]
|
||||
if(ispath(A, /obj/item/stack))
|
||||
var/obj/item/stack/S
|
||||
stack_loop:
|
||||
for(var/B in table_contents)
|
||||
if(ispath(B, A))
|
||||
while(amt > 0)
|
||||
S = locate(B) in loc
|
||||
if(S.amount >= amt)
|
||||
S.use(amt)
|
||||
break stack_loop
|
||||
else
|
||||
amt -= S.amount
|
||||
qdel(S)
|
||||
else if(ispath(A, /obj/item))
|
||||
var/obj/item/I
|
||||
item_loop:
|
||||
for(var/B in table_contents)
|
||||
if(ispath(B, A))
|
||||
while(amt > 0)
|
||||
I = locate(B) in loc
|
||||
Deletion.Add(I)
|
||||
I.loc = null //remove it from the table loc so that we don't locate the same item every time (will be relocated inside the crafted item in construct_item())
|
||||
amt--
|
||||
if(reagenttransfer && istype(I,/obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = I
|
||||
RC.reagents.trans_to(resultobject, RC.reagents.total_volume)
|
||||
break item_loop
|
||||
else
|
||||
var/datum/reagent/RG = new A
|
||||
reagent_loop:
|
||||
for(var/B in table_contents)
|
||||
if(ispath(B, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/RC = locate(B) in loc
|
||||
if(RC.reagents.has_reagent(RG.id, amt))
|
||||
if(reagenttransfer)
|
||||
RC.reagents.trans_id_to(resultobject,RG.id, amt)
|
||||
else
|
||||
RC.reagents.remove_reagent(RG.id, amt)
|
||||
RG.volume = amt
|
||||
Deletion.Add(RG)
|
||||
break reagent_loop
|
||||
else if(RC.reagents.has_reagent(RG.id))
|
||||
Deletion.Add(RG)
|
||||
RG.volume += RC.reagents.get_reagent_amount(RG.id)
|
||||
amt -= RC.reagents.get_reagent_amount(RG.id)
|
||||
if(reagenttransfer)
|
||||
RC.reagents.trans_id_to(resultobject,RG.id, RG.volume)
|
||||
else
|
||||
RC.reagents.del_reagent(RG.id)
|
||||
|
||||
var/list/partlist = list(R.parts.len)
|
||||
for(var/M in R.parts)
|
||||
partlist[M] = R.parts[M]
|
||||
deletion_loop:
|
||||
for(var/B in Deletion)
|
||||
for(var/A in R.parts)
|
||||
if(istype(B, A))
|
||||
if(partlist[A] > 0) //do we still need a part like that?
|
||||
partlist[A] -= 1
|
||||
continue deletion_loop
|
||||
Deletion.Remove(B)
|
||||
qdel(B)
|
||||
|
||||
return Deletion
|
||||
|
||||
/obj/structure/table/interact(mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user))
|
||||
return
|
||||
check_table()
|
||||
if(!table_contents.len)
|
||||
return
|
||||
user.face_atom(src)
|
||||
var/dat = "<h3>Crafting menu</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
if(busy)
|
||||
dat += "Crafting in progress...</div>"
|
||||
else
|
||||
for(var/datum/table_recipe/R in table_recipes)
|
||||
if(check_contents(R))
|
||||
dat += "<A href='?src=\ref[src];make=\ref[R]'>[R.name]</A><BR>"
|
||||
dat += "</div>"
|
||||
|
||||
var/datum/browser/popup = new(user, "table", "Table", 300, 300)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
return
|
||||
|
||||
/obj/structure/table/Topic(href, href_list)
|
||||
if(usr.stat || !Adjacent(usr) || usr.lying)
|
||||
return
|
||||
if(href_list["make"])
|
||||
if(!check_table_space())
|
||||
to_chat(usr, "<span class ='warning'>The table is too crowded.</span>")
|
||||
return
|
||||
var/datum/table_recipe/TR = locate(href_list["make"])
|
||||
busy = 1
|
||||
interact(usr)
|
||||
if(construct_item(usr, TR))
|
||||
to_chat(usr, "<span class='notice'>[TR.name] constructed.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class ='warning'>Construction failed.</span>")
|
||||
busy = 0
|
||||
interact(usr)
|
||||
|
||||
/obj/structure/table/proc/check_table_space()
|
||||
var/Item_amount = 0
|
||||
for(var/obj/item/I in loc)
|
||||
Item_amount++
|
||||
if(Item_amount <= TABLECRAFT_MAX_ITEMS) //is the table crowded?
|
||||
return 1
|
||||
|
||||
#undef TABLECRAFT_MAX_ITEMS
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Example for reference when defining recipes
|
||||
/datum/table_recipe/food
|
||||
/datum/crafting_recipe/food
|
||||
name = "" //in-game display name
|
||||
reqs[] = list() //type paths of items/reagents consumed associated with how many are needed (equivalent to var/list/items and var/list/reagents combined)
|
||||
result //type path of item resulting from this craft
|
||||
@@ -9,7 +9,7 @@
|
||||
fruit[] = list() //grown products required by the recipe
|
||||
*/
|
||||
|
||||
/datum/table_recipe/sandwich
|
||||
/datum/crafting_recipe/sandwich
|
||||
name = "Sandwich"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatsteak = 1,
|
||||
@@ -17,55 +17,61 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sandwich
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/slimesandwich
|
||||
/datum/crafting_recipe/slimesandwich
|
||||
name = "Slime Jelly Sandwich"
|
||||
reqs = list(
|
||||
/datum/reagent/slimejelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/cherrysandwich
|
||||
/datum/crafting_recipe/cherrysandwich
|
||||
name = "Cherry Jelly Sandwich"
|
||||
reqs = list(
|
||||
/datum/reagent/cherryjelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/slimeburger
|
||||
/datum/crafting_recipe/slimeburger
|
||||
name = "Slime Jelly Burger"
|
||||
reqs = list(
|
||||
/datum/reagent/slimejelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/jellyburger
|
||||
/datum/crafting_recipe/jellyburger
|
||||
name = "Cherry Jelly Burger"
|
||||
reqs = list(
|
||||
/datum/reagent/cherryjelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/herbsalad
|
||||
/* Temporarily disabled until we can find a workaround for this fruit shit.
|
||||
/datum/crafting_recipe/herbsalad
|
||||
name = "herb salad"
|
||||
fruit = list("ambrosia" = 3, "apple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad
|
||||
|
||||
/datum/table_recipe/herbsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
/datum/crafting_recipe/herbsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
if(istype(resultobj, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = resultobj
|
||||
RC.reagents.del_reagent("toxin")
|
||||
|
||||
/datum/table_recipe/aesirsalad
|
||||
/datum/crafting_recipe/aesirsalad
|
||||
name = "Aesir salad"
|
||||
fruit = list("ambrosiadeus" = 3, "goldapple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad
|
||||
|
||||
/datum/table_recipe/validsalad
|
||||
/datum/crafting_recipe/validsalad
|
||||
name = "valid salad"
|
||||
fruit = list("ambrosia" = 3, "potato" = 1)
|
||||
reqs = list(
|
||||
@@ -73,20 +79,12 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/validsalad
|
||||
|
||||
/datum/table_recipe/validsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
/datum/crafting_recipe/validsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
if(istype(resultobj, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = resultobj
|
||||
RC.reagents.del_reagent("toxin")
|
||||
|
||||
/datum/table_recipe/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
/obj/item/clothing/mask/fakemoustache = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich
|
||||
|
||||
/datum/table_recipe/wrap
|
||||
/datum/crafting_recipe/wrap
|
||||
name = "egg wrap"
|
||||
fruit = list("cabbage" = 1)
|
||||
reqs = list(
|
||||
@@ -94,75 +92,95 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/wrap
|
||||
*/
|
||||
|
||||
/datum/table_recipe/sushi_Ebi
|
||||
/datum/crafting_recipe/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
/obj/item/clothing/mask/fakemoustache = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich
|
||||
category = CAT_FOOD
|
||||
|
||||
|
||||
/datum/crafting_recipe/sushi_Ebi
|
||||
name = "Ebi Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiled_shrimp = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Ebi
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Ikura
|
||||
/datum/crafting_recipe/sushi_Ikura
|
||||
name = "Ikura Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/fish_eggs/salmon = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Ikura
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Inari
|
||||
/datum/crafting_recipe/sushi_Inari
|
||||
name = "Inari Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fried_tofu = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Inari
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Sake
|
||||
/datum/crafting_recipe/sushi_Sake
|
||||
name = "Sake Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salmonmeat = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Sake
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_SmokedSalmon
|
||||
/datum/crafting_recipe/sushi_SmokedSalmon
|
||||
name = "Smoked Salmon Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salmonsteak = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_SmokedSalmon
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Masago
|
||||
/datum/crafting_recipe/sushi_Masago
|
||||
name = "Masago Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/fish_eggs/goldfish = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Masago
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Tobiko
|
||||
/datum/crafting_recipe/sushi_Tobiko
|
||||
name = "Tobiko Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/fish_eggs/shark = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Tobiko
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_TobikoEgg
|
||||
/datum/crafting_recipe/sushi_TobikoEgg
|
||||
name = "Tobiko and Egg Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sushi_Tobiko = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_TobikoEgg
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/table_recipe/sushi_Tai
|
||||
/datum/crafting_recipe/sushi_Tai
|
||||
name = "Tai Sushi"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/catfishmeat = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Tai
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sushi_Tai
|
||||
category = CAT_FOOD
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
|
||||
martial_art = default_martial_art
|
||||
|
||||
handcrafting = new()
|
||||
|
||||
var/mob/M = src
|
||||
faction |= "\ref[M]" //what
|
||||
|
||||
@@ -53,6 +55,9 @@
|
||||
|
||||
UpdateAppearance()
|
||||
|
||||
/mob/living/carbon/human/OpenCraftingMenu()
|
||||
handcrafting.craft(src)
|
||||
|
||||
/mob/living/carbon/human/prepare_data_huds()
|
||||
//Update med hud images...
|
||||
..()
|
||||
@@ -599,7 +604,6 @@
|
||||
dat += "<tr><td> ↳<B>Pockets:</B></td><td><A href='?src=\ref[src];pockets=left'>[(l_store && !(l_store.flags&ABSTRACT)) ? "Left (Full)" : "<font color=grey>Left (Empty)</font>"]</A>"
|
||||
dat += " <A href='?src=\ref[src];pockets=right'>[(r_store && !(r_store.flags&ABSTRACT)) ? "Right (Full)" : "<font color=grey>Right (Empty)</font>"]</A></td></tr>"
|
||||
dat += "<tr><td> ↳<B>ID:</B></td><td><A href='?src=\ref[src];item=[slot_wear_id]'>[(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
dat += "<tr><td> ↳<B>PDA:</B></td><td><A href='?src=\ref[src];item=[slot_wear_pda]'>[(wear_pda && !(wear_pda.flags&ABSTRACT)) ? wear_pda : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
|
||||
@@ -53,6 +53,8 @@ var/global/default_martial_art = new/datum/martial_art
|
||||
|
||||
var/speech_problem_flag = 0
|
||||
|
||||
var/datum/personal_crafting/handcrafting
|
||||
|
||||
var/datum/martial_art/martial_art = null
|
||||
|
||||
var/special_voice = "" // For changing our voice. Used by a symptom.
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
MYPDA = wear_pda
|
||||
else
|
||||
MYPDA = new(src)
|
||||
equip_to_slot_or_del(MYPDA, slot_wear_pda)
|
||||
equip_to_slot_or_del(MYPDA, slot_belt)
|
||||
MYPDA.owner = real_name
|
||||
MYPDA.ownjob = alt_title
|
||||
MYPDA.ownrank = job
|
||||
@@ -954,4 +954,4 @@
|
||||
if(RPID)
|
||||
RPID.registered_name = MYID.registered_name
|
||||
RPID.name = MYID.name
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -78,8 +78,6 @@
|
||||
if(slot_wear_id)
|
||||
// the only relevant check for this is the uniform check
|
||||
return 1
|
||||
if(slot_wear_pda)
|
||||
return 1
|
||||
if(slot_l_ear)
|
||||
return has_organ("head")
|
||||
if(slot_r_ear)
|
||||
@@ -251,9 +249,6 @@
|
||||
wear_id = W
|
||||
sec_hud_set_ID()
|
||||
update_inv_wear_id(redraw_mob)
|
||||
if(slot_wear_pda)
|
||||
wear_pda = W
|
||||
update_inv_wear_pda(redraw_mob)
|
||||
if(slot_l_ear)
|
||||
l_ear = W
|
||||
if(l_ear.slot_flags & SLOT_TWOEARS)
|
||||
@@ -340,8 +335,6 @@
|
||||
return belt
|
||||
if(slot_wear_id)
|
||||
return wear_id
|
||||
if(slot_wear_pda)
|
||||
return wear_pda
|
||||
if(slot_l_ear)
|
||||
return l_ear
|
||||
if(slot_r_ear)
|
||||
@@ -521,16 +514,6 @@
|
||||
if(!(I.slot_flags & SLOT_ID))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_pda)
|
||||
if(wear_pda)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_PDA))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_l_store)
|
||||
if(I.flags & NODROP) //Pockets aren't visible, so you can't move NODROP items into them.
|
||||
return 0
|
||||
|
||||
@@ -968,16 +968,6 @@ var/global/list/damage_icon_parts = list()
|
||||
client.screen += r_store
|
||||
r_store.screen_loc = ui_storage2
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_pda()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_pda]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_pda)
|
||||
client.screen += wear_pda
|
||||
wear_pda.screen_loc = ui_pda
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_mask(var/update_icons = 1)
|
||||
..()
|
||||
if(client && hud_used)
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
/mob/living/proc/OpenCraftingMenu()
|
||||
return
|
||||
|
||||
/mob/living/Stat()
|
||||
. = ..()
|
||||
if(. && get_rig_stats)
|
||||
|
||||
@@ -257,7 +257,6 @@
|
||||
var/list/slot_equipment_priority = list( \
|
||||
slot_back,\
|
||||
slot_wear_id,\
|
||||
slot_wear_pda,\
|
||||
slot_w_uniform,\
|
||||
slot_wear_suit,\
|
||||
slot_wear_mask,\
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
|
||||
|
||||
/obj/item/device/camera/spooky/CheckParts()
|
||||
..()
|
||||
var/obj/item/device/camera/C = locate(/obj/item/device/camera) in contents
|
||||
if(C)
|
||||
pictures_max = C.pictures_max
|
||||
|
||||
+17
-4
@@ -11,7 +11,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
icon_state = "pda"
|
||||
item_state = "electronic"
|
||||
w_class = 1
|
||||
slot_flags = SLOT_PDA | SLOT_BELT
|
||||
slot_flags = SLOT_ID | SLOT_BELT
|
||||
|
||||
//Main variables
|
||||
var/owner = null
|
||||
@@ -295,11 +295,21 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(can_use(usr))
|
||||
start_program(find_program(/datum/data/pda/app/main_menu))
|
||||
notifying_programs.Cut()
|
||||
overlays.Cut()
|
||||
overlays -= image('icons/obj/pda.dmi', "pda-r")
|
||||
to_chat(usr, "<span class='notice'>You press the reset button on \the [src].</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot do this while restrained.</span>")
|
||||
|
||||
/obj/item/device/pda/AltClick()
|
||||
if(issilicon(usr))
|
||||
return
|
||||
|
||||
if(can_use(usr))
|
||||
if(id)
|
||||
remove_id()
|
||||
else
|
||||
usr << "<span class='warning'>This PDA does not have an ID in it!</span>"
|
||||
|
||||
/obj/item/device/pda/proc/remove_id()
|
||||
if(id)
|
||||
if(ismob(loc))
|
||||
@@ -308,6 +318,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
to_chat(usr, "<span class='notice'>You remove the ID from the [name].</span>")
|
||||
else
|
||||
id.forceMove(get_turf(src))
|
||||
overlays -= image('icons/goonstation/objects/pda_overlay.dmi', id.icon_state)
|
||||
id = null
|
||||
|
||||
/obj/item/device/pda/verb/verb_remove_id()
|
||||
@@ -399,7 +410,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
|
||||
if( can_use(user) )//If they can still act.
|
||||
id_check(user, 2)
|
||||
to_chat(user, "<span class='notice'>You put the ID into \the [src]'s slot.</span>")
|
||||
to_chat(user, "<span class='notice'>You put the ID into \the [src]'s slot.<br>You can remove it with ALT click.</span>")
|
||||
overlays += image('icons/goonstation/objects/pda_overlay.dmi', C.icon_state)
|
||||
|
||||
else if(istype(C, /obj/item/device/paicard) && !src.pai)
|
||||
user.drop_item()
|
||||
C.forceMove(src)
|
||||
@@ -483,4 +496,4 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return 1
|
||||
else
|
||||
close(usr)
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
pda.play_ringtone()
|
||||
|
||||
if(blink && !(src in pda.notifying_programs))
|
||||
pda.overlays.Cut()
|
||||
pda.overlays += image('icons/obj/pda.dmi', "pda-r")
|
||||
pda.notifying_programs |= src
|
||||
|
||||
@@ -39,7 +38,7 @@
|
||||
if(src in pda.notifying_programs)
|
||||
pda.notifying_programs -= src
|
||||
if(!pda.notifying_programs.len)
|
||||
pda.overlays.Cut()
|
||||
pda.overlays -= image('icons/obj/pda.dmi', "pda-r")
|
||||
|
||||
/datum/data/pda/proc/
|
||||
|
||||
@@ -94,4 +93,4 @@
|
||||
|
||||
/datum/data/pda/utility/scanmode/proc/scan_mob(mob/living/C as mob, mob/living/user as mob)
|
||||
|
||||
/datum/data/pda/utility/scanmode/proc/scan_atom(atom/A as mob|obj|turf|area, mob/user as mob)
|
||||
/datum/data/pda/utility/scanmode/proc/scan_atom(atom/A as mob|obj|turf|area, mob/user as mob)
|
||||
|
||||
@@ -518,6 +518,9 @@ var/const/INGEST = 2
|
||||
|
||||
return res
|
||||
|
||||
/datum/reagents/proc/get_reagent(type)
|
||||
. = locate(type) in reagent_list
|
||||
|
||||
/datum/reagents/proc/remove_all_type(reagent_type, amount, strict = 0, safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
|
||||
if(!isnum(amount)) return 1
|
||||
|
||||
@@ -606,4 +609,4 @@ atom/proc/create_reagents(max_vol)
|
||||
reagent_list.Cut()
|
||||
reagent_list = null
|
||||
if(my_atom && my_atom.reagents == src)
|
||||
my_atom.reagents = null
|
||||
my_atom.reagents = null
|
||||
|
||||
Reference in New Issue
Block a user