Merge branch 'master' of https://github.com/PolarisSS13/Polaris into Slime_Rework_3

# Conflicts:
#	icons/mob/items/lefthand.dmi
#	icons/mob/items/righthand.dmi
This commit is contained in:
Datraen
2016-05-12 17:24:55 -04:00
265 changed files with 5101 additions and 2994 deletions

View File

@@ -24,6 +24,10 @@
/obj/machinery/atmospherics/unary/freezer/New() /obj/machinery/atmospherics/unary/freezer/New()
..() ..()
initialize_directions = dir initialize_directions = dir
/obj/machinery/atmospherics/unary/freezer/map/New()
..()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src)

View File

@@ -25,6 +25,9 @@
..() ..()
initialize_directions = dir initialize_directions = dir
/obj/machinery/atmospherics/unary/heater/map/New()
..()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src)

View File

@@ -24,6 +24,7 @@
#define IS_TAJARA 5 #define IS_TAJARA 5
#define IS_XENOS 6 #define IS_XENOS 6
#define IS_TESHARI 7 #define IS_TESHARI 7
#define IS_SLIME 8
#define CE_STABLE "stable" // Inaprovaline #define CE_STABLE "stable" // Inaprovaline
#define CE_ANTIBIOTIC "antibiotic" // Spaceacilin #define CE_ANTIBIOTIC "antibiotic" // Spaceacilin

View File

@@ -9,6 +9,7 @@
#define CUT "cut" #define CUT "cut"
#define BRUISE "bruise" #define BRUISE "bruise"
#define PIERCE "pierce"
#define STUN "stun" #define STUN "stun"
#define WEAKEN "weaken" #define WEAKEN "weaken"

View File

@@ -27,12 +27,12 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called
#define AI_CAMERA_LUMINOSITY 6 #define AI_CAMERA_LUMINOSITY 6
// Camera networks // Camera networks
#define NETWORK_CRESCENT "Crescent" #define NETWORK_CRESCENT "Spaceport"
#define NETWORK_CAFE_DOCK "Cafe Dock" // #define NETWORK_CAFE_DOCK "Cafe Dock"
#define NETWORK_CARGO "Cargo" #define NETWORK_CARGO "Cargo"
#define NETWORK_CIVILIAN "Civilian" #define NETWORK_CIVILIAN "Civilian"
#define NETWORK_CIVILIAN_EAST "Civilian East" // #define NETWORK_CIVILIAN_EAST "Civilian East"
#define NETWORK_CIVILIAN_WEST "Civilian West" // #define NETWORK_CIVILIAN_WEST "Civilian West"
#define NETWORK_COMMAND "Command" #define NETWORK_COMMAND "Command"
#define NETWORK_ENGINE "Engine" #define NETWORK_ENGINE "Engine"
#define NETWORK_ENGINEERING "Engineering" #define NETWORK_ENGINEERING "Engineering"
@@ -41,7 +41,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called
#define NETWORK_EXODUS "Northern Star" #define NETWORK_EXODUS "Northern Star"
#define NETWORK_MEDICAL "Medical" #define NETWORK_MEDICAL "Medical"
#define NETWORK_MERCENARY "MercurialNet" #define NETWORK_MERCENARY "MercurialNet"
#define NETWORK_MINE "MINE" #define NETWORK_MINE "Mining Outpost"
#define NETWORK_NORTHERN_STAR "Northern Star" #define NETWORK_NORTHERN_STAR "Northern Star"
#define NETWORK_RESEARCH "Research" #define NETWORK_RESEARCH "Research"
#define NETWORK_RESEARCH_OUTPOST "Research Outpost" #define NETWORK_RESEARCH_OUTPOST "Research Outpost"

View File

@@ -78,10 +78,10 @@
// Setting this much higher than 1024 could allow spammers to DOS the server easily. // Setting this much higher than 1024 could allow spammers to DOS the server easily.
#define MAX_MESSAGE_LEN 1024 #define MAX_MESSAGE_LEN 1024
#define MAX_PAPER_MESSAGE_LEN 3072 #define MAX_PAPER_MESSAGE_LEN 6144
#define MAX_BOOK_MESSAGE_LEN 9216 #define MAX_BOOK_MESSAGE_LEN 12288
#define MAX_LNAME_LEN 64 #define MAX_LNAME_LEN 64
#define MAX_NAME_LEN 26 #define MAX_NAME_LEN 52
// Event defines. // Event defines.
#define EVENT_LEVEL_MUNDANE 1 #define EVENT_LEVEL_MUNDANE 1

View File

@@ -136,9 +136,15 @@
#define INCAPACITATION_RESTRAINED 1 #define INCAPACITATION_RESTRAINED 1
#define INCAPACITATION_BUCKLED_PARTIALLY 2 #define INCAPACITATION_BUCKLED_PARTIALLY 2
#define INCAPACITATION_BUCKLED_FULLY 4 #define INCAPACITATION_BUCKLED_FULLY 4
#define INCAPACITATION_STUNNED 8
#define INCAPACITATION_FORCELYING 16 //needs a better name - represents being knocked down BUT still conscious.
#define INCAPACITATION_KNOCKOUT 32
#define INCAPACITATION_DEFAULT (INCAPACITATION_RESTRAINED|INCAPACITATION_BUCKLED_FULLY) #define INCAPACITATION_DEFAULT (INCAPACITATION_RESTRAINED|INCAPACITATION_BUCKLED_FULLY)
#define INCAPACITATION_ALL (INCAPACITATION_RESTRAINED|INCAPACITATION_BUCKLED_PARTIALLY|INCAPACITATION_BUCKLED_FULLY) #define INCAPACITATION_KNOCKDOWN (INCAPACITATION_KNOCKOUT|INCAPACITATION_FORCELYING)
#define INCAPACITATION_DISABLED (INCAPACITATION_KNOCKDOWN|INCAPACITATION_STUNNED)
#define INCAPACITATION_ALL (~INCAPACITATION_NONE)
// Bodyparts and organs. // Bodyparts and organs.
#define O_MOUTH "mouth" #define O_MOUTH "mouth"

View File

@@ -8,9 +8,9 @@
// unused: 0x8000 - higher than this will overflow // unused: 0x8000 - higher than this will overflow
// Species spawn flags // Species spawn flags
#define IS_WHITELISTED 0x1 // Must be whitelisted to play. #define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play.
#define CAN_JOIN 0x2 // Species is selectable in chargen. #define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces)
#define IS_RESTRICTED 0x4 // Is not a core/normally playable species. (castes, mutantraces) #define SPECIES_CAN_JOIN 0x4 // Species is selectable in chargen.
// Species appearance flags // Species appearance flags
#define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255) #define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255)
@@ -19,6 +19,7 @@
#define HAS_UNDERWEAR 0x8 // Underwear is drawn onto the mob icon. #define HAS_UNDERWEAR 0x8 // Underwear is drawn onto the mob icon.
#define HAS_EYE_COLOR 0x10 // Eye colour selectable in chargen. (RGB) #define HAS_EYE_COLOR 0x10 // Eye colour selectable in chargen. (RGB)
#define HAS_HAIR_COLOR 0x20 // Hair colour selectable in chargen. (RGB) #define HAS_HAIR_COLOR 0x20 // Hair colour selectable in chargen. (RGB)
#define RADIATION_GLOWS 0x40 // Radiation causes this character to glow.
// Languages. // Languages.
#define LANGUAGE_SOL_COMMON "Sol Common" #define LANGUAGE_SOL_COMMON "Sol Common"
@@ -29,6 +30,7 @@
#define LANGUAGE_ROOTSPEAK "Rootspeak" #define LANGUAGE_ROOTSPEAK "Rootspeak"
#define LANGUAGE_TRADEBAND "Tradeband" #define LANGUAGE_TRADEBAND "Tradeband"
#define LANGUAGE_GUTTER "Gutter" #define LANGUAGE_GUTTER "Gutter"
#define LANGUAGE_SCHECHI "Schechi"
// Language flags. // Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted. #define WHITELISTED 1 // Language is available if the speaker is whitelisted.

View File

@@ -23,6 +23,9 @@ var/global/list/joblist = list() //list of all jobstypes, minus borg and AI
var/global/list/turfs = list() //list of all turfs var/global/list/turfs = list() //list of all turfs
#define all_genders_define_list list(MALE,FEMALE,PLURAL,NEUTER)
#define all_genders_text_list list("Male","Female","Plural","Neuter")
//Languages/species/whitelist. //Languages/species/whitelist.
var/global/list/all_species[0] var/global/list/all_species[0]
var/global/list/all_languages[0] var/global/list/all_languages[0]
@@ -191,16 +194,22 @@ var/global/list/string_slot_flags = list(
language_keys[lowertext(L.key)] = L language_keys[lowertext(L.key)] = L
var/rkey = 0 var/rkey = 0
paths = typesof(/datum/species)-/datum/species paths = typesof(/datum/species)
for(var/T in paths) for(var/T in paths)
rkey++ rkey++
var/datum/species/S = new T
var/datum/species/S = T
if(!initial(S.name))
continue
S = new T
S.race_key = rkey //Used in mob icon caching. S.race_key = rkey //Used in mob icon caching.
all_species[S.name] = S all_species[S.name] = S
if(!(S.spawn_flags & IS_RESTRICTED)) if(!(S.spawn_flags & SPECIES_IS_RESTRICTED))
playable_species += S.name playable_species += S.name
if(S.spawn_flags & IS_WHITELISTED) if(S.spawn_flags & SPECIES_IS_WHITELISTED)
whitelisted_species += S.name whitelisted_species += S.name
//Posters //Posters

View File

@@ -323,3 +323,5 @@ proc/TextPreview(var/string,var/len=40)
if(48 to 57) //Numbers if(48 to 57) //Numbers
return 1 return 1
return 0 return 0
#define gender2text(gender) capitalize(gender)

View File

@@ -137,7 +137,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
//Now to find a box from center location and make that our destination. //Now to find a box from center location and make that our destination.
for(var/turf/T in block(locate(center.x+b1xerror,center.y+b1yerror,location.z), locate(center.x+b2xerror,center.y+b2yerror,location.z) )) for(var/turf/T in block(locate(center.x+b1xerror,center.y+b1yerror,location.z), locate(center.x+b2xerror,center.y+b2yerror,location.z) ))
if(density&&T.density) continue//If density was specified. if(density&&(T.density||T.contains_dense_objects())) continue//If density was specified.
if(T.x>world.maxx || T.x<1) continue//Don't want them to teleport off the map. if(T.x>world.maxx || T.x<1) continue//Don't want them to teleport off the map.
if(T.y>world.maxy || T.y<1) continue if(T.y>world.maxy || T.y<1) continue
destination_list += T destination_list += T
@@ -146,7 +146,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
else return else return
else//Same deal here. else//Same deal here.
if(density&&destination.density) return if(density&&(destination.density||destination.contains_dense_objects())) return
if(destination.x>world.maxx || destination.x<1) return if(destination.x>world.maxx || destination.x<1) return
if(destination.y>world.maxy || destination.y<1) return if(destination.y>world.maxy || destination.y<1) return
else return else return

View File

@@ -121,9 +121,9 @@
/obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors!
if(density) if(density)
Topic(src, list("src"= "\ref[src]", "command"="open", "activate" = "1"), 1) // 1 meaning no window (consistency!) Topic(src, list("command"="open", "activate" = "1"))
else else
Topic(src, list("src"= "\ref[src]", "command"="open", "activate" = "0"), 1) Topic(src, list("command"="open", "activate" = "0"))
return 1 return 1
/atom/proc/AICtrlClick() /atom/proc/AICtrlClick()
@@ -131,17 +131,17 @@
/obj/machinery/door/airlock/AICtrlClick() // Bolts doors /obj/machinery/door/airlock/AICtrlClick() // Bolts doors
if(locked) if(locked)
Topic(src, list("src"= "\ref[src]", "command"="bolts", "activate" = "0"), 1)// 1 meaning no window (consistency!) Topic(src, list("command"="bolts", "activate" = "0"))
else else
Topic(src, list("src"= "\ref[src]", "command"="bolts", "activate" = "1"), 1) Topic(src, list("command"="bolts", "activate" = "1"))
return 1 return 1
/obj/machinery/power/apc/AICtrlClick() // turns off/on APCs. /obj/machinery/power/apc/AICtrlClick() // turns off/on APCs.
Topic(src, list("src"= "\ref[src]", "breaker"="1"), 1) // 1 meaning no window (consistency!) Topic(src, list("breaker"="1"))
return 1 return 1
/obj/machinery/turretid/AICtrlClick() //turns off/on Turrets /obj/machinery/turretid/AICtrlClick() //turns off/on Turrets
Topic(src, list("src"= "\ref[src]", "command"="enable", "value"="[!enabled]"), 1) // 1 meaning no window (consistency!) Topic(src, list("command"="enable", "value"="[!enabled]"))
return 1 return 1
/atom/proc/AIAltClick(var/atom/A) /atom/proc/AIAltClick(var/atom/A)
@@ -150,14 +150,14 @@
/obj/machinery/door/airlock/AIAltClick() // Electrifies doors. /obj/machinery/door/airlock/AIAltClick() // Electrifies doors.
if(!electrified_until) if(!electrified_until)
// permanent shock // permanent shock
Topic(src, list("src"= "\ref[src]", "command"="electrify_permanently", "activate" = "1"), 1) // 1 meaning no window (consistency!) Topic(src, list("command"="electrify_permanently", "activate" = "1"))
else else
// disable/6 is not in Topic; disable/5 disables both temporary and permanent shock // disable/6 is not in Topic; disable/5 disables both temporary and permanent shock
Topic(src, list("src"= "\ref[src]", "command"="electrify_permanently", "activate" = "0"), 1) Topic(src, list("command"="electrify_permanently", "activate" = "0"))
return 1 return 1
/obj/machinery/turretid/AIAltClick() //toggles lethal on turrets /obj/machinery/turretid/AIAltClick() //toggles lethal on turrets
Topic(src, list("src"= "\ref[src]", "command"="lethal", "value"="[!lethal]"), 1) // 1 meaning no window (consistency!) Topic(src, list("command"="lethal", "value"="[!lethal]"))
return 1 return 1
/atom/proc/AIMiddleClick(var/mob/living/silicon/user) /atom/proc/AIMiddleClick(var/mob/living/silicon/user)
@@ -169,9 +169,9 @@
return return
if(!src.lights) if(!src.lights)
Topic(src, list("src"= "\ref[src]", "command"="lights", "activate" = "1"), 1) // 1 meaning no window (consistency!) Topic(src, list("command"="lights", "activate" = "1"))
else else
Topic(src, list("src"= "\ref[src]", "command"="lights", "activate" = "0"), 1) Topic(src, list("command"="lights", "activate" = "0"))
return 1 return 1
// //

View File

@@ -103,10 +103,6 @@
// A is your location but is not a turf; or is on you (backpack); or is on something on you (box in backpack); sdepth is needed here because contents depth does not equate inventory storage depth. // A is your location but is not a turf; or is on you (backpack); or is on something on you (box in backpack); sdepth is needed here because contents depth does not equate inventory storage depth.
var/sdepth = A.storage_depth(src) var/sdepth = A.storage_depth(src)
if((!isturf(A) && A == loc) || (sdepth != -1 && sdepth <= 1)) if((!isturf(A) && A == loc) || (sdepth != -1 && sdepth <= 1))
// faster access to objects already on you
if(A.loc != src)
setMoveCooldown(10) //getting something out of a backpack
if(W) if(W)
var/resolved = W.resolve_attackby(A, src) var/resolved = W.resolve_attackby(A, src)
if(!resolved && A && W) if(!resolved && A && W)
@@ -127,8 +123,6 @@
sdepth = A.storage_depth_turf() sdepth = A.storage_depth_turf()
if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1)) if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1))
if(A.Adjacent(src)) // see adjacent.dm if(A.Adjacent(src)) // see adjacent.dm
setMoveCooldown(5)
if(W) if(W)
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
var/resolved = W.resolve_attackby(A,src) var/resolved = W.resolve_attackby(A,src)
@@ -198,14 +192,7 @@
if((LASER in mutations) && a_intent == I_HURT) if((LASER in mutations) && a_intent == I_HURT)
LaserEyes(A) // moved into a proc below LaserEyes(A) // moved into a proc below
else if(TK in mutations) else if(TK in mutations)
switch(get_dist(src,A)) if(get_dist(src, A) > tk_maxrange)
if(1 to 5) // not adjacent may mean blocked by window
setMoveCooldown(2)
if(5 to 7)
setMoveCooldown(5)
if(8 to tk_maxrange)
setMoveCooldown(10)
else
return return
A.attack_tk(src) A.attack_tk(src)
/* /*

View File

@@ -256,7 +256,7 @@ datum/hud/New(mob/owner)
if(ishuman(mymob)) if(ishuman(mymob))
human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences
else if(isrobot(mymob)) else if(isrobot(mymob))
robot_hud() robot_hud(ui_style, ui_color, ui_alpha, mymob)
else if(isbrain(mymob)) else if(isbrain(mymob))
brain_hud(ui_style) brain_hud(ui_style)
else if(isalien(mymob)) else if(isalien(mymob))

View File

@@ -1,7 +1,20 @@
var/obj/screen/robot_inventory var/obj/screen/robot_inventory
/*
/mob/living/silicon/robot/instantiate_hud(var/datum/hud/HUD, var/ui_style, var/ui_color, var/ui_alpha)
HUD.robot_hud(ui_style, ui_color, ui_alpha, src)*/
/datum/hud/proc/robot_hud(ui_style='icons/mob/screen1_robot.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255, var/mob/living/silicon/robot/target)
/* var/datum/hud_data/hud_data
if(!istype(target))
hud_data = new()
/datum/hud/proc/robot_hud() if(hud_data.icon)
ui_style = hud_data.icon*/
if(ui_style == 'icons/mob/screen/minimalist.dmi')
ui_style = 'icons/mob/screen1_robot_minimalist.dmi'
else
ui_style = 'icons/mob/screen1_robot.dmi'
src.adding = list() src.adding = list()
src.other = list() src.other = list()
@@ -12,7 +25,9 @@ var/obj/screen/robot_inventory
using = new /obj/screen() using = new /obj/screen()
using.name = "radio" using.name = "radio"
using.set_dir(SOUTHWEST) using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.color = ui_color
using.alpha = ui_alpha
using.icon_state = "radio" using.icon_state = "radio"
using.screen_loc = ui_movi using.screen_loc = ui_movi
using.layer = 20 using.layer = 20
@@ -23,7 +38,9 @@ var/obj/screen/robot_inventory
using = new /obj/screen() using = new /obj/screen()
using.name = "module1" using.name = "module1"
using.set_dir(SOUTHWEST) using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.color = ui_color
using.alpha = ui_alpha
using.icon_state = "inv1" using.icon_state = "inv1"
using.screen_loc = ui_inv1 using.screen_loc = ui_inv1
using.layer = 20 using.layer = 20
@@ -33,7 +50,9 @@ var/obj/screen/robot_inventory
using = new /obj/screen() using = new /obj/screen()
using.name = "module2" using.name = "module2"
using.set_dir(SOUTHWEST) using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.color = ui_color
using.alpha = ui_alpha
using.icon_state = "inv2" using.icon_state = "inv2"
using.screen_loc = ui_inv2 using.screen_loc = ui_inv2
using.layer = 20 using.layer = 20
@@ -43,7 +62,9 @@ var/obj/screen/robot_inventory
using = new /obj/screen() using = new /obj/screen()
using.name = "module3" using.name = "module3"
using.set_dir(SOUTHWEST) using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.color = ui_color
using.alpha = ui_alpha
using.icon_state = "inv3" using.icon_state = "inv3"
using.screen_loc = ui_inv3 using.screen_loc = ui_inv3
using.layer = 20 using.layer = 20
@@ -56,7 +77,8 @@ var/obj/screen/robot_inventory
using = new /obj/screen() using = new /obj/screen()
using.name = "act_intent" using.name = "act_intent"
using.set_dir(SOUTHWEST) using.set_dir(SOUTHWEST)
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.alpha = ui_alpha
using.icon_state = mymob.a_intent using.icon_state = mymob.a_intent
using.screen_loc = ui_acti using.screen_loc = ui_acti
using.layer = 20 using.layer = 20
@@ -65,47 +87,60 @@ var/obj/screen/robot_inventory
//Cell //Cell
mymob:cells = new /obj/screen() mymob:cells = new /obj/screen()
mymob:cells.icon = 'icons/mob/screen1_robot.dmi' mymob:cells.icon = ui_style
mymob:cells.icon_state = "charge-empty" mymob:cells.icon_state = "charge-empty"
mymob:cells.alpha = ui_alpha
mymob:cells.name = "cell" mymob:cells.name = "cell"
mymob:cells.screen_loc = ui_toxin mymob:cells.screen_loc = ui_toxin
src.other += mymob:cells
//Health //Health
mymob.healths = new /obj/screen() mymob.healths = new /obj/screen()
mymob.healths.icon = 'icons/mob/screen1_robot.dmi' mymob.healths.icon = ui_style
mymob.healths.icon_state = "health0" mymob.healths.icon_state = "health0"
mymob.healths.alpha = ui_alpha
mymob.healths.name = "health" mymob.healths.name = "health"
mymob.healths.screen_loc = ui_borg_health mymob.healths.screen_loc = ui_borg_health
src.other += mymob.healths
//Installed Module //Installed Module
mymob.hands = new /obj/screen() mymob.hands = new /obj/screen()
mymob.hands.icon = 'icons/mob/screen1_robot.dmi' mymob.hands.icon = ui_style
mymob.hands.icon_state = "nomod" mymob.hands.icon_state = "nomod"
mymob.hands.alpha = ui_alpha
mymob.hands.name = "module" mymob.hands.name = "module"
mymob.hands.screen_loc = ui_borg_module mymob.hands.screen_loc = ui_borg_module
src.other += mymob.hands
//Module Panel //Module Panel
using = new /obj/screen() using = new /obj/screen()
using.name = "panel" using.name = "panel"
using.icon = 'icons/mob/screen1_robot.dmi' using.icon = ui_style
using.icon_state = "panel" using.icon_state = "panel"
using.alpha = ui_alpha
using.screen_loc = ui_borg_panel using.screen_loc = ui_borg_panel
using.layer = 19 using.layer = 19
src.adding += using src.adding += using
//Store //Store
mymob.throw_icon = new /obj/screen() mymob.throw_icon = new /obj/screen()
mymob.throw_icon.icon = 'icons/mob/screen1_robot.dmi' mymob.throw_icon.icon = ui_style
mymob.throw_icon.icon_state = "store" mymob.throw_icon.icon_state = "store"
mymob.throw_icon.alpha = ui_alpha
mymob.throw_icon.color = ui_color
mymob.throw_icon.name = "store" mymob.throw_icon.name = "store"
mymob.throw_icon.screen_loc = ui_borg_store mymob.throw_icon.screen_loc = ui_borg_store
src.other += mymob.throw_icon
//Inventory //Inventory
robot_inventory = new /obj/screen() robot_inventory = new /obj/screen()
robot_inventory.name = "inventory" robot_inventory.name = "inventory"
robot_inventory.icon = 'icons/mob/screen1_robot.dmi' robot_inventory.icon = ui_style
robot_inventory.icon_state = "inventory" robot_inventory.icon_state = "inventory"
robot_inventory.alpha = ui_alpha
robot_inventory.color = ui_color
robot_inventory.screen_loc = ui_borg_inventory robot_inventory.screen_loc = ui_borg_inventory
src.other += robot_inventory
//Temp //Temp
mymob.bodytemp = new /obj/screen() mymob.bodytemp = new /obj/screen()
@@ -113,24 +148,30 @@ var/obj/screen/robot_inventory
mymob.bodytemp.name = "body temperature" mymob.bodytemp.name = "body temperature"
mymob.bodytemp.screen_loc = ui_temp mymob.bodytemp.screen_loc = ui_temp
mymob.oxygen = new /obj/screen() mymob.oxygen = new /obj/screen()
mymob.oxygen.icon = 'icons/mob/screen1_robot.dmi' mymob.oxygen.icon = ui_style
mymob.oxygen.icon_state = "oxy0" mymob.oxygen.icon_state = "oxy0"
mymob.oxygen.alpha = ui_alpha
mymob.oxygen.name = "oxygen" mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen mymob.oxygen.screen_loc = ui_oxygen
src.other += mymob.oxygen
mymob.fire = new /obj/screen() mymob.fire = new /obj/screen()
mymob.fire.icon = 'icons/mob/screen1_robot.dmi' mymob.fire.icon = ui_style
mymob.fire.icon_state = "fire0" mymob.fire.icon_state = "fire0"
mymob.fire.alpha = ui_alpha
mymob.fire.name = "fire" mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire mymob.fire.screen_loc = ui_fire
src.other += mymob.fire
mymob.pullin = new /obj/screen() mymob.pullin = new /obj/screen()
mymob.pullin.icon = 'icons/mob/screen1_robot.dmi' mymob.pullin.icon = ui_style
mymob.pullin.icon_state = "pull0" mymob.pullin.icon_state = "pull0"
mymob.pullin.alpha = ui_alpha
mymob.pullin.color = ui_color
mymob.pullin.name = "pull" mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_borg_pull mymob.pullin.screen_loc = ui_borg_pull
src.other += mymob.pullin
mymob.blind = new /obj/screen() mymob.blind = new /obj/screen()
mymob.blind.icon = 'icons/mob/screen1_full.dmi' mymob.blind.icon = 'icons/mob/screen1_full.dmi'
@@ -140,22 +181,32 @@ var/obj/screen/robot_inventory
mymob.blind.layer = 0 mymob.blind.layer = 0
mymob.flash = new /obj/screen() mymob.flash = new /obj/screen()
mymob.flash.icon = 'icons/mob/screen1_robot.dmi' mymob.flash.icon = ui_style
mymob.flash.icon_state = "blank" mymob.flash.icon_state = "blank"
mymob.flash.name = "flash" mymob.flash.name = "flash"
mymob.flash.screen_loc = ui_entire_screen mymob.flash.screen_loc = ui_entire_screen
mymob.flash.layer = 17 mymob.flash.layer = 17
src.other += mymob.flash
mymob.zone_sel = new /obj/screen/zone_sel() mymob.zone_sel = new /obj/screen/zone_sel()
mymob.zone_sel.icon = 'icons/mob/screen1_robot.dmi' mymob.zone_sel.icon = ui_style
mymob.zone_sel.alpha = ui_alpha
mymob.zone_sel.overlays.Cut() mymob.zone_sel.overlays.Cut()
mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]") mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]")
//Handle the gun settings buttons //Handle the gun settings buttons
mymob.gun_setting_icon = new /obj/screen/gun/mode(null) mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
mymob.gun_setting_icon.icon = ui_style
mymob.gun_setting_icon.alpha = ui_alpha
mymob.item_use_icon = new /obj/screen/gun/item(null) mymob.item_use_icon = new /obj/screen/gun/item(null)
mymob.item_use_icon.icon = ui_style
mymob.item_use_icon.alpha = ui_alpha
mymob.gun_move_icon = new /obj/screen/gun/move(null) mymob.gun_move_icon = new /obj/screen/gun/move(null)
mymob.gun_move_icon.icon = ui_style
mymob.gun_move_icon.alpha = ui_alpha
mymob.radio_use_icon = new /obj/screen/gun/radio(null) mymob.radio_use_icon = new /obj/screen/gun/radio(null)
mymob.radio_use_icon.icon = ui_style
mymob.radio_use_icon.alpha = ui_alpha
mymob.client.screen = list() mymob.client.screen = list()

View File

@@ -92,7 +92,7 @@
if (powerlevel > 0 && !istype(A, /mob/living/carbon/slime)) if (powerlevel > 0 && !istype(A, /mob/living/carbon/slime))
if(ishuman(M)) if(ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
stunprob *= H.species.siemens_coefficient stunprob *= max(H.species.siemens_coefficient,0)
switch(power * 10) switch(power * 10)

View File

@@ -107,18 +107,9 @@ var/const/tk_maxrange = 15
return return
var/d = get_dist(user, target) var/d = get_dist(user, target)
if(focus) d = max(d,get_dist(user,focus)) // whichever is further if(focus)
switch(d) d = max(d, get_dist(user, focus)) // whichever is further
if(0) if(d > tk_maxrange)
;
if(1 to 5) // not adjacent may mean blocked by window
if(!proximity)
user.setMoveCooldown(2)
if(5 to 7)
user.setMoveCooldown(5)
if(8 to tk_maxrange)
user.setMoveCooldown(10)
else
user << "<span class='notice'>Your mind won't reach that far.</span>" user << "<span class='notice'>Your mind won't reach that far.</span>"
return return

View File

@@ -1,3 +1,4 @@
/hook/startup/proc/createDatacore() /hook/startup/proc/createDatacore()
data_core = new /datum/datacore() data_core = new /datum/datacore()
return 1 return 1
@@ -25,11 +26,11 @@
var/dat = {" var/dat = {"
<head><style> <head><style>
.manifest {border-collapse:collapse;} .manifest {border-collapse:collapse;}
.manifest td, th {border:1px solid [monochrome?"black":"#DEF; background-color:white; color:black"]; padding:.25em} .manifest td, th {border:1px solid [monochrome?"black":"[OOC?"black; background-color:#272727; color:white":"#DEF; background-color:white; color:black"]"]; padding:.25em}
.manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: #48C; color:white"]} .manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: [OOC?"#40628A":"#48C"]; color:white"]}
.manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: #488;"] } .manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: [OOC?"#013D3B;":"#488;"]"] }
.manifest td:first-child {text-align:right} .manifest td:first-child {text-align:right}
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]} .manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: [OOC?"#373737; color:white":"#DEF"]"]}
</style></head> </style></head>
<table class="manifest" width='350px'> <table class="manifest" width='350px'>
<tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr> <tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
@@ -186,7 +187,7 @@
G.fields["fingerprint"] = md5(H.dna.uni_identity) G.fields["fingerprint"] = md5(H.dna.uni_identity)
G.fields["p_stat"] = "Active" G.fields["p_stat"] = "Active"
G.fields["m_stat"] = "Stable" G.fields["m_stat"] = "Stable"
G.fields["sex"] = H.gender G.fields["sex"] = gender2text(H.gender)
G.fields["species"] = H.get_species() G.fields["species"] = H.get_species()
G.fields["home_system"] = H.home_system G.fields["home_system"] = H.home_system
G.fields["citizenship"] = H.citizenship G.fields["citizenship"] = H.citizenship
@@ -199,6 +200,7 @@
var/datum/data/record/M = CreateMedicalRecord(H.real_name, id) var/datum/data/record/M = CreateMedicalRecord(H.real_name, id)
M.fields["b_type"] = H.b_type M.fields["b_type"] = H.b_type
M.fields["b_dna"] = H.dna.unique_enzymes M.fields["b_dna"] = H.dna.unique_enzymes
M.fields["id_gender"] = gender2text(H.identifying_gender)
if(H.med_record && !jobban_isbanned(H, "Records")) if(H.med_record && !jobban_isbanned(H, "Records"))
M.fields["notes"] = H.med_record M.fields["notes"] = H.med_record
@@ -214,7 +216,8 @@
L.fields["rank"] = H.mind.assigned_role L.fields["rank"] = H.mind.assigned_role
L.fields["age"] = H.age L.fields["age"] = H.age
L.fields["fingerprint"] = md5(H.dna.uni_identity) L.fields["fingerprint"] = md5(H.dna.uni_identity)
L.fields["sex"] = H.gender L.fields["sex"] = gender2text(H.gender)
L.fields["id_gender"] = gender2text(H.identifying_gender)
L.fields["b_type"] = H.b_type L.fields["b_type"] = H.b_type
L.fields["b_dna"] = H.dna.unique_enzymes L.fields["b_dna"] = H.dna.unique_enzymes
L.fields["enzymes"] = H.dna.SE // Used in respawning L.fields["enzymes"] = H.dna.SE // Used in respawning
@@ -255,8 +258,9 @@
preview_icon.Blend(E.get_icon(), ICON_OVERLAY) preview_icon.Blend(E.get_icon(), ICON_OVERLAY)
//Tail //Tail
if(H.species.tail) var/use_species_tail = H.species.get_tail(H)
temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.species.tail]_s") if(use_species_tail)
temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[use_species_tail]_s")
preview_icon.Blend(temp, ICON_OVERLAY) preview_icon.Blend(temp, ICON_OVERLAY)
// Skin tone // Skin tone
@@ -418,7 +422,7 @@
G.fields["id"] = id G.fields["id"] = id
G.fields["rank"] = "Unassigned" G.fields["rank"] = "Unassigned"
G.fields["real_rank"] = "Unassigned" G.fields["real_rank"] = "Unassigned"
G.fields["sex"] = "Male" G.fields["sex"] = "Unknown"
G.fields["age"] = "Unknown" G.fields["age"] = "Unknown"
G.fields["fingerprint"] = "Unknown" G.fields["fingerprint"] = "Unknown"
G.fields["p_stat"] = "Active" G.fields["p_stat"] = "Active"
@@ -460,6 +464,7 @@
M.fields["name"] = name M.fields["name"] = name
M.fields["b_type"] = "AB+" M.fields["b_type"] = "AB+"
M.fields["b_dna"] = md5(name) M.fields["b_dna"] = md5(name)
M.fields["id_gender"] = "Unknown"
M.fields["mi_dis"] = "None" M.fields["mi_dis"] = "None"
M.fields["mi_dis_d"] = "No minor disabilities have been declared." M.fields["mi_dis_d"] = "No minor disabilities have been declared."
M.fields["ma_dis"] = "None" M.fields["ma_dis"] = "None"

View File

@@ -76,7 +76,7 @@
checklist = items.Copy() // You should really trust Copy checklist = items.Copy() // You should really trust Copy
if(istype(container, /obj/machinery)) if(istype(container, /obj/machinery))
var/obj/machinery/machine = container var/obj/machinery/machine = container
for(var/obj/O in (machine.contents - machine.component_parts)) for(var/obj/O in ((machine.contents - machine.component_parts) - machine.circuit))
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown))
continue // Fruit is handled in check_fruit(). continue // Fruit is handled in check_fruit().
var/found = 0 var/found = 0
@@ -110,7 +110,7 @@
var/obj/result_obj = new result(container) var/obj/result_obj = new result(container)
if(istype(container, /obj/machinery)) if(istype(container, /obj/machinery))
var/obj/machinery/machine = container var/obj/machinery/machine = container
for (var/obj/O in ((machine.contents-result_obj)-machine.component_parts)) for (var/obj/O in ((machine.contents-result_obj - machine.component_parts) - machine.circuit))
O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) O.reagents.trans_to_obj(result_obj, O.reagents.total_volume)
qdel(O) qdel(O)
else else
@@ -128,7 +128,7 @@
var/obj/result_obj = new result(container) var/obj/result_obj = new result(container)
if(istype(container, /obj/machinery)) if(istype(container, /obj/machinery))
var/obj/machinery/machine = container var/obj/machinery/machine = container
for (var/obj/O in ((machine.contents-result_obj)-machine.component_parts)) for (var/obj/O in ((machine.contents-result_obj - machine.component_parts) - machine.circuit))
if (O.reagents) if (O.reagents)
O.reagents.del_reagent("nutriment") O.reagents.del_reagent("nutriment")
O.reagents.update_total() O.reagents.update_total()

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,12 @@
var/default_access = list() var/default_access = list()
var/id_type = /obj/item/weapon/card/id var/id_type = /obj/item/weapon/card/id
var/antag_text = "You are an antagonist! Within the rules, \
try to act as an opposing force to the crew. Further RP and try to make sure \
other players have <i>fun</i>! If you are confused or at a loss, always adminhelp, \
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules aside from those without explicit exceptions apply to antagonists.</b>"
/datum/antagonist/New() /datum/antagonist/New()
..() ..()

View File

@@ -99,10 +99,13 @@
player.current << "<span class='notice'>[leader_welcome_text]</span>" player.current << "<span class='notice'>[leader_welcome_text]</span>"
else else
player.current << "<span class='notice'>[welcome_text]</span>" player.current << "<span class='notice'>[welcome_text]</span>"
if (config.objectives_disabled)
player.current << "<span class='notice'>[antag_text]</span>"
if((flags & ANTAG_HAS_NUKE) && !spawned_nuke) if((flags & ANTAG_HAS_NUKE) && !spawned_nuke)
create_nuke() create_nuke()
if (!config.objectives_disabled)
show_objectives(player) show_objectives(player)
return 1 return 1

View File

@@ -46,8 +46,8 @@
round for everybody else.", "Ambitions", mind.ambitions) as null|message round for everybody else.", "Ambitions", mind.ambitions) as null|message
if(isnull(new_ambitions)) if(isnull(new_ambitions))
return return
mind.ambitions = new_ambitions
new_ambitions = sanitize(new_ambitions) new_ambitions = sanitize(new_ambitions)
mind.ambitions = new_ambitions
if(new_ambitions) if(new_ambitions)
src << "<span class='notice'>You've set your goal to be '[new_ambitions]'.</span>" src << "<span class='notice'>You've set your goal to be '[new_ambitions]'.</span>"
else else

View File

@@ -7,6 +7,12 @@ var/datum/antagonist/ert/ert
role_text = "Emergency Responder" role_text = "Emergency Responder"
role_text_plural = "Emergency Responders" role_text_plural = "Emergency Responders"
welcome_text = "As member of the Emergency Response Team, you answer only to your leader and company officials." welcome_text = "As member of the Emergency Response Team, you answer only to your leader and company officials."
antag_text = "You are an <b>anti</b> antagonist! Within the rules, \
try to save the station and its inhabitants from the ongoing crisis. \
Try to make sure other players have <i>fun</i>! If you are confused or at a loss, always adminhelp, \
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules aside from those without explicit exceptions apply to the ERT.</b>"
leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however."
landmark_id = "Response Team" landmark_id = "Response Team"
id_type = /obj/item/weapon/card/id/centcom/ERT id_type = /obj/item/weapon/card/id/centcom/ERT

View File

@@ -39,7 +39,7 @@ var/datum/antagonist/mercenary/mercs
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(player), slot_shoes) player.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(player), slot_gloves) player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(player), slot_gloves)
if(player.backbag == 2) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(player), slot_back) if(player.backbag == 2) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(player), slot_back)
if(player.backbag == 3) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(player), slot_back) if(player.backbag == 3) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(player), slot_back)
if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back) if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack) player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack) player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack)

View File

@@ -81,7 +81,7 @@ var/datum/antagonist/wizard/wizards
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back) if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(wizard_mob), slot_back) if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(wizard_mob), slot_back)
if(wizard_mob.backbag == 4) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(wizard_mob), slot_back) if(wizard_mob.backbag == 4) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(wizard_mob), slot_back)
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack)
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
@@ -98,7 +98,7 @@ var/datum/antagonist/wizard/wizards
break break
if(!survivor) if(!survivor)
feedback_set_details("round_end_result","loss - wizard killed") feedback_set_details("round_end_result","loss - wizard killed")
world << "<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</font></span>" world << "<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew!</font></span>"
//To batch-remove wizard spells. Linked to mind.dm. //To batch-remove wizard spells. Linked to mind.dm.
/mob/proc/spellremove() /mob/proc/spellremove()

View File

@@ -3,31 +3,51 @@ var/datum/antagonist/renegade/renegades
/datum/antagonist/renegade /datum/antagonist/renegade
role_text = "Renegade" role_text = "Renegade"
role_text_plural = "Renegades" role_text_plural = "Renegades"
welcome_text = "Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing..." welcome_text = "Something's going to go wrong today, you can just feel it. You're paranoid, you've got a gun, and you're going to survive."
antag_text = "You are a <b>minor</b> antagonist! Within the rules, \
try to protect yourself and what's important to you. You aren't here to cause trouble, \
you're just more willing (and equipped) to go to extremes to stop it than others are. \
Your job is to somewhat oppose the other antagonists, should they threaten you, in ways that aren't quite legal themselves. \
Try to make sure other players have <i>fun</i>! If you are confused or at a loss, always adminhelp, \
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules aside from those without explicit exceptions apply to antagonists.</b>"
id = MODE_RENEGADE id = MODE_RENEGADE
flags = ANTAG_SUSPICIOUS | ANTAG_IMPLANT_IMMUNE | ANTAG_RANDSPAWN | ANTAG_VOTABLE flags = ANTAG_SUSPICIOUS | ANTAG_IMPLANT_IMMUNE | ANTAG_RANDSPAWN | ANTAG_VOTABLE
hard_cap = 5
hard_cap_round = 7
hard_cap = 8 hard_cap = 8
hard_cap_round = 12 hard_cap_round = 12
initial_spawn_req = 3 initial_spawn_req = 2
initial_spawn_target = 6 initial_spawn_target = 4
var/list/spawn_guns = list( var/list/spawn_guns = list(
/obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/projectile, /obj/item/weapon/gun/energy/captain,
/obj/item/weapon/gun/projectile/revolver/detective, /obj/item/weapon/gun/energy/lasercannon,
/obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/gun/energy/xray,
/obj/item/weapon/gun/projectile/deagle/camo, /obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/projectile/pistol, /obj/item/weapon/gun/energy/gun/burst,
/obj/item/weapon/silencer, /obj/item/weapon/gun/energy/gun/nuclear,
/obj/item/weapon/gun/projectile/shotgun/pump, /obj/item/weapon/gun/energy/crossbow,
/obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/energy/crossbow/largecrossbow,
/obj/item/weapon/gun/projectile/automatic, /obj/item/weapon/gun/projectile/automatic,
/obj/item/weapon/gun/projectile/automatic/mini_uzi, /obj/item/weapon/gun/projectile/automatic/mini_uzi,
/obj/item/weapon/gun/energy/crossbow /obj/item/weapon/gun/projectile/automatic/c20r,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/z8,
/obj/item/weapon/gun/projectile/colt/detective,
/obj/item/weapon/gun/projectile/sec/wood,
/obj/item/weapon/gun/projectile/silenced,
/obj/item/weapon/gun/projectile/pistol,
/obj/item/weapon/gun/projectile/revolver,
/obj/item/weapon/gun/projectile/shotgun/pump,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
list(/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet, /obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn),
list(/obj/item/weapon/gun/projectile/deagle, /obj/item/weapon/gun/projectile/deagle/gold, /obj/item/weapon/gun/projectile/deagle/camo),
list(/obj/item/weapon/gun/projectile/revolver/detective, /obj/item/weapon/gun/projectile/revolver/deckard)
) )
/datum/antagonist/renegade/New() /datum/antagonist/renegade/New()
@@ -49,7 +69,19 @@ var/datum/antagonist/renegade/renegades
return return
var/gun_type = pick(spawn_guns) var/gun_type = pick(spawn_guns)
if(islist(gun_type))
gun_type = pick(gun_type)
var/obj/item/gun = new gun_type(get_turf(player)) var/obj/item/gun = new gun_type(get_turf(player))
// Attempt to put into a container.
if(player.equip_to_storage(gun))
return
// If that failed, attempt to put into any valid non-handslot
if(player.equip_to_appropriate_slot(gun))
return
// If that failed, then finally attempt to at least let the player carry the weapon
player.put_in_hands(gun) player.put_in_hands(gun)

View File

@@ -3,10 +3,12 @@
var/datum/dna/dna var/datum/dna/dna
var/speciesName var/speciesName
var/list/languages var/list/languages
var/identifying_gender
/datum/absorbed_dna/New(var/newName, var/newDNA, var/newSpecies, var/newLanguages) /datum/absorbed_dna/New(var/newName, var/newDNA, var/newSpecies, var/newLanguages, var/newIdentifying_Gender)
..() ..()
name = newName name = newName
dna = newDNA dna = newDNA
speciesName = newSpecies speciesName = newSpecies
languages = newLanguages languages = newLanguages
identifying_gender = newIdentifying_Gender

View File

@@ -85,7 +85,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
var/mob/living/carbon/human/H = src var/mob/living/carbon/human/H = src
if(istype(H)) if(istype(H))
var/datum/absorbed_dna/newDNA = new(H.real_name, H.dna, H.species.name, H.languages) var/datum/absorbed_dna/newDNA = new(H.real_name, H.dna, H.species.name, H.languages, H.identifying_gender)
absorbDNA(newDNA) absorbDNA(newDNA)
return 1 return 1

View File

@@ -39,6 +39,7 @@
H.b_type = "AB+" //For some reason we have two blood types on the mob. H.b_type = "AB+" //For some reason we have two blood types on the mob.
for(var/flavor in H.flavor_texts) //Nulls out flavor text, so we don't keep our previous mob's flavor. for(var/flavor in H.flavor_texts) //Nulls out flavor text, so we don't keep our previous mob's flavor.
flavor = null flavor = null
H.identifying_gender = chosen_dna.identifying_gender
src.real_name = chosen_dna.name src.real_name = chosen_dna.name
src.flavor_text = "" src.flavor_text = ""
src.UpdateAppearance() src.UpdateAppearance()

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/melee/cultblade /obj/item/weapon/melee/cultblade
name = "cult blade" name = "cult blade"
desc = "An arcane weapon wielded by the followers of Nar-Sie" desc = "An arcane weapon wielded by the followers of Nar-Sie."
icon_state = "cultblade" icon_state = "cultblade"
item_state = "cultblade" item_state = "cultblade"
w_class = 4 w_class = 4
@@ -56,7 +56,7 @@
/obj/item/clothing/suit/cultrobes /obj/item/clothing/suit/cultrobes
name = "cult robes" name = "cult robes"
desc = "A set of armored robes worn by the followers of Nar-Sie" desc = "A set of armored robes worn by the followers of Nar-Sie."
icon_state = "cultrobes" icon_state = "cultrobes"
item_state = "cultrobes" item_state = "cultrobes"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
@@ -74,7 +74,7 @@
/obj/item/clothing/suit/cultrobes/magusred /obj/item/clothing/suit/cultrobes/magusred
name = "magus robes" name = "magus robes"
desc = "A set of armored robes worn by the followers of Nar-Sie" desc = "A set of armored robes worn by the followers of Nar-Sie."
icon_state = "magusred" icon_state = "magusred"
item_state = "magusred" item_state = "magusred"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -82,7 +82,7 @@
/obj/item/clothing/head/helmet/space/cult /obj/item/clothing/head/helmet/space/cult
name = "cult helmet" name = "cult helmet"
desc = "A space worthy helmet used by the followers of Nar-Sie" desc = "A space worthy helmet used by the followers of Nar-Sie."
icon_state = "cult_helmet" icon_state = "cult_helmet"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0 siemens_coefficient = 0
@@ -94,7 +94,7 @@
name = "cult armour" name = "cult armour"
icon_state = "cult_armour" icon_state = "cult_armour"
item_state = "cult_armour" item_state = "cult_armour"
desc = "A bulky suit of armour, bristling with spikes. It looks space proof." desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy."
w_class = 3 w_class = 3
allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit) allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit)
slowdown = 1 slowdown = 1

View File

@@ -8,18 +8,18 @@
/obj/structure/cult/talisman /obj/structure/cult/talisman
name = "Altar" name = "Altar"
desc = "A bloodstained altar dedicated to Nar-Sie" desc = "A bloodstained altar dedicated to Nar-Sie."
icon_state = "talismanaltar" icon_state = "talismanaltar"
/obj/structure/cult/forge /obj/structure/cult/forge
name = "Daemon forge" name = "Daemon forge"
desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie" desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie."
icon_state = "forge" icon_state = "forge"
/obj/structure/cult/pylon /obj/structure/cult/pylon
name = "Pylon" name = "Pylon"
desc = "A floating crystal that hums with an unearthly energy" desc = "A floating crystal that hums with an unearthly energy."
icon_state = "pylon" icon_state = "pylon"
var/isbroken = 0 var/isbroken = 0
light_range = 5 light_range = 5
@@ -71,7 +71,7 @@
/obj/structure/cult/tome /obj/structure/cult/tome
name = "Desk" name = "Desk"
desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl" desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl."
icon_state = "tomealtar" icon_state = "tomealtar"
//sprites for this no longer exist -Pete //sprites for this no longer exist -Pete
@@ -86,7 +86,7 @@
/obj/effect/gateway /obj/effect/gateway
name = "gateway" name = "gateway"
desc = "You're pretty sure that abyss is staring back" desc = "You're pretty sure that abyss is staring back."
icon = 'icons/obj/cult.dmi' icon = 'icons/obj/cult.dmi'
icon_state = "hole" icon_state = "hole"
density = 1 density = 1

View File

@@ -143,7 +143,7 @@ var/global/list/narsie_list = list()
/obj/singularity/narsie/proc/narsiefloor(var/turf/T)//leaving "footprints" /obj/singularity/narsie/proc/narsiefloor(var/turf/T)//leaving "footprints"
if(!(istype(T, /turf/simulated/wall/cult)||istype(T, /turf/space))) if(!(istype(T, /turf/simulated/wall/cult)||istype(T, /turf/space)))
if(T.icon_state != "cult-narsie") if(T.icon_state != "cult-narsie")
T.desc = "something that goes beyond your understanding went this way" T.desc = "something that goes beyond your understanding went this way."
T.icon = 'icons/turf/flooring/cult.dmi' T.icon = 'icons/turf/flooring/cult.dmi'
T.icon_state = "cult-narsie" T.icon_state = "cult-narsie"
T.set_light(1) T.set_light(1)

View File

@@ -346,6 +346,7 @@ var/list/sacrificed = list()
for(var/mob/observer/dead/O in loc) for(var/mob/observer/dead/O in loc)
if(!O.client) continue if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!(O.client.prefs.be_special & BE_CULTIST)) continue
ghost = O ghost = O
break break
@@ -442,6 +443,7 @@ var/list/sacrificed = list()
if(!O.client) continue if(!O.client) continue
if(!O.MayRespawn()) continue if(!O.MayRespawn()) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!(O.client.prefs.be_special & BE_CULTIST)) continue
ghost = O ghost = O
break break
if(!ghost) if(!ghost)

View File

@@ -201,7 +201,6 @@ var/global/list/additional_antag_types = list()
display_roundstart_logout_report() display_roundstart_logout_report()
spawn (rand(waittime_l, waittime_h)) spawn (rand(waittime_l, waittime_h))
send_intercept()
spawn(rand(100,150)) spawn(rand(100,150))
announce_ert_disabled() announce_ert_disabled()
@@ -373,56 +372,6 @@ var/global/list/additional_antag_types = list()
/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. /datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere.
return 0 return 0
/datum/game_mode/proc/send_intercept()
var/intercepttext = "<FONT size = 3><B>Cent. Com. Update</B> Requested status information:</FONT><HR>"
intercepttext += "<B> In case you have misplaced your copy, attached is a list of personnel whom reliable sources&trade; suspect may be affiliated with subversive elements:</B><br>"
var/list/disregard_roles = list()
for(var/antag_type in all_antag_types)
var/datum/antagonist/antag = all_antag_types[antag_type]
if(antag.flags & ANTAG_SUSPICIOUS)
disregard_roles |= antag.role_text
var/list/suspects = list()
for(var/mob/living/carbon/human/man in player_list) if(man.client && man.mind)
// NT relation option
var/special_role = man.mind.special_role
var/datum/antagonist/special_role_data = get_antag_data(special_role)
if (special_role in disregard_roles)
continue
else if(man.client.prefs.nanotrasen_relation == COMPANY_OPPOSED && prob(50) || \
man.client.prefs.nanotrasen_relation == COMPANY_SKEPTICAL && prob(20))
suspects += man
// Antags
else if(special_role_data && prob(special_role_data.suspicion_chance))
suspects += man
// Some poor people who were just in the wrong place at the wrong time..
else if(prob(10))
suspects += man
for(var/mob/M in suspects)
if(player_is_antag(M.mind, only_offstation_roles = 1))
continue
switch(rand(1, 100))
if(1 to 50)
intercepttext += "Someone with the job of <b>[M.mind.assigned_role]</b> <br>"
else
intercepttext += "<b>[M.name]</b>, the <b>[M.mind.assigned_role]</b> <br>"
for (var/obj/machinery/computer/communications/comm in machines)
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
intercept.name = "Cent. Com. Status Summary"
intercept.info = intercepttext
comm.messagetitle.Add("Cent. Com. Status Summary")
comm.messagetext.Add(intercepttext)
world << sound('sound/AI/commandreport.ogg')
/datum/game_mode/proc/get_players_for_role(var/role, var/antag_id) /datum/game_mode/proc/get_players_for_role(var/role, var/antag_id)
var/list/players = list() var/list/players = list()
var/list/candidates = list() var/list/candidates = list()
@@ -567,25 +516,10 @@ proc/get_nt_opposed()
if(dudes.len == 0) return null if(dudes.len == 0) return null
return pick(dudes) return pick(dudes)
//Announces objectives/generic antag text.
/proc/show_generic_antag_text(var/datum/mind/player)
if(player.current)
player.current << \
"You are an antagonist! <font color=blue>Within the rules,</font> \
try to act as an opposing force to the crew. Further RP and try to make sure \
other players have <i>fun</i>! If you are confused or at a loss, always adminhelp, \
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules aside from those without explicit exceptions apply to antagonists.</b>"
/proc/show_objectives(var/datum/mind/player) /proc/show_objectives(var/datum/mind/player)
if(!player || !player.current) return if(!player || !player.current) return
if(config.objectives_disabled)
show_generic_antag_text(player)
return
var/obj_count = 1 var/obj_count = 1
player.current << "<span class='notice'>Your current objectives:</span>" player.current << "<span class='notice'>Your current objectives:</span>"
for(var/datum/objective/objective in player.objectives) for(var/datum/objective/objective in player.objectives)

View File

@@ -3,9 +3,9 @@
round_description = "Subversive elements have invaded the station, and certain individuals are feeling uncertain about their safety." round_description = "Subversive elements have invaded the station, and certain individuals are feeling uncertain about their safety."
extended_round_description = "Traitors and renegades spawn during this round." extended_round_description = "Traitors and renegades spawn during this round."
config_tag = "traitorren" config_tag = "traitorren"
required_players = 10 //I don't think we can have it lower and not need an ERT every round. required_players = 11 //I don't think we can have it lower and not need an ERT every round.
required_players_secret = 11 //I don't think we can have it lower and not need an ERT every round. required_players_secret = 11 //I don't think we can have it lower and not need an ERT every round.
required_enemies = 4 required_enemies = 4
end_on_antag_death = 0 end_on_antag_death = 0
antag_tags = list(MODE_TRAITOR, MODE_RENEGADE) antag_tags = list(MODE_AUTOTRAITOR, MODE_RENEGADE)
require_all_templates = 1 require_all_templates = 1

View File

@@ -3,8 +3,8 @@
round_description = "A space wizard and a ninja have invaded the station!" round_description = "A space wizard and a ninja have invaded the station!"
extended_round_description = "A ninja and wizard spawn during this round." extended_round_description = "A ninja and wizard spawn during this round."
config_tag = "visitors" config_tag = "visitors"
required_players = 6 required_players = 8
required_players_secret = 6 required_players_secret = 8
required_enemies = 2 required_enemies = 2
end_on_antag_death = 0 end_on_antag_death = 0
antag_tags = list(MODE_WIZARD, MODE_NINJA) antag_tags = list(MODE_WIZARD, MODE_NINJA)

View File

@@ -10,7 +10,7 @@
only hope this unknown assassin isn't here for you." only hope this unknown assassin isn't here for you."
config_tag = "ninja" config_tag = "ninja"
required_players = 1 required_players = 1
required_players_secret = 8 required_players_secret = 6
required_enemies = 1 required_enemies = 1
end_on_antag_death = 0 end_on_antag_death = 0
antag_tags = list(MODE_NINJA) antag_tags = list(MODE_NINJA)

View File

@@ -4,7 +4,7 @@
extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station." extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station."
config_tag = "wizard" config_tag = "wizard"
required_players = 1 required_players = 1
required_players_secret = 8 required_players_secret = 6
required_enemies = 1 required_enemies = 1
end_on_antag_death = 0 end_on_antag_death = 0
antag_tags = list(MODE_WIZARD) antag_tags = list(MODE_WIZARD)

View File

@@ -7,7 +7,7 @@
total_positions = -1 total_positions = -1
spawn_positions = -1 spawn_positions = -1
supervisors = "absolutely everyone" supervisors = "absolutely everyone"
selection_color = "#dddddd" selection_color = "#515151"
economic_modifier = 1 economic_modifier = 1
access = list() //See /datum/job/assistant/get_access() access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access()
@@ -17,7 +17,7 @@
if(!H) return 0 if(!H) return 0
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if (H.mind.role_alt_title) if (H.mind.role_alt_title)
switch(H.mind.role_alt_title) switch(H.mind.role_alt_title)

View File

@@ -10,7 +10,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "company officials and Corporate Regulations" supervisors = "company officials and Corporate Regulations"
selection_color = "#ccccff" selection_color = "#1D1D4F"
alt_titles = list("Station Administrator") alt_titles = list("Station Administrator")
idtype = /obj/item/weapon/card/id/gold idtype = /obj/item/weapon/card/id/gold
req_admin_notify = 1 req_admin_notify = 1
@@ -28,7 +28,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/cap(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H) var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H)
if(H.age>49) if(H.age>49)
@@ -63,7 +63,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the captain" supervisors = "the captain"
selection_color = "#ddddff" selection_color = "#2F2F7F"
idtype = /obj/item/weapon/card/id/silver idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1 req_admin_notify = 1
minimal_player_age = 10 minimal_player_age = 10
@@ -91,7 +91,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform)
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/shoes/brown(H), slot_shoes)

View File

@@ -8,7 +8,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_hydroponics, access_bar, access_kitchen) access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_bar) minimal_access = list(access_bar)
alt_titles = list("Barista") alt_titles = list("Barista")
@@ -18,7 +18,7 @@
if(!H) return 0 if(!H) return 0
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
@@ -37,7 +37,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_hydroponics, access_bar, access_kitchen) access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_kitchen) minimal_access = list(access_kitchen)
alt_titles = list("Cook") alt_titles = list("Cook")
@@ -64,7 +64,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 1 spawn_positions = 1
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_hydroponics, access_bar, access_kitchen) access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_hydroponics) minimal_access = list(access_hydroponics)
alt_titles = list("Hydroponicist") alt_titles = list("Hydroponicist")
@@ -81,7 +81,7 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/hydroponics(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/hydroponics(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_hyd(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/hyd(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
return 1 return 1
@@ -97,7 +97,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
economic_modifier = 5 economic_modifier = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
@@ -127,7 +127,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the quartermaster and the head of personnel" supervisors = "the quartermaster and the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting)
@@ -152,7 +152,7 @@
total_positions = 3 total_positions = 3
spawn_positions = 3 spawn_positions = 3
supervisors = "the quartermaster and the head of personnel" supervisors = "the quartermaster and the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
economic_modifier = 5 economic_modifier = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_mining, access_mining_station, access_mailsorting) minimal_access = list(access_mining, access_mining_station, access_mailsorting)
@@ -163,7 +163,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt)
@@ -191,7 +191,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_janitor, access_maint_tunnels) access = list(access_janitor, access_maint_tunnels)
minimal_access = list(access_janitor, access_maint_tunnels) minimal_access = list(access_janitor, access_maint_tunnels)
alt_titles = list("Custodian") alt_titles = list("Custodian")
@@ -217,7 +217,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_library, access_maint_tunnels) access = list(access_library, access_maint_tunnels)
minimal_access = list(access_library) minimal_access = list(access_library)
alt_titles = list("Journalist") alt_titles = list("Journalist")
@@ -243,7 +243,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "company officials and Corporate Regulations" supervisors = "company officials and Corporate Regulations"
selection_color = "#dddddd" selection_color = "#515151"
economic_modifier = 7 economic_modifier = 7
access = list(access_lawyer, access_sec_doors, access_maint_tunnels, access_heads) access = list(access_lawyer, access_sec_doors, access_maint_tunnels, access_heads)
minimal_access = list(access_lawyer, access_sec_doors, access_heads) minimal_access = list(access_lawyer, access_sec_doors, access_heads)
@@ -254,7 +254,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/ia(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/ia(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit)

View File

@@ -8,7 +8,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the head of personnel" supervisors = "the head of personnel"
selection_color = "#dddddd" selection_color = "#515151"
access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels) access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels)
minimal_access = list(access_morgue, access_chapel_office, access_crematorium) minimal_access = list(access_morgue, access_chapel_office, access_crematorium)
alt_titles = list("Counselor") alt_titles = list("Counselor")

View File

@@ -8,7 +8,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the captain" supervisors = "the captain"
selection_color = "#ffeeaa" selection_color = "#7F6E2C"
idtype = /obj/item/weapon/card/id/silver idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1 req_admin_notify = 1
economic_modifier = 10 economic_modifier = 10
@@ -33,7 +33,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store) H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store)
@@ -58,7 +58,7 @@
total_positions = 5 total_positions = 5
spawn_positions = 5 spawn_positions = 5
supervisors = "the chief engineer" supervisors = "the chief engineer"
selection_color = "#fff5cc" selection_color = "#5B4D20"
economic_modifier = 5 economic_modifier = 5
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics) access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction) minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction)
@@ -70,7 +70,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
@@ -95,7 +95,7 @@
total_positions = 3 total_positions = 3
spawn_positions = 2 spawn_positions = 2
supervisors = "the chief engineer" supervisors = "the chief engineer"
selection_color = "#fff5cc" selection_color = "#5B4D20"
economic_modifier = 5 economic_modifier = 5
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks) access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks)
minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks) minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks)
@@ -106,7 +106,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)

View File

@@ -31,7 +31,7 @@
/datum/job/proc/equip_backpack(var/mob/living/carbon/human/H) /datum/job/proc/equip_backpack(var/mob/living/carbon/human/H)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
/datum/job/proc/equip_survival(var/mob/living/carbon/human/H) /datum/job/proc/equip_survival(var/mob/living/carbon/human/H)

View File

@@ -8,7 +8,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the captain" supervisors = "the captain"
selection_color = "#ffddf0" selection_color = "#026865"
idtype = /obj/item/weapon/card/id/silver idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1 req_admin_notify = 1
economic_modifier = 10 economic_modifier = 10
@@ -28,7 +28,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
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/shoes/brown(H), slot_shoes)
@@ -47,7 +47,7 @@
total_positions = 5 total_positions = 5
spawn_positions = 3 spawn_positions = 3
supervisors = "the chief medical officer" supervisors = "the chief medical officer"
selection_color = "#ffeef0" selection_color = "#013D3B"
economic_modifier = 7 economic_modifier = 7
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva)
@@ -60,7 +60,7 @@
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if (H.mind.role_alt_title) if (H.mind.role_alt_title)
switch(H.mind.role_alt_title) switch(H.mind.role_alt_title)
@@ -77,7 +77,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/virology(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/virology(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_vir(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/vir(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if("Medical Doctor") if("Medical Doctor")
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/under/rank/medical(H), slot_w_uniform)
@@ -110,7 +110,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the chief medical officer" supervisors = "the chief medical officer"
selection_color = "#ffeef0" selection_color = "#013D3B"
economic_modifier = 5 economic_modifier = 5
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_medical_equip, access_chemistry) minimal_access = list(access_medical, access_medical_equip, access_chemistry)
@@ -125,7 +125,7 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_chem(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/chem(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit)
return 1 return 1
@@ -141,7 +141,7 @@
total_positions = 0 total_positions = 0
spawn_positions = 0 spawn_positions = 0
supervisors = "the chief medical officer and research director" supervisors = "the chief medical officer and research director"
selection_color = "#ffeef0" selection_color = "#013D3B"
economic_modifier = 7 economic_modifier = 7
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research) access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research)
minimal_access = list(access_medical, access_morgue, access_genetics, access_research) minimal_access = list(access_medical, access_morgue, access_genetics, access_research)
@@ -154,7 +154,7 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/genetics(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/genetics(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_gen(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/gen(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/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/device/flashlight/pen(H), slot_s_store)
@@ -171,7 +171,7 @@
spawn_positions = 1 spawn_positions = 1
economic_modifier = 5 economic_modifier = 5
supervisors = "the chief medical officer" supervisors = "the chief medical officer"
selection_color = "#ffeef0" selection_color = "#013D3B"
access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist) access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist)
minimal_access = list(access_medical, access_medical_equip, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_psychiatrist)
alt_titles = list("Psychologist") alt_titles = list("Psychologist")
@@ -181,7 +181,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if (H.mind.role_alt_title) if (H.mind.role_alt_title)
switch(H.mind.role_alt_title) switch(H.mind.role_alt_title)
@@ -205,7 +205,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the chief medical officer" supervisors = "the chief medical officer"
selection_color = "#ffeef0" selection_color = "#013D3B"
economic_modifier = 4 economic_modifier = 4
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks)
@@ -218,7 +218,7 @@
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if (H.mind.role_alt_title) if (H.mind.role_alt_title)
switch(H.mind.role_alt_title) switch(H.mind.role_alt_title)

View File

@@ -8,7 +8,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the captain" supervisors = "the captain"
selection_color = "#ffddff" selection_color = "#AD6BAD"
idtype = /obj/item/weapon/card/id/silver idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1 req_admin_notify = 1
economic_modifier = 15 economic_modifier = 15
@@ -34,7 +34,7 @@
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/clipboard(H), slot_l_hand)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_tox(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
return 1 return 1
@@ -50,7 +50,7 @@
total_positions = 5 total_positions = 5
spawn_positions = 3 spawn_positions = 3
supervisors = "the research director" supervisors = "the research director"
selection_color = "#ffeeff" selection_color = "#633D63"
economic_modifier = 7 economic_modifier = 7
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch)
@@ -66,7 +66,7 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_tox(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
return 1 return 1
@@ -80,7 +80,7 @@
total_positions = 3 total_positions = 3
spawn_positions = 2 spawn_positions = 2
supervisors = "the research director" supervisors = "the research director"
selection_color = "#ffeeff" selection_color = "#633D63"
economic_modifier = 7 economic_modifier = 7
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics) access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics)
minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage) minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage)
@@ -96,7 +96,7 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_tox(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
return 1 return 1
@@ -110,7 +110,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "research director" supervisors = "research director"
selection_color = "#ffeeff" selection_color = "#633D63"
economic_modifier = 5 economic_modifier = 5
access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access. access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access. minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
@@ -122,7 +122,7 @@
if(!H) return 0 if(!H) return 0
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/device/radio/headset/headset_sci(H), slot_l_ear)
if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_r_store) H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_r_store)

View File

@@ -8,7 +8,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the captain" supervisors = "the captain"
selection_color = "#ffdddd" selection_color = "#8E2929"
idtype = /obj/item/weapon/card/id/silver idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1 req_admin_notify = 1
economic_modifier = 10 economic_modifier = 10
@@ -27,7 +27,7 @@
if(!H) return 0 if(!H) return 0
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
@@ -55,7 +55,7 @@
total_positions = 1 total_positions = 1
spawn_positions = 1 spawn_positions = 1
supervisors = "the head of security" supervisors = "the head of security"
selection_color = "#ffeeee" selection_color = "#601C1C"
economic_modifier = 5 economic_modifier = 5
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks) access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks)
@@ -66,7 +66,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
@@ -92,7 +92,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "the head of security" supervisors = "the head of security"
selection_color = "#ffeeee" selection_color = "#601C1C"
alt_titles = list("Forensic Technician","Investigator") alt_titles = list("Forensic Technician","Investigator")
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks)
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks)
@@ -103,7 +103,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
@@ -134,7 +134,7 @@
total_positions = 4 total_positions = 4
spawn_positions = 4 spawn_positions = 4
supervisors = "the head of security" supervisors = "the head of security"
selection_color = "#ffeeee" selection_color = "#601C1C"
alt_titles = list("Junior Officer") alt_titles = list("Junior Officer")
economic_modifier = 4 economic_modifier = 4
access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks) access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks)
@@ -145,7 +145,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag) switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)

View File

@@ -5,7 +5,7 @@
faction = "Station" faction = "Station"
total_positions = 0 // Not used for AI, see is_position_available below and modules/mob/living/silicon/ai/latejoin.dm total_positions = 0 // Not used for AI, see is_position_available below and modules/mob/living/silicon/ai/latejoin.dm
spawn_positions = 1 spawn_positions = 1
selection_color = "#ccffcc" selection_color = "#3F823F"
supervisors = "your laws" supervisors = "your laws"
req_admin_notify = 1 req_admin_notify = 1
minimal_player_age = 7 minimal_player_age = 7
@@ -38,7 +38,7 @@
total_positions = 2 total_positions = 2
spawn_positions = 2 spawn_positions = 2
supervisors = "your laws and the AI" //Nodrak supervisors = "your laws and the AI" //Nodrak
selection_color = "#ddffdd" selection_color = "#254C25"
minimal_player_age = 1 minimal_player_age = 1
alt_titles = list("Robot", "Drone") alt_titles = list("Robot", "Drone")
account_allowed = 0 account_allowed = 0

View File

@@ -9,6 +9,7 @@
use_power = 1 use_power = 1
idle_power_usage = 40 idle_power_usage = 40
interact_offline = 1 interact_offline = 1
circuit = /obj/item/weapon/circuitboard/sleeper_console
//obj/machinery/sleep_console/New() //obj/machinery/sleep_console/New()
//..() //..()
@@ -32,9 +33,40 @@
/obj/machinery/sleep_console/attack_hand(var/mob/user) /obj/machinery/sleep_console/attack_hand(var/mob/user)
if(..()) if(..())
return 1 return 1
if(connected)
connected.ui_interact(user) connected.ui_interact(user)
/obj/machinery/sleep_console/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A )
A.circuit = M
A.anchored = 1
A.density = 1
A.frame_type = M.board_type
for (var/obj/C in src)
C.forceMove(loc)
if (src.stat & BROKEN)
user << "<span class='notice'>The broken glass falls out.</span>"
new /obj/item/weapon/material/shard( src.loc )
A.state = 3
A.icon_state = "[A.frame_type]_3"
else
user << "<span class='notice'>You disconnect the monitor.</span>"
A.state = 4
A.icon_state = "[A.frame_type]_4"
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.dir = dir
M.deconstruct(src)
qdel(src)
else
src.attack_hand(user)
return
/obj/machinery/sleep_console/power_change() /obj/machinery/sleep_console/power_change()
..() ..()
if(stat & (NOPOWER|BROKEN)) if(stat & (NOPOWER|BROKEN))
@@ -49,6 +81,7 @@
icon_state = "sleeper_0" icon_state = "sleeper_0"
density = 1 density = 1
anchored = 1 anchored = 1
circuit = /obj/item/weapon/circuitboard/sleeper
var/mob/living/carbon/human/occupant = null var/mob/living/carbon/human/occupant = null
var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin") var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
var/obj/item/weapon/reagent_containers/glass/beaker = null var/obj/item/weapon/reagent_containers/glass/beaker = null
@@ -59,8 +92,29 @@
active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors. active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors.
/obj/machinery/sleeper/New() /obj/machinery/sleeper/New()
..()
spawn(5)
//src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir))
var/obj/machinery/sleep_console/C = locate(/obj/machinery/sleep_console) in range(2,src)
if(C)
C.connected = src
return
return
/obj/machinery/sleeper/map/New()
..() ..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src) beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
/obj/machinery/sleeper/initialize() /obj/machinery/sleeper/initialize()
update_icon() update_icon()
@@ -156,6 +210,10 @@
return 1 return 1
/obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user) /obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user)
if(default_deconstruction_screwdriver(user, I))
return
if(default_deconstruction_crowbar(user, I))
return
add_fingerprint(user) add_fingerprint(user)
if(istype(I, /obj/item/weapon/reagent_containers/glass)) if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!beaker) if(!beaker)
@@ -230,7 +288,9 @@
occupant.loc = loc occupant.loc = loc
occupant = null occupant = null
for(var/atom/movable/A in src) // In case an object was dropped inside or something for(var/atom/movable/A in src) // In case an object was dropped inside or something
if(A == beaker) if(A == beaker || A == circuit)
continue
if(A in component_parts)
continue continue
A.loc = loc A.loc = loc
update_use_power(1) update_use_power(1)

View File

@@ -9,11 +9,31 @@
icon_state = "body_scanner_0" icon_state = "body_scanner_0"
density = 1 density = 1
anchored = 1 anchored = 1
circuit = /obj/item/weapon/circuitboard/body_scanner
use_power = 1 use_power = 1
idle_power_usage = 60 idle_power_usage = 60
active_power_usage = 10000 //10 kW. It's a big all-body scanner. active_power_usage = 10000 //10 kW. It's a big all-body scanner.
/obj/machinery/bodyscanner/New()
..()
spawn( 5 )
var/obj/machinery/body_scanconsole/C = locate(/obj/machinery/body_scanconsole) in range(2,src)
if(C)
C.connected = src
return
return
/obj/machinery/bodyscanner/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
/obj/machinery/bodyscanner/relaymove(mob/user as mob) /obj/machinery/bodyscanner/relaymove(mob/user as mob)
if (user.stat) if (user.stat)
return return
@@ -53,6 +73,10 @@
src.icon_state = "body_scanner_1" src.icon_state = "body_scanner_1"
for(var/obj/O in src) for(var/obj/O in src)
//O = null //O = null
if(O in component_parts)
continue
if(O == circuit)
continue
qdel(O) qdel(O)
//Foreach goto(124) //Foreach goto(124)
src.add_fingerprint(usr) src.add_fingerprint(usr)
@@ -62,6 +86,10 @@
if ((!( src.occupant ) || src.locked)) if ((!( src.occupant ) || src.locked))
return return
for(var/obj/O in src) for(var/obj/O in src)
if(O in component_parts)
continue
if(O == circuit)
continue
O.loc = src.loc O.loc = src.loc
//Foreach goto(30) //Foreach goto(30)
if (src.occupant.client) if (src.occupant.client)
@@ -73,16 +101,23 @@
src.icon_state = "body_scanner_0" src.icon_state = "body_scanner_0"
return return
/obj/machinery/bodyscanner/attackby(obj/item/weapon/grab/G as obj, user as mob) /obj/machinery/bodyscanner/attackby(var/obj/item/G, user as mob)
if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) ))) if(default_deconstruction_screwdriver(user, G))
return
if(default_deconstruction_crowbar(user, G))
return
if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/H = G
if(!(ismob(H.affecting)))
return return
if (src.occupant) if (src.occupant)
user << "<span class='warning'>The scanner is already occupied!</span>" user << "<span class='warning'>The scanner is already occupied!</span>"
return return
if (G.affecting.abiotic()) if (H.affecting.abiotic())
user << "<span class='warning'>Subject cannot have abiotic items on.</span>" user << "<span class='warning'>Subject cannot have abiotic items on.</span>"
return return
var/mob/M = G.affecting var/mob/M = H.affecting
if (M.client) if (M.client)
M.client.perspective = EYE_PERSPECTIVE M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src M.client.eye = src
@@ -91,6 +126,10 @@
update_use_power(2) update_use_power(2)
src.icon_state = "body_scanner_1" src.icon_state = "body_scanner_1"
for(var/obj/O in src) for(var/obj/O in src)
if(O in component_parts)
continue
if(O == circuit)
continue
O.loc = src.loc O.loc = src.loc
//Foreach goto(154) //Foreach goto(154)
src.add_fingerprint(user) src.add_fingerprint(user)
@@ -102,6 +141,10 @@
switch(severity) switch(severity)
if(1.0) if(1.0)
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
if(A in component_parts)
continue
if(A == circuit)
continue
A.loc = src.loc A.loc = src.loc
ex_act(severity) ex_act(severity)
//Foreach goto(35) //Foreach goto(35)
@@ -111,6 +154,10 @@
if(2.0) if(2.0)
if (prob(50)) if (prob(50))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
if(A in component_parts)
continue
if(A == circuit)
continue
A.loc = src.loc A.loc = src.loc
ex_act(severity) ex_act(severity)
//Foreach goto(108) //Foreach goto(108)
@@ -120,6 +167,10 @@
if(3.0) if(3.0)
if (prob(25)) if (prob(25))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
if(A in component_parts)
continue
if(A == circuit)
continue
A.loc = src.loc A.loc = src.loc
ex_act(severity) ex_act(severity)
//Foreach goto(181) //Foreach goto(181)
@@ -166,11 +217,12 @@
dir = 8 dir = 8
density = 0 density = 0
anchored = 1 anchored = 1
circuit = /obj/item/weapon/circuitboard/scanner_console
/obj/machinery/body_scanconsole/New() /obj/machinery/body_scanconsole/New()
..() ..()
spawn( 5 ) spawn( 5 )
src.connected = locate(/obj/machinery/bodyscanner, get_step(src, WEST)) //We assume dir = 8 so scanner is WEST. Other sprites do exist. src.connected = locate(/obj/machinery/bodyscanner) in range(2,src)
return return
return return
@@ -228,6 +280,36 @@
user << browse(dat, "window=scanconsole;size=430x600") user << browse(dat, "window=scanconsole;size=430x600")
return return
/obj/machinery/body_scanconsole/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A )
A.circuit = M
A.anchored = 1
A.density = 1
A.frame_type = M.board_type
for (var/obj/C in src)
C.forceMove(loc)
if (src.stat & BROKEN)
user << "<span class='notice'>The broken glass falls out.</span>"
new /obj/item/weapon/material/shard( src.loc )
A.state = 3
A.icon_state = "[A.frame_type]_3"
else
user << "<span class='notice'>You disconnect the monitor.</span>"
A.state = 4
A.icon_state = "[A.frame_type]_4"
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.dir = dir
M.deconstruct(src)
qdel(src)
else
src.attack_hand(user)
return
/obj/machinery/body_scanconsole/Topic(href, href_list) /obj/machinery/body_scanconsole/Topic(href, href_list)
if (..()) if (..())

View File

@@ -23,12 +23,14 @@
var/datum/wires/autolathe/wires = null var/datum/wires/autolathe/wires = null
/obj/machinery/autolathe/New() /obj/machinery/autolathe/New()
..() ..()
wires = new(src) wires = new(src)
/obj/machinery/autolathe/map/New()
..()
//Create parts for lathe. //Create parts for lathe.
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)

View File

@@ -32,6 +32,11 @@
path = /obj/item/weapon/reagent_containers/glass/bucket path = /obj/item/weapon/reagent_containers/glass/bucket
category = "General" category = "General"
/datum/autolathe/recipe/bucket/drinkingglass
name = "drinking glass"
path = /obj/item/weapon/reagent_containers/food/drinks/drinkingglass
category = "General"
/datum/autolathe/recipe/flashlight /datum/autolathe/recipe/flashlight
name = "flashlight" name = "flashlight"
path = /obj/item/device/flashlight path = /obj/item/device/flashlight
@@ -226,26 +231,21 @@
path = /obj/item/weapon/circuitboard/fax path = /obj/item/weapon/circuitboard/fax
category = "Engineering" category = "Engineering"
/datum/autolathe/recipe/conveyor
name = "conveyor electronics"
path = /obj/item/weapon/circuitboard/conveyor
category = "Engineering"
/datum/autolathe/recipe/microwave /datum/autolathe/recipe/microwave
name = "microwave electronics" name = "microwave electronics"
path = /obj/item/weapon/circuitboard/microwave path = /obj/item/weapon/circuitboard/microwave
category = "Engineering" category = "Engineering"
/datum/autolathe/recipe/vending
name = "vending machine electronics"
path = /obj/item/weapon/circuitboard/vending
category = "Engineering"
/datum/autolathe/recipe/washing /datum/autolathe/recipe/washing
name = "washing machine electronics" name = "washing machine electronics"
path = /obj/item/weapon/circuitboard/washing path = /obj/item/weapon/circuitboard/washing
category = "Engineering" category = "Engineering"
/datum/autolathe/recipe/request
name = "request console electronics"
path = /obj/item/weapon/circuitboard/request
category = "Engineering"
/datum/autolathe/recipe/motor /datum/autolathe/recipe/motor
name = "motor" name = "motor"
path = /obj/item/weapon/stock_parts/motor path = /obj/item/weapon/stock_parts/motor

View File

@@ -21,8 +21,11 @@
var/datum/reagents/R = new/datum/reagents(1000) var/datum/reagents/R = new/datum/reagents(1000)
reagents = R reagents = R
R.my_atom = src R.my_atom = src
beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src)
/obj/machinery/biogenerator/map/New()
..()
beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src)
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src)

View File

@@ -1,10 +1,10 @@
// PRESETS // PRESETS
var/global/list/station_networks = list( var/global/list/station_networks = list(
NETWORK_CAFE_DOCK, // NETWORK_CAFE_DOCK,
NETWORK_CARGO, NETWORK_CARGO,
NETWORK_CIVILIAN, NETWORK_CIVILIAN,
NETWORK_CIVILIAN_EAST, // NETWORK_CIVILIAN_EAST,
NETWORK_CIVILIAN_WEST, // NETWORK_CIVILIAN_WEST,
NETWORK_COMMAND, NETWORK_COMMAND,
NETWORK_ENGINE, NETWORK_ENGINE,
NETWORK_ENGINEERING, NETWORK_ENGINEERING,
@@ -29,8 +29,10 @@ var/global/list/engineering_networks = list(
/obj/machinery/camera/network/crescent /obj/machinery/camera/network/crescent
network = list(NETWORK_CRESCENT) network = list(NETWORK_CRESCENT)
/*
/obj/machinery/camera/network/cafe_dock /obj/machinery/camera/network/cafe_dock
network = list(NETWORK_CAFE_DOCK) network = list(NETWORK_CAFE_DOCK)
*/
/obj/machinery/camera/network/cargo /obj/machinery/camera/network/cargo
network = list(NETWORK_CARGO) network = list(NETWORK_CARGO)
@@ -38,11 +40,13 @@ var/global/list/engineering_networks = list(
/obj/machinery/camera/network/civilian /obj/machinery/camera/network/civilian
network = list(NETWORK_CIVILIAN) network = list(NETWORK_CIVILIAN)
/*
/obj/machinery/camera/network/civilian_east /obj/machinery/camera/network/civilian_east
network = list(NETWORK_CIVILIAN_EAST) network = list(NETWORK_CIVILIAN_EAST)
/obj/machinery/camera/network/civilian_west /obj/machinery/camera/network/civilian_west
network = list(NETWORK_CIVILIAN_WEST) network = list(NETWORK_CIVILIAN_WEST)
*/
/obj/machinery/camera/network/command /obj/machinery/camera/network/command
network = list(NETWORK_COMMAND) network = list(NETWORK_COMMAND)

View File

@@ -6,7 +6,7 @@
anchored = 1 anchored = 1
use_power = 1 use_power = 1
idle_power_usage = 5 idle_power_usage = 5
active_power_usage = 40000 //40 kW. (this the power drawn when charging) active_power_usage = 60000 //60 kW. (this the power drawn when charging)
power_channel = EQUIP power_channel = EQUIP
var/obj/item/weapon/cell/charging = null var/obj/item/weapon/cell/charging = null
var/chargelevel = -1 var/chargelevel = -1

View File

@@ -45,8 +45,9 @@
var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk
var/biomass = CLONE_BIOMASS * 3 var/biomass = CLONE_BIOMASS * 3
/obj/machinery/clonepod/New() /obj/machinery/clonepod/map/New()
..() ..()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src)

View File

@@ -61,6 +61,7 @@
..() ..()
uid = "[rand(100,999)]-G[rand(10,99)]" uid = "[rand(100,999)]-G[rand(10,99)]"
/obj/machinery/computer/guestpass/attackby(obj/I, mob/user) /obj/machinery/computer/guestpass/attackby(obj/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit) if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>" user << "<span class='notice'>You start disconnecting the monitor.</span>"
@@ -83,7 +84,7 @@
return return
if(istype(I, /obj/item/weapon/card/id)) if(istype(I, /obj/item/weapon/card/id))
if(!giver && user.unEquip(I)) if(!giver && user.unEquip(I))
I.loc = src I.forceMove(src)
giver = I giver = I
updateUsrDialog() updateUsrDialog()
else if(giver) else if(giver)

View File

@@ -6,7 +6,7 @@
icon_keyboard = "med_key" icon_keyboard = "med_key"
icon_screen = "medcomp" icon_screen = "medcomp"
light_color = "#315ab4" light_color = "#315ab4"
req_one_access = list(access_medical, access_forensics_lockers) req_one_access = list(access_medical, access_forensics_lockers, access_robotics)
circuit = /obj/item/weapon/circuitboard/med_data circuit = /obj/item/weapon/circuitboard/med_data
var/obj/item/weapon/card/id/scan = null var/obj/item/weapon/card/id/scan = null
var/authenticated = null var/authenticated = null
@@ -49,11 +49,11 @@
/obj/machinery/computer/med_data/attack_hand(mob/user as mob) /obj/machinery/computer/med_data/attack_hand(mob/user as mob)
if(..()) if(..())
return return
var/dat var/dat = list()
if (src.temp) if (src.temp)
dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=\ref[src];temp=1'>Clear Screen</A>") dat += text("<TT>[src.temp]</TT><BR><BR><A href='?src=\ref[src];temp=1'>Clear Screen</A>")
else else
dat = text("Confirm Identity: <A href='?src=\ref[];scan=1'>[]</A><HR>", src, (src.scan ? text("[]", src.scan.name) : "----------")) dat += text("Confirm Identity: <A href='?src=\ref[];scan=1'>[]</A><HR>", src, (src.scan ? text("[]", src.scan.name) : "----------"))
if (src.authenticated) if (src.authenticated)
switch(src.screen) switch(src.screen)
if(1.0) if(1.0)
@@ -85,8 +85,12 @@
if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
dat += "<table><tr><td>Name: [active1.fields["name"]] \ dat += "<table><tr><td>Name: [active1.fields["name"]] \
ID: [active1.fields["id"]]<BR>\n \ ID: [active1.fields["id"]]<BR>\n \
Sex: <A href='?src=\ref[src];field=sex'>[active1.fields["sex"]]</A><BR>\n \ Sex: <A href='?src=\ref[src];field=sex'>[active1.fields["sex"]]</A><BR>\n"
Age: <A href='?src=\ref[src];field=age'>[active1.fields["age"]]</A><BR>\n \ if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
dat += "Gender identity: <A href='?src=\ref[src];field=id_gender'>[active2.fields["id_gender"]]</A><BR>"
else
dat += "Gender identity: <A href='?src=\ref[src];field=id_gender'>Unknown</A><BR>"
dat += "Age: <A href='?src=\ref[src];field=age'>[active1.fields["age"]]</A><BR>\n \
Fingerprint: <A href='?src=\ref[src];field=fingerprint'>[active1.fields["fingerprint"]]</A><BR>\n \ Fingerprint: <A href='?src=\ref[src];field=fingerprint'>[active1.fields["fingerprint"]]</A><BR>\n \
Physical Status: <A href='?src=\ref[src];field=p_stat'>[active1.fields["p_stat"]]</A><BR>\n \ Physical Status: <A href='?src=\ref[src];field=p_stat'>[active1.fields["p_stat"]]</A><BR>\n \
Mental Status: <A href='?src=\ref[src];field=m_stat'>[active1.fields["m_stat"]]</A><BR></td><td align = center valign = top> \ Mental Status: <A href='?src=\ref[src];field=m_stat'>[active1.fields["m_stat"]]</A><BR></td><td align = center valign = top> \
@@ -135,6 +139,7 @@
else else
else else
dat += text("<A href='?src=\ref[];login=1'>{Log In}</A>", src) dat += text("<A href='?src=\ref[];login=1'>{Log In}</A>", src)
dat = jointext(dat,null)
user << browse(text("<HEAD><TITLE>Medical Records</TITLE></HEAD><TT>[]</TT>", dat), "window=med_rec") user << browse(text("<HEAD><TITLE>Medical Records</TITLE></HEAD><TT>[]</TT>", dat), "window=med_rec")
onclose(user, "med_rec") onclose(user, "med_rec")
return return
@@ -249,10 +254,10 @@
src.active1.fields["fingerprint"] = t1 src.active1.fields["fingerprint"] = t1
if("sex") if("sex")
if (istype(src.active1, /datum/data/record)) if (istype(src.active1, /datum/data/record))
if (src.active1.fields["sex"] == "Male") src.active1.fields["sex"] = next_in_list(src.active1.fields["sex"], all_genders_text_list)
src.active1.fields["sex"] = "Female" if("id_gender")
else if (istype(src.active2, /datum/data/record))
src.active1.fields["sex"] = "Male" src.active2.fields["id_gender"] = next_in_list(src.active2.fields["id_gender"], all_genders_text_list)
if("age") if("age")
if (istype(src.active1, /datum/data/record)) if (istype(src.active1, /datum/data/record))
var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num

View File

@@ -18,7 +18,7 @@
// Proc: New() // Proc: New()
// Parameters: None // Parameters: None
// Description: Adds components to the machine for deconstruction. // Description: Adds components to the machine for deconstruction.
/obj/machinery/exonet_node/New() /obj/machinery/exonet_node/map/New()
..() ..()
component_parts = list() component_parts = list()

View File

@@ -13,10 +13,13 @@
var/list/req_component_names = null var/list/req_component_names = null
var/list/alarms = list("firealarm", "airalarm", "intercom", "keycard") var/list/alarms = list("firealarm", "airalarm", "intercom", "keycard")
var/list/machines = list("machine", "photocopier", "fax", "microwave", "conveyor", "vending", "recharger", "wrecharger", "washing", "grinder") var/list/machines = list(
var/list/computers = list("computer", "holopad") "machine", "photocopier", "fax", "microwave", "conveyor", "recharger", "wrecharger",
var/list/displays = list("display", "guestpass", "newscaster", "atm") "washing", "grinder", "teleporter_hub", "teleporter_station", "medpod", "dna_analyzer",
var/list/no_circuit = list("wrecharger", "recharger", "grinder","conveyor") "massdriver")
var/list/computers = list("computer", "holopad", "console")
var/list/displays = list("display", "guestpass", "newscaster", "atm", "request")
var/list/no_circuit = list("wrecharger", "recharger", "grinder", "conveyor", "massdriver")
/obj/structure/frame/proc/update_desc() /obj/structure/frame/proc/update_desc()
var/D var/D
@@ -35,15 +38,16 @@
req_components[A] = circuit.req_components[A] req_components[A] = circuit.req_components[A]
req_component_names = circuit.req_components.Copy() req_component_names = circuit.req_components.Copy()
for(var/A in req_components) for(var/A in req_components)
var/cp = text2path(A) var/obj/ct = A
var/obj/ct = new cp() // have to quickly instantiate it get name req_component_names[A] = initial(ct.name)
req_component_names[A] = ct.name
/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/obj/item/frame/frame_type, mob/user as mob) /obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/obj/item/frame/frame_type, mob/user as mob)
..() ..()
if(building) if(building)
src.frame_type = frame_type src.frame_type = frame_type
icon_state = "[frame_type]_0" icon_state = "[frame_type]_0"
if(dir)
src.set_dir(dir)
if(frame_type in alarms) if(frame_type in alarms)
if(loc) if(loc)
@@ -69,7 +73,7 @@
if(loc) if(loc)
src.loc = loc src.loc = loc
if(frame_type == "display" || frame_type == "atm") if(frame_type == "display" || frame_type == "atm" || frame_type == "request")
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32) pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0 pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0
@@ -104,8 +108,8 @@
circuit = new /obj/item/weapon/circuitboard/grinder(src) circuit = new /obj/item/weapon/circuitboard/grinder(src)
if(frame_type == "conveyor") if(frame_type == "conveyor")
circuit = new /obj/item/weapon/circuitboard/conveyor(src) circuit = new /obj/item/weapon/circuitboard/conveyor(src)
if(dir) if(frame_type == "massdriver")
src.set_dir(dir) circuit = new /obj/item/weapon/circuitboard/mass_driver(src)
if(frame_type == "computer") if(frame_type == "computer")
density = 1 density = 1
@@ -214,12 +218,25 @@
if(component_check) if(component_check)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir)
if(!new_machine.component_parts) if(new_machine.component_parts)
for(var/obj/O in src.components) new_machine.component_parts.Cut()
O.forceMove(null) else
new_machine.RefreshParts() new_machine.component_parts = list()
src.circuit.construct(new_machine) src.circuit.construct(new_machine)
for(var/obj/O in src.components)
if(circuit.contain_parts)
O.loc = new_machine
else
O.loc = null
new_machine.component_parts += O
circuit.loc = null
new_machine.circuit = circuit
new_machine.RefreshParts()
new_machine.pixel_x = src.pixel_x new_machine.pixel_x = src.pixel_x
new_machine.pixel_y = src.pixel_y new_machine.pixel_y = src.pixel_y
qdel(src) qdel(src)
@@ -243,6 +260,7 @@
var/obj/machinery/B = new src.circuit.build_path ( src.loc ) var/obj/machinery/B = new src.circuit.build_path ( src.loc )
B.pixel_x = src.pixel_x B.pixel_x = src.pixel_x
B.pixel_y = src.pixel_y B.pixel_y = src.pixel_y
B.set_dir(dir)
src.circuit.construct(B) src.circuit.construct(B)
qdel(src) qdel(src)
return return
@@ -253,6 +271,7 @@
var/obj/machinery/B = new src.circuit.build_path ( src.loc ) var/obj/machinery/B = new src.circuit.build_path ( src.loc )
B.pixel_x = src.pixel_x B.pixel_x = src.pixel_x
B.pixel_y = src.pixel_y B.pixel_y = src.pixel_y
B.set_dir(dir)
src.circuit.construct(B) src.circuit.construct(B)
qdel(src) qdel(src)
return return
@@ -386,13 +405,13 @@
if(state == 3) if(state == 3)
if(frame_type in machines) if(frame_type in machines)
for(var/I in req_components) for(var/I in req_components)
if(istype(P, text2path(I)) && (req_components[I] > 0)) if(istype(P, I) && (req_components[I] > 0))
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(istype(P, /obj/item/stack)) if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/CP = P var/obj/item/stack/cable_coil/CP = P
if(CP.get_amount() > 1) if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
var/obj/item/stack/CC = new /obj/item/stack(src) var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src)
CC.amount = camt CC.amount = camt
CC.update_icon() CC.update_icon()
CP.use(camt) CP.use(camt)
@@ -400,6 +419,20 @@
req_components[I] -= camt req_components[I] -= camt
update_desc() update_desc()
break break
if(istype(P, /obj/item/stack/material/glass/reinforced))
var/obj/item/stack/material/glass/reinforced/CP = P
if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
var/obj/item/stack/material/glass/reinforced/CC = new /obj/item/stack/material/glass/reinforced(src)
CC.amount = camt
CC.update_icon()
CP.use(camt)
components += CC
req_components[I] -= camt
update_desc()
break
user.drop_item() user.drop_item()
P.forceMove(src) P.forceMove(src)
components += P components += P

View File

@@ -37,6 +37,8 @@
/obj/machinery/iv_drip/MouseDrop(over_object, src_location, over_location) /obj/machinery/iv_drip/MouseDrop(over_object, src_location, over_location)
..() ..()
if(!isliving(usr))
return
if(attached) if(attached)
visible_message("[src.attached] is detached from \the [src]") visible_message("[src.attached] is detached from \the [src]")

View File

@@ -1,4 +1,3 @@
/obj/machinery/microwave /obj/machinery/microwave
name = "Microwave" name = "Microwave"
icon = 'icons/obj/kitchen.dmi' icon = 'icons/obj/kitchen.dmi'
@@ -31,6 +30,9 @@
reagents = new/datum/reagents(100) reagents = new/datum/reagents(100)
reagents.my_atom = src reagents.my_atom = src
/obj/machinery/microwave/map/New()
..()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src) component_parts += new /obj/item/weapon/stock_parts/motor(src)
@@ -114,7 +116,7 @@
user << "<span class='warning'>It's dirty!</span>" user << "<span class='warning'>It's dirty!</span>"
return 1 return 1
else if(is_type_in_list(O,acceptable_items)) else if(is_type_in_list(O,acceptable_items))
if (contents.len>=(max_n_of_items + component_parts.len)) //Adds component_parts to the maximum number of items. if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit
user << "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>" user << "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>"
return 1 return 1
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
@@ -177,7 +179,7 @@
var/list/items_counts = new var/list/items_counts = new
var/list/items_measures = new var/list/items_measures = new
var/list/items_measures_p = new var/list/items_measures_p = new
for (var/obj/O in (contents-component_parts)) for (var/obj/O in ((contents - component_parts) - circuit))
var/display_name = O.name var/display_name = O.name
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
items_measures[display_name] = "egg" items_measures[display_name] = "egg"
@@ -237,7 +239,7 @@
if(stat & (NOPOWER|BROKEN)) if(stat & (NOPOWER|BROKEN))
return return
start() start()
if (reagents.total_volume==0 && !(locate(/obj) in (contents-component_parts))) //dry run if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run
if (!wzhzhzh(10)) if (!wzhzhzh(10))
abort() abort()
return return
@@ -299,7 +301,7 @@
return 1 return 1
/obj/machinery/microwave/proc/has_extra_item() /obj/machinery/microwave/proc/has_extra_item()
for (var/obj/O in (contents-component_parts)) for (var/obj/O in ((contents - component_parts) - circuit))
if ( \ if ( \
!istype(O,/obj/item/weapon/reagent_containers/food) && \ !istype(O,/obj/item/weapon/reagent_containers/food) && \
!istype(O, /obj/item/weapon/grown) \ !istype(O, /obj/item/weapon/grown) \
@@ -360,7 +362,7 @@
/obj/machinery/microwave/proc/fail() /obj/machinery/microwave/proc/fail()
var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src)
var/amount = 0 var/amount = 0
for (var/obj/O in (contents-ffuu)-component_parts) for (var/obj/O in (((contents - ffuu) - component_parts) - circuit))
amount++ amount++
if (O.reagents) if (O.reagents)
var/id = O.reagents.get_master_reagent_id() var/id = O.reagents.get_master_reagent_id()

View File

@@ -286,8 +286,7 @@ Class Procs:
var/obj/item/weapon/circuitboard/CB = circuit var/obj/item/weapon/circuitboard/CB = circuit
var/P var/P
for(var/obj/item/weapon/stock_parts/A in component_parts) for(var/obj/item/weapon/stock_parts/A in component_parts)
for(var/D in CB.req_components) for(var/T in CB.req_components)
var/T = text2path(D)
if(ispath(A.type, T)) if(ispath(A.type, T))
P = T P = T
break break
@@ -328,14 +327,14 @@ Class Procs:
/obj/machinery/proc/dismantle() /obj/machinery/proc/dismantle()
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A ) var/obj/item/weapon/circuitboard/M = circuit
A.circuit = M A.circuit = M
A.anchored = 1 A.anchored = 1
A.density = 1 A.density = 1
A.frame_type = M.board_type A.frame_type = M.board_type
if(A.frame_type in A.no_circuit) if(A.frame_type in A.no_circuit)
A.need_circuit = 0 A.need_circuit = 0
for (var/obj/D in src) for (var/obj/D in src.component_parts)
D.forceMove(loc) D.forceMove(loc)
if(A.components) if(A.components)
A.components.Cut() A.components.Cut()
@@ -344,10 +343,12 @@ Class Procs:
component_parts = list() component_parts = list()
A.icon_state = "[A.frame_type]_3" A.icon_state = "[A.frame_type]_3"
A.state = 3 A.state = 3
A.dir = dir
A.pixel_x = pixel_x A.pixel_x = pixel_x
A.pixel_y = pixel_y A.pixel_y = pixel_y
A.check_components() A.check_components()
A.update_desc() A.update_desc()
M.loc = null
M.deconstruct(src) M.deconstruct(src)
qdel(src) qdel(src)
return 1 return 1

View File

@@ -9,12 +9,41 @@
use_power = 1 use_power = 1
idle_power_usage = 2 idle_power_usage = 2
active_power_usage = 50 active_power_usage = 50
circuit = /obj/item/weapon/circuitboard/mass_driver
var/power = 1.0 var/power = 1.0
var/code = 1.0 var/code = 1.0
var/id = 1.0 var/id = 1.0
var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
/obj/machinery/mass_driver/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src)
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
RefreshParts()
/obj/machinery/mass_driver/attackby(var/obj/item/I, mob/user)
if(default_deconstruction_screwdriver(user, I))
return
if(default_deconstruction_crowbar(user, I))
return
if(istype(I, /obj/item/device/multitool))
if(panel_open)
var/input = sanitize(input(usr, "What id would you like to give this conveyor?", "Multitool-Conveyor interface", id))
if(!input)
usr << "No input found please hang up and try your call again."
return
id = input
return
return
/obj/machinery/mass_driver/proc/drive(amount) /obj/machinery/mass_driver/proc/drive(amount)
if(stat & (BROKEN|NOPOWER)) if(stat & (BROKEN|NOPOWER))

View File

@@ -15,9 +15,9 @@ obj/machinery/recharger
var/icon_state_idle = "recharger0" //also when unpowered var/icon_state_idle = "recharger0" //also when unpowered
var/portable = 1 var/portable = 1
circuit = /obj/item/weapon/circuitboard/recharger circuit = /obj/item/weapon/circuitboard/recharger
frame_type = "recharger"
obj/machinery/recharger/New() obj/machinery/recharger/map/New()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5) component_parts += new /obj/item/stack/cable_coil(src, 5)
@@ -172,3 +172,12 @@ obj/machinery/recharger/wallcharger
portable = 0 portable = 0
circuit = /obj/item/weapon/circuitboard/recharger/wrecharger circuit = /obj/item/weapon/circuitboard/recharger/wrecharger
frame_type = "wrecharger" frame_type = "wrecharger"
obj/machinery/recharger/wallcharger/map/New()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
RefreshParts()
..()
return

View File

@@ -22,9 +22,9 @@
var/weld_power_use = 2300 // power used per point of brute damage repaired. 2.3 kW ~ about the same power usage of a handheld arc welder var/weld_power_use = 2300 // power used per point of brute damage repaired. 2.3 kW ~ about the same power usage of a handheld arc welder
var/wire_power_use = 500 // power used per point of burn damage repaired. var/wire_power_use = 500 // power used per point of burn damage repaired.
/obj/machinery/recharge_station/New() /obj/machinery/recharge_station/map/New()
..() ..()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src)

View File

@@ -28,6 +28,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
anchored = 1 anchored = 1
icon = 'icons/obj/terminals.dmi' icon = 'icons/obj/terminals.dmi'
icon_state = "req_comp0" icon_state = "req_comp0"
circuit = /obj/item/weapon/circuitboard/request
var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department
var/list/message_log = list() //List of all messages var/list/message_log = list() //List of all messages
var/departmentType = 0 //Bitflag. Zero is reply-only. Map currently uses raw numbers instead of defines. var/departmentType = 0 //Bitflag. Zero is reply-only. Map currently uses raw numbers instead of defines.
@@ -199,27 +200,29 @@ var/list/obj/machinery/requests_console/allConsoles = list()
//err... hacking code, which has no reason for existing... but anyway... it was once supposed to unlock priority 3 messanging on that console (EXTREME priority...), but the code for that was removed. //err... hacking code, which has no reason for existing... but anyway... it was once supposed to unlock priority 3 messanging on that console (EXTREME priority...), but the code for that was removed.
/obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) /obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob)
/* if(default_deconstruction_screwdriver(user, O))
if (istype(O, /obj/item/weapon/crowbar)) return
if(open) if(default_deconstruction_crowbar(user, O))
open = 0 return
icon_state="req_comp0" if(istype(O, /obj/item/device/multitool))
else if(panel_open)
open = 1 var/input = sanitize(input(usr, "What Department id would you like to give this Request Console?", "Multitool-Request Console interface", department))
if(hackState == 0) if(!input)
icon_state="req_comp_open" usr << "No input found please hang up and try your call again."
else if(hackState == 1) return
icon_state="req_comp_rewired" department = input
if (istype(O, /obj/item/weapon/screwdriver)) announcement.title = "[department] announcement"
if(open) announcement.newscast = 1
if(hackState == 0)
hackState = 1 name = "[department] Requests Console"
icon_state="req_comp_rewired" allConsoles += src
else if(hackState == 1) if (departmentType & RC_ASSIST)
hackState = 0 req_console_assistance |= department
icon_state="req_comp_open" if (departmentType & RC_SUPPLY)
else req_console_supplies |= department
user << "You can't do much with that."*/ if (departmentType & RC_INFO)
req_console_information |= department
return
if (istype(O, /obj/item/weapon/card/id)) if (istype(O, /obj/item/weapon/card/id))
if(inoperable(MAINT)) return if(inoperable(MAINT)) return

View File

@@ -170,6 +170,7 @@
use_power = 1 use_power = 1
idle_power_usage = 10 idle_power_usage = 10
active_power_usage = 2000 active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/teleporter_hub
var/obj/machinery/computer/teleporter/com var/obj/machinery/computer/teleporter/com
@@ -178,6 +179,21 @@
underlays.Cut() underlays.Cut()
underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires") underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires")
/obj/machinery/teleport/hub/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/stack/cable_coil(src, 10)
RefreshParts()
/obj/machinery/teleport/hub/Bumped(M as mob|obj) /obj/machinery/teleport/hub/Bumped(M as mob|obj)
spawn() spawn()
if (src.icon_state == "tele1") if (src.icon_state == "tele1")
@@ -307,6 +323,7 @@
use_power = 1 use_power = 1
idle_power_usage = 10 idle_power_usage = 10
active_power_usage = 2000 active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/teleporter_station
var/obj/machinery/teleport/hub/com var/obj/machinery/teleport/hub/com
/obj/machinery/teleport/station/New() /obj/machinery/teleport/station/New()
@@ -314,6 +331,16 @@
overlays.Cut() overlays.Cut()
overlays += image('icons/obj/stationobjs.dmi', icon_state = "controller-wires") overlays += image('icons/obj/stationobjs.dmi', icon_state = "controller-wires")
/obj/machinery/teleport/station/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 10)
RefreshParts()
/obj/machinery/teleport/station/attackby(var/obj/item/weapon/W) /obj/machinery/teleport/station/attackby(var/obj/item/weapon/W)
src.attack_hand() src.attack_hand()

View File

@@ -4,12 +4,14 @@
/datum/data/vending_product /datum/data/vending_product
var/product_name = "generic" // Display name for the product var/product_name = "generic" // Display name for the product
var/product_path = null var/product_path = null
var/amount = 0 // Amount held in the vending machine var/amount = 0 // The original amount held in the vending machine
var/list/instances
var/price = 0 // Price to buy one var/price = 0 // Price to buy one
var/display_color = null // Display color for vending machine listing var/display_color = null // Display color for vending machine listing
var/category = CAT_NORMAL // CAT_HIDDEN for contraband, CAT_COIN for premium var/category = CAT_NORMAL // CAT_HIDDEN for contraband, CAT_COIN for premium
var/vending_machine // The vending machine we belong to
/datum/data/vending_product/New(var/path, var/name = null, var/amount = 1, var/price = 0, var/color = null, var/category = CAT_NORMAL) /datum/data/vending_product/New(var/vending_machine, var/path, var/name = null, var/amount = 1, var/price = 0, var/color = null, var/category = CAT_NORMAL)
..() ..()
src.product_path = path src.product_path = path
@@ -24,6 +26,43 @@
src.price = price src.price = price
src.display_color = color src.display_color = color
src.category = category src.category = category
src.vending_machine = vending_machine
/datum/data/vending_product/Destroy()
vending_machine = null
if(instances)
for(var/product in instances)
qdel(product)
instances.Cut()
. = ..()
/datum/data/vending_product/proc/get_amount()
return instances ? instances.len : amount
/datum/data/vending_product/proc/add_product(var/atom/movable/product)
if(product.type != product_path)
return 0
init_products()
product.forceMove(vending_machine)
instances += product
/datum/data/vending_product/proc/get_product(var/product_location)
if(!get_amount() || !product_location)
return
init_products()
var/atom/movable/product = instances[instances.len] // Remove the last added product
instances -= product
product.forceMove(product_location)
return product
/datum/data/vending_product/proc/init_products()
if(instances)
return
instances = list()
for(var/i = 1 to amount)
var/new_product = new product_path(vending_machine)
instances += new_product
/** /**
* A vending machine * A vending machine
@@ -36,8 +75,6 @@
layer = 2.9 layer = 2.9
anchored = 1 anchored = 1
density = 1 density = 1
circuit = /obj/item/weapon/circuitboard/vending
frame_type = "vending"
var/icon_vend //Icon_state when vending var/icon_vend //Icon_state when vending
var/icon_deny //Icon_state when denying access var/icon_deny //Icon_state when denying access
@@ -96,14 +133,6 @@
/obj/machinery/vending/New() /obj/machinery/vending/New()
..() ..()
wires = new(src) wires = new(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
spawn(4) spawn(4)
if(src.product_slogans) if(src.product_slogans)
src.slogan_list += splittext(src.product_slogans, ";") src.slogan_list += splittext(src.product_slogans, ";")
@@ -140,7 +169,7 @@
var/category = current_list[2] var/category = current_list[2]
for(var/entry in current_list[1]) for(var/entry in current_list[1])
var/datum/data/vending_product/product = new/datum/data/vending_product(entry) var/datum/data/vending_product/product = new/datum/data/vending_product(src, entry)
product.price = (entry in src.prices) ? src.prices[entry] : 0 product.price = (entry in src.prices) ? src.prices[entry] : 0
product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1
@@ -153,6 +182,9 @@
wires = null wires = null
qdel(coin) qdel(coin)
coin = null coin = null
for(var/datum/data/vending_product/R in product_records)
qdel(R)
product_records = null
return ..() return ..()
/obj/machinery/vending/ex_act(severity) /obj/machinery/vending/ex_act(severity)
@@ -224,7 +256,7 @@
return return
else if(istype(W, /obj/item/weapon/coin) && premium.len > 0) else if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
user.drop_item() user.drop_item()
W.loc = src W.forceMove(src)
coin = W coin = W
categories |= CAT_COIN categories |= CAT_COIN
user << "<span class='notice'>You insert \the [W] into \the [src].</span>" user << "<span class='notice'>You insert \the [W] into \the [src].</span>"
@@ -242,9 +274,6 @@
user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>" user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>"
anchored = !anchored anchored = !anchored
return return
else if(default_deconstruction_crowbar(user, W))
return
else else
for(var/datum/data/vending_product/R in product_records) for(var/datum/data/vending_product/R in product_records)
@@ -423,7 +452,7 @@
"name" = I.product_name, "name" = I.product_name,
"price" = I.price, "price" = I.price,
"color" = I.display_color, "color" = I.display_color,
"amount" = I.amount))) "amount" = I.get_amount())))
data["products"] = listed_products data["products"] = listed_products
@@ -453,10 +482,10 @@
usr << "There is no coin in this machine." usr << "There is no coin in this machine."
return return
coin.loc = src.loc coin.forceMove(src.loc)
if(!usr.get_active_hand()) if(!usr.get_active_hand())
usr.put_in_hands(coin) usr.put_in_hands(coin)
usr << "<span class='notice'>You remove the [coin] from the [src]</span>" usr << "<span class='notice'>You remove \the [coin] from \the [src]</span>"
coin = null coin = null
categories &= ~CAT_COIN categories &= ~CAT_COIN
@@ -517,13 +546,13 @@
else else
user << "<span class='notice'>You weren't able to pull the coin out fast enough, the machine ate it, string and all.</span>" user << "<span class='notice'>You weren't able to pull the coin out fast enough, the machine ate it, string and all.</span>"
qdel(coin) qdel(coin)
coin = null
categories &= ~CAT_COIN categories &= ~CAT_COIN
else else
qdel(coin) qdel(coin)
coin = null
categories &= ~CAT_COIN categories &= ~CAT_COIN
R.amount--
if(((src.last_reply + (src.vend_delay + 200)) <= world.time) && src.vend_reply) if(((src.last_reply + (src.vend_delay + 200)) <= world.time) && src.vend_reply)
spawn(0) spawn(0)
src.speak(src.vend_reply) src.speak(src.vend_reply)
@@ -533,16 +562,31 @@
if (src.icon_vend) //Show the vending animation if needed if (src.icon_vend) //Show the vending animation if needed
flick(src.icon_vend,src) flick(src.icon_vend,src)
spawn(src.vend_delay) spawn(src.vend_delay)
new R.product_path(get_turf(src)) R.get_product(get_turf(src))
if(prob(1))
sleep(3)
if(R.get_product(get_turf(src)))
src.visible_message("<span class='notice'>\The [src] clunks as it vends an additional item.</span>")
src.status_message = "" src.status_message = ""
src.status_error = 0 src.status_error = 0
src.vend_ready = 1 src.vend_ready = 1
currently_vending = null currently_vending = null
nanomanager.update_uis(src) nanomanager.update_uis(src)
/obj/machinery/vending/proc/stock(var/datum/data/vending_product/R, var/mob/user)
user << "<span class='notice'>You insert \the [src] in the product receptor.</span>" /**
R.amount++ * Add item to the machine
*
* Checks if item is vendable in this machine should be performed before
* calling. W is the item being inserted, R is the associated vending_product entry.
*/
/obj/machinery/vending/proc/stock(obj/item/weapon/W, var/datum/data/vending_product/R, var/mob/user)
if(!user.unEquip(W))
return
user << "<span class='notice'>You insert \the [W] in the product receptor.</span>"
R.add_product(W)
nanomanager.update_uis(src) nanomanager.update_uis(src)
@@ -592,15 +636,8 @@
//Oh no we're malfunctioning! Dump out some product and break. //Oh no we're malfunctioning! Dump out some product and break.
/obj/machinery/vending/proc/malfunction() /obj/machinery/vending/proc/malfunction()
for(var/datum/data/vending_product/R in src.product_records) for(var/datum/data/vending_product/R in src.product_records)
if (R.amount <= 0) //Try to use a record that actually has something to dump. while(R.get_amount()>0)
continue R.get_product(loc)
var/dump_path = R.product_path
if (!dump_path)
continue
while(R.amount>0)
new dump_path(src.loc)
R.amount--
break break
stat |= BROKEN stat |= BROKEN
@@ -615,20 +652,15 @@
return 0 return 0
for(var/datum/data/vending_product/R in src.product_records) for(var/datum/data/vending_product/R in src.product_records)
if (R.amount <= 0) //Try to use a record that actually has something to dump. throw_item = R.get_product(loc)
if (!throw_item)
continue continue
var/dump_path = R.product_path
if (!dump_path)
continue
R.amount--
throw_item = new dump_path(src.loc)
break break
if (!throw_item) if (!throw_item)
return 0 return 0
spawn(0) spawn(0)
throw_item.throw_at(target, 16, 3, src) throw_item.throw_at(target, 16, 3, src)
src.visible_message("<span class='warning'>[src] launches [throw_item.name] at [target.name]!</span>") src.visible_message("<span class='warning'>\The [src] launches \a [throw_item] at \the [target]!</span>")
return 1 return 1
/* /*
@@ -656,7 +688,7 @@
icon = 'icons/obj/objects.dmi' icon = 'icons/obj/objects.dmi'
icon_state = "dispenser" icon_state = "dispenser"
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/phoron;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath" product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/phoron;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
product_amounts = "10;10;10;5;25" productamounts = "10;10;10;5;25"
vend_delay = 0 vend_delay = 0
*/ */
@@ -882,7 +914,7 @@
for(var/entry in current_list[1]) for(var/entry in current_list[1])
var/obj/item/seeds/S = new entry(src) var/obj/item/seeds/S = new entry(src)
var/name = S.name var/name = S.name
var/datum/data/vending_product/product = new/datum/data/vending_product(entry, name) var/datum/data/vending_product/product = new/datum/data/vending_product(src, entry, name)
product.price = (entry in src.prices) ? src.prices[entry] : 0 product.price = (entry in src.prices) ? src.prices[entry] : 0
product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1
@@ -905,8 +937,26 @@
desc = "A kitchen and restaurant equipment vendor." desc = "A kitchen and restaurant equipment vendor."
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
icon_state = "dinnerware" icon_state = "dinnerware"
products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/material/kitchen/utensil/fork = 6, /obj/item/weapon/material/kitchen/utensil/knife = 6, /obj/item/weapon/material/kitchen/utensil/spoon = 6, /obj/item/weapon/material/knife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2) products = list(
contraband = list(/obj/item/weapon/material/kitchen/rollingpin = 2, /obj/item/weapon/material/knife/butch = 2) /obj/item/weapon/tray = 8,
/obj/item/weapon/material/kitchen/utensil/fork = 6,
/obj/item/weapon/material/kitchen/utensil/knife = 6,
/obj/item/weapon/material/kitchen/utensil/spoon = 6,
/obj/item/weapon/material/knife = 3,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,
/obj/item/clothing/suit/chef/classic = 2,
/obj/item/weapon/storage/toolbox/lunchbox = 3,
/obj/item/weapon/storage/toolbox/lunchbox/heart = 3,
/obj/item/weapon/storage/toolbox/lunchbox/cat = 3,
/obj/item/weapon/storage/toolbox/lunchbox/nt = 3,
/obj/item/weapon/storage/toolbox/lunchbox/mars = 3,
/obj/item/weapon/storage/toolbox/lunchbox/cti = 3,
/obj/item/weapon/storage/toolbox/lunchbox/nymph = 3,
/obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3)
contraband = list(/obj/item/weapon/material/kitchen/rollingpin = 2,
/obj/item/weapon/material/knife/butch = 2)
/obj/machinery/vending/sovietsoda /obj/machinery/vending/sovietsoda
name = "BODA" name = "BODA"
@@ -924,8 +974,10 @@
icon_deny = "tool-deny" icon_deny = "tool-deny"
//req_access = list(access_maint_tunnels) //Maintenance access //req_access = list(access_maint_tunnels) //Maintenance access
products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5, products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5,
/obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5) /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5,
contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2) /obj/item/device/flashlight/glowstick = 3, /obj/item/device/flashlight/glowstick/red = 3, /obj/item/device/flashlight/glowstick/blue = 3,
/obj/item/device/flashlight/glowstick/orange =3, /obj/item/device/flashlight/glowstick/yellow = 3)
contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2, )
premium = list(/obj/item/clothing/gloves/yellow = 1) premium = list(/obj/item/clothing/gloves/yellow = 1)
/obj/machinery/vending/engivend /obj/machinery/vending/engivend
@@ -939,12 +991,15 @@
/obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2, /obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2,
/obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2, /obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2,
/obj/item/weapon/circuitboard/intercom = 4,/obj/item/weapon/circuitboard/security/telescreen/entertainment = 4, /obj/item/weapon/circuitboard/intercom = 4,/obj/item/weapon/circuitboard/security/telescreen/entertainment = 4,
/obj/item/weapon/circuitboard/atm = 0,/obj/item/weapon/circuitboard/guestpass = 0,/obj/item/weapon/circuitboard/keycard_auth = 0, /obj/item/weapon/stock_parts/motor = 2,/obj/item/weapon/stock_parts/spring = 2,/obj/item/weapon/stock_parts/gear = 2,
/obj/item/weapon/circuitboard/photocopier = 0,/obj/item/weapon/circuitboard/fax = 0,/obj/item/weapon/circuitboard/conveyor = 0, /obj/item/weapon/circuitboard/atm,/obj/item/weapon/circuitboard/guestpass,/obj/item/weapon/circuitboard/keycard_auth,
/obj/item/weapon/circuitboard/microwave = 0,/obj/item/weapon/circuitboard/vending = 0,/obj/item/weapon/circuitboard/washing = 0, /obj/item/weapon/circuitboard/photocopier,/obj/item/weapon/circuitboard/fax,/obj/item/weapon/circuitboard/request,
/obj/item/weapon/stock_parts/motor = 0,/obj/item/weapon/stock_parts/spring = 0,/obj/item/weapon/stock_parts/gear = 0) /obj/item/weapon/circuitboard/microwave,/obj/item/weapon/circuitboard/washing,/obj/item/weapon/circuitboard/scanner_console,
/obj/item/weapon/circuitboard/sleeper_console,/obj/item/weapon/circuitboard/body_scanner,/obj/item/weapon/circuitboard/sleeper,
/obj/item/weapon/circuitboard/dna_analyzer)
contraband = list(/obj/item/weapon/cell/potato = 3) contraband = list(/obj/item/weapon/cell/potato = 3)
premium = list(/obj/item/weapon/storage/belt/utility = 3) premium = list(/obj/item/weapon/storage/belt/utility = 3)
product_records = list()
//This one's from bay12 //This one's from bay12
/obj/machinery/vending/engineering /obj/machinery/vending/engineering

View File

@@ -22,11 +22,12 @@
if(!build_machine_type) if(!build_machine_type)
return return
var/ndir
if(!frame_type) if(!frame_type)
var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Computer", "Machine", "Holopad", "Conveyor", var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Computer", "Machine", "Holopad", "Conveyor",
"Photocopier", "Fax", "Microwave", "Vending Machine", "Photocopier", "Fax", "Microwave",
"Recharger", "Washing Machine", "Grinder", "Recharger", "Washing Machine", "Grinder",
"Medical Console", "Medical Pod", "DNA Analyzer",
"Mass Driver",
"Cancel") "Cancel")
if(response == "Cancel") if(response == "Cancel")
@@ -37,22 +38,29 @@
switch(response) switch(response)
if("Holopad") if("Holopad")
new /obj/item/stack/material/steel( usr.loc, 1 ) //holopads are smaller, they only need 4 sheets new /obj/item/stack/material/steel( usr.loc, 1 ) //holopads are smaller, they only need 4 sheets
if("Conveyor")
ndir = get_dir(src,usr)
if (!(ndir in cardinal))
return
if("Fax") if("Fax")
new /obj/item/stack/material/steel( usr.loc, 2 ) //faxes are smaller, they only need 3 sheets new /obj/item/stack/material/steel( usr.loc, 2 ) //faxes are smaller, they only need 3 sheets
if("Microwave") if("Microwave")
new /obj/item/stack/material/steel( usr.loc, 1 ) //microwaves are smaller, they only need 4 sheets new /obj/item/stack/material/steel( usr.loc, 1 ) //microwaves are smaller, they only need 4 sheets
if("Vending Machine")
frame_type = "vending"
if("Recharger") if("Recharger")
new /obj/item/stack/material/steel( usr.loc, 2 ) //rechargers are smaller, they only need 3 sheets new /obj/item/stack/material/steel( usr.loc, 2 ) //rechargers are smaller, they only need 3 sheets
if("Washing Machine") if("Washing Machine")
frame_type = "washing" frame_type = "washing"
if("Grinder") if("Grinder")
new /obj/item/stack/material/steel( usr.loc, 2 ) //grinders are smaller, they only need 3 sheets new /obj/item/stack/material/steel( usr.loc, 2 ) //grinders are smaller, they only need 3 sheets
if("Medical Console")
frame_type = "console"
if("Medical Pod")
frame_type = "medpod"
if("DNA Analyzer")
frame_type = "dna_analyzer"
if("Mass Driver")
frame_type = "massdriver"
var/ndir
ndir = usr.dir
if (!(ndir in cardinal))
return
var/obj/machinery/M = new build_machine_type(get_turf(src.loc), ndir, 1, frame_type) var/obj/machinery/M = new build_machine_type(get_turf(src.loc), ndir, 1, frame_type)
M.fingerprints = src.fingerprints M.fingerprints = src.fingerprints
@@ -64,7 +72,7 @@
if(!frame_type) if(!frame_type)
var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Fire Alarm", "Air Alarm", "Display", "Newscaster", var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Fire Alarm", "Air Alarm", "Display", "Newscaster",
"ATM", "Guest Pass Console", "Intercom", "Keycard Authenticator", "ATM", "Guest Pass Console", "Intercom", "Keycard Authenticator",
"Wall Charger", "Wall Charger", "Supply Request Console",
"Cancel") "Cancel")
if(response == "Cancel") if(response == "Cancel")
@@ -92,6 +100,8 @@
if("Wall Charger") if("Wall Charger")
frame_type = "wrecharger" frame_type = "wrecharger"
new /obj/item/stack/material/steel( usr.loc, 2 ) //wall rechargers are smaller, they only need 3 sheets new /obj/item/stack/material/steel( usr.loc, 2 ) //wall rechargers are smaller, they only need 3 sheets
if("Supply Request Console")
frame_type = "request"
if(!build_machine_type) if(!build_machine_type)
return return

View File

@@ -21,7 +21,8 @@
var/obj/crayon var/obj/crayon
var/list/washing = list() var/list/washing = list()
/obj/machinery/washing_machine/New() /obj/machinery/washing_machine/map/New()
circuit = new circuit(src)
component_parts = list() component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/motor(src) component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src) component_parts += new /obj/item/weapon/stock_parts/gear(src)

View File

@@ -193,16 +193,14 @@ steam.start() -- spawns the effect
affect(M) affect(M)
/obj/effect/effect/smoke/proc/affect(var/mob/living/carbon/M) /obj/effect/effect/smoke/proc/affect(var/mob/living/carbon/M)
if (istype(M)) if (!istype(M))
return 0 return 0
if (M.internal != null)
if(M.wear_mask && (M.wear_mask.item_flags & AIRTIGHT)) if(M.wear_mask && (M.wear_mask.item_flags & AIRTIGHT))
return 0 return 0
if(istype(M,/mob/living/carbon/human)) if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
if(H.head && (H.head.item_flags & AIRTIGHT)) if(H.head && (H.head.item_flags & AIRTIGHT))
return 0 return 0
return 0
return 1 return 1
///////////////////////////////////////////// /////////////////////////////////////////////
@@ -225,7 +223,8 @@ steam.start() -- spawns the effect
///////////////////////////////////////////// /////////////////////////////////////////////
/obj/effect/effect/smoke/bad /obj/effect/effect/smoke/bad
time_to_live = 200 time_to_live = 600
//var/list/projectiles
/obj/effect/effect/smoke/bad/Move() /obj/effect/effect/smoke/bad/Move()
..() ..()
@@ -235,70 +234,25 @@ steam.start() -- spawns the effect
/obj/effect/effect/smoke/bad/affect(var/mob/living/carbon/M) /obj/effect/effect/smoke/bad/affect(var/mob/living/carbon/M)
if (!..()) if (!..())
return 0 return 0
M.drop_item()
M.adjustOxyLoss(1) M.adjustOxyLoss(1)
if (M.coughedtime != 1) if(prob(25))
M.coughedtime = 1
M.emote("cough") M.emote("cough")
spawn ( 20 )
M.coughedtime = 0
/obj/effect/effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) /* Not feasile until a later date
if(air_group || (height==0)) return 1 /obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj)
if(istype(mover, /obj/item/projectile/beam)) ..()
var/obj/item/projectile/beam/B = mover if(istype(M, /obj/item/projectile/beam))
var/obj/item/projectile/beam/B = M
if(!(B in projectiles))
B.damage = (B.damage/2) B.damage = (B.damage/2)
projectiles += B
destroyed_event.register(B, src, /obj/effect/effect/smoke/bad/proc/on_projectile_delete)
world << "Damage is: [B.damage]"
return 1 return 1
/////////////////////////////////////////////
// Sleep smoke
/////////////////////////////////////////////
/obj/effect/effect/smoke/sleepy /obj/effect/effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj)
projectiles -= proj
/obj/effect/effect/smoke/sleepy/Move() */
..()
for(var/mob/living/carbon/M in get_turf(src))
affect(M)
/obj/effect/effect/smoke/sleepy/affect(mob/living/carbon/M as mob )
if (!..())
return 0
M.drop_item()
M:sleeping += 1
if (M.coughedtime != 1)
M.coughedtime = 1
M.emote("cough")
spawn ( 20 )
M.coughedtime = 0
/////////////////////////////////////////////
// Mustard Gas
/////////////////////////////////////////////
/obj/effect/effect/smoke/mustard
name = "mustard gas"
icon_state = "mustard"
/obj/effect/effect/smoke/mustard/Move()
..()
for(var/mob/living/carbon/human/R in get_turf(src))
affect(R)
/obj/effect/effect/smoke/mustard/affect(var/mob/living/carbon/human/R)
if (!..())
return 0
if (R.wear_suit != null)
return 0
R.burn_skin(0.75)
if (R.coughedtime != 1)
R.coughedtime = 1
R.emote("gasp")
spawn (20)
R.coughedtime = 0
R.updatehealth()
return
///////////////////////////////////////////// /////////////////////////////////////////////
// Smoke spread // Smoke spread
@@ -321,7 +275,7 @@ steam.start() -- spawns the effect
if(direct) if(direct)
direction = direct direction = direct
/datum/effect/effect/system/smoke_spread/start() /datum/effect/effect/system/smoke_spread/start(var/I)
var/i = 0 var/i = 0
for(i=0, i<src.number, i++) for(i=0, i<src.number, i++)
if(src.total_smoke > 20) if(src.total_smoke > 20)
@@ -331,6 +285,7 @@ steam.start() -- spawns the effect
src.location = get_turf(holder) src.location = get_turf(holder)
var/obj/effect/effect/smoke/smoke = PoolOrNew(smoke_type, src.location) var/obj/effect/effect/smoke/smoke = PoolOrNew(smoke_type, src.location)
src.total_smoke++ src.total_smoke++
smoke.color = I
var/direction = src.direction var/direction = src.direction
if(!direction) if(!direction)
if(src.cardinals) if(src.cardinals)
@@ -348,14 +303,6 @@ steam.start() -- spawns the effect
/datum/effect/effect/system/smoke_spread/bad /datum/effect/effect/system/smoke_spread/bad
smoke_type = /obj/effect/effect/smoke/bad smoke_type = /obj/effect/effect/smoke/bad
/datum/effect/effect/system/smoke_spread/sleepy
smoke_type = /obj/effect/effect/smoke/sleepy
/datum/effect/effect/system/smoke_spread/mustard
smoke_type = /obj/effect/effect/smoke/mustard
///////////////////////////////////////////// /////////////////////////////////////////////
//////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack) //////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack)
/// just pass in the object to attach it to in set_up /// just pass in the object to attach it to in set_up

View File

@@ -86,6 +86,17 @@
qdel(src) qdel(src)
return return
/obj/structure/closet/body_bag/proc/get_occupants()
var/list/occupants = list()
for(var/mob/living/carbon/human/H in contents)
occupants += H
return occupants
/obj/structure/closet/body_bag/proc/update(var/broadcast=0)
if(istype(loc, /obj/structure/morgue))
var/obj/structure/morgue/M = loc
M.update(broadcast)
/obj/structure/closet/body_bag/update_icon() /obj/structure/closet/body_bag/update_icon()
if(opened) if(opened)
icon_state = icon_opened icon_state = icon_opened

View File

@@ -208,6 +208,76 @@
processing_objects += src processing_objects += src
return 1 return 1
//Glowsticks
/obj/item/device/flashlight/glowstick
name = "green glowstick"
desc = "A green military-grade glowstick."
w_class = 2.0
brightness_on = 4
light_power = 2
light_color = "#49F37C"
icon_state = "glowstick"
item_state = "glowstick"
var/fuel = 0
/obj/item/device/flashlight/glowstick/New()
fuel = rand(1600, 2000)
..()
/obj/item/device/flashlight/glowstick/process()
fuel = max(fuel - 1, 0)
if(!fuel || !on)
turn_off()
if(!fuel)
src.icon_state = "[initial(icon_state)]-empty"
processing_objects -= src
/obj/item/device/flashlight/glowstick/proc/turn_off()
on = 0
update_icon()
/obj/item/device/flashlight/glowstick/attack_self(mob/user)
if(!fuel)
user << "<span class='notice'>The glowstick has already been turned on.</span>"
return
if(on)
return
. = ..()
if(.)
user.visible_message("<span class='notice'>[user] cracks and shakes the glowstick.</span>", "<span class='notice'>You crack and shake the glowstick, turning it on!</span>")
processing_objects += src
/obj/item/device/flashlight/glowstick/red
name = "red glowstick"
desc = "A red military-grade glowstick."
light_color = "#FC0F29"
icon_state = "glowstick_red"
item_state = "glowstick_red"
/obj/item/device/flashlight/glowstick/blue
name = "blue glowstick"
desc = "A blue military-grade glowstick."
light_color = "#599DFF"
icon_state = "glowstick_blue"
item_state = "glowstick_blue"
/obj/item/device/flashlight/glowstick/orange
name = "orange glowstick"
desc = "A orange military-grade glowstick."
light_color = "#FA7C0B"
icon_state = "glowstick_orange"
item_state = "glowstick_orange"
/obj/item/device/flashlight/glowstick/yellow
name = "yellow glowstick"
desc = "A yellow military-grade glowstick."
light_color = "#FEF923"
icon_state = "glowstick_yellow"
item_state = "glowstick_yellow"
/obj/item/device/flashlight/slime /obj/item/device/flashlight/slime
gender = PLURAL gender = PLURAL
name = "glowing slime extract" name = "glowing slime extract"

View File

@@ -0,0 +1,140 @@
/obj/item/device/closet_painter
name = "closet painter"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
item_state = "flight"
var/colour = "plain"
var/colour_secure = "plain"
var/list/colours = list(
"plain" = list("open" = "open", "closed" = "closed"),
"blue" = list("open" = "open", "closed" = "blue"),
"mixed" = list("open" = "open", "closed" = "mixed"),
"grey" = list("open" = "open", "closed" = "grey"),
"green" = list("open" = "open", "closed" = "green"),
"orange" = list("open" = "open", "closed" = "orange"),
"pink" = list("open" = "open", "closed" = "pink"),
"red" = list("open" = "open", "closed" = "red"),
"white" = list("open" = "open", "closed" = "white"),
"yellow" = list("open" = "open", "closed" = "yellow"),
"black" = list("open" = "open", "closed" = "black"),
"bio" = list("open" = "bioopen", "closed" = "bio"),
"bio-virology" = list("open" = "bio_virologyopen", "closed" = "bio_virology"),
"bio-security" = list("open" = "bio_securityopen", "closed" = "bio_security"),
"bio-janitor" = list("open" = "bio_janitoropen", "closed" = "bio_janitor"),
"bio-scientist" = list("open" = "bio_scientistopen", "closed" = "bio_scientist"),
"bombsuit" = list("open" = "bombsuitopen", "closed" = "bombsuit"),
"bombsuit-security" = list("open" = "bombsuitsecopen", "closed" = "bombsuitsec"),
"full-red" = list("open" = "syndicateopen", "closed" = "syndicate"),
"full-green" = list("open" = "syndicate1open", "closed" = "syndicate1"),
"full-purple" = list("open" = "aclosetopen", "closed" = "acloset"),
"mining" = list("open" = "miningopen", "closed" = "mining"),
"emergency" = list("open" = "emergencyopen", "closed" = "emergency"),
"fire" = list("open" = "fireclosetopen", "closed" = "firecloset"),
"tool" = list("open" = "toolclosetopen", "closed" = "toolcloset"),
"radiation" = list("open" = "toolclosetopen", "closed" = "radsuitcloset")
)
var/list/colours_secure = list(
"plain" = list("open" = "open", "closed" = "secure", "locked" = "secure1", "broken" = "securebroken", "off" = "secureoff"),
"medical-red" = list("open" = "medicalopen", "closed" = "medical", "locked" = "medical1", "broken" = "medicalbroken", "off" = "medicaloff"),
"medical-green" = list("open" = "securemedopen", "closed" = "securemed", "locked" = "securemed1", "broken" = "securemedbroken", "off" = "securemedoff"),
"CMO" = list("open" = "cmosecureopen", "closed" = "cmosecure", "locked" = "cmosecure1", "broken" = "cmosecurebroken", "off" = "cmosecureoff"),
"cargo" = list("open" = "securecargoopen", "closed" = "securecargo", "locked" = "securecargo1", "broken" = "securecargobroken", "off" = "securecargooff"),
"mining" = list("open" = "miningsecopen", "closed" = "miningsec", "locked" = "miningsec1", "broken" = "miningsecbroken", "off" = "miningsecoff"),
"QM" = list("open" = "secureqmopen", "closed" = "secureqm", "locked" = "secureqm1", "broken" = "secureqmbroken", "off" = "secureqmoff"),
"hydroponics" = list("open" = "hydrosecureopen", "closed" = "hydrosecure", "locked" = "hydrosecure1", "broken" = "hydrosecurebroken", "off" = "hydrosecureoff"),
"atmospherics" = list("open" = "secureatmopen", "closed" = "secureatm", "locked" = "secureatm1", "broken" = "secureatmbroken", "off" = "secureatmoff"),
"engineer" = list("open" = "secureengopen", "closed" = "secureeng", "locked" = "secureeng1", "broken" = "secureengbroken", "off" = "secureengoff"),
"CE" = list("open" = "secureceopen", "closed" = "securece", "locked" = "securece1", "broken" = "securecebroken", "off" = "secureceoff"),
"electrical" = list("open" = "toolclosetopen", "closed" = "secureengelec", "locked" = "secureengelec1", "broken" = "secureengelecbroken", "off" = "secureengelecoff"),
"welding" = list("open" = "toolclosetopen", "closed" = "secureengweld", "locked" = "secureengweld1", "broken" = "secureengweldbroken", "off" = "secureengweldoff"),
"research" = list("open" = "secureresopen", "closed" = "secureres", "locked" = "secureres1", "broken" = "secureresbroken", "off" = "secureresoff"),
"RD" = list("open" = "rdsecureopen", "closed" = "rdsecure", "locked" = "rdsecure1", "broken" = "rdsecurebroken", "off" = "rdsecureoff"),
"security" = list("open" = "secopen", "closed" = "sec", "locked" = "sec1", "broken" = "secbroken", "off" = "secoff"),
"warden" = list("open" = "wardensecureopen", "closed" = "wardensecure", "locked" = "wardensecure1", "broken" = "wardensecurebroken", "off" = "wardensecureoff"),
"HoS" = list("open" = "hossecureopen", "closed" = "hossecure", "locked" = "hossecure1", "broken" = "hossecurebroken", "off" = "hossecureoff"),
"HoP" = list("open" = "hopsecureopen", "closed" = "hopsecure", "locked" = "hopsecure1", "broken" = "hopsecurebroken", "off" = "hopsecureoff"),
"Captain" = list("open" = "capsecureopen", "closed" = "capsecure", "locked" = "capsecure1", "broken" = "capsecurebroken", "off" = "capsecureoff")
)
/obj/item/device/closet_painter/afterattack(atom/A, var/mob/user, proximity)
if(!proximity)
return
if(!istype(A,/obj/structure/closet))
user << "<span class='warning'>\The [src] can only be used on closets.</span>"
return
var/config_error
if(istype(A,/obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/F = A
if(F.broken)
user << "<span class='warning'>\The [src] cannot paint broken closets.</span>"
return
var/list/colour_data = colours_secure[colour_secure]
if(!islist(colour_data))
config_error = 1
if(!config_error)
F.icon_opened = colour_data["open"]
F.icon_closed = colour_data["closed"]
F.icon_locked = colour_data["locked"]
F.icon_broken = colour_data["broken"]
F.icon_off = colour_data["off"]
F.update_icon()
else
var/obj/structure/closet/F = A
var/list/colour_data = colours[colour]
if(!islist(colour_data))
config_error = 1
if(!config_error)
F.icon_opened = colour_data["open"]
F.icon_closed = colour_data["closed"]
F.update_icon()
if(config_error)
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
return
/obj/item/device/closet_painter/attack_self(var/mob/user)
var/choice = input("Do you wish to change the regular closet colour or the secure closet colour?") as null|anything in list("Regular Closet Colour","Secure Closet Colour")
if(choice == "Regular Closet Colour")
choose_colour()
else if(choice == "Secure Closet Colour")
choose_colour_secure()
/obj/item/device/closet_painter/examine(mob/user)
..(user)
user << "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme."
/obj/item/device/closet_painter/verb/choose_colour()
set name = "Choose Colour"
set desc = "Choose a regular closet painter colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
var/new_colour = input("Select a colour.") as null|anything in colours
if(new_colour && !isnull(colours[new_colour]))
colour = new_colour
usr << "<span class='notice'>You set \the [src] regular closet colour to '[colour]'.</span>"
/obj/item/device/closet_painter/verb/choose_colour_secure()
set name = "Choose Secure Colour"
set desc = "Choose a secure closet painter colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
var/new_colour_secure = input("Select a colour.") as null|anything in colours_secure
if(new_colour_secure && !isnull(colours_secure[new_colour_secure]))
colour_secure = new_colour_secure
usr << "<span class='notice'>You set \the [src] secure closet colour to '[colour_secure]'.</span>"

View File

@@ -31,7 +31,7 @@
/obj/item/device/suit_cooling_unit/New() /obj/item/device/suit_cooling_unit/New()
processing_objects |= src processing_objects |= src
cell = new/obj/item/weapon/cell() //comes with the crappy default power cell - high-capacity ones shouldn't be hard to find cell = new/obj/item/weapon/cell/high() //comes not with the crappy default power cell - because this is dedicated EVA equipment
cell.loc = src cell.loc = src
/obj/item/device/suit_cooling_unit/process() /obj/item/device/suit_cooling_unit/process()

View File

@@ -155,6 +155,10 @@ datum/uplink_item/dd_SortValue()
name = "9mm" name = "9mm"
path = /obj/item/ammo_magazine/mc9mm path = /obj/item/ammo_magazine/mc9mm
/datum/uplink_item/item/ammo/c45m
name = ".45"
path = /obj/item/ammo_magazine/c45m
/datum/uplink_item/item/ammo/darts /datum/uplink_item/item/ammo/darts
name = "Darts" name = "Darts"
path = /obj/item/ammo_magazine/chemdart path = /obj/item/ammo_magazine/chemdart
@@ -163,6 +167,14 @@ datum/uplink_item/dd_SortValue()
name = "14.5mm" name = "14.5mm"
path = /obj/item/weapon/storage/box/sniperammo path = /obj/item/weapon/storage/box/sniperammo
/datum/uplink_item/item/ammo/a556
name = "5.56mm"
path = /obj/item/ammo_magazine/a556
/datum/uplink_item/item/ammo/a556/ap
name = "5.56mm AP"
path = /obj/item/ammo_magazine/a556/ap
/datum/uplink_item/item/ammo/a10mm /datum/uplink_item/item/ammo/a10mm
name = "10mm" name = "10mm"
path = /obj/item/ammo_magazine/a10mm path = /obj/item/ammo_magazine/a10mm
@@ -171,6 +183,23 @@ datum/uplink_item/dd_SortValue()
name = "7.62mm" name = "7.62mm"
path = /obj/item/ammo_magazine/a762 path = /obj/item/ammo_magazine/a762
/datum/uplink_item/item/ammo/a762/ap
name = "7.62mm AP"
path = /obj/item/ammo_magazine/a762/ap
/datum/uplink_item/item/ammo/g12
name = "12 gauge"
path = /obj/item/ammo_magazine/g12
/datum/uplink_item/item/ammo/g12/beanbag
name = "12 gauge beanbag"
path = /obj/item/ammo_magazine/g12/beanbag
item_cost = 1 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/pellet
name = "12 gauge pellet"
path = /obj/item/ammo_magazine/g12/pellet
/*************************************** /***************************************
* Highly Visible and Dangerous Weapons * * Highly Visible and Dangerous Weapons *
***************************************/ ***************************************/
@@ -192,10 +221,10 @@ datum/uplink_item/dd_SortValue()
item_cost = 5 item_cost = 5
path = /obj/item/weapon/gun/energy/crossbow path = /obj/item/weapon/gun/energy/crossbow
/datum/uplink_item/item/visible_weapons/g9mm /datum/uplink_item/item/visible_weapons/silenced_45
name = "Silenced 9mm" name = "Silenced .45"
item_cost = 5 item_cost = 5
path = /obj/item/weapon/storage/box/syndie_kit/g9mm path = /obj/item/weapon/gun/projectile/silenced
/datum/uplink_item/item/visible_weapons/riggedlaser /datum/uplink_item/item/visible_weapons/riggedlaser
name = "Exosuit Rigged Laser" name = "Exosuit Rigged Laser"
@@ -223,6 +252,36 @@ datum/uplink_item/dd_SortValue()
item_cost = 7 item_cost = 7
path = /obj/item/weapon/gun/projectile/automatic/sts35 path = /obj/item/weapon/gun/projectile/automatic/sts35
/datum/uplink_item/item/visible_weapons/combatshotgun
name = "Combat Shotgun"
item_cost = 7
path = /obj/item/weapon/gun/projectile/shotgun/pump/combat
/datum/uplink_item/item/visible_weapons/egun
name = "Energy Gun"
item_cost = 5
path = /obj/item/weapon/gun/energy/gun
/datum/uplink_item/item/visible_weapons/lasercannon
name = "Laser Cannon"
item_cost = 6
path = /obj/item/weapon/gun/energy/lasercannon
/datum/uplink_item/item/visible_weapons/lasercarbine
name = "Laser Carbine"
item_cost = 7
path = /obj/item/weapon/gun/energy/laser
/datum/uplink_item/item/visible_weapons/ionrifle
name = "Ion Rifle"
item_cost = 5
path = /obj/item/weapon/gun/energy/ionrifle
/datum/uplink_item/item/visible_weapons/xray
name = "Xray Gun"
item_cost = 7
path = /obj/item/weapon/gun/energy/xray
/************************************* /*************************************
* Stealthy and Inconspicuous Weapons * * Stealthy and Inconspicuous Weapons *
*************************************/ *************************************/
@@ -387,10 +446,6 @@ datum/uplink_item/dd_SortValue()
item_cost = 20 item_cost = 20
path = /obj/item/weapon/circuitboard/teleporter path = /obj/item/weapon/circuitboard/teleporter
/datum/uplink_item/item/tools/teleporter/New()
..()
antag_roles = list(MODE_MERCENARY)
/datum/uplink_item/item/tools/money /datum/uplink_item/item/tools/money
name = "Operations Funding" name = "Operations Funding"
item_cost = 3 item_cost = 3
@@ -573,7 +628,6 @@ datum/uplink_item/dd_SortValue()
/datum/uplink_item/item/badassery/surplus/New() /datum/uplink_item/item/badassery/surplus/New()
..() ..()
antag_roles = list(MODE_MERCENARY)
desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers." desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers."
/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc) /datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc)
@@ -622,7 +676,6 @@ var/image/default_abstract_uplink_icon
..() ..()
name = "[command_name()] Update Announcement" name = "[command_name()] Update Announcement"
desc = "Causes a falsified [command_name()] Update. Triggers immediately after supplying additional data." desc = "Causes a falsified [command_name()] Update. Triggers immediately after supplying additional data."
antag_roles = list(MODE_MERCENARY)
/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args) /datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args)
command_announcement.Announce(args.["message"], args.["title"]) command_announcement.Announce(args.["message"], args.["title"])
@@ -633,10 +686,6 @@ var/image/default_abstract_uplink_icon
desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!" desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!"
item_cost = 4 item_cost = 4
/datum/uplink_item/abstract/announcements/fake_crew_arrival/New()
..()
antag_roles = list(MODE_MERCENARY)
/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args) /datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args)
if(!user) if(!user)
return 0 return 0

View File

@@ -38,7 +38,7 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
/datum/uplink_random_selection/default/New() /datum/uplink_random_selection/default/New()
..() ..()
items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/g9mm) items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/silenced_45)
items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/mc9mm) items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/mc9mm)
items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/revolver) items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/revolver)
items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/a357) items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/a357)

View File

@@ -2,8 +2,8 @@
name = "medical pack" name = "medical pack"
singular_name = "medical pack" singular_name = "medical pack"
icon = 'icons/obj/items.dmi' icon = 'icons/obj/items.dmi'
amount = 5 amount = 10
max_amount = 5 max_amount = 10
w_class = 2 w_class = 2
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
@@ -65,24 +65,43 @@
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.open == 0) if(affecting.open == 0)
if(!affecting.bandage()) if(affecting.is_bandaged())
user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>" user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>"
return 1 return 1
else else
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
var/used = 0
for (var/datum/wound/W in affecting.wounds) for (var/datum/wound/W in affecting.wounds)
if (W.internal) if (W.internal)
continue continue
if(W.bandaged)
continue
if(used == amount)
break
if(!do_mob(user, M, W.damage/5))
user << "<span class='notice'>You must stand still to bandage wounds.</span>"
break
if (W.current_stage <= W.max_bleeding_stage) if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] bandages [W.desc] on [M]'s [affecting.name].</span>", \ user.visible_message("<span class='notice'>\The [user] bandages \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You bandage [W.desc] on [M]'s [affecting.name].</span>" ) "<span class='notice'>You bandage \a [W.desc] on [M]'s [affecting.name].</span>" )
//H.add_side_effect("Itch") //H.add_side_effect("Itch")
else if (istype(W,/datum/wound/bruise)) else if (W.damage_type == BRUISE)
user.visible_message("<span class='notice'>\The [user] places a bruise patch over [W.desc] on [M]'s [affecting.name].</span>", \ user.visible_message("<span class='notice'>\The [user] places a bruise patch over \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You place a bruise patch over [W.desc] on [M]'s [affecting.name].</span>" ) "<span class='notice'>You place a bruise patch over \a [W.desc] on [M]'s [affecting.name].</span>" )
else else
user.visible_message("<span class='notice'>\The [user] places a bandaid over [W.desc] on [M]'s [affecting.name].</span>", \ user.visible_message("<span class='notice'>\The [user] places a bandaid over \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You place a bandaid over [W.desc] on [M]'s [affecting.name].</span>" ) "<span class='notice'>You place a bandaid over \a [W.desc] on [M]'s [affecting.name].</span>" )
use(1) W.bandage()
used++
affecting.update_damages()
if(used == amount)
if(affecting.is_bandaged())
user << "<span class='warning'>\The [src] is used up.</span>"
else
user << "<span class='warning'>\The [src] is used up, but there are more wounds to treat on \the [affecting.name].</span>"
use(used)
else else
if (can_operate(H)) //Checks if mob is lying down on table for surgery if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src)) if (do_surgery(H,user,src))
@@ -108,13 +127,19 @@
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.open == 0) if(affecting.open == 0)
if(!affecting.salve()) if(affecting.is_salved())
user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>" user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>"
return 1 return 1
else else
user.visible_message("<span class='notice'>[user] salves wounds on [M]'s [affecting.name].</span>", \ user.visible_message("<span class='notice'>\The [user] starts salving wounds on [M]'s [affecting.name].</span>", \
"<span class='notice'>You salve wounds on [M]'s [affecting.name].</span>" ) "<span class='notice'>You start salving the wounds on [M]'s [affecting.name].</span>" )
if(!do_mob(user, M, 10))
user << "<span class='notice'>You must stand still to salve wounds.</span>"
return 1
user.visible_message("<span class='notice'>[user] salved wounds on [M]'s [affecting.name].</span>", \
"<span class='notice'>You salved wounds on [M]'s [affecting.name].</span>" )
use(1) use(1)
affecting.salve()
else else
if (can_operate(H)) //Checks if mob is lying down on table for surgery if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src)) if (do_surgery(H,user,src))
@@ -127,7 +152,7 @@
singular_name = "advanced trauma kit" singular_name = "advanced trauma kit"
desc = "An advanced trauma kit for severe injuries." desc = "An advanced trauma kit for severe injuries."
icon_state = "traumakit" icon_state = "traumakit"
heal_brute = 12 heal_brute = 0
origin_tech = list(TECH_BIO = 1) origin_tech = list(TECH_BIO = 1)
/obj/item/stack/medical/advanced/bruise_pack/attack(mob/living/carbon/M as mob, mob/user as mob) /obj/item/stack/medical/advanced/bruise_pack/attack(mob/living/carbon/M as mob, mob/user as mob)
@@ -139,29 +164,43 @@
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.open == 0) if(affecting.open == 0)
var/bandaged = affecting.bandage() if(affecting.is_bandaged() && affecting.is_disinfected())
var/disinfected = affecting.disinfect()
if(!(bandaged || disinfected))
user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been treated.</span>" user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been treated.</span>"
return 1 return 1
else else
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
var/used = 0
for (var/datum/wound/W in affecting.wounds) for (var/datum/wound/W in affecting.wounds)
if (W.internal) if (W.internal)
continue continue
if (W.bandaged && W.disinfected)
continue
if(used == amount)
break
if(!do_mob(user, M, W.damage/5))
user << "<span class='notice'>You must stand still to bandage wounds.</span>"
break
if (W.current_stage <= W.max_bleeding_stage) if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] cleans [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.</span>", \ user.visible_message("<span class='notice'>\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.</span>", \
"<span class='notice'>You clean and seal [W.desc] on [M]'s [affecting.name].</span>" ) "<span class='notice'>You clean and seal \a [W.desc] on [M]'s [affecting.name].</span>" )
//H.add_side_effect("Itch") else if (W.damage_type == BRUISE)
else if (istype(W,/datum/wound/bruise)) user.visible_message("<span class='notice'>\The [user] places a medical patch over \a [W.desc] on [M]'s [affecting.name].</span>", \
user.visible_message("<span class='notice'>\The [user] places a medical patch over [W.desc] on [M]'s [affecting.name].</span>", \ "<span class='notice'>You place a medical patch over \a [W.desc] on [M]'s [affecting.name].</span>" )
"<span class='notice'>You place a medical patch over [W.desc] on [M]'s [affecting.name].</span>" )
else else
user.visible_message("<span class='notice'>\The [user] smears some bioglue over [W.desc] on [M]'s [affecting.name].</span>", \ user.visible_message("<span class='notice'>\The [user] smears some bioglue over \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You smear some bioglue over [W.desc] on [M]'s [affecting.name].</span>" ) "<span class='notice'>You smear some bioglue over \a [W.desc] on [M]'s [affecting.name].</span>" )
if (bandaged) W.bandage()
affecting.heal_damage(heal_brute,0) W.disinfect()
use(1) W.heal_damage(heal_brute)
used++
affecting.update_damages()
if(used == amount)
if(affecting.is_bandaged())
user << "<span class='warning'>\The [src] is used up.</span>"
else
user << "<span class='warning'>\The [src] is used up, but there are more wounds to treat on \the [affecting.name].</span>"
use(used)
else else
if (can_operate(H)) //Checks if mob is lying down on table for surgery if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src)) if (do_surgery(H,user,src))
@@ -174,7 +213,7 @@
singular_name = "advanced burn kit" singular_name = "advanced burn kit"
desc = "An advanced treatment kit for severe burns." desc = "An advanced treatment kit for severe burns."
icon_state = "burnkit" icon_state = "burnkit"
heal_burn = 12 heal_burn = 0
origin_tech = list(TECH_BIO = 1) origin_tech = list(TECH_BIO = 1)
@@ -187,14 +226,20 @@
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.open == 0) if(affecting.open == 0)
if(!affecting.salve()) if(affecting.is_salved())
user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>" user << "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>"
return 1 return 1
else else
user.visible_message("<span class='notice'>\The [user] starts salving wounds on [M]'s [affecting.name].</span>", \
"<span class='notice'>You start salving the wounds on [M]'s [affecting.name].</span>" )
if(!do_mob(user, M, 10))
user << "<span class='notice'>You must stand still to salve wounds.</span>"
return 1
user.visible_message( "<span class='notice'>[user] covers wounds on [M]'s [affecting.name] with regenerative membrane.</span>", \ user.visible_message( "<span class='notice'>[user] covers wounds on [M]'s [affecting.name] with regenerative membrane.</span>", \
"<span class='notice'>You cover wounds on [M]'s [affecting.name] with regenerative membrane.</span>" ) "<span class='notice'>You cover wounds on [M]'s [affecting.name] with regenerative membrane.</span>" )
affecting.heal_damage(0,heal_burn) affecting.heal_damage(0,heal_burn)
use(1) use(1)
affecting.salve()
else else
if (can_operate(H)) //Checks if mob is lying down on table for surgery if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src)) if (do_surgery(H,user,src))

View File

@@ -68,6 +68,7 @@
icon_state = "emag" icon_state = "emag"
item_state = "card-id" item_state = "card-id"
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
var/default_uses = 10
var/uses = 10 var/uses = 10
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user) /obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user)
@@ -87,6 +88,12 @@
qdel(src) qdel(src)
return 1 return 1
/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob)
if(istype(O, /obj/item/device/telecrystal))
src.uses += default_uses/2 //Adds half the default amount of uses which is more than you get per TC when buying, as to balance the utility of having multiple emags vs one heavily usable one
usr << "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>"
qdel(O)
/obj/item/weapon/card/id /obj/item/weapon/card/id
name = "identification card" name = "identification card"

View File

@@ -36,6 +36,12 @@
board_type = "atm" board_type = "atm"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/item/weapon/circuitboard/request
name = T_BOARD("reques console")
build_path = /obj/machinery/requests_console
board_type = "request"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
//Alarm //Alarm
/obj/item/weapon/circuitboard/firealarm /obj/item/weapon/circuitboard/firealarm
@@ -70,6 +76,18 @@
board_type = "holopad" board_type = "holopad"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/item/weapon/circuitboard/scanner_console
name = T_BOARD("body scanner console")
build_path = /obj/machinery/body_scanconsole
board_type = "console"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/sleeper_console
name = T_BOARD("sleeper console")
build_path = /obj/machinery/sleep_console
board_type = "console"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
//Machine //Machine
/obj/item/weapon/circuitboard/photocopier /obj/item/weapon/circuitboard/photocopier
@@ -78,10 +96,10 @@
board_type = "photocopier" board_type = "photocopier"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1, /obj/item/weapon/stock_parts/scanning_module = 1,
"/obj/item/weapon/stock_parts/motor" = 1, /obj/item/weapon/stock_parts/motor = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1) /obj/item/weapon/stock_parts/matter_bin = 1)
/obj/item/weapon/circuitboard/fax /obj/item/weapon/circuitboard/fax
name = T_BOARD("fax") name = T_BOARD("fax")
@@ -89,19 +107,19 @@
board_type = "fax" board_type = "fax"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1, /obj/item/weapon/stock_parts/scanning_module = 1,
"/obj/item/weapon/stock_parts/motor" = 1, /obj/item/weapon/stock_parts/motor = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1) /obj/item/weapon/stock_parts/matter_bin = 1)
/obj/item/weapon/circuitboard/conveyor /obj/item/weapon/circuitboard/conveyor
name = T_BOARD("conveyor") name = T_BOARD("conveyor")
build_path = /obj/machinery/conveyor build_path = /obj/machinery/conveyor
board_type = "conveyor" board_type = "conveyor"
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/gear" = 2, /obj/item/weapon/stock_parts/gear = 2,
"/obj/item/weapon/stock_parts/motor" = 2, /obj/item/weapon/stock_parts/motor = 2,
"/obj/item/stack/cable_coil" = 5) /obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/microwave /obj/item/weapon/circuitboard/microwave
name = T_BOARD("microwave") name = T_BOARD("microwave")
@@ -109,29 +127,17 @@
board_type = "microwave" board_type = "microwave"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/console_screen" = 1, /obj/item/weapon/stock_parts/console_screen = 1,
"/obj/item/weapon/stock_parts/motor" = 1, /obj/item/weapon/stock_parts/motor = 1,
"/obj/item/weapon/stock_parts/capacitor" = 1) /obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/vending
name = T_BOARD("vending")
build_path = /obj/machinery/vending
board_type = "vending"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/stock_parts/motor" = 2,
"/obj/item/weapon/stock_parts/spring" = 2,
"/obj/item/stack/material/glass/reinforced" = 2)
/obj/item/weapon/circuitboard/recharger /obj/item/weapon/circuitboard/recharger
name = T_BOARD("recharger") name = T_BOARD("recharger")
build_path = /obj/machinery/recharger build_path = /obj/machinery/recharger
board_type = "recharger" board_type = "recharger"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1, /obj/item/weapon/stock_parts/capacitor = 1,
"/obj/item/stack/cable_coil" = 5) /obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/recharger/wrecharger /obj/item/weapon/circuitboard/recharger/wrecharger
name = T_BOARD("wall recharger") name = T_BOARD("wall recharger")
@@ -144,18 +150,78 @@
board_type = "washing" board_type = "washing"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/motor" = 1, /obj/item/weapon/stock_parts/motor = 1,
"/obj/item/weapon/stock_parts/gear" = 2) /obj/item/weapon/stock_parts/gear = 2)
/obj/item/weapon/circuitboard/grinder /obj/item/weapon/circuitboard/grinder
name = T_BOARD("reagent grinder") name = T_BOARD("reagent grinder")
build_path = /obj/machinery/reagentgrinder build_path = /obj/machinery/reagentgrinder
board_type = "grinder" board_type = "grinder"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/motor" = 1, /obj/item/weapon/stock_parts/motor = 1,
"/obj/item/weapon/stock_parts/gear" = 1, /obj/item/weapon/stock_parts/gear = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1) /obj/item/weapon/reagent_containers/glass/beaker/large = 1)
/obj/item/weapon/circuitboard/teleporter_hub
name = T_BOARD("teleporter hub")
build_path = /obj/machinery/teleport/hub
board_type = "teleporter_hub"
// origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 4)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 4,
/obj/item/weapon/stock_parts/micro_laser = 4,
/obj/item/stack/cable_coil = 10)
/obj/item/weapon/circuitboard/teleporter_station
name = T_BOARD("teleporter station")
build_path = /obj/machinery/teleport/station
board_type = "teleporter_station"
// origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 3)
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/stack/cable_coil = 10)
/obj/item/weapon/circuitboard/body_scanner
name = T_BOARD("body scanner")
build_path = /obj/machinery/bodyscanner
board_type = "medpod"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 3,
/obj/item/stack/material/glass/reinforced = 2)
/obj/item/weapon/circuitboard/sleeper
name = T_BOARD("sleeper")
build_path = /obj/machinery/sleeper
board_type = "medpod"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 3,
/obj/item/weapon/reagent_containers/syringe = 3,
/obj/item/stack/material/glass/reinforced = 2)
/obj/item/weapon/circuitboard/dna_analyzer
name = T_BOARD("dna analyzer")
build_path = /obj/machinery/dnaforensics
board_type = "dna_analyzer"
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2, TECH_DATA = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/mass_driver
name = T_BOARD("mass driver")
build_path = /obj/machinery/mass_driver
board_type = "massdriver"
req_components = list(
/obj/item/weapon/stock_parts/gear = 2,
/obj/item/weapon/stock_parts/motor = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/spring = 1,
/obj/item/stack/cable_coil = 5)
//for testing - If this is still in when I commit, someone shoot me. --leaving in for now, shouldn't be able to get these on station anyways. //for testing - If this is still in when I commit, someone shoot me. --leaving in for now, shouldn't be able to get these on station anyways.
/obj/item/weapon/storage/box/frame_parts /obj/item/weapon/storage/box/frame_parts
@@ -175,7 +241,6 @@
new /obj/item/weapon/circuitboard/photocopier( src ) new /obj/item/weapon/circuitboard/photocopier( src )
new /obj/item/weapon/circuitboard/fax( src ) new /obj/item/weapon/circuitboard/fax( src )
new /obj/item/weapon/circuitboard/microwave( src ) new /obj/item/weapon/circuitboard/microwave( src )
new /obj/item/weapon/circuitboard/vending( src )
new /obj/item/weapon/circuitboard/washing( src ) new /obj/item/weapon/circuitboard/washing( src )
new /obj/item/weapon/stock_parts/scanning_module( src ) new /obj/item/weapon/stock_parts/scanning_module( src )
new /obj/item/weapon/stock_parts/motor( src ) new /obj/item/weapon/stock_parts/motor( src )

View File

@@ -8,5 +8,5 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 2) origin_tech = list(TECH_DATA = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1) /obj/item/weapon/stock_parts/manipulator = 1)

View File

@@ -8,10 +8,10 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3) origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
req_components = list( req_components = list(
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2, /obj/item/weapon/stock_parts/scanning_module = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1) /obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/clonescanner /obj/item/weapon/circuitboard/clonescanner
name = T_BOARD("cloning scanner") name = T_BOARD("cloning scanner")
@@ -19,8 +19,8 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2) origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1, /obj/item/weapon/stock_parts/scanning_module = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1, /obj/item/weapon/stock_parts/manipulator = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1, /obj/item/weapon/stock_parts/console_screen = 1,
"/obj/item/stack/cable_coil" = 2) /obj/item/stack/cable_coil = 2)

View File

@@ -8,6 +8,6 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2, /obj/item/weapon/stock_parts/capacitor = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1, /obj/item/weapon/stock_parts/scanning_module = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2) /obj/item/weapon/stock_parts/manipulator = 2)

View File

@@ -8,10 +8,10 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1, /obj/item/weapon/stock_parts/capacitor = 1,
"/obj/item/weapon/cell" = 1, /obj/item/weapon/cell = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1) /obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/miningdrillbrace /obj/item/weapon/circuitboard/miningdrillbrace
name = T_BOARD("mining drill brace") name = T_BOARD("mining drill brace")

View File

@@ -8,10 +8,10 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3) origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1) /obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/pacman/super /obj/item/weapon/circuitboard/pacman/super
name = T_BOARD("SUPERPACMAN-type generator") name = T_BOARD("SUPERPACMAN-type generator")

View File

@@ -7,18 +7,18 @@
build_path = "/obj/machinery/power/smes/buildable" build_path = "/obj/machinery/power/smes/buildable"
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4) origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30) req_components = list(/obj/item/weapon/smes_coil = 1, /obj/item/stack/cable_coil = 30)
/obj/item/weapon/circuitboard/batteryrack /obj/item/weapon/circuitboard/batteryrack
name = T_BOARD("battery rack PSU") name = T_BOARD("battery rack PSU")
build_path = "/obj/machinery/power/smes/batteryrack" build_path = "/obj/machinery/power/smes/batteryrack"
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
req_components = list("/obj/item/weapon/cell" = 3) req_components = list(/obj/item/weapon/cell = 3)
/obj/item/weapon/circuitboard/ghettosmes /obj/item/weapon/circuitboard/ghettosmes
name = T_BOARD("makeshift PSU") name = T_BOARD("makeshift PSU")
desc = "An APC circuit repurposed into some power storage device controller" desc = "An APC circuit repurposed into some power storage device controller"
build_path = "/obj/machinery/power/smes/batteryrack/makeshift" build_path = "/obj/machinery/power/smes/batteryrack/makeshift"
board_type = "machine" board_type = "machine"
req_components = list("/obj/item/weapon/cell" = 3) req_components = list(/obj/item/weapon/cell = 3)

View File

@@ -8,7 +8,7 @@
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list( req_components = list(
"/obj/item/stack/cable_coil" = 5, /obj/item/stack/cable_coil = 5,
"/obj/item/weapon/stock_parts/capacitor" = 2, /obj/item/weapon/stock_parts/capacitor = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/weapon/cell" = 1) /obj/item/weapon/cell = 1)

View File

@@ -8,8 +8,8 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 3) origin_tech = list(TECH_DATA = 3)
req_components = list( req_components = list(
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1) /obj/item/weapon/stock_parts/scanning_module = 1)
/obj/item/weapon/circuitboard/destructive_analyzer /obj/item/weapon/circuitboard/destructive_analyzer
name = T_BOARD("destructive analyzer") name = T_BOARD("destructive analyzer")
@@ -17,9 +17,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2) origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1, /obj/item/weapon/stock_parts/scanning_module = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1, /obj/item/weapon/stock_parts/manipulator = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1) /obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/autolathe /obj/item/weapon/circuitboard/autolathe
name = T_BOARD("autolathe") name = T_BOARD("autolathe")
@@ -27,9 +27,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 3, /obj/item/weapon/stock_parts/matter_bin = 3,
"/obj/item/weapon/stock_parts/manipulator" = 1, /obj/item/weapon/stock_parts/manipulator = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1) /obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/protolathe /obj/item/weapon/circuitboard/protolathe
name = T_BOARD("protolathe") name = T_BOARD("protolathe")
@@ -37,10 +37,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2, /obj/item/weapon/stock_parts/matter_bin = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2) /obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/circuit_imprinter /obj/item/weapon/circuitboard/circuit_imprinter
name = T_BOARD("circuit imprinter") name = T_BOARD("circuit imprinter")
@@ -48,9 +47,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1, /obj/item/weapon/stock_parts/manipulator = 1,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2) /obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/mechfab /obj/item/weapon/circuitboard/mechfab
name = "Circuit board (Exosuit Fabricator)" name = "Circuit board (Exosuit Fabricator)"
@@ -58,7 +57,7 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine" board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2, /obj/item/weapon/stock_parts/matter_bin = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1, /obj/item/weapon/stock_parts/manipulator = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1) /obj/item/weapon/stock_parts/console_screen = 1)

View File

@@ -8,12 +8,12 @@
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, /obj/item/weapon/stock_parts/manipulator/pico = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1, /obj/item/weapon/stock_parts/subspace/transmitter = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1, /obj/item/weapon/stock_parts/subspace/crystal = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1, /obj/item/weapon/stock_parts/subspace/amplifier = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1, /obj/item/weapon/stock_parts/console_screen = 1,
"/obj/item/stack/cable_coil" = 5) /obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/shield_gen /obj/item/weapon/circuitboard/shield_gen
name = T_BOARD("bubble shield generator") name = T_BOARD("bubble shield generator")
@@ -21,12 +21,12 @@
build_path = "/obj/machinery/shield_gen" build_path = "/obj/machinery/shield_gen"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, /obj/item/weapon/stock_parts/manipulator/pico = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1, /obj/item/weapon/stock_parts/subspace/transmitter = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1, /obj/item/weapon/stock_parts/subspace/crystal = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1, /obj/item/weapon/stock_parts/subspace/amplifier = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1, /obj/item/weapon/stock_parts/console_screen = 1,
"/obj/item/stack/cable_coil" = 5) /obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/shield_cap /obj/item/weapon/circuitboard/shield_cap
name = T_BOARD("shield capacitor") name = T_BOARD("shield capacitor")
@@ -34,9 +34,9 @@
build_path = "/obj/machinery/shield_capacitor" build_path = "/obj/machinery/shield_capacitor"
origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4) origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, /obj/item/weapon/stock_parts/manipulator/pico = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 1, /obj/item/weapon/stock_parts/subspace/filter = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 1, /obj/item/weapon/stock_parts/subspace/treatment = 1,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1, /obj/item/weapon/stock_parts/subspace/analyzer = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1, /obj/item/weapon/stock_parts/console_screen = 1,
"/obj/item/stack/cable_coil" = 5) /obj/item/stack/cable_coil = 5)

View File

@@ -10,69 +10,69 @@
build_path = "/obj/machinery/telecomms/receiver" build_path = "/obj/machinery/telecomms/receiver"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1, /obj/item/weapon/stock_parts/subspace/ansible = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1, /obj/item/weapon/stock_parts/subspace/filter = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/weapon/stock_parts/micro_laser" = 1) /obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/telecomms/hub /obj/item/weapon/circuitboard/telecomms/hub
name = T_BOARD("hub mainframe") name = T_BOARD("hub mainframe")
build_path = "/obj/machinery/telecomms/hub" build_path = "/obj/machinery/telecomms/hub"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2) /obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/telecomms/relay /obj/item/weapon/circuitboard/telecomms/relay
name = T_BOARD("relay mainframe") name = T_BOARD("relay mainframe")
build_path = "/obj/machinery/telecomms/relay" build_path = "/obj/machinery/telecomms/relay"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3) origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2) /obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/telecomms/bus /obj/item/weapon/circuitboard/telecomms/bus
name = T_BOARD("bus mainframe") name = T_BOARD("bus mainframe")
build_path = "/obj/machinery/telecomms/bus" build_path = "/obj/machinery/telecomms/bus"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/stack/cable_coil" = 1, /obj/item/stack/cable_coil = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1) /obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/telecomms/processor /obj/item/weapon/circuitboard/telecomms/processor
name = T_BOARD("processor unit") name = T_BOARD("processor unit")
build_path = "/obj/machinery/telecomms/processor" build_path = "/obj/machinery/telecomms/processor"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3, /obj/item/weapon/stock_parts/manipulator = 3,
"/obj/item/weapon/stock_parts/subspace/filter" = 1, /obj/item/weapon/stock_parts/subspace/filter = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2, /obj/item/weapon/stock_parts/subspace/treatment = 2,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1, /obj/item/weapon/stock_parts/subspace/analyzer = 1,
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1) /obj/item/weapon/stock_parts/subspace/amplifier = 1)
/obj/item/weapon/circuitboard/telecomms/server /obj/item/weapon/circuitboard/telecomms/server
name = T_BOARD("telecommunication server") name = T_BOARD("telecommunication server")
build_path = "/obj/machinery/telecomms/server" build_path = "/obj/machinery/telecomms/server"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/stack/cable_coil" = 1, /obj/item/stack/cable_coil = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1) /obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/telecomms/broadcaster /obj/item/weapon/circuitboard/telecomms/broadcaster
name = T_BOARD("subspace broadcaster") name = T_BOARD("subspace broadcaster")
build_path = "/obj/machinery/telecomms/broadcaster" build_path = "/obj/machinery/telecomms/broadcaster"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2) origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/stack/cable_coil" = 1, /obj/item/stack/cable_coil = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1, /obj/item/weapon/stock_parts/subspace/filter = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1, /obj/item/weapon/stock_parts/subspace/crystal = 1,
"/obj/item/weapon/stock_parts/micro_laser/high" = 2) /obj/item/weapon/stock_parts/micro_laser/high = 2)
//This isn't a real telecomms board but I don't want to make a whole file to hold only one circuitboard. //This isn't a real telecomms board but I don't want to make a whole file to hold only one circuitboard.
/obj/item/weapon/circuitboard/telecomms/exonet_node /obj/item/weapon/circuitboard/telecomms/exonet_node
@@ -80,10 +80,10 @@
build_path = "/obj/machinery/exonet_node" build_path = "/obj/machinery/exonet_node"
origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1, /obj/item/weapon/stock_parts/subspace/ansible = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1, /obj/item/weapon/stock_parts/subspace/filter = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2, /obj/item/weapon/stock_parts/manipulator = 2,
"/obj/item/weapon/stock_parts/micro_laser" = 1, /obj/item/weapon/stock_parts/micro_laser = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1, /obj/item/weapon/stock_parts/subspace/crystal = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2, /obj/item/weapon/stock_parts/subspace/treatment = 2,
"/obj/item/stack/cable_coil" = 2) /obj/item/stack/cable_coil = 2)

View File

@@ -18,16 +18,16 @@
build_path = "/obj/machinery/atmospherics/unary/heater" build_path = "/obj/machinery/atmospherics/unary/heater"
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1) origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
req_components = list( req_components = list(
"/obj/item/stack/cable_coil" = 5, /obj/item/stack/cable_coil = 5,
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2) /obj/item/weapon/stock_parts/capacitor = 2)
/obj/item/weapon/circuitboard/unary_atmos/cooler /obj/item/weapon/circuitboard/unary_atmos/cooler
name = T_BOARD("gas cooling system") name = T_BOARD("gas cooling system")
build_path = "/obj/machinery/atmospherics/unary/freezer" build_path = "/obj/machinery/atmospherics/unary/freezer"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list( req_components = list(
"/obj/item/stack/cable_coil" = 2, /obj/item/stack/cable_coil = 2,
"/obj/item/weapon/stock_parts/matter_bin" = 1, /obj/item/weapon/stock_parts/matter_bin = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2, /obj/item/weapon/stock_parts/capacitor = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1) /obj/item/weapon/stock_parts/manipulator = 1)

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/grenade/smokebomb /obj/item/weapon/grenade/smokebomb
desc = "It is set to detonate in 2 seconds." desc = "It is set to detonate in 2 seconds. These high-tech grenades can have their color adapted on the fly with a multitool!"
name = "smoke bomb" name = "smoke bomb"
icon = 'icons/obj/grenade.dmi' icon = 'icons/obj/grenade.dmi'
icon_state = "flashbang" icon_state = "flashbang"
@@ -7,6 +7,8 @@
item_state = "flashbang" item_state = "flashbang"
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
var/datum/effect/effect/system/smoke_spread/bad/smoke var/datum/effect/effect/system/smoke_spread/bad/smoke
var/smoke_color
var/smoke_strength = 8
/obj/item/weapon/grenade/smokebomb/New() /obj/item/weapon/grenade/smokebomb/New()
..() ..()
@@ -22,18 +24,15 @@
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
src.smoke.set_up(10, 0, usr.loc) src.smoke.set_up(10, 0, usr.loc)
spawn(0) spawn(0)
src.smoke.start() for(var/i = 1 to smoke_strength)
src.smoke.start(smoke_color)
sleep(10) sleep(10)
src.smoke.start()
sleep(10)
src.smoke.start()
sleep(10)
src.smoke.start()
for(var/obj/effect/blob/B in view(8,src))
var/damage = round(30/(get_dist(B,src)+1))
B.health -= damage
B.update_icon()
sleep(80)
qdel(src) qdel(src)
return return
/obj/item/weapon/grenade/smokebomb/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I,/obj/item/device/multitool))
var/new_smoke_color = input(user, "Choose a color for the smoke:", "Smoke Color", smoke_color) as color|null
if(new_smoke_color)
smoke_color = new_smoke_color

View File

@@ -203,6 +203,15 @@
slot_r_hand_str = "duffle_med", slot_r_hand_str = "duffle_med",
) )
/obj/item/weapon/storage/backpack/dufflebag/emt
name = "EMT dufflebag"
desc = "A large dufflebag for holding extra medical supplies. This one has reflective stripes!"
icon_state = "duffle_emt"
item_state_slots = list(
slot_l_hand_str = "duffle_emt",
slot_r_hand_str = "duffle_emt",
)
/obj/item/weapon/storage/backpack/dufflebag/sec /obj/item/weapon/storage/backpack/dufflebag/sec
name = "security dufflebag" name = "security dufflebag"
desc = "A large dufflebag for holding extra security supplies and ammunition." desc = "A large dufflebag for holding extra security supplies and ammunition."
@@ -235,12 +244,12 @@
..() ..()
new /obj/item/weapon/storage/wallet/random( src ) new /obj/item/weapon/storage/wallet/random( src )
/obj/item/weapon/storage/backpack/satchel_norm /obj/item/weapon/storage/backpack/satchel/norm
name = "satchel" name = "satchel"
desc = "A trendy looking satchel." desc = "A trendy looking satchel."
icon_state = "satchel-norm" icon_state = "satchel-norm"
/obj/item/weapon/storage/backpack/satchel_eng /obj/item/weapon/storage/backpack/satchel/eng
name = "industrial satchel" name = "industrial satchel"
desc = "A tough satchel with extra pockets." desc = "A tough satchel with extra pockets."
icon_state = "satchel-eng" icon_state = "satchel-eng"
@@ -249,7 +258,7 @@
slot_r_hand_str = "engiepack", slot_r_hand_str = "engiepack",
) )
/obj/item/weapon/storage/backpack/satchel_med /obj/item/weapon/storage/backpack/satchel/med
name = "medical satchel" name = "medical satchel"
desc = "A sterile satchel used in medical departments." desc = "A sterile satchel used in medical departments."
icon_state = "satchel-med" icon_state = "satchel-med"
@@ -258,27 +267,27 @@
slot_r_hand_str = "medicalpack", slot_r_hand_str = "medicalpack",
) )
/obj/item/weapon/storage/backpack/satchel_vir /obj/item/weapon/storage/backpack/satchel/vir
name = "virologist satchel" name = "virologist satchel"
desc = "A sterile satchel with virologist colours." desc = "A sterile satchel with virologist colours."
icon_state = "satchel-vir" icon_state = "satchel-vir"
/obj/item/weapon/storage/backpack/satchel_chem /obj/item/weapon/storage/backpack/satchel/chem
name = "chemist satchel" name = "chemist satchel"
desc = "A sterile satchel with chemist colours." desc = "A sterile satchel with chemist colours."
icon_state = "satchel-chem" icon_state = "satchel-chem"
/obj/item/weapon/storage/backpack/satchel_gen /obj/item/weapon/storage/backpack/satchel/gen
name = "geneticist satchel" name = "geneticist satchel"
desc = "A sterile satchel with geneticist colours." desc = "A sterile satchel with geneticist colours."
icon_state = "satchel-gen" icon_state = "satchel-gen"
/obj/item/weapon/storage/backpack/satchel_tox /obj/item/weapon/storage/backpack/satchel/tox
name = "scientist satchel" name = "scientist satchel"
desc = "Useful for holding research materials." desc = "Useful for holding research materials."
icon_state = "satchel-tox" icon_state = "satchel-tox"
/obj/item/weapon/storage/backpack/satchel_sec /obj/item/weapon/storage/backpack/satchel/sec
name = "security satchel" name = "security satchel"
desc = "A robust satchel for security related needs." desc = "A robust satchel for security related needs."
icon_state = "satchel-sec" icon_state = "satchel-sec"
@@ -287,12 +296,12 @@
slot_r_hand_str = "securitypack", slot_r_hand_str = "securitypack",
) )
/obj/item/weapon/storage/backpack/satchel_hyd /obj/item/weapon/storage/backpack/satchel/hyd
name = "hydroponics satchel" name = "hydroponics satchel"
desc = "A green satchel for plant related work." desc = "A green satchel for plant related work."
icon_state = "satchel_hyd" icon_state = "satchel_hyd"
/obj/item/weapon/storage/backpack/satchel_cap /obj/item/weapon/storage/backpack/satchel/cap
name = "captain's satchel" name = "captain's satchel"
desc = "An exclusive satchel for officers." desc = "An exclusive satchel for officers."
icon_state = "satchel-cap" icon_state = "satchel-cap"

View File

@@ -333,6 +333,8 @@
new /obj/item/weapon/grenade/smokebomb(src) new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src) new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src) new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src)
/obj/item/weapon/storage/box/anti_photons /obj/item/weapon/storage/box/anti_photons
name = "box of anti-photon grenades" name = "box of anti-photon grenades"

View File

@@ -14,6 +14,7 @@
throw_speed = 2 throw_speed = 2
throw_range = 8 throw_range = 8
var/empty = 0 var/empty = 0
max_storage_space = 14
/obj/item/weapon/storage/firstaid/fire /obj/item/weapon/storage/firstaid/fire
@@ -131,8 +132,8 @@
/obj/item/weapon/storage/firstaid/surgery /obj/item/weapon/storage/firstaid/surgery
name = "surgery kit" name = "surgery kit"
desc = "Contains tools for surgery." desc = "Contains tools for surgery."
storage_slots = 10 max_storage_space = 21
max_storage_space = 23 max_w_class = 3
/obj/item/weapon/storage/firstaid/surgery/New() /obj/item/weapon/storage/firstaid/surgery/New()
..() ..()
@@ -163,6 +164,8 @@
allow_quick_gather = 1 allow_quick_gather = 1
use_to_pickup = 1 use_to_pickup = 1
use_sound = null use_sound = null
max_storage_space = 14
max_w_class = 1
/obj/item/weapon/storage/pill_bottle/antitox /obj/item/weapon/storage/pill_bottle/antitox
name = "bottle of Dylovene pills" name = "bottle of Dylovene pills"

View File

@@ -136,10 +136,10 @@
filled = TRUE filled = TRUE
/obj/item/weapon/storage/toolbox/lunchbox/mars /obj/item/weapon/storage/toolbox/lunchbox/mars
name = "\improper Mars university lunchbox" name = "\improper Mojave university lunchbox"
icon_state = "lunchbox_marsuniversity" icon_state = "lunchbox_marsuniversity"
item_state = "toolbox_red" item_state = "toolbox_red"
desc = "A little lunchbox. This one is branded with the Mars university logo!" desc = "A little lunchbox. This one is branded with the Mojave university logo!"
/obj/item/weapon/storage/toolbox/lunchbox/mars/filled /obj/item/weapon/storage/toolbox/lunchbox/mars/filled
filled = TRUE filled = TRUE

View File

@@ -247,6 +247,16 @@
src.update_icon() src.update_icon()
for(var/mob/M in viewers(src)) for(var/mob/M in viewers(src))
M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2) M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2)
else if(istype(W, /obj/item/weapon/wrench))
if(welded)
if(anchored)
user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
else
user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
if(do_after(user, 20))
if(!src) return
user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>"
anchored = !anchored
else else
src.attack_hand(user) src.attack_hand(user)
return return

View File

@@ -13,7 +13,7 @@
if(prob(75)) if(prob(75))
new /obj/item/weapon/storage/backpack(src) new /obj/item/weapon/storage/backpack(src)
else else
new /obj/item/weapon/storage/backpack/satchel_norm(src) new /obj/item/weapon/storage/backpack/satchel/norm(src)
if(prob(25)) if(prob(25))
new /obj/item/weapon/storage/backpack/dufflebag(src) new /obj/item/weapon/storage/backpack/dufflebag(src)
new /obj/item/clothing/under/rank/cargotech(src) new /obj/item/clothing/under/rank/cargotech(src)
@@ -44,7 +44,7 @@
if(prob(75)) if(prob(75))
new /obj/item/weapon/storage/backpack(src) new /obj/item/weapon/storage/backpack(src)
else else
new /obj/item/weapon/storage/backpack/satchel_norm(src) new /obj/item/weapon/storage/backpack/satchel/norm(src)
if(prob(25)) if(prob(25))
new /obj/item/weapon/storage/backpack/dufflebag(src) new /obj/item/weapon/storage/backpack/dufflebag(src)
new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/under/rank/cargo(src)

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