Removes all relative heresy (#13969)

Removes all relative heresy
This commit is contained in:
AffectedArc07
2020-09-16 17:52:20 +01:00
committed by GitHub
parent 185b5c4a08
commit 90fd9a8fb8
89 changed files with 1298 additions and 1260 deletions
+6
View File
@@ -0,0 +1,6 @@
[langserver]
dreamchecker = true
[code_standards]
disallow_relative_type_definitions = true
disallow_relative_proc_definitions = true
+3 -3
View File
@@ -32,13 +32,13 @@
if(!R)
return 1
atom/movable/proc/CanAtmosPass()
/atom/movable/proc/CanAtmosPass()
return 1
atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
return (!density || !height)
turf/CanPass(atom/movable/mover, turf/target, height=1.5)
/turf/CanPass(atom/movable/mover, turf/target, height=1.5)
if(!target) return 0
if(istype(mover)) // turf/Enter(...) will perform more advanced checks
+2 -2
View File
@@ -473,7 +473,7 @@
SSair.active_super_conductivity -= src
return 0
turf/simulated/proc/consider_superconductivity(starting)
/turf/simulated/proc/consider_superconductivity(starting)
if(!thermal_conductivity)
return 0
@@ -489,7 +489,7 @@ turf/simulated/proc/consider_superconductivity(starting)
SSair.active_super_conductivity |= src
return 1
turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space
/turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space
if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out
var/delta_temperature = (temperature_archived - TCMB) //hardcoded space temperature
if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER))
+1 -1
View File
@@ -36,7 +36,7 @@ Be sure to include required js functions in your page, or it'll raise an excepti
And yes I know this is a proc in a defines file, but its highly relevant so it can be here
*/
proc/send_byjax(receiver, control_id, target_element, new_content=null, callback=null, list/callback_args=null)
/proc/send_byjax(receiver, control_id, target_element, new_content=null, callback=null, list/callback_args=null)
if(receiver && target_element && control_id) // && winexists(receiver, control_id))
var/list/argums = list(target_element, new_content)
if(callback)
+14 -14
View File
@@ -1,4 +1,4 @@
proc/GetOppositeDir(var/dir)
/proc/GetOppositeDir(var/dir)
switch(dir)
if(NORTH) return SOUTH
if(SOUTH) return NORTH
@@ -10,7 +10,7 @@ proc/GetOppositeDir(var/dir)
if(SOUTHEAST) return NORTHWEST
return 0
proc/random_underwear(gender, species = "Human")
/proc/random_underwear(gender, species = "Human")
var/list/pick_list = list()
switch(gender)
if(MALE) pick_list = GLOB.underwear_m
@@ -18,7 +18,7 @@ proc/random_underwear(gender, species = "Human")
else pick_list = GLOB.underwear_list
return pick_species_allowed_underwear(pick_list, species)
proc/random_undershirt(gender, species = "Human")
/proc/random_undershirt(gender, species = "Human")
var/list/pick_list = list()
switch(gender)
if(MALE) pick_list = GLOB.undershirt_m
@@ -26,7 +26,7 @@ proc/random_undershirt(gender, species = "Human")
else pick_list = GLOB.undershirt_list
return pick_species_allowed_underwear(pick_list, species)
proc/random_socks(gender, species = "Human")
/proc/random_socks(gender, species = "Human")
var/list/pick_list = list()
switch(gender)
if(MALE) pick_list = GLOB.socks_m
@@ -34,7 +34,7 @@ proc/random_socks(gender, species = "Human")
else pick_list = GLOB.socks_list
return pick_species_allowed_underwear(pick_list, species)
proc/pick_species_allowed_underwear(list/all_picks, species)
/proc/pick_species_allowed_underwear(list/all_picks, species)
var/list/valid_picks = list()
for(var/test in all_picks)
var/datum/sprite_accessory/S = all_picks[test]
@@ -46,7 +46,7 @@ proc/pick_species_allowed_underwear(list/all_picks, species)
return pick(valid_picks)
proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
/proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
var/h_style = "Bald"
var/list/valid_hairstyles = list()
for(var/hairstyle in GLOB.hair_styles_public_list)
@@ -75,7 +75,7 @@ proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohea
return h_style
proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
/proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
var/f_style = "Shaved"
var/list/valid_facial_hairstyles = list()
for(var/facialhairstyle in GLOB.facial_hair_styles_list)
@@ -104,7 +104,7 @@ proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/
return f_style
proc/random_head_accessory(species = "Human")
/proc/random_head_accessory(species = "Human")
var/ha_style = "None"
var/list/valid_head_accessories = list()
for(var/head_accessory in GLOB.head_accessory_styles_list)
@@ -119,7 +119,7 @@ proc/random_head_accessory(species = "Human")
return ha_style
proc/random_marking_style(var/location = "body", species = "Human", var/datum/robolimb/robohead, var/body_accessory, var/alt_head)
/proc/random_marking_style(var/location = "body", species = "Human", var/datum/robolimb/robohead, var/body_accessory, var/alt_head)
var/m_style = "None"
var/list/valid_markings = list()
for(var/marking in GLOB.marking_styles_list)
@@ -158,7 +158,7 @@ proc/random_marking_style(var/location = "body", species = "Human", var/datum/ro
return m_style
proc/random_body_accessory(species = "Vulpkanin")
/proc/random_body_accessory(species = "Vulpkanin")
var/body_accessory = null
var/list/valid_body_accessories = list()
for(var/B in GLOB.body_accessory_by_name)
@@ -174,7 +174,7 @@ proc/random_body_accessory(species = "Vulpkanin")
return body_accessory
proc/random_name(gender, species = "Human")
/proc/random_name(gender, species = "Human")
var/datum/species/current_species
if(species)
@@ -188,7 +188,7 @@ proc/random_name(gender, species = "Human")
else
return current_species.get_random_name(gender)
proc/random_skin_tone(species = "Human")
/proc/random_skin_tone(species = "Human")
if(species == "Human" || species == "Drask")
switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino"))
if("caucasian") . = -10
@@ -202,7 +202,7 @@ proc/random_skin_tone(species = "Human")
. = rand(1, 6)
return .
proc/skintone2racedescription(tone, species = "Human")
/proc/skintone2racedescription(tone, species = "Human")
if(species == "Human")
switch(tone)
if(30 to INFINITY) return "albino"
@@ -225,7 +225,7 @@ proc/skintone2racedescription(tone, species = "Human")
else
return "unknown"
proc/age2agedescription(age)
/proc/age2agedescription(age)
switch(age)
if(0 to 1) return "infant"
if(1 to 3) return "toddler"
+1 -1
View File
@@ -196,7 +196,7 @@
//checks text for html tags
//if tag is not in whitelist (var/list/paper_tag_whitelist in global.dm)
//relpaces < with &lt;
proc/checkhtml(var/t)
/proc/checkhtml(var/t)
t = sanitize_simple(t, list("&#"="."))
var/p = findtext(t,"<",1)
while(p) //going through all the tags
+1 -1
View File
@@ -60,7 +60,7 @@
return time2text(station_time(time, TRUE), format)
/* Returns 1 if it is the selected month and day */
proc/isDay(var/month, var/day)
/proc/isDay(var/month, var/day)
if(isnum(month) && isnum(day))
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
+11 -11
View File
@@ -529,7 +529,7 @@ Returns 1 if the chain up to the area contains the given typepath
return max(min(middle, high), low)
//returns random gauss number
proc/GaussRand(var/sigma)
/proc/GaussRand(var/sigma)
var/x,y,rsq
do
x=2*rand()-1
@@ -539,7 +539,7 @@ proc/GaussRand(var/sigma)
return sigma*y*sqrt(-2*log(rsq)/rsq)
//returns random gauss number, rounded to 'roundto'
proc/GaussRandRound(var/sigma,var/roundto)
/proc/GaussRandRound(var/sigma,var/roundto)
return round(GaussRand(sigma),roundto)
//Will return the contents of an atom recursivly to a depth of 'searchDepth'
@@ -583,7 +583,7 @@ proc/GaussRandRound(var/sigma,var/roundto)
return 1
proc/is_blocked_turf(turf/T, exclude_mobs)
/proc/is_blocked_turf(turf/T, exclude_mobs)
if(T.density)
return 1
for(var/i in T)
@@ -984,16 +984,16 @@ proc/is_blocked_turf(turf/T, exclude_mobs)
proc/get_cardinal_dir(atom/A, atom/B)
/proc/get_cardinal_dir(atom/A, atom/B)
var/dx = abs(B.x - A.x)
var/dy = abs(B.y - A.y)
return get_dir(A, B) & (rand() * (dx+dy) < dy ? 3 : 12)
//chances are 1:value. anyprob(1) will always return true
proc/anyprob(value)
/proc/anyprob(value)
return (rand(1,value)==value)
proc/view_or_range(distance = world.view , center = usr , type)
/proc/view_or_range(distance = world.view , center = usr , type)
switch(type)
if("view")
. = view(distance,center)
@@ -1001,7 +1001,7 @@ proc/view_or_range(distance = world.view , center = usr , type)
. = range(distance,center)
return
proc/oview_or_orange(distance = world.view , center = usr , type)
/proc/oview_or_orange(distance = world.view , center = usr , type)
switch(type)
if("view")
. = oview(distance,center)
@@ -1009,7 +1009,7 @@ proc/oview_or_orange(distance = world.view , center = usr , type)
. = orange(distance,center)
return
proc/get_mob_with_client_list()
/proc/get_mob_with_client_list()
var/list/mobs = list()
for(var/mob/M in GLOB.mob_list)
if(M.client)
@@ -1233,10 +1233,10 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac
return 0
proc/get_angle(atom/a, atom/b)
/proc/get_angle(atom/a, atom/b)
return atan2(b.y - a.y, b.x - a.x)
proc/atan2(x, y)
/proc/atan2(x, y)
if(!x && !y) return 0
return y >= 0 ? arccos(x / sqrt(x * x + y * y)) : -arccos(x / sqrt(x * x + y * y))
@@ -1329,7 +1329,7 @@ Standard way to write links -Sayu
return FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR
atom/proc/GetTypeInAllContents(typepath)
/atom/proc/GetTypeInAllContents(typepath)
var/list/processing_list = list(src)
var/list/processed = list()
+2 -2
View File
@@ -10,12 +10,12 @@ GLOBAL_DATUM_INIT(command_announcer, /obj/item/radio/intercom/command, create_co
// Load order issues means this can't be new'd until other code runs
// This is probably not the way I should be doing this, but I don't know how to do it right!
proc/create_global_announcer()
/proc/create_global_announcer()
spawn(0)
GLOB.global_announcer = new(null)
return
proc/create_command_announcer()
/proc/create_command_announcer()
spawn(0)
GLOB.command_announcer = new(null)
return
+5 -7
View File
@@ -152,13 +152,11 @@
return doTeleport()
return 0
/datum/teleport/instant //teleports when datum is created
start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
if(..())
if(teleport())
return 1
return 0
/datum/teleport/instant/start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
if(..())
if(teleport())
return 1
return 0
/datum/teleport/instant/science
+1 -1
View File
@@ -42,7 +42,7 @@
cost = 10
allow_duplicates = FALSE
datum/map_template/ruin/lavaland/ash_walker
/datum/map_template/ruin/lavaland/ash_walker
name = "Ash Walker Nest"
id = "ash-walker"
description = "A race of unbreathing lizards live here, that run faster than a human can, worship a broken dead city, and are capable of reproducing by something involving tentacles? \
+1 -1
View File
@@ -44,7 +44,7 @@
if(ready)
Discharge()
obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr)
ready = 0
start_time = 0
if(halo)
+1 -1
View File
@@ -39,7 +39,7 @@
if(ready)
Discharge()
obj/effect/proc_holder/spell/targeted/magnet/proc/Reset(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/proc/Reset(mob/user = usr)
ready = 0
energy = 0
start_time = 0
+2 -2
View File
@@ -17,7 +17,7 @@
. += "The green light is [A.shocked ? "on" : "off"]."
. += "The UV display shows [A.uv_super ? "15 nm" : "185 nm"]."
datum/wires/suitstorage/interactable(mob/user)
/datum/wires/suitstorage/interactable(mob/user)
var/obj/machinery/suit_storage_unit/A = holder
if(iscarbon(user) && A.Adjacent(user) && A.shocked)
return A.shock(user, 100)
@@ -42,7 +42,7 @@ datum/wires/suitstorage/interactable(mob/user)
A.uv_super = !mend
..()
datum/wires/suitstorage/on_pulse(wire)
/datum/wires/suitstorage/on_pulse(wire)
var/obj/machinery/suit_storage_unit/A = holder
if(is_cut(wire))
return
+1 -1
View File
@@ -62,7 +62,7 @@
* In the `colors` list, the name of the color is the key, and the wire is the value.
* For example: `colors["red"] = WIRE_ELECTRIFY`. This will look like `list("red" = WIRE_ELECTRIFY)` internally.
*/
datum/wires/proc/randomize()
/datum/wires/proc/randomize()
var/static/list/possible_colors = list("red", "blue", "green", "silver", "orange", "brown", "gold", "white", "cyan", "magenta", "purple", "pink")
var/list/my_possible_colors = possible_colors.Copy()
+26 -26
View File
@@ -29,7 +29,7 @@
#define BLOB 14
// TODO: Investigate more recent type additions and see if I can handle them. - Nadrew
DBConnection
/DBConnection
var/_db_con // This variable contains a reference to the actual database connection.
var/dbi // This variable is a string containing the DBI MySQL requires.
var/user // This variable contains the username data.
@@ -39,14 +39,14 @@ DBConnection
var/server = ""
var/port = 3306
DBConnection/New(dbi_handler,username,password_handler,cursor_handler)
/DBConnection/New(dbi_handler,username,password_handler,cursor_handler)
src.dbi = dbi_handler
src.user = username
src.password = password_handler
src.default_cursor = cursor_handler
_db_con = _dm_db_new_con()
DBConnection/proc/Connect(dbi_handler=src.dbi,user_handler=src.user,password_handler=src.password,cursor_handler)
/DBConnection/proc/Connect(dbi_handler=src.dbi,user_handler=src.user,password_handler=src.password,cursor_handler)
if(!config.sql_enabled)
return 0
if(!src) return 0
@@ -54,24 +54,24 @@ DBConnection/proc/Connect(dbi_handler=src.dbi,user_handler=src.user,password_han
if(!cursor_handler) cursor_handler = Default_Cursor
return _dm_db_connect(_db_con,dbi_handler,user_handler,password_handler,cursor_handler,null)
DBConnection/proc/Disconnect() return _dm_db_close(_db_con)
/DBConnection/proc/Disconnect() return _dm_db_close(_db_con)
DBConnection/proc/IsConnected()
/DBConnection/proc/IsConnected()
if(!config.sql_enabled) return 0
var/success = _dm_db_is_connected(_db_con)
return success
DBConnection/proc/Quote(str) return _dm_db_quote(_db_con,str)
/DBConnection/proc/Quote(str) return _dm_db_quote(_db_con,str)
DBConnection/proc/ErrorMsg() return _dm_db_error_msg(_db_con)
DBConnection/proc/SelectDB(database_name,dbi)
/DBConnection/proc/ErrorMsg() return _dm_db_error_msg(_db_con)
/DBConnection/proc/SelectDB(database_name,dbi)
if(IsConnected()) Disconnect()
//return Connect("[dbi?"[dbi]":"dbi:mysql:[database_name]:[DB_SERVER]:[DB_PORT]"]",user,password)
return Connect("[dbi?"[dbi]":"dbi:mysql:[database_name]:[sqladdress]:[sqlport]"]",user,password)
DBConnection/proc/NewQuery(sql_query,cursor_handler=src.default_cursor) return new/DBQuery(sql_query,src,cursor_handler)
/DBConnection/proc/NewQuery(sql_query,cursor_handler=src.default_cursor) return new/DBQuery(sql_query,src,cursor_handler)
DBQuery/New(sql_query,DBConnection/connection_handler,cursor_handler)
/DBQuery/New(sql_query,DBConnection/connection_handler,cursor_handler)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>DB query blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to create a DB query via advanced proc-call")
@@ -83,12 +83,12 @@ DBQuery/New(sql_query,DBConnection/connection_handler,cursor_handler)
_db_query = _dm_db_new_query()
return ..()
DBQuery/CanProcCall()
/DBQuery/CanProcCall()
// dont even try it
return FALSE
DBQuery
/DBQuery
var/sql // The sql query being executed.
var/default_cursor
var/list/columns //list of DB Columns populated by Columns()
@@ -98,26 +98,26 @@ DBQuery
var/DBConnection/db_connection
var/_db_query
DBQuery/proc/Connect(DBConnection/connection_handler) src.db_connection = connection_handler
/DBQuery/proc/Connect(DBConnection/connection_handler) src.db_connection = connection_handler
DBQuery/proc/Execute(sql_query=src.sql,cursor_handler=default_cursor)
/DBQuery/proc/Execute(sql_query=src.sql,cursor_handler=default_cursor)
Close()
return _dm_db_execute(_db_query,sql_query,db_connection._db_con,cursor_handler,null)
DBQuery/proc/NextRow() return _dm_db_next_row(_db_query,item,conversions)
/DBQuery/proc/NextRow() return _dm_db_next_row(_db_query,item,conversions)
DBQuery/proc/RowsAffected() return _dm_db_rows_affected(_db_query)
/DBQuery/proc/RowsAffected() return _dm_db_rows_affected(_db_query)
DBQuery/proc/RowCount() return _dm_db_row_count(_db_query)
/DBQuery/proc/RowCount() return _dm_db_row_count(_db_query)
DBQuery/proc/ErrorMsg() return _dm_db_error_msg(_db_query)
/DBQuery/proc/ErrorMsg() return _dm_db_error_msg(_db_query)
DBQuery/proc/Columns()
/DBQuery/proc/Columns()
if(!columns)
columns = _dm_db_columns(_db_query,/DBColumn)
return columns
DBQuery/proc/GetRowData()
/DBQuery/proc/GetRowData()
var/list/columns = Columns()
var/list/results
if(columns.len)
@@ -128,23 +128,23 @@ DBQuery/proc/GetRowData()
results[C] = src.item[(cur_col.position+1)]
return results
DBQuery/proc/Close()
/DBQuery/proc/Close()
item.len = 0
columns = null
conversions = null
return _dm_db_close(_db_query)
DBQuery/proc/Quote(str)
/DBQuery/proc/Quote(str)
return db_connection.Quote(str)
DBQuery/proc/SetConversion(column,conversion)
/DBQuery/proc/SetConversion(column,conversion)
if(istext(column)) column = columns.Find(column)
if(!conversions) conversions = new/list(column)
else if(conversions.len < column) conversions.len = column
conversions[column] = conversion
DBColumn
/DBColumn
var/name
var/table
var/position //1-based index into item data
@@ -153,7 +153,7 @@ DBColumn
var/length
var/max_length
DBColumn/New(name_handler,table_handler,position_handler,type_handler,flag_handler,length_handler,max_length_handler)
/DBColumn/New(name_handler,table_handler,position_handler,type_handler,flag_handler,length_handler,max_length_handler)
src.name = name_handler
src.table = table_handler
src.position = position_handler
@@ -164,7 +164,7 @@ DBColumn/New(name_handler,table_handler,position_handler,type_handler,flag_handl
return ..()
DBColumn/proc/SqlTypeName(type_handler=src.sql_type)
/DBColumn/proc/SqlTypeName(type_handler=src.sql_type)
switch(type_handler)
if(TINYINT) return "TINYINT"
if(SMALLINT) return "SMALLINT"
@@ -112,7 +112,7 @@
feedback_add_details("changeling_powers","TS")
return TRUE
datum/action/changeling/sting/extract_dna
/datum/action/changeling/sting/extract_dna
name = "Extract DNA Sting"
desc = "We stealthily sting a target and extract their DNA. Costs 25 chemicals."
helptext = "Will give you the DNA of your target, allowing you to transform into them."
@@ -132,7 +132,7 @@ datum/action/changeling/sting/extract_dna
feedback_add_details("changeling_powers","ED")
return 1
datum/action/changeling/sting/mute
/datum/action/changeling/sting/mute
name = "Mute Sting"
desc = "We silently sting a human, completely silencing them for a short time. Costs 20 chemicals."
helptext = "Does not provide a warning to the victim that they have been stung, until they try to speak and cannot."
@@ -147,7 +147,7 @@ datum/action/changeling/sting/mute
feedback_add_details("changeling_powers","MS")
return 1
datum/action/changeling/sting/blind
/datum/action/changeling/sting/blind
name = "Blind Sting"
desc = "We temporarily blind our victim. Costs 25 chemicals."
helptext = "This sting completely blinds a target for a short time, and leaves them with blurred vision for a long time."
@@ -165,7 +165,7 @@ datum/action/changeling/sting/blind
feedback_add_details("changeling_powers","BS")
return 1
datum/action/changeling/sting/LSD
/datum/action/changeling/sting/LSD
name = "Hallucination Sting"
desc = "We cause mass terror to our victim. Costs 10 chemicals."
helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds."
@@ -182,7 +182,7 @@ datum/action/changeling/sting/LSD
feedback_add_details("changeling_powers","HS")
return 1
datum/action/changeling/sting/cryo //Enable when mob cooling is fixed so that frostoil actually makes you cold, instead of mostly just hungry.
/datum/action/changeling/sting/cryo //Enable when mob cooling is fixed so that frostoil actually makes you cold, instead of mostly just hungry.
name = "Cryogenic Sting"
desc = "We silently sting our victim with a cocktail of chemicals that freezes them from the inside. Costs 15 chemicals."
helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing."
+1 -1
View File
@@ -337,7 +337,7 @@
//////////////////////////
//Reports player logouts//
//////////////////////////
proc/display_roundstart_logout_report()
/proc/display_roundstart_logout_report()
var/msg = "<span class='notice'>Roundstart logout report</span>\n\n"
for(var/mob/living/L in GLOB.mob_list)
+1 -1
View File
@@ -250,7 +250,7 @@ GLOBAL_LIST_EMPTY(cortical_stacks) //Stacks for 'leave nobody behind' objective.
..()
datum/game_mode/proc/auto_declare_completion_heist()
/datum/game_mode/proc/auto_declare_completion_heist()
if(raiders.len)
var/check_return = 0
if(GAMEMODE_IS_HEIST)
+1 -1
View File
@@ -3,7 +3,7 @@
/datum/game_mode
var/list/datum/mind/syndicates = list()
proc/issyndicate(mob/living/M as mob)
/proc/issyndicate(mob/living/M as mob)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.syndicates)
/datum/game_mode/nuclear
+1 -1
View File
@@ -57,7 +57,7 @@
typepath = /obj/item/aicard
location_override = "AI Satellite. An intellicard for transportation can be found in Tech Storage, Science Department or manufactured"
datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
/datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
if(..())
for(var/mob/living/silicon/ai/A in C)
if(istype(A, /mob/living/silicon/ai) && A.stat != 2) //See if any AI's are alive inside that card.
+5 -4
View File
@@ -426,6 +426,7 @@
//gets the alt title, failing that the actual job rank
//this is unused
// THEN WHY IS IT STILL HERE?? -AA07, 2020-07-31
/obj/proc/sdsdsd() //GetJobDisplayName
if(!istype(src, /obj/item/pda) && !istype(src,/obj/item/card/id))
return
@@ -442,7 +443,7 @@
return "Unknown"
proc/GetIdCard(var/mob/living/carbon/human/H)
/proc/GetIdCard(var/mob/living/carbon/human/H)
if(H.wear_id)
var/id = H.wear_id.GetID()
if(id)
@@ -451,7 +452,7 @@ proc/GetIdCard(var/mob/living/carbon/human/H)
var/obj/item/I = H.get_active_hand()
return I.GetID()
proc/FindNameFromID(var/mob/living/carbon/human/H)
/proc/FindNameFromID(var/mob/living/carbon/human/H)
ASSERT(istype(H))
var/obj/item/card/id/C = H.get_active_hand()
if( istype(C) || istype(C, /obj/item/pda) )
@@ -480,7 +481,7 @@ proc/FindNameFromID(var/mob/living/carbon/human/H)
if(ID)
return ID.registered_name
proc/get_all_job_icons() //For all existing HUD icons
/proc/get_all_job_icons() //For all existing HUD icons
return GLOB.joblist + list("Prisoner")
/obj/proc/GetJobName() //Used in secHUD icon generation
@@ -511,7 +512,7 @@ proc/get_all_job_icons() //For all existing HUD icons
return "Unknown" //Return unknown if none of the above apply
proc/get_accesslist_static_data(num_min_region = REGION_GENERAL, num_max_region = REGION_COMMAND)
/proc/get_accesslist_static_data(num_min_region = REGION_GENERAL, num_max_region = REGION_COMMAND)
var/list/retval
for(var/i in num_min_region to num_max_region)
var/list/accesses = list()
+1 -1
View File
@@ -288,7 +288,7 @@ That prevents a few funky behaviors.
//The type of interaction, the player performing the operation, the AI itself, and the card object, if any.
atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
/atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
if(istype(card))
if(card.flush)
to_chat(user, "<span class='boldannounce'>ERROR</span>: AI flush is in progress, cannot execute transfer protocol.")
+66 -64
View File
@@ -11,55 +11,57 @@
light_range_on = 2
verb/AccessInternals()
set category = "Object"
set name = "Access Computer's Internals"
set src in oview(1)
if(get_dist(src, usr) > 1 || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon))
return
opened = !opened
if(opened)
to_chat(usr, "<span class='notice'>The access panel is now open.</span>")
else
to_chat(usr, "<span class='notice'>The access panel is now closed.</span>")
// What the fuck even is this
/obj/machinery/computer/aiupload/verb/AccessInternals()
set category = "Object"
set name = "Access Computer's Internals"
set src in oview(1)
if(get_dist(src, usr) > 1 || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon))
return
opened = !opened
if(opened)
to_chat(usr, "<span class='notice'>The access panel is now open.</span>")
else
to_chat(usr, "<span class='notice'>The access panel is now closed.</span>")
return
attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/aiModule))
if(!current)//no AI selected
to_chat(user, "<span class='danger'>No AI selected. Please chose a target before proceeding with upload.")
return
var/turf/T = get_turf(current)
if(!atoms_share_level(T, src))
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
return
var/obj/item/aiModule/M = O
M.install(src)
/obj/machinery/computer/aiupload/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/aiModule))
if(!current)//no AI selected
to_chat(user, "<span class='danger'>No AI selected. Please chose a target before proceeding with upload.")
return
return ..()
attack_hand(var/mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
if(src.stat & BROKEN)
to_chat(usr, "The upload computer is broken!")
var/turf/T = get_turf(current)
if(!atoms_share_level(T, src))
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
return
var/obj/item/aiModule/M = O
M.install(src)
return
return ..()
src.current = select_active_ai(user)
if(!src.current)
to_chat(usr, "No active AIs detected.")
else
to_chat(usr, "[src.current.name] selected for law changes.")
/obj/machinery/computer/aiupload/attack_hand(var/mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
if(src.stat & BROKEN)
to_chat(usr, "The upload computer is broken!")
return
attack_ghost(user as mob)
return 1
src.current = select_active_ai(user)
if(!src.current)
to_chat(usr, "No active AIs detected.")
else
to_chat(usr, "[src.current.name] selected for law changes.")
return
/obj/machinery/computer/aiupload/attack_ghost(user as mob)
return 1
// Why is this not a subtype
/obj/machinery/computer/borgupload
name = "cyborg upload console"
desc = "Used to upload laws to Cyborgs."
@@ -69,35 +71,35 @@
var/mob/living/silicon/robot/current = null
attackby(obj/item/aiModule/module as obj, mob/user as mob, params)
if(istype(module, /obj/item/aiModule))
if(!current)//no borg selected
to_chat(user, "<span class='danger'>No borg selected. Please chose a target before proceeding with upload.")
return
var/turf/T = get_turf(current)
if(!atoms_share_level(T, src))
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
return
module.install(src)
/obj/machinery/computer/borgupload/attackby(obj/item/aiModule/module as obj, mob/user as mob, params)
if(istype(module, /obj/item/aiModule))
if(!current)//no borg selected
to_chat(user, "<span class='danger'>No borg selected. Please chose a target before proceeding with upload.")
return
return ..()
attack_hand(var/mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
if(src.stat & BROKEN)
to_chat(usr, "The upload computer is broken!")
var/turf/T = get_turf(current)
if(!atoms_share_level(T, src))
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
return
module.install(src)
return
return ..()
src.current = freeborg()
if(!src.current)
to_chat(usr, "No free cyborgs detected.")
else
to_chat(usr, "[src.current.name] selected for law changes.")
/obj/machinery/computer/borgupload/attack_hand(var/mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
if(src.stat & BROKEN)
to_chat(usr, "The upload computer is broken!")
return
attack_ghost(user as mob)
src.current = freeborg()
if(!src.current)
to_chat(usr, "No free cyborgs detected.")
else
to_chat(usr, "[src.current.name] selected for law changes.")
return
/obj/machinery/computer/borgupload/attack_ghost(user as mob)
return 1
+7 -6
View File
@@ -27,12 +27,13 @@
var/running_bob_animation = 0 // This is used to prevent threads from building up if update_icons is called multiple times
light_color = LIGHT_COLOR_WHITE
power_change()
..()
if(!(stat & (BROKEN|NOPOWER)))
set_light(2)
else
set_light(0)
/obj/machinery/atmospherics/unary/cryo_cell/power_change()
..()
if(!(stat & (BROKEN|NOPOWER)))
set_light(2)
else
set_light(0)
/obj/machinery/atmospherics/unary/cryo_cell/New()
..()
@@ -305,7 +305,7 @@
signalDoor(tag_exterior_door, command)
signalDoor(tag_interior_door, command)
datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(var/command, var/sensor)
/datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(var/command, var/sensor)
var/datum/signal/signal = new
signal.data["tag"] = sensor
signal.data["command"] = command
+3 -3
View File
@@ -342,13 +342,13 @@
return
proc/getr(col)
/proc/getr(col)
return hex2num( copytext(col, 2,4))
proc/getg(col)
/proc/getg(col)
return hex2num( copytext(col, 4,6))
proc/getb(col)
/proc/getb(col)
return hex2num( copytext(col, 6))
+1 -1
View File
@@ -137,7 +137,7 @@
squeak = 0
return result
obj/mecha/combat/honker/Topic(href, href_list)
/obj/mecha/combat/honker/Topic(href, href_list)
..()
if(href_list["play_sound"])
switch(href_list["play_sound"])
@@ -6,18 +6,18 @@
var/btemp1 = 1500
var/btemp2 = 1000 // tank temperatures
timer
btype = 2
/obj/effect/spawner/newbomb/timer
btype = 2
syndicate
btemp1 = 150
btemp2 = 20
/obj/effect/spawner/newbomb/timer/syndicate
btemp1 = 150
btemp2 = 20
proximity
btype = 1
/obj/effect/spawner/newbomb/proximity
btype = 1
radio
btype = 0
/obj/effect/spawner/newbomb/radio
btype = 0
/obj/effect/spawner/newbomb/New()
+4 -4
View File
@@ -7,10 +7,10 @@
icon_state = "bodybag_folded"
w_class = WEIGHT_CLASS_SMALL
attack_self(mob/user)
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
R.add_fingerprint(user)
qdel(src)
/obj/item/bodybag/attack_self(mob/user)
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
R.add_fingerprint(user)
qdel(src)
/obj/structure/closet/body_bag
name = "body bag"
+1 -1
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/artifacts.dmi'
icon_state = "changerock"
obj/item/changestone/attack_hand(var/mob/user as mob)
/obj/item/changestone/attack_hand(var/mob/user as mob)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(!H.gloves)
+27 -27
View File
@@ -405,7 +405,7 @@
obj/item/toy/cards
/obj/item/toy/cards
resistance_flags = FLAMMABLE
max_integrity = 50
var/parentdeck = null
@@ -417,14 +417,14 @@ obj/item/toy/cards
var/card_throw_range = 20
var/list/card_attack_verb = list("attacked")
obj/item/toy/cards/New()
/obj/item/toy/cards/New()
..()
obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
if(!istype(sourceobj))
return
obj/item/toy/cards/deck
/obj/item/toy/cards/deck
name = "deck of cards"
desc = "A deck of space-grade playing cards."
icon = 'icons/obj/toy.dmi'
@@ -434,7 +434,7 @@ obj/item/toy/cards/deck
var/cooldown = 0
var/list/cards = list()
obj/item/toy/cards/deck/New()
/obj/item/toy/cards/deck/New()
..()
icon_state = "deck_[deckstyle]_full"
for(var/i in 2 to 10)
@@ -459,7 +459,7 @@ obj/item/toy/cards/deck/New()
cards += "Ace of Clubs"
cards += "Ace of Diamonds"
obj/item/toy/cards/deck/attack_hand(mob/user as mob)
/obj/item/toy/cards/deck/attack_hand(mob/user as mob)
var/choice = null
if(cards.len == 0)
icon_state = "deck_[deckstyle]_empty"
@@ -477,14 +477,14 @@ obj/item/toy/cards/deck/attack_hand(mob/user as mob)
visible_message("<span class='notice'>[user] draws a card from the deck.</span>", "<span class='notice'>You draw a card from the deck.</span>")
update_icon()
obj/item/toy/cards/deck/attack_self(mob/user as mob)
/obj/item/toy/cards/deck/attack_self(mob/user as mob)
if(cooldown < world.time - 50)
cards = shuffle(cards)
playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
user.visible_message("<span class='notice'>[user] shuffles the deck.</span>", "<span class='notice'>You shuffle the deck.</span>")
cooldown = world.time
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
..()
if(istype(C))
if(C.parentdeck == src)
@@ -499,7 +499,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use
update_icon()
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params)
/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params)
..()
if(istype(C))
if(C.parentdeck == src)
@@ -513,7 +513,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
update_icon()
obj/item/toy/cards/deck/MouseDrop(atom/over_object)
/obj/item/toy/cards/deck/MouseDrop(atom/over_object)
var/mob/M = usr
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
return
@@ -537,7 +537,7 @@ obj/item/toy/cards/deck/MouseDrop(atom/over_object)
else
to_chat(usr, "<span class='notice'>You can't reach it from here.</span>")
obj/item/toy/cards/deck/update_icon()
/obj/item/toy/cards/deck/update_icon()
switch(cards.len)
if(0)
icon_state = "deck_[deckstyle]_empty"
@@ -548,7 +548,7 @@ obj/item/toy/cards/deck/update_icon()
else
icon_state = "deck_[deckstyle]_full"
obj/item/toy/cards/cardhand
/obj/item/toy/cards/cardhand
name = "hand of cards"
desc = "A number of cards not in a deck, customarily held in ones hand."
icon = 'icons/obj/toy.dmi'
@@ -558,11 +558,11 @@ obj/item/toy/cards/cardhand
var/choice = null
obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
/obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
user.set_machine(src)
interact(user)
obj/item/toy/cards/cardhand/interact(mob/user)
/obj/item/toy/cards/cardhand/interact(mob/user)
var/dat = "You have:<BR>"
for(var/t in currenthand)
dat += "<A href='?src=[UID()];pick=[t]'>A [t].</A><BR>"
@@ -573,7 +573,7 @@ obj/item/toy/cards/cardhand/interact(mob/user)
popup.open()
obj/item/toy/cards/cardhand/Topic(href, href_list)
/obj/item/toy/cards/cardhand/Topic(href, href_list)
if(..())
return
if(usr.stat || !ishuman(usr) || !usr.canmove)
@@ -607,7 +607,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list)
qdel(src)
return
obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
if(istype(C))
if(C.parentdeck == parentdeck)
currenthand += C.cardname
@@ -619,7 +619,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living
else
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
/obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added.
@@ -632,7 +632,7 @@ obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/t
newobj.resistance_flags = sourceobj.resistance_flags
obj/item/toy/cards/singlecard
/obj/item/toy/cards/singlecard
name = "card"
desc = "a card"
icon = 'icons/obj/toy.dmi'
@@ -643,7 +643,7 @@ obj/item/toy/cards/singlecard
pixel_x = -5
obj/item/toy/cards/singlecard/examine(mob/user)
/obj/item/toy/cards/singlecard/examine(mob/user)
. = ..()
if(get_dist(user, src) <= 0)
if(ishuman(user))
@@ -654,7 +654,7 @@ obj/item/toy/cards/singlecard/examine(mob/user)
. += "<span class='notice'>You need to have the card in your hand to check it.</span>"
obj/item/toy/cards/singlecard/verb/Flip()
/obj/item/toy/cards/singlecard/verb/Flip()
set name = "Flip Card"
set category = "Object"
set src in range(1)
@@ -675,7 +675,7 @@ obj/item/toy/cards/singlecard/verb/Flip()
name = "card"
pixel_x = -5
obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
/obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/toy/cards/singlecard/))
var/obj/item/toy/cards/singlecard/C = I
if(C.parentdeck == parentdeck)
@@ -705,7 +705,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
else
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
obj/item/toy/cards/cardhand/update_icon()
/obj/item/toy/cards/cardhand/update_icon()
switch(currenthand.len)
if(0 to 1)
return
@@ -719,12 +719,12 @@ obj/item/toy/cards/cardhand/update_icon()
icon_state = "[deckstyle]_hand5"
obj/item/toy/cards/singlecard/attack_self(mob/user)
/obj/item/toy/cards/singlecard/attack_self(mob/user)
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
return
Flip()
obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
/obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works.
@@ -746,7 +746,7 @@ obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newo
|| Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. ||
*/
obj/item/toy/cards/deck/syndicate
/obj/item/toy/cards/deck/syndicate
name = "suspicious looking deck of cards"
desc = "A deck of space-grade playing cards. They seem unusually rigid."
deckstyle = "syndicate"
@@ -761,10 +761,10 @@ obj/item/toy/cards/deck/syndicate
/*
|| Custom card decks ||
*/
obj/item/toy/cards/deck/black
/obj/item/toy/cards/deck/black
deckstyle = "black"
obj/item/toy/cards/deck/syndicate/black
/obj/item/toy/cards/deck/syndicate/black
deckstyle = "black"
/obj/item/toy/nuke
+9 -4
View File
@@ -1,10 +1,11 @@
obj/item/firework
/obj/item/firework
name = "fireworks"
icon = 'icons/obj/fireworks.dmi'
icon_state = "rocket_0"
var/litzor = 0
var/datum/effect_system/sparkle_spread/S
obj/item/firework/attackby(obj/item/W,mob/user, params)
/obj/item/firework/attackby(obj/item/W,mob/user, params)
if(litzor)
return
if(is_hot(W))
@@ -20,13 +21,13 @@ obj/item/firework/attackby(obj/item/W,mob/user, params)
S.start()
qdel(src)
obj/item/sparkler
/obj/item/sparkler
name = "sparkler"
icon = 'icons/obj/fireworks.dmi'
icon_state = "sparkler_0"
var/litzor = 0
obj/item/sparkler/attackby(obj/item/W,mob/user, params)
/obj/item/sparkler/attackby(obj/item/W,mob/user, params)
if(litzor)
return
if(is_hot(W))
@@ -39,8 +40,12 @@ obj/item/sparkler/attackby(obj/item/W,mob/user, params)
do_sparks(1, 0, loc)
sleep(10)
qdel(src)
// TODO: Refactor this into a proper locker or something
// Or just axe the system. This code is 7 years old
/obj/crate/fireworks
name = "Fireworks!"
/obj/crate/fireworks/New()
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
@@ -9,27 +9,27 @@
var/deliveryamt = 1 // amount of type to deliver
spawner_type = /mob/living/simple_animal/hostile/viscerator
prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
/obj/item/grenade/spawnergrenade/prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
if(spawner_type && deliveryamt)
// Make a quick flash
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/C in viewers(T, null))
C.flash_eyes()
if(spawner_type && deliveryamt)
// Make a quick flash
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/C in viewers(T, null))
C.flash_eyes()
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type
x.admin_spawned = admin_spawned
x.loc = T
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(x, pick(NORTH,SOUTH,EAST,WEST))
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type
x.admin_spawned = admin_spawned
x.loc = T
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(x, pick(NORTH,SOUTH,EAST,WEST))
// Spawn some hostile syndicate critters
// Spawn some hostile syndicate critters
qdel(src)
return
qdel(src)
return
/obj/item/grenade/spawnergrenade/manhacks
name = "manhack delivery grenade"
@@ -17,13 +17,6 @@
var/mob/living/carbon/occupant = null
var/injecting = 0
/obj/machinery/implantchair/proc
go_out()
put_mob(mob/living/carbon/M)
implant(var/mob/M)
add_implants()
/obj/machinery/implantchair/New()
..()
add_implants()
@@ -87,7 +80,7 @@
return
/obj/machinery/implantchair/go_out(mob/M)
/obj/machinery/implantchair/proc/go_out(mob/M)
if(!( src.occupant ))
return
if(M == occupant) // so that the guy inside can't eject himself -Agouri
@@ -101,7 +94,7 @@
return
/obj/machinery/implantchair/put_mob(mob/living/carbon/M)
/obj/machinery/implantchair/proc/put_mob(mob/living/carbon/M)
if(!iscarbon(M))
to_chat(usr, "<span class='warning'>The [src.name] cannot hold this!</span>")
return
@@ -116,7 +109,7 @@
return 1
/obj/machinery/implantchair/implant(mob/M)
/obj/machinery/implantchair/proc/implant(mob/M)
if(!istype(M, /mob/living/carbon))
return
if(!implant_list.len) return
@@ -131,7 +124,7 @@
return
/obj/machinery/implantchair/add_implants()
/obj/machinery/implantchair/proc/add_implants()
for(var/i=0, i<src.max_implants, i++)
var/obj/item/implant/mindshield/I = new /obj/item/implant/mindshield(src)
implant_list += I
@@ -556,7 +556,7 @@
icon_state = "duffel-clown"
item_state = "duffel-clown"
obj/item/storage/backpack/duffel/blueshield
/obj/item/storage/backpack/duffel/blueshield
name = "blueshield duffelbag"
desc = "A robust duffelbag issued to Nanotrasen's finest."
icon_state = "duffel-blueshield"
+303 -298
View File
@@ -66,14 +66,15 @@
/obj/item/storage/box/survival
icon_state = "box_civ"
New()
..()
contents = list()
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/survival/New()
..()
contents = list()
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/survival_vox
icon_state = "box_vox"
@@ -99,66 +100,69 @@
/obj/item/storage/box/engineer
icon_state = "box_eng"
New()
..()
contents = list()
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen/engi( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/engineer/New()
..()
contents = list()
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen/engi( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/survival_mining
icon_state = "box_min"
New()
..()
contents = list()
new /obj/item/clothing/mask/gas/explorer(src)
new /obj/item/tank/emergency_oxygen/engi(src)
new /obj/item/crowbar/red(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
/obj/item/storage/box/survival_mining/New()
..()
contents = list()
new /obj/item/clothing/mask/gas/explorer(src)
new /obj/item/tank/emergency_oxygen/engi(src)
new /obj/item/crowbar/red(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
/obj/item/storage/box/survival_syndi
icon_state = "box_syndi"
New()
..()
contents = list()
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/reagent_containers/food/pill/initropidril(src)
new /obj/item/flashlight/flare/glowstick/red(src)
/obj/item/storage/box/survival_syndi/New()
..()
contents = list()
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/reagent_containers/food/pill/initropidril(src)
new /obj/item/flashlight/flare/glowstick/red(src)
/obj/item/storage/box/gloves
name = "box of latex gloves"
desc = "Contains white gloves."
icon_state = "latex"
New()
..()
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
/obj/item/storage/box/gloves/New()
..()
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
/obj/item/storage/box/masks
name = "sterile masks"
desc = "This box contains masks of sterility."
icon_state = "sterile"
New()
..()
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
/obj/item/storage/box/masks/New()
..()
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
/obj/item/storage/box/syringes
@@ -167,29 +171,29 @@
desc = "A biohazard alert warning is printed on the box"
icon_state = "syringe"
New()
..()
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
/obj/item/storage/box/syringes/New()
..()
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
new /obj/item/reagent_containers/syringe( src )
/obj/item/storage/box/beakers
name = "beaker box"
icon_state = "beaker"
New()
..()
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
/obj/item/storage/box/beakers/New()
..()
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
new /obj/item/reagent_containers/glass/beaker( src )
/obj/item/storage/box/beakers/bluespace
name = "box of bluespace beakers"
@@ -219,14 +223,14 @@
name = "\improper DNA injectors"
desc = "This box contains injectors it seems."
New()
..()
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/m2h(src)
new /obj/item/dnainjector/m2h(src)
new /obj/item/dnainjector/m2h(src)
/obj/item/storage/box/injectors/New()
..()
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/h2m(src)
new /obj/item/dnainjector/m2h(src)
new /obj/item/dnainjector/m2h(src)
new /obj/item/dnainjector/m2h(src)
/obj/item/storage/box/slug
name = "Ammunition Box (Slug)"
@@ -304,29 +308,29 @@
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.</B>"
icon_state = "flashbang"
New()
..()
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
/obj/item/storage/box/flashbangs/New()
..()
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
/obj/item/storage/box/flashes
name = "box of flashbulbs"
desc = "<B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
icon_state = "flashbang"
New()
..()
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
/obj/item/storage/box/flashes/New()
..()
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
new /obj/item/flash(src)
/obj/item/storage/box/teargas
name = "box of tear gas grenades (WARNING)"
@@ -348,13 +352,13 @@
desc = "A box with 5 emp grenades."
icon_state = "flashbang"
New()
..()
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
/obj/item/storage/box/emps/New()
..()
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
/obj/item/storage/box/trackimp
@@ -362,15 +366,15 @@
desc = "Box full of scum-bag tracking utensils."
icon_state = "implant"
New()
..()
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
new /obj/item/locator(src)
/obj/item/storage/box/trackimp/New()
..()
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implantcase/tracking(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
new /obj/item/locator(src)
/obj/item/storage/box/minertracker
name = "boxed tracking implant kit"
@@ -391,86 +395,86 @@
desc = "Box of stuff used to implant chemicals."
icon_state = "implant"
New()
..()
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
/obj/item/storage/box/chemimp/New()
..()
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
/obj/item/storage/box/exileimp
name = "boxed exile implant kit"
desc = "Box of exile implants. It has a picture of a clown being booted through the Gateway."
icon_state = "implant"
New()
..()
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implanter(src)
/obj/item/storage/box/exileimp/New()
..()
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implantcase/exile(src)
new /obj/item/implanter(src)
/obj/item/storage/box/deathimp
name = "death alarm implant kit"
desc = "Box of life sign monitoring implants."
icon_state = "implant"
New()
..()
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implanter(src)
/obj/item/storage/box/deathimp/New()
..()
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implanter(src)
/obj/item/storage/box/tapes
name = "Tape Box"
desc = "A box of spare recording tapes"
icon_state = "box"
New()
..()
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
/obj/item/storage/box/tapes/New()
..()
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
new /obj/item/tape(src)
/obj/item/storage/box/rxglasses
name = "prescription glasses"
desc = "This box contains nerd glasses."
icon_state = "glasses"
New()
..()
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
/obj/item/storage/box/rxglasses/New()
..()
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
/obj/item/storage/box/drinkingglasses
name = "box of drinking glasses"
desc = "It has a picture of drinking glasses on it."
New()
..()
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
/obj/item/storage/box/drinkingglasses/New()
..()
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
/obj/item/storage/box/cdeathalarm_kit
name = "Death Alarm Kit"
@@ -478,43 +482,42 @@
icon_state = "implant"
item_state = "syringe_kit"
New()
..()
new /obj/item/implanter(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
/obj/item/storage/box/cdeathalarm_kit/New()
..()
new /obj/item/implanter(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
new /obj/item/implantcase/death_alarm(src)
/obj/item/storage/box/condimentbottles
name = "box of condiment bottles"
desc = "It has a large ketchup smear on it."
New()
..()
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
/obj/item/storage/box/condimentbottles/New()
..()
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
new /obj/item/reagent_containers/food/condiment(src)
/obj/item/storage/box/cups
name = "box of paper cups"
desc = "It has pictures of paper cups on the front."
New()
..()
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
/obj/item/storage/box/cups/New()
..()
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
new /obj/item/reagent_containers/food/drinks/sillycup( src )
/obj/item/storage/box/donkpockets
@@ -522,28 +525,28 @@
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
icon_state = "donk_kit"
New()
..()
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
/obj/item/storage/box/dockpockets/New()
..()
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
/obj/item/storage/box/syndidonkpockets
name = "box of donk-pockets"
desc = "This box feels slightly warm"
icon_state = "donk_kit"
New()
..()
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
/obj/item/storage/box/syndidonkpockets/New()
..()
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
/obj/item/storage/box/monkeycubes
name = "monkey cube box"
@@ -604,59 +607,59 @@
desc = "Has so many empty IDs."
icon_state = "id"
New()
..()
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
/obj/item/storage/box/ids/New()
..()
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
new /obj/item/card/id(src)
/obj/item/storage/box/prisoner
name = "prisoner IDs"
desc = "Take away their last shred of dignity, their name."
icon_state = "id"
New()
..()
new /obj/item/card/id/prisoner/one(src)
new /obj/item/card/id/prisoner/two(src)
new /obj/item/card/id/prisoner/three(src)
new /obj/item/card/id/prisoner/four(src)
new /obj/item/card/id/prisoner/five(src)
new /obj/item/card/id/prisoner/six(src)
new /obj/item/card/id/prisoner/seven(src)
/obj/item/storage/box/prisoner/New()
..()
new /obj/item/card/id/prisoner/one(src)
new /obj/item/card/id/prisoner/two(src)
new /obj/item/card/id/prisoner/three(src)
new /obj/item/card/id/prisoner/four(src)
new /obj/item/card/id/prisoner/five(src)
new /obj/item/card/id/prisoner/six(src)
new /obj/item/card/id/prisoner/seven(src)
/obj/item/storage/box/seccarts
name = "spare R.O.B.U.S.T. Cartridges"
desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security."
icon_state = "pda"
New()
..()
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
/obj/item/storage/box/seccarts/New()
..()
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
new /obj/item/cartridge/security(src)
/obj/item/storage/box/holobadge
name = "holobadge box"
icon_state = "box_badge"
desc = "A box claiming to contain holobadges."
New()
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge/cord(src)
new /obj/item/clothing/accessory/holobadge/cord(src)
..()
return
/obj/item/storage/box/holobadge/New()
..()
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge(src)
new /obj/item/clothing/accessory/holobadge/cord(src)
new /obj/item/clothing/accessory/holobadge/cord(src)
/obj/item/storage/box/evidence
name = "evidence bag box"
@@ -677,50 +680,50 @@
desc = "A box full of handcuffs."
icon_state = "handcuff"
New()
..()
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
/obj/item/storage/box/handcuffs/New()
..()
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/restraints/handcuffs(src)
/obj/item/storage/box/zipties
name = "box of spare zipties"
desc = "A box full of zipties."
icon_state = "handcuff"
New()
..()
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
/obj/item/storage/box/zipties/New()
..()
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
/obj/item/storage/box/alienhandcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
icon_state = "alienboxCuffs"
New()
..()
for(var/i in 1 to 7)
new /obj/item/restraints/handcuffs/alien(src)
/obj/item/storage/box/alienhandcuffs/New()
..()
for(var/i in 1 to 7)
new /obj/item/restraints/handcuffs/alien(src)
/obj/item/storage/box/fakesyndiesuit
name = "boxed space suit and helmet"
desc = "A sleek, sturdy box used to hold replica spacesuits."
icon_state = "box_of_doom"
New()
..()
new /obj/item/clothing/head/syndicatefake(src)
new /obj/item/clothing/suit/syndicatefake(src)
/obj/item/storage/box/fakesyndiesuit/New()
..()
new /obj/item/clothing/head/syndicatefake(src)
new /obj/item/clothing/suit/syndicatefake(src)
/obj/item/storage/box/enforcer_rubber
name = "enforcer pistol kit (rubber)"
@@ -777,28 +780,28 @@
desc = "<B><FONT color='red'>WARNING:</FONT></B> <I>Keep out of reach of children</I>."
icon_state = "mousetraps"
New()
..()
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
/obj/item/storage/box/mousetraps/New()
..()
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
new /obj/item/assembly/mousetrap( src )
/obj/item/storage/box/pillbottles
name = "box of pill bottles"
desc = "It has pictures of pill bottles on its front."
New()
..()
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
/obj/item/storage/box/pillbottles/New()
..()
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
new /obj/item/storage/pill_bottle( src )
/obj/item/storage/box/patch_packs
name = "box of patch packs"
@@ -836,10 +839,11 @@
icon_state = "spbox"
storage_slots = 8
can_hold = list(/obj/item/toy/snappop)
New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/toy/snappop(src)
/obj/item/storage/box/snappops/New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/toy/snappop(src)
/obj/item/storage/box/matches
name = "matchbox"
@@ -868,23 +872,24 @@
name = "box of injectors"
desc = "Contains autoinjectors."
icon_state = "syringe"
New()
..()
for(var/i; i < storage_slots; i++)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
/obj/item/storage/box/autoinjectors/New()
..()
for(var/i; i < storage_slots; i++)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
/obj/item/storage/box/autoinjector/utility
name = "autoinjector kit"
desc = "A box with several utility autoinjectors for the economical miner."
icon_state = "syringe"
New()
..()
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
/obj/item/storage/box/autoinjector/utility/New()
..()
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
/obj/item/storage/box/lights
name = "replacement bulbs"
@@ -204,11 +204,11 @@
var/obj/item/sample_object
var/number
New(obj/item/sample as obj)
if(!istype(sample))
qdel(src)
sample_object = sample
number = 1
/datum/numbered_display/New(obj/item/sample as obj)
if(!istype(sample))
qdel(src)
sample_object = sample
number = 1
//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
/obj/item/storage/proc/orient2hud(mob/user as mob)
@@ -160,14 +160,14 @@
/obj/item/storage/box/syndie_kit/boolets
name = "Shotgun shells"
New()
..()
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
/obj/item/storage/box/syndie_kit/boolets/New()
..()
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
/obj/item/storage/box/syndie_kit/emp
name = "boxed EMP kit"
@@ -208,26 +208,26 @@
/obj/item/storage/box/syndie_kit/sarin
name = "Sarin Gas Grenades"
New()
..()
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
/obj/item/storage/box/syndie_kit/sarin/New()
..()
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
new /obj/item/grenade/chem_grenade/saringas(src)
/obj/item/storage/box/syndie_kit/bioterror
name = "bioterror syringe box"
New()
..()
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
return
/obj/item/storage/box/syndie_kit/bioterror/New()
..()
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
new /obj/item/reagent_containers/syringe/bioterror(src)
return
/obj/item/storage/box/syndie_kit/caneshotgun
name = "cane gun kit"
@@ -27,7 +27,7 @@
if(get_dist(user, src) <= 0 && air_contents.oxygen < 10)
. += "<span class='danger'>The meter on [src] indicates you are almost out of air!</span>"
obj/item/tank/oxygen/empty/New()
/obj/item/tank/oxygen/empty/New()
..()
air_contents.oxygen = null
@@ -158,7 +158,7 @@ obj/item/tank/oxygen/empty/New()
. += "<span class='danger'>The meter on [src] indicates you are almost out of air!</span>"
playsound(user, 'sound/effects/alert.ogg', 50, 1)
obj/item/tank/emergency_oxygen/empty/New()
/obj/item/tank/emergency_oxygen/empty/New()
..()
air_contents.oxygen = null
@@ -167,7 +167,7 @@ obj/item/tank/emergency_oxygen/empty/New()
icon_state = "emergency_engi"
volume = 6
obj/item/tank/emergency_oxygen/engi/empty/New()
/obj/item/tank/emergency_oxygen/engi/empty/New()
..()
air_contents.oxygen = null
@@ -182,7 +182,7 @@ obj/item/tank/emergency_oxygen/engi/empty/New()
icon_state = "emergency_double"
volume = 10
obj/item/tank/emergency_oxygen/double/empty/New()
/obj/item/tank/emergency_oxygen/double/empty/New()
..()
air_contents.oxygen = null
+41 -37
View File
@@ -30,13 +30,14 @@
desc = "This is a random tool"
icon = 'icons/obj/items.dmi'
icon_state = "welder"
item_to_spawn()
return pick(/obj/item/screwdriver,\
/obj/item/wirecutters,\
/obj/item/weldingtool,\
/obj/item/crowbar,\
/obj/item/wrench,\
/obj/item/flashlight)
/obj/random/tool/item_to_spawn()
return pick(/obj/item/screwdriver,\
/obj/item/wirecutters,\
/obj/item/weldingtool,\
/obj/item/crowbar,\
/obj/item/wrench,\
/obj/item/flashlight)
/obj/random/technology_scanner
@@ -44,10 +45,11 @@
desc = "This is a random technology scanner."
icon = 'icons/obj/device.dmi'
icon_state = "atmos"
item_to_spawn()
return pick(prob(5);/obj/item/t_scanner,\
prob(2);/obj/item/radio/intercom,\
prob(5);/obj/item/analyzer)
/obj/random/technology_scanner/item_to_spawn()
return pick(prob(5);/obj/item/t_scanner,\
prob(2);/obj/item/radio/intercom,\
prob(5);/obj/item/analyzer)
/obj/random/powercell
@@ -55,23 +57,24 @@
desc = "This is a random powercell."
icon = 'icons/obj/power.dmi'
icon_state = "cell"
item_to_spawn()
return pick(prob(10);/obj/item/stock_parts/cell/crap,\
prob(40);/obj/item/stock_parts/cell,\
prob(40);/obj/item/stock_parts/cell/high,\
prob(9);/obj/item/stock_parts/cell/super,\
prob(1);/obj/item/stock_parts/cell/hyper)
/obj/random/powercell/item_to_spawn()
return pick(prob(10);/obj/item/stock_parts/cell/crap,\
prob(40);/obj/item/stock_parts/cell,\
prob(40);/obj/item/stock_parts/cell/high,\
prob(9);/obj/item/stock_parts/cell/super,\
prob(1);/obj/item/stock_parts/cell/hyper)
/obj/random/bomb_supply
name = "Bomb Supply"
desc = "This is a random bomb supply."
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "signaller"
item_to_spawn()
return pick(/obj/item/assembly/igniter,\
/obj/item/assembly/prox_sensor,\
/obj/item/assembly/signaler)
/obj/random/bomb_supply/item_to_spawn()
return pick(/obj/item/assembly/igniter,\
/obj/item/assembly/prox_sensor,\
/obj/item/assembly/signaler)
/obj/random/toolbox
@@ -79,11 +82,11 @@
desc = "This is a random toolbox."
icon = 'icons/obj/storage.dmi'
icon_state = "red"
item_to_spawn()
return pick(prob(3);/obj/item/storage/toolbox/mechanical,\
prob(2);/obj/item/storage/toolbox/electrical,\
prob(1);/obj/item/storage/toolbox/emergency)
/obj/random/toolbox/item_to_spawn()
return pick(prob(3);/obj/item/storage/toolbox/mechanical,\
prob(2);/obj/item/storage/toolbox/electrical,\
prob(1);/obj/item/storage/toolbox/emergency)
/obj/random/tech_supply
name = "Random Tech Supply"
@@ -91,15 +94,16 @@
icon = 'icons/obj/power.dmi'
icon_state = "cell"
spawn_nothing_percentage = 50
item_to_spawn()
return pick(prob(3);/obj/random/powercell,\
prob(2);/obj/random/technology_scanner,\
prob(1);/obj/item/stack/packageWrap,\
prob(2);/obj/random/bomb_supply,\
prob(1);/obj/item/extinguisher,\
prob(1);/obj/item/clothing/gloves/color/fyellow,\
prob(3);/obj/item/stack/cable_coil,\
prob(2);/obj/random/toolbox,\
prob(2);/obj/item/storage/belt/utility,\
prob(5);/obj/random/tool,\
prob(3);/obj/item/stack/tape_roll)
/obj/random/tech_supply/item_to_spawn()
return pick(prob(3);/obj/random/powercell,\
prob(2);/obj/random/technology_scanner,\
prob(1);/obj/item/stack/packageWrap,\
prob(2);/obj/random/bomb_supply,\
prob(1);/obj/item/extinguisher,\
prob(1);/obj/item/clothing/gloves/color/fyellow,\
prob(3);/obj/item/stack/cable_coil,\
prob(2);/obj/random/toolbox,\
prob(2);/obj/item/storage/belt/utility,\
prob(5);/obj/random/tool,\
prob(3);/obj/item/stack/tape_roll)
@@ -61,89 +61,89 @@
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/clothing/suit/space/hardsuit/syndi/elite/sst(src)
/obj/structure/closet/syndicate/resources/
/obj/structure/closet/syndicate/resources
desc = "An old, dusty locker."
New()
..()
var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
/obj/structure/closet/syndicate/resources/New()
..()
var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
var/pickednum = rand(1, 50)
var/pickednum = rand(1, 50)
//Sad trombone
if(pickednum == 1)
var/obj/item/paper/P = new /obj/item/paper(src)
P.name = "IOU"
P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!"
//Sad trombone
if(pickednum == 1)
var/obj/item/paper/P = new /obj/item/paper(src)
P.name = "IOU"
P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!"
//Metal (common ore)
if(pickednum >= 2)
new /obj/item/stack/sheet/metal(src, rand(common_min, common_max))
//Metal (common ore)
if(pickednum >= 2)
new /obj/item/stack/sheet/metal(src, rand(common_min, common_max))
//Glass (common ore)
if(pickednum >= 5)
new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
//Glass (common ore)
if(pickednum >= 5)
new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
//Plasteel (common ore) Because it has a million more uses then plasma
if(pickednum >= 10)
new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
//Plasteel (common ore) Because it has a million more uses then plasma
if(pickednum >= 10)
new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
//Plasma (rare ore)
if(pickednum >= 15)
new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
//Plasma (rare ore)
if(pickednum >= 15)
new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
//Silver (rare ore)
if(pickednum >= 20)
new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max))
//Silver (rare ore)
if(pickednum >= 20)
new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max))
//Gold (rare ore)
if(pickednum >= 30)
new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max))
//Gold (rare ore)
if(pickednum >= 30)
new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max))
//Uranium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
//Uranium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
//Titanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max))
//Titanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max))
//Plastitanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max))
//Plastitanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max))
//Diamond (rare HONK)
if(pickednum >= 45)
new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
//Diamond (rare HONK)
if(pickednum >= 45)
new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
//Jetpack (You hit the jackpot!)
if(pickednum == 50)
new /obj/item/tank/jetpack/carbondioxide(src)
//Jetpack (You hit the jackpot!)
if(pickednum == 50)
new /obj/item/tank/jetpack/carbondioxide(src)
/obj/structure/closet/syndicate/resources/everything
desc = "It's an emergency storage closet for repairs."
New()
..()
var/list/resources = list(
/obj/item/stack/sheet/metal,
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/mineral/gold,
/obj/item/stack/sheet/mineral/silver,
/obj/item/stack/sheet/mineral/plasma,
/obj/item/stack/sheet/mineral/uranium,
/obj/item/stack/sheet/mineral/diamond,
/obj/item/stack/sheet/mineral/bananium,
/obj/item/stack/sheet/mineral/titanium,
/obj/item/stack/sheet/mineral/plastitanium,
/obj/item/stack/sheet/plasteel,
/obj/item/stack/rods
)
/obj/structure/closet/syndicate/resources/everything/New()
..()
var/list/resources = list(
/obj/item/stack/sheet/metal,
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/mineral/gold,
/obj/item/stack/sheet/mineral/silver,
/obj/item/stack/sheet/mineral/plasma,
/obj/item/stack/sheet/mineral/uranium,
/obj/item/stack/sheet/mineral/diamond,
/obj/item/stack/sheet/mineral/bananium,
/obj/item/stack/sheet/mineral/titanium,
/obj/item/stack/sheet/mineral/plastitanium,
/obj/item/stack/sheet/plasteel,
/obj/item/stack/rods
)
for(var/i in 1 to 2)
for(var/res in resources)
var/obj/item/stack/R = new res(src)
R.amount = R.max_amount
for(var/i in 1 to 2)
for(var/res in resources)
var/obj/item/stack/R = new res(src)
R.amount = R.max_amount
@@ -339,24 +339,23 @@
var/target_temp = T0C - 40
var/cooling_power = 40
return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
newgas.oxygen = gas.oxygen
newgas.carbon_dioxide = gas.carbon_dioxide
newgas.nitrogen = gas.nitrogen
newgas.toxins = gas.toxins
newgas.volume = gas.volume
newgas.temperature = gas.temperature
if(newgas.temperature <= target_temp) return
if((newgas.temperature - cooling_power) > target_temp)
newgas.temperature -= cooling_power
else
newgas.temperature = target_temp
return newgas
/obj/structure/closet/crate/freezer/return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
newgas.oxygen = gas.oxygen
newgas.carbon_dioxide = gas.carbon_dioxide
newgas.nitrogen = gas.nitrogen
newgas.toxins = gas.toxins
newgas.volume = gas.volume
newgas.temperature = gas.temperature
if(newgas.temperature <= target_temp) return
if((newgas.temperature - cooling_power) > target_temp)
newgas.temperature -= cooling_power
else
newgas.temperature = target_temp
return newgas
/obj/structure/closet/crate/can
desc = "A large can, looks like a bin to me."
@@ -497,22 +496,23 @@
/obj/structure/closet/crate/hydroponics/prespawned
//This exists so the prespawned hydro crates spawn with their contents.
New()
..()
new /obj/item/reagent_containers/glass/bucket(src)
new /obj/item/reagent_containers/glass/bucket(src)
new /obj/item/screwdriver(src)
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/wrench(src)
new /obj/item/wirecutters(src)
new /obj/item/wirecutters(src)
new /obj/item/shovel/spade(src)
new /obj/item/shovel/spade(src)
new /obj/item/storage/box/beakers(src)
new /obj/item/storage/box/beakers(src)
new /obj/item/hand_labeler(src)
new /obj/item/hand_labeler(src)
// Do I need the definition above? Who knows!
/obj/structure/closet/crate/hydroponics/prespawned/New()
..()
new /obj/item/reagent_containers/glass/bucket(src)
new /obj/item/reagent_containers/glass/bucket(src)
new /obj/item/screwdriver(src)
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/wrench(src)
new /obj/item/wirecutters(src)
new /obj/item/wirecutters(src)
new /obj/item/shovel/spade(src)
new /obj/item/shovel/spade(src)
new /obj/item/storage/box/beakers(src)
new /obj/item/storage/box/beakers(src)
new /obj/item/hand_labeler(src)
new /obj/item/hand_labeler(src)
/obj/structure/closet/crate/sci
name = "science crate"
+1 -1
View File
@@ -144,7 +144,7 @@
to_chat(user, "<span class='notice'>You [open ? "close":"open"] [src].</span>")
toggle_lock(user)
obj/structure/displaycase/welder_act(mob/user, obj/item/I)
/obj/structure/displaycase/welder_act(mob/user, obj/item/I)
. = TRUE
if(default_welder_repair(user, I))
broken = FALSE
+1 -1
View File
@@ -67,7 +67,7 @@
. = TRUE
default_unfasten_wrench(user, I, time = 20)
obj/structure/dresser/deconstruct(disassembled = FALSE)
/obj/structure/dresser/deconstruct(disassembled = FALSE)
var/mat_drop = 15
if(disassembled)
mat_drop = 30
+22 -25
View File
@@ -11,8 +11,8 @@
anchored = 1
density = 1
attack_hand(mob/user as mob)
to_chat(user, "Civilians: NT is recruiting! Please head SOUTH to the NT Recruitment office to join the station's crew!")
/obj/structure/signpost/attack_hand(mob/user as mob)
to_chat(user, "Civilians: NT is recruiting! Please head SOUTH to the NT Recruitment office to join the station's crew!")
/obj/structure/ninjatele
@@ -23,31 +23,28 @@
anchored = 1
density = 0
attack_hand(mob/user as mob)
if(user.mind.special_role=="Ninja")
switch(alert("Phase Jaunt relay primed, target locked as [station_name()], initiate VOID-shift translocation? (Warning! Internals required!)",,"Yes","No"))
if("Yes")
if(user.z != src.z) return
user.loc.loc.Exited(user)
user.loc = pick(GLOB.carplist) // In the future, possibly make specific NinjaTele landmarks, and give him an option to teleport to North/South/East/West of SS13 instead of just hijacking a carpspawn.
playsound(user.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(user.loc, 'sound/effects/sparks2.ogg', 50, 1)
new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(user), user.dir)
to_chat(user, "<span class='boldnotice'>VOID-Shift</span> translocation successful")
if("No")
to_chat(user, "<span class='danger'>Process aborted!</span>")
/obj/structure/ninjatele/attack_hand(mob/user as mob)
if(user.mind.special_role=="Ninja")
switch(alert("Phase Jaunt relay primed, target locked as [station_name()], initiate VOID-shift translocation? (Warning! Internals required!)",,"Yes","No"))
if("Yes")
if(user.z != src.z)
return
else
to_chat(user, "<span class='danger'>FĆAL RrR</span>: ŧer nt recgnized, c-cntr-r䣧-ç äcked.")
user.loc.loc.Exited(user)
user.loc = pick(GLOB.carplist) // In the future, possibly make specific NinjaTele landmarks, and give him an option to teleport to North/South/East/West of SS13 instead of just hijacking a carpspawn.
playsound(user.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(user.loc, 'sound/effects/sparks2.ogg', 50, 1)
new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(user), user.dir)
to_chat(user, "<span class='boldnotice'>VOID-Shift</span> translocation successful")
if("No")
to_chat(user, "<span class='danger'>Process aborted!</span>")
return
else
to_chat(user, "<span class='danger'>FĆAL RrR</span>: ŧer nt recgnized, c-cntr-r䣧-ç äcked.")
/obj/structure/respawner
name = "\improper Long-Distance Cloning Machine"
@@ -26,7 +26,7 @@
return !density
// When destroyed by explosions, properly handle contents.
obj/structure/transit_tube/ex_act(severity)
/obj/structure/transit_tube/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/AM in contents)
@@ -31,14 +31,14 @@
. = ..()
. += "<span class='notice'>Alt-click to rotate it clockwise.</span>"
obj/structure/windoor_assembly/New(loc, set_dir)
/obj/structure/windoor_assembly/New(loc, set_dir)
..()
if(set_dir)
dir = set_dir
ini_dir = dir
air_update_turf(1)
obj/structure/windoor_assembly/Destroy()
/obj/structure/windoor_assembly/Destroy()
density = FALSE
QDEL_NULL(electronics)
air_update_turf(1)
+1 -1
View File
@@ -666,7 +666,7 @@ GLOBAL_LIST_INIT(wcCommon, pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e",
icon_state = "tinted_window"
opacity = 1
obj/structure/window/full/reinforced/ice
/obj/structure/window/full/reinforced/ice
icon = 'icons/obj/smooth_structures/rice_window.dmi'
icon_state = "ice_window"
max_integrity = 150
+6 -4
View File
@@ -19,11 +19,13 @@
opacity = 0
anchored = 1
CanPass(atom/movable/mover, turf/target, height)
if(!height) return 0
else return ..()
/obj/structure/shuttle/window/CanPass(atom/movable/mover, turf/target, height)
if(!height)
return 0
else
return ..()
CanAtmosPass(turf/T)
/obj/structure/shuttle/window/CanAtmosPass(turf/T)
return !density
/obj/structure/shuttle/engine
+87 -61
View File
@@ -11,72 +11,98 @@
pushdirection = SOUTH // south because the space tile is scrolling south
//IF ANYONE KNOWS A MORE EFFICIENT WAY OF MANAGING THESE SPRITES, BE MY GUEST.
shuttlespace_ns1
icon_state = "speedspace_ns_1"
shuttlespace_ns2
icon_state = "speedspace_ns_2"
shuttlespace_ns3
icon_state = "speedspace_ns_3"
shuttlespace_ns4
icon_state = "speedspace_ns_4"
shuttlespace_ns5
icon_state = "speedspace_ns_5"
shuttlespace_ns6
icon_state = "speedspace_ns_6"
shuttlespace_ns7
icon_state = "speedspace_ns_7"
shuttlespace_ns8
icon_state = "speedspace_ns_8"
shuttlespace_ns9
icon_state = "speedspace_ns_9"
shuttlespace_ns10
icon_state = "speedspace_ns_10"
shuttlespace_ns11
icon_state = "speedspace_ns_11"
shuttlespace_ns12
icon_state = "speedspace_ns_12"
shuttlespace_ns13
icon_state = "speedspace_ns_13"
shuttlespace_ns14
icon_state = "speedspace_ns_14"
shuttlespace_ns15
icon_state = "speedspace_ns_15"
/turf/space/transit/north/shuttlespace_ns1
icon_state = "speedspace_ns_1"
/turf/space/transit/north/shuttlespace_ns2
icon_state = "speedspace_ns_2"
/turf/space/transit/north/shuttlespace_ns3
icon_state = "speedspace_ns_3"
/turf/space/transit/north/shuttlespace_ns4
icon_state = "speedspace_ns_4"
/turf/space/transit/north/shuttlespace_ns5
icon_state = "speedspace_ns_5"
/turf/space/transit/north/shuttlespace_ns6
icon_state = "speedspace_ns_6"
/turf/space/transit/north/shuttlespace_ns7
icon_state = "speedspace_ns_7"
/turf/space/transit/north/shuttlespace_ns8
icon_state = "speedspace_ns_8"
/turf/space/transit/north/shuttlespace_ns9
icon_state = "speedspace_ns_9"
/turf/space/transit/north/shuttlespace_ns10
icon_state = "speedspace_ns_10"
/turf/space/transit/north/shuttlespace_ns11
icon_state = "speedspace_ns_11"
/turf/space/transit/north/shuttlespace_ns12
icon_state = "speedspace_ns_12"
/turf/space/transit/north/shuttlespace_ns13
icon_state = "speedspace_ns_13"
/turf/space/transit/north/shuttlespace_ns14
icon_state = "speedspace_ns_14"
/turf/space/transit/north/shuttlespace_ns15
icon_state = "speedspace_ns_15"
/turf/space/transit/east // moving to the east
pushdirection = WEST
shuttlespace_ew1
icon_state = "speedspace_ew_1"
shuttlespace_ew2
icon_state = "speedspace_ew_2"
shuttlespace_ew3
icon_state = "speedspace_ew_3"
shuttlespace_ew4
icon_state = "speedspace_ew_4"
shuttlespace_ew5
icon_state = "speedspace_ew_5"
shuttlespace_ew6
icon_state = "speedspace_ew_6"
shuttlespace_ew7
icon_state = "speedspace_ew_7"
shuttlespace_ew8
icon_state = "speedspace_ew_8"
shuttlespace_ew9
icon_state = "speedspace_ew_9"
shuttlespace_ew10
icon_state = "speedspace_ew_10"
shuttlespace_ew11
icon_state = "speedspace_ew_11"
shuttlespace_ew12
icon_state = "speedspace_ew_12"
shuttlespace_ew13
icon_state = "speedspace_ew_13"
shuttlespace_ew14
icon_state = "speedspace_ew_14"
shuttlespace_ew15
icon_state = "speedspace_ew_15"
/turf/space/transit/east/shuttlespace_ew1
icon_state = "speedspace_ew_1"
/turf/space/transit/east/shuttlespace_ew2
icon_state = "speedspace_ew_2"
/turf/space/transit/east/shuttlespace_ew3
icon_state = "speedspace_ew_3"
/turf/space/transit/east/shuttlespace_ew4
icon_state = "speedspace_ew_4"
/turf/space/transit/east/shuttlespace_ew5
icon_state = "speedspace_ew_5"
/turf/space/transit/east/shuttlespace_ew6
icon_state = "speedspace_ew_6"
/turf/space/transit/east/shuttlespace_ew7
icon_state = "speedspace_ew_7"
/turf/space/transit/east/shuttlespace_ew8
icon_state = "speedspace_ew_8"
/turf/space/transit/east/shuttlespace_ew9
icon_state = "speedspace_ew_9"
/turf/space/transit/east/shuttlespace_ew10
icon_state = "speedspace_ew_10"
/turf/space/transit/east/shuttlespace_ew11
icon_state = "speedspace_ew_11"
/turf/space/transit/east/shuttlespace_ew12
icon_state = "speedspace_ew_12"
/turf/space/transit/east/shuttlespace_ew13
icon_state = "speedspace_ew_13"
/turf/space/transit/east/shuttlespace_ew14
icon_state = "speedspace_ew_14"
/turf/space/transit/east/shuttlespace_ew15
icon_state = "speedspace_ew_15"
//-tg- stuff
/turf/space/transit
+1 -1
View File
@@ -486,7 +486,7 @@ GLOBAL_VAR_INIT(failed_old_db_connections, 0)
return .
//This proc ensures that the connection to the feedback database (global variable dbcon) is established
proc/establish_db_connection()
/proc/establish_db_connection()
if(GLOB.failed_db_connections > FAILED_DB_CONNECTION_CUTOFF)
return 0
+4 -4
View File
@@ -1,6 +1,6 @@
#define MAX_ADMIN_BANS_PER_ADMIN 1
datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null)
/datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null)
if(!check_rights(R_BAN)) return
@@ -153,7 +153,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
else
flag_account_for_forum_sync(ckey)
datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
/datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
if(!check_rights(R_BAN)) return
@@ -233,7 +233,7 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
else
flag_account_for_forum_sync(ckey)
datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
/datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
if(!check_rights(R_BAN)) return
@@ -297,7 +297,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
to_chat(usr, "Cancelled")
return
datum/admins/proc/DB_ban_unban_by_id(var/id)
/datum/admins/proc/DB_ban_unban_by_id(var/id)
if(!check_rights(R_BAN))
return
+1 -1
View File
@@ -1,5 +1,5 @@
//Blocks an attempt to connect before even creating our client datum thing.
world/IsBanned(key, address, computer_id, type, check_ipintel = TRUE)
/world/IsBanned(key, address, computer_id, type, check_ipintel = TRUE)
if(!config.ban_legacy_system)
if(address)
+332 -336
View File
@@ -89,403 +89,443 @@
/datum/SDQL_parser/proc/tokenl(i)
return lowertext(token(i))
/datum/SDQL_parser/proc
//query: select_query | delete_query | update_query
query(i, list/node)
query_type = tokenl(i)
/datum/SDQL_parser/proc/query(i, list/node)
query_type = tokenl(i)
switch(query_type)
if("select")
select_query(i, node)
switch(query_type)
if("select")
select_query(i, node)
if("delete")
delete_query(i, node)
if("delete")
delete_query(i, node)
if("update")
update_query(i, node)
if("update")
update_query(i, node)
if("call")
call_query(i, node)
if("call")
call_query(i, node)
if("explain")
node += "explain"
node["explain"] = list()
query(i + 1, node["explain"])
if("explain")
node += "explain"
node["explain"] = list()
query(i + 1, node["explain"])
// select_query: 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]
select_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
/datum/SDQL_parser/proc/select_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
node += "select"
node["select"] = select
node += "select"
node["select"] = select
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
node += "from"
node["from"] = from
node += "from"
node["from"] = from
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
node += "where"
node["where"] = where
node += "where"
node["where"] = where
return i
return i
//delete_query: 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]
delete_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
/datum/SDQL_parser/proc/delete_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
node += "delete"
node["delete"] = select
node += "delete"
node["delete"] = select
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
node += "from"
node["from"] = from
node += "from"
node["from"] = from
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
node += "where"
node["where"] = where
node += "where"
node["where"] = where
return i
return i
//update_query: 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression]
update_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
/datum/SDQL_parser/proc/update_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
node += "update"
node["update"] = select
node += "update"
node["update"] = select
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
node += "from"
node["from"] = from
node += "from"
node["from"] = from
if(tokenl(i) != "set")
i = parse_error("UPDATE has misplaced SET")
if(tokenl(i) != "set")
i = parse_error("UPDATE has misplaced SET")
var/list/set_assignments = list()
i = assignments(i + 1, set_assignments)
var/list/set_assignments = list()
i = assignments(i + 1, set_assignments)
node += "set"
node["set"] = set_assignments
node += "set"
node["set"] = set_assignments
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
node += "where"
node["where"] = where
node += "where"
node["where"] = where
return i
return i
//call_query: 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]]
call_query(i, list/node)
var/list/func = list()
i = variable(i + 1, func)
/datum/SDQL_parser/proc/call_query(i, list/node)
var/list/func = list()
i = variable(i + 1, func)
node += "call"
node["call"] = func
if(tokenl(i) != "on")
return i
var/list/select = list()
i = select_list(i + 1, select)
node += "on"
node["on"] = select
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
node += "from"
node["from"] = from
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
node += "where"
node["where"] = where
node += "call"
node["call"] = func
if(tokenl(i) != "on")
return i
var/list/select = list()
i = select_list(i + 1, select)
node += "on"
node["on"] = select
var/list/from = list()
if(tokenl(i) in list("from", "in"))
i = from_list(i + 1, from)
else
from += "world"
node += "from"
node["from"] = from
if(tokenl(i) == "where")
var/list/where = list()
i = bool_expression(i + 1, where)
node += "where"
node["where"] = where
return i
//select_list: select_item [',' select_list]
select_list(i, list/node)
i = select_item(i, node)
/datum/SDQL_parser/proc/select_list(i, list/node)
i = select_item(i, node)
if(token(i) == ",")
i = select_list(i + 1, node)
if(token(i) == ",")
i = select_list(i + 1, node)
return i
return i
//from_list: from_item [',' from_list]
from_list(i, list/node)
i = from_item(i, node)
/datum/SDQL_parser/proc/from_list(i, list/node)
i = from_item(i, node)
if(token(i) == ",")
i = from_list(i + 1, node)
if(token(i) == ",")
i = from_list(i + 1, node)
return i
return i
//assignments: assignment, [',' assignments]
assignments(i, list/node)
i = assignment(i, node)
/datum/SDQL_parser/proc/assignments(i, list/node)
i = assignment(i, node)
if(token(i) == ",")
i = assignments(i + 1, node)
if(token(i) == ",")
i = assignments(i + 1, node)
return i
return i
//select_item: '*' | select_function | object_type
select_item(i, list/node)
/datum/SDQL_parser/proc/select_item(i, list/node)
if(token(i) == "*")
node += "*"
i++
if(token(i) == "*")
node += "*"
i++
else if(tokenl(i) in select_functions)
i = select_function(i, node)
else if(tokenl(i) in select_functions)
i = select_function(i, node)
else
i = object_type(i, node)
else
i = object_type(i, node)
return i
return i
//from_item: 'world' | object_type
from_item(i, list/node)
/datum/SDQL_parser/proc/from_item(i, list/node)
if(token(i) == "world")
node += "world"
i++
if(token(i) == "world")
node += "world"
i++
else
i = object_type(i, node)
else
i = object_type(i, node)
return i
return i
//bool_expression: expression [bool_operator bool_expression]
bool_expression(i, list/node)
/datum/SDQL_parser/proc/bool_expression(i, list/node)
var/list/bool = list()
i = expression(i, bool)
var/list/bool = list()
i = expression(i, bool)
node[++node.len] = bool
node[++node.len] = bool
if(tokenl(i) in boolean_operators)
i = bool_operator(i, node)
i = bool_expression(i, node)
if(tokenl(i) in boolean_operators)
i = bool_operator(i, node)
i = bool_expression(i, node)
return i
return i
//assignment: <variable name> '=' expression
assignment(var/i, var/list/node, var/list/assignment_list = list())
assignment_list += token(i)
/datum/SDQL_parser/proc/assignment(var/i, var/list/node, var/list/assignment_list = list())
assignment_list += token(i)
if(token(i + 1) == ".")
i = assignment(i + 2, node, assignment_list)
if(token(i + 1) == ".")
i = assignment(i + 2, node, assignment_list)
else if(token(i + 1) == "=")
var/exp_list = list()
node[assignment_list] = exp_list
else if(token(i + 1) == "=")
var/exp_list = list()
node[assignment_list] = exp_list
i = expression(i + 2, exp_list)
i = expression(i + 2, exp_list)
else
parse_error("Assignment expected, but no = found")
else
parse_error("Assignment expected, but no = found")
return i
return i
//variable: <variable name> | <variable name> '.' variable
variable(i, list/node)
var/list/L = list(token(i))
node[++node.len] = L
/datum/SDQL_parser/proc/variable(i, list/node)
var/list/L = list(token(i))
node[++node.len] = L
if(token(i) == "\[")
L += token(i + 1)
i += 2
if(token(i) == "\[")
L += token(i + 1)
i += 2
if(token(i) != "\]")
parse_error("Missing \] at end of reference.")
if(token(i) != "\]")
parse_error("Missing \] at end of reference.")
if(token(i + 1) == ".")
L += "."
i = variable(i + 2, L)
if(token(i + 1) == ".")
L += "."
i = variable(i + 2, L)
else if(token(i + 1) == "(") // OH BOY PROC
var/list/arguments = list()
i = call_function(i, null, arguments)
L += ":"
L[++L.len] = arguments
else if(token(i + 1) == "(") // OH BOY PROC
var/list/arguments = list()
i = call_function(i, null, arguments)
L += ":"
L[++L.len] = arguments
else if(token(i + 1) == "\[") // list index
var/list/expression = list()
i = expression(i + 2, expression)
if(token(i) != "]")
parse_error("Missing ] at the end of list access.")
else if(token(i + 1) == "\[") // list index
var/list/expression = list()
i = expression(i + 2, expression)
if(token(i) != "]")
parse_error("Missing ] at the end of list access.")
L += "\["
L[++L.len] = expression
i++
L += "\["
L[++L.len] = expression
i++
else
i++
else
i++
return i
return i
//object_type: <type path> | string
object_type(i, list/node)
/datum/SDQL_parser/proc/object_type(i, list/node)
if(copytext(token(i), 1, 2) == "/")
node += token(i)
if(copytext(token(i), 1, 2) == "/")
node += token(i)
else
i = string(i, node)
else
i = string(i, node)
return i + 1
return i + 1
//comparitor: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
comparitor(i, list/node)
/datum/SDQL_parser/proc/comparitor(i, list/node)
if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">="))
node += token(i)
if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">="))
node += token(i)
else
parse_error("Unknown comparitor [token(i)]")
else
parse_error("Unknown comparitor [token(i)]")
return i + 1
return i + 1
//bool_operator: 'AND' | '&&' | 'OR' | '||'
bool_operator(i, list/node)
/datum/SDQL_parser/proc/bool_operator(i, list/node)
if(tokenl(i) in list("and", "or", "&&", "||"))
node += token(i)
if(tokenl(i) in list("and", "or", "&&", "||"))
node += token(i)
else
parse_error("Unknown comparitor [token(i)]")
else
parse_error("Unknown comparitor [token(i)]")
return i + 1
return i + 1
//string: ''' <some text> ''' | '"' <some text > '"'
string(i, list/node)
/datum/SDQL_parser/proc/string(i, list/node)
if(copytext(token(i), 1, 2) in list("'", "\""))
node += token(i)
if(copytext(token(i), 1, 2) in list("'", "\""))
node += token(i)
else
parse_error("Expected string but found '[token(i)]'")
else
parse_error("Expected string but found '[token(i)]'")
return i + 1
return i + 1
//array: '{' expression, expression, ... '}'
array(var/i, var/list/node)
// Arrays get turned into this: list("{", list(exp_1a = exp_1b, ...), ...), "{" is to mark the next node as an array.
if(copytext(token(i), 1, 2) != "{")
parse_error("Expected an array but found '[token(i)]'")
return i + 1
node += token(i) // Add the "{"
var/list/expression_list = list()
if(token(i + 1) != "}")
var/list/temp_expression_list = list()
do
i = expression(i + 1, temp_expression_list)
if(token(i) == ",")
expression_list[++expression_list.len] = temp_expression_list
temp_expression_list = list()
while(token(i) && token(i) != "}")
expression_list[++expression_list.len] = temp_expression_list
else
i++
node[++node.len] = expression_list
/datum/SDQL_parser/proc/array(var/i, var/list/node)
// Arrays get turned into this: list("{", list(exp_1a = exp_1b, ...), ...), "{" is to mark the next node as an array.
if(copytext(token(i), 1, 2) != "{")
parse_error("Expected an array but found '[token(i)]'")
return i + 1
node += token(i) // Add the "{"
var/list/expression_list = list()
if(token(i + 1) != "}")
var/list/temp_expression_list = list()
do
i = expression(i + 1, temp_expression_list)
if(token(i) == ",")
expression_list[++expression_list.len] = temp_expression_list
temp_expression_list = list()
while(token(i) && token(i) != "}")
expression_list[++expression_list.len] = temp_expression_list
else
i++
node[++node.len] = expression_list
return i + 1
//call_function: <function name> ['(' [arguments] ')']
call_function(i, list/node, list/arguments)
var/list/cur_argument = list()
if(length(tokenl(i)))
var/procname = ""
if(tokenl(i) == "global" && token(i + 1) == ".") // Global proc.
i += 2
procname = "global."
node += procname + token(i++)
if(token(i) != "(")
parse_error("Expected ( but found '[token(i)]'")
else if(token(i + 1) != ")")
do
i = expression(i + 1, cur_argument)
if(token(i) == ",")
arguments += list(cur_argument)
cur_argument = list()
continue
while(token(i) && token(i) != ")")
arguments += list(cur_argument)
else
i++
/datum/SDQL_parser/proc/call_function(i, list/node, list/arguments)
var/list/cur_argument = list()
if(length(tokenl(i)))
var/procname = ""
if(tokenl(i) == "global" && token(i + 1) == ".") // Global proc.
i += 2
procname = "global."
node += procname + token(i++)
if(token(i) != "(")
parse_error("Expected ( but found '[token(i)]'")
else if(token(i + 1) != ")")
do
i = expression(i + 1, cur_argument)
if(token(i) == ",")
arguments += list(cur_argument)
cur_argument = list()
continue
while(token(i) && token(i) != ")")
arguments += list(cur_argument)
else
parse_error("Expected a function but found nothing")
return i + 1
i++
else
parse_error("Expected a function but found nothing")
return i + 1
//select_function: count_function
select_function(i, list/node)
/datum/SDQL_parser/proc/select_function(i, list/node)
parse_error("Sorry, function calls aren't available yet")
parse_error("Sorry, function calls aren't available yet")
return i
return i
//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression]
expression(i, list/node)
/datum/SDQL_parser/proc/expression(i, list/node)
if(token(i) in unary_operators)
i = unary_expression(i, node)
else if(token(i) == "(")
var/list/expr = list()
i = expression(i + 1, expr)
if(token(i) != ")")
parse_error("Missing ) at end of expression.")
else
i++
node[++node.len] = expr
else
i = value(i, node)
if(token(i) in binary_operators)
i = binary_operator(i, node)
i = expression(i, node)
else if(token(i) in comparitors)
i = binary_operator(i, node)
var/list/rhs = list()
i = expression(i, rhs)
node[++node.len] = rhs
return i
//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' )
/datum/SDQL_parser/proc/unary_expression(i, list/node)
if(token(i) in unary_operators)
var/list/unary_exp = list()
unary_exp += token(i)
i++
if(token(i) in unary_operators)
i = unary_expression(i, node)
i = unary_expression(i, unary_exp)
else if(token(i) == "(")
var/list/expr = list()
@@ -498,99 +538,55 @@
else
i++
node[++node.len] = expr
unary_exp[++unary_exp.len] = expr
else
i = value(i, node)
i = value(i, unary_exp)
if(token(i) in binary_operators)
i = binary_operator(i, node)
i = expression(i, node)
else if(token(i) in comparitors)
i = binary_operator(i, node)
var/list/rhs = list()
i = expression(i, rhs)
node[++node.len] = rhs
node[++node.len] = unary_exp
return i
else
parse_error("Expected unary operator but found '[token(i)]'")
//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' )
unary_expression(i, list/node)
if(token(i) in unary_operators)
var/list/unary_exp = list()
unary_exp += token(i)
i++
if(token(i) in unary_operators)
i = unary_expression(i, unary_exp)
else if(token(i) == "(")
var/list/expr = list()
i = expression(i + 1, expr)
if(token(i) != ")")
parse_error("Missing ) at end of expression.")
else
i++
unary_exp[++unary_exp.len] = expr
else
i = value(i, unary_exp)
node[++node.len] = unary_exp
else
parse_error("Expected unary operator but found '[token(i)]'")
return i
return i
//binary_operator: comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^'
binary_operator(i, list/node)
/datum/SDQL_parser/proc/binary_operator(i, list/node)
if(token(i) in (binary_operators + comparitors))
node += token(i)
if(token(i) in (binary_operators + comparitors))
node += token(i)
else
parse_error("Unknown binary operator [token(i)]")
else
parse_error("Unknown binary operator [token(i)]")
return i + 1
return i + 1
//value: variable | string | number | 'null'
value(i, list/node)
/datum/SDQL_parser/proc/value(i, list/node)
if(token(i) == "null")
node += "null"
i++
if(token(i) == "null")
node += "null"
i++
else if(lowertext(copytext(token(i), 1, 3)) == "0x" && isnum(hex2num(copytext(token(i), 3))))
node += hex2num(copytext(token(i), 3))
i++
else if(lowertext(copytext(token(i), 1, 3)) == "0x" && isnum(hex2num(copytext(token(i), 3))))
node += hex2num(copytext(token(i), 3))
i++
else if(isnum(text2num(token(i))))
node += text2num(token(i))
i++
else if(isnum(text2num(token(i))))
node += text2num(token(i))
i++
else if(copytext(token(i), 1, 2) in list("'", "\""))
i = string(i, node)
else if(copytext(token(i), 1, 2) in list("'", "\""))
i = string(i, node)
else if(copytext(token(i), 1, 2) == "{") // Start a list.
i = array(i, node)
else if(copytext(token(i), 1, 2) == "{") // Start a list.
i = array(i, node)
else
i = variable(i, node)
else
i = variable(i, node)
return i
return i
/*EXPLAIN SELECT * WHERE 42 = 6 * 9 OR val = - 5 == 7*/
+3 -3
View File
@@ -26,9 +26,9 @@ GLOBAL_VAR_INIT(intercom_range_display_status, 0)
icon = 'icons/480x480.dmi'
icon_state = "25percent"
New()
src.pixel_x = -224
src.pixel_y = -224
/obj/effect/debugging/camera_range/New()
src.pixel_x = -224
src.pixel_y = -224
/obj/effect/debugging/mapfix_marker
name = "map fix marker"
+1 -1
View File
@@ -1,4 +1,4 @@
client/proc/one_click_antag()
/client/proc/one_click_antag()
set name = "Create Antagonist"
set desc = "Auto-create an antagonist of your choice"
set category = "Event"
+1 -1
View File
@@ -201,7 +201,7 @@
feedback_add_details("admin_verb","GOD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
/proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(automute)
if(!config.automute_on)
return
@@ -60,7 +60,7 @@
* Guns - I'm making these specifically so that I dont spawn a pile of fully loaded weapons on the map.
*/
//Captain's retro laser - Fires practice laser shots instead.
obj/item/gun/energy/laser/retro/sc_retro
/obj/item/gun/energy/laser/retro/sc_retro
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces."
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
+1 -1
View File
@@ -1,6 +1,6 @@
GLOBAL_LIST_EMPTY(clientmessages)
proc/addclientmessage(var/ckey, var/message)
/proc/addclientmessage(var/ckey, var/message)
ckey = ckey(ckey)
if(!ckey || !message)
return
+3 -3
View File
@@ -193,7 +193,7 @@
toggle_sound = 'sound/items/zippoclose.ogg'
dog_fashion = null
obj/item/clothing/head/helmet/redtaghelm
/obj/item/clothing/head/helmet/redtaghelm
name = "red laser tag helmet"
desc = "They have chosen their own end."
icon_state = "redtaghelm"
@@ -204,7 +204,7 @@ obj/item/clothing/head/helmet/redtaghelm
flags_inv = HIDEEARS|HIDEEYES
dog_fashion = null
obj/item/clothing/head/helmet/bluetaghelm
/obj/item/clothing/head/helmet/bluetaghelm
name = "blue laser tag helmet"
desc = "They'll need more men."
icon_state = "bluetaghelm"
@@ -215,7 +215,7 @@ obj/item/clothing/head/helmet/bluetaghelm
flags_inv = HIDEEARS|HIDEEYES
dog_fashion = null
obj/item/clothing/head/blob
/obj/item/clothing/head/blob
name = "blob hat"
desc = "A collectible hat handed out at the latest Blob Family Reunion."
icon_state = "blobhat"
+19 -14
View File
@@ -9,8 +9,8 @@
heat_protection = FEET
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
redcoat
item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
/obj/item/clothing/shoes/black/redcoat
item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
/obj/item/clothing/shoes/black/greytide
flags = NODROP
@@ -20,18 +20,23 @@
desc = "A pair of brown shoes."
icon_state = "brown"
captain
item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
hop
item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
ce
item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
rd
item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/captain
item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/hop
item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/ce
item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/rd
item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/cmo
item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/brown/qm
item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/blue
name = "blue shoes"
+1 -1
View File
@@ -53,7 +53,7 @@
magboot_state = "syndiemag"
origin_tech = "magnets=4;syndicate=2"
obj/item/clothing/shoes/magboots/syndie/advance //For the Syndicate Strike Team
/obj/item/clothing/shoes/magboots/syndie/advance //For the Syndicate Strike Team
desc = "Reverse-engineered magboots that appear to be based on an advanced model, as they have a lighter magnetic pull. Property of Gorlex Marauders."
name = "advanced blood-red magboots"
slowdown_active = SHOES_SLOWDOWN
+4 -4
View File
@@ -83,7 +83,7 @@
icon_state = "syndicate-helm-black"
item_state = "syndicate-helm-black"
obj/item/clothing/head/helmet/space/syndicate/black/strike
/obj/item/clothing/head/helmet/space/syndicate/black/strike
name = "Syndicate Strike Team commando helmet"
desc = "A heavily armored black helmet that is only given to high-ranking Syndicate operatives."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) //Matches DS gear.
@@ -95,7 +95,7 @@ obj/item/clothing/head/helmet/space/syndicate/black/strike
icon_state = "syndicate-black"
item_state = "syndicate-black"
obj/item/clothing/suit/space/syndicate/black/strike
/obj/item/clothing/suit/space/syndicate/black/strike
name = "Syndicate Strike Team commando space suit"
desc = "A heavily armored, black space suit that is only given to high-ranking Syndicate operatives."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) //Matches DS gear.
@@ -156,7 +156,7 @@ obj/item/clothing/suit/space/syndicate/black/strike
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
obj/item/clothing/head/helmet/space/syndicate/black/red/strike
/obj/item/clothing/head/helmet/space/syndicate/black/red/strike
name = "Syndicate Strike Team leader helmet"
desc = "A heavily armored, black and red space helmet that is only given to elite Syndicate operatives, it looks particularly menacing."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) //Matches DS gear.
@@ -168,7 +168,7 @@ obj/item/clothing/head/helmet/space/syndicate/black/red/strike
icon_state = "syndicate-black-red"
item_state = "syndicate-black-red"
obj/item/clothing/suit/space/syndicate/black/red/strike
/obj/item/clothing/suit/space/syndicate/black/red/strike
name = "Syndicate Strike Team leader space suit"
desc = "A heavily armored, black and red space suit that is only given to elite Syndicate operatives, it looks particularly menacing."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) //Matches DS gear.
@@ -1,8 +1,8 @@
//CONTAINS: Suit fibers and Detective's Scanning Computer
atom/var/list/suit_fibers
/atom/var/list/suit_fibers
atom/proc/add_fibers(mob/living/carbon/human/M)
/atom/proc/add_fibers(mob/living/carbon/human/M)
if(M.gloves && istype(M.gloves,/obj/item/clothing/))
var/obj/item/clothing/gloves/G = M.gloves
if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects
+9 -9
View File
@@ -66,11 +66,11 @@
icon_state = "shrimp_raw"
filling_color = "#FF1C1C"
New()
..()
desc = pick("Anyway, like I was sayin', shrimp is the fruit of the sea.", "You can barbecue it, boil it, broil it, bake it, saute it.")
reagents.add_reagent("protein", 1)
src.bitesize = 1
/obj/item/reagent_containers/food/snacks/shrimp/New()
..()
desc = pick("Anyway, like I was sayin', shrimp is the fruit of the sea.", "You can barbecue it, boil it, broil it, bake it, saute it.")
reagents.add_reagent("protein", 1)
src.bitesize = 1
/obj/item/reagent_containers/food/snacks/feederfish
name = "feeder fish"
@@ -79,10 +79,10 @@
icon_state = "feederfish"
filling_color = "#FF1C1C"
New()
..()
reagents.add_reagent("protein", 1)
src.bitesize = 1
/obj/item/reagent_containers/food/snacks/shrimp/New()
..()
reagents.add_reagent("protein", 1)
src.bitesize = 1
/obj/item/fish
name = "fish"
+4 -4
View File
@@ -1,4 +1,4 @@
proc/Intoxicated(phrase)
/proc/Intoxicated(phrase)
phrase = html_decode(phrase)
var/leng=length(phrase)
var/counter=length(phrase)
@@ -21,7 +21,7 @@ proc/Intoxicated(phrase)
newphrase+="[newletter]";counter-=1
return newphrase
proc/NewStutter(phrase,stunned)
/proc/NewStutter(phrase,stunned)
phrase = html_decode(phrase)
var/list/split_phrase = splittext(phrase," ") //Split it up into words.
@@ -57,10 +57,10 @@ proc/NewStutter(phrase,stunned)
return sanitize(jointext(split_phrase," "))
proc/Stagger(mob/M,d) //Technically not a filter, but it relates to drunkenness.
/proc/Stagger(mob/M,d) //Technically not a filter, but it relates to drunkenness.
step(M, pick(d,turn(d,90),turn(d,-90)))
proc/Ellipsis(original_msg, chance = 50)
/proc/Ellipsis(original_msg, chance = 50)
if(chance <= 0) return "..."
if(chance >= 100) return original_msg
@@ -8,17 +8,17 @@
onicon = "cereal_on"
officon = "cereal_off"
obj/machinery/cooker/cerealmaker/setIcon(obj/item/copyme, obj/item/copyto)
/obj/machinery/cooker/cerealmaker/setIcon(obj/item/copyme, obj/item/copyto)
var/image/img = new(copyme.icon, copyme.icon_state)
img.transform *= 0.7
copyto.overlays += img
copyto.overlays += copyme.overlays
obj/machinery/cooker/cerealmaker/changename(obj/item/name, obj/item/setme)
/obj/machinery/cooker/cerealmaker/changename(obj/item/name, obj/item/setme)
setme.name = "box of [name] cereal"
setme.desc = "[name.desc] It has been [thiscooktype]"
obj/machinery/cooker/cerealmaker/gettype()
/obj/machinery/cooker/cerealmaker/gettype()
var/obj/item/reagent_containers/food/snacks/cereal/type = new(get_turf(src))
return type
@@ -11,7 +11,7 @@
onicon = "grill_on"
officon = "grill_off"
obj/machinery/cooker/foodgrill/putIn(obj/item/In, mob/chef)
/obj/machinery/cooker/foodgrill/putIn(obj/item/In, mob/chef)
..()
var/image/img = new(In.icon, In.icon_state)
img.pixel_y = 5
@@ -449,7 +449,7 @@
)
result = /obj/item/reagent_containers/food/snacks/twobread
datum/recipe/microwave/slimesandwich
/datum/recipe/microwave/slimesandwich
reagents = list("slimejelly" = 5)
items = list(
/obj/item/reagent_containers/food/snacks/breadslice,
+1 -1
View File
@@ -2,7 +2,7 @@
Everything karma related is here.
Part of karma purchase is handled in client_procs.dm */
proc/sql_report_karma(var/mob/spender, var/mob/receiver)
/proc/sql_report_karma(var/mob/spender, var/mob/receiver)
var/sqlspendername = sanitizeSQL(spender.name)
var/sqlspenderkey = sanitizeSQL(spender.ckey)
var/sqlreceivername = sanitizeSQL(receiver.name)
+39 -39
View File
@@ -101,32 +101,32 @@
/obj/structure/bookcase/manuals/medical
name = "Medical Manuals bookcase"
New()
..()
new /obj/item/book/manual/medical_cloning(src)
update_icon()
/obj/structure/bookcase/manuals/medical/New()
..()
new /obj/item/book/manual/medical_cloning(src)
update_icon()
/obj/structure/bookcase/manuals/engineering
name = "Engineering Manuals bookcase"
New()
..()
new /obj/item/book/manual/engineering_construction(src)
new /obj/item/book/manual/engineering_particle_accelerator(src)
new /obj/item/book/manual/engineering_hacking(src)
new /obj/item/book/manual/engineering_guide(src)
new /obj/item/book/manual/engineering_singularity_safety(src)
new /obj/item/book/manual/robotics_cyborgs(src)
update_icon()
/obj/structure/bookcase/manuals/engineering/New()
..()
new /obj/item/book/manual/engineering_construction(src)
new /obj/item/book/manual/engineering_particle_accelerator(src)
new /obj/item/book/manual/engineering_hacking(src)
new /obj/item/book/manual/engineering_guide(src)
new /obj/item/book/manual/engineering_singularity_safety(src)
new /obj/item/book/manual/robotics_cyborgs(src)
update_icon()
/obj/structure/bookcase/manuals/research_and_development
name = "R&D Manuals bookcase"
New()
..()
new /obj/item/book/manual/research_and_development(src)
update_icon()
/obj/structure/bookcase/manuals/research_and_development/New()
..()
new /obj/item/book/manual/research_and_development(src)
update_icon()
/*
@@ -288,26 +288,26 @@
var/obj/item/book/book // Currently scanned book
var/mode = 0 // 0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory
attack_self(mob/user as mob)
mode += 1
if(mode > 3)
mode = 0
to_chat(user, "[src] Status Display:")
var/modedesc
switch(mode)
if(0)
modedesc = "Scan book to local buffer."
if(1)
modedesc = "Scan book to local buffer and set associated computer buffer to match."
if(2)
modedesc = "Scan book to local buffer, attempt to check in scanned book."
if(3)
modedesc = "Scan book to local buffer, attempt to add book to general inventory."
else
modedesc = "ERROR"
to_chat(user, " - Mode [mode] : [modedesc]")
if(src.computer)
to_chat(user, "<font color=green>Computer has been associated with this unit.</font>")
/obj/item/barcodescanner/attack_self(mob/user as mob)
mode += 1
if(mode > 3)
mode = 0
to_chat(user, "[src] Status Display:")
var/modedesc
switch(mode)
if(0)
modedesc = "Scan book to local buffer."
if(1)
modedesc = "Scan book to local buffer and set associated computer buffer to match."
if(2)
modedesc = "Scan book to local buffer, attempt to check in scanned book."
if(3)
modedesc = "Scan book to local buffer, attempt to add book to general inventory."
else
to_chat(user, "<font color=red>No associated computer found. Only local scans will function properly.</font>")
to_chat(user, "\n")
modedesc = "ERROR"
to_chat(user, " - Mode [mode] : [modedesc]")
if(src.computer)
to_chat(user, "<font color=green>Computer has been associated with this unit.</font>")
else
to_chat(user, "<font color=red>No associated computer found. Only local scans will function properly.</font>")
to_chat(user, "\n")
+1 -1
View File
@@ -103,7 +103,7 @@
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Neck Chop", ATKLOG_ALL)
return 1
datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
/datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
if(check_streak(A,D))
return 1
..()
+1 -1
View File
@@ -38,7 +38,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
GLOBAL_LIST_EMPTY(channel_to_radio_key)
proc/get_radio_key_from_channel(var/channel)
/proc/get_radio_key_from_channel(var/channel)
var/key = GLOB.channel_to_radio_key[channel]
if(!key)
for(var/radio_key in GLOB.department_radio_keys)
@@ -243,7 +243,7 @@
add_fingerprint(user)
proc/robot_healthscan(mob/user, mob/living/M)
/proc/robot_healthscan(mob/user, mob/living/M)
var/scan_type
if(istype(M, /mob/living/silicon/robot))
scan_type = "robot"
@@ -71,9 +71,6 @@
var/spawn_delay = 600
var/turn_on = 0
var/auto_spawn = 1
proc
warpbots()
/mob/living/simple_animal/hostile/hivebot/tele/New()
..()
@@ -83,7 +80,7 @@
visible_message("<span class='danger'>The [src] warps in!</span>")
playsound(src.loc, 'sound/effects/empulse.ogg', 25, 1)
/mob/living/simple_animal/hostile/hivebot/tele/warpbots()
/mob/living/simple_animal/hostile/hivebot/tele/proc/warpbots()
icon_state = "def_radar"
visible_message("<span class='warning'>The [src] turns on!</span>")
while(bot_amt > 0)
@@ -524,7 +524,7 @@ Difficulty: Medium
else
animate(src, pixel_x = -16, pixel_z = 0, time = 5)
obj/effect/temp_visual/fireball
/obj/effect/temp_visual/fireball
icon = 'icons/obj/wizard.dmi'
icon_state = "fireball"
name = "fireball"
+1 -1
View File
@@ -288,7 +288,7 @@
S.message = Gibberish(S.message, p)
proc/muffledspeech(phrase)
/proc/muffledspeech(phrase)
phrase = html_decode(phrase)
var/leng=length(phrase)
var/counter=length(phrase)
@@ -237,7 +237,7 @@
data["totalprice"] = total_price
return data
obj/machinery/lapvend/attackby(obj/item/I, mob/user)
/obj/machinery/lapvend/attackby(obj/item/I, mob/user)
var/obj/item/card/id/C
if(istype(I, /obj/item/card/id))
C = I
+1 -1
View File
@@ -42,7 +42,7 @@
if(in_range(user, src) && toppaper)
. += toppaper.examine(user)
obj/item/clipboard/proc/penPlacement(mob/user, obj/item/pen/P, placing)
/obj/item/clipboard/proc/penPlacement(mob/user, obj/item/pen/P, placing)
if(placing)
if(containedpen)
to_chat(user, "<span class='warning'>There's already a pen in [src]!</span>")
@@ -150,7 +150,7 @@
// Explicitly only allow deletion from the local camera
deletepicture(src)
obj/item/camera/siliconcam/proc/getsource()
/obj/item/camera/siliconcam/proc/getsource()
if(istype(src.loc, /mob/living/silicon/ai))
return src
+1 -1
View File
@@ -229,7 +229,7 @@ By design, d1 is the smallest direction and d2 is the highest
if(current_size >= STAGE_FIVE)
deconstruct()
obj/structure/cable/proc/cable_color(colorC)
/obj/structure/cable/proc/cable_color(colorC)
if(!colorC)
color = COLOR_RED
else if(colorC == "rainbow")
@@ -87,7 +87,7 @@
damage = 7
armour_penetration = 0
obj/item/projectile/bullet/saw/incen/Move()
/obj/item/projectile/bullet/saw/incen/Move()
..()
var/turf/location = get_turf(src)
if(location)
+2 -2
View File
@@ -287,7 +287,7 @@
Range()
sleep(max(1, speed))
obj/item/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2))
/obj/item/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2))
if(starting)
var/new_x = starting.x + pick(position_modifiers)
var/new_y = starting.y + pick(position_modifiers)
@@ -306,7 +306,7 @@ obj/item/projectile/proc/reflect_back(atom/source, list/position_modifiers = lis
xo = new_x - curloc.x
Angle = null // Will be calculated in fire()
obj/item/projectile/Crossed(atom/movable/AM, oldloc) //A mob moving on a tile with a projectile is hit by it.
/obj/item/projectile/Crossed(atom/movable/AM, oldloc) //A mob moving on a tile with a projectile is hit by it.
..()
if(isliving(AM) && AM.density && !checkpass(PASSMOB))
Bump(AM, 1)
+1 -1
View File
@@ -39,7 +39,7 @@
reagents.add_reagent("blood", disease_amount, data)
add_initial_reagents()
obj/item/reagent_containers/proc/add_initial_reagents()
/obj/item/reagent_containers/proc/add_initial_reagents()
if(list_reagents)
reagents.add_reagent_list(list_reagents)
+1 -1
View File
@@ -156,7 +156,7 @@
else
return ..()
obj/structure/reagent_dispensers/fueltank/welder_act(mob/user, obj/item/I)
/obj/structure/reagent_dispensers/fueltank/welder_act(mob/user, obj/item/I)
. = TRUE
if(!reagents.has_reagent("fuel"))
to_chat(user, "<span class='warning'>[src] is out of fuel!</span>")
+5 -5
View File
@@ -335,7 +335,7 @@ GLOBAL_DATUM(blackbox, /obj/machinery/blackbox_recorder)
return FALSE // don't fuck with the stupid blackbox shit
proc/feedback_set(var/variable,var/value)
/proc/feedback_set(var/variable,var/value)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>Feedback edit blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to edit feedback data via advanced proc-call")
@@ -351,7 +351,7 @@ proc/feedback_set(var/variable,var/value)
FV.set_value(value)
proc/feedback_inc(var/variable,var/value)
/proc/feedback_inc(var/variable,var/value)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>Feedback edit blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to edit feedback data via advanced proc-call")
@@ -367,7 +367,7 @@ proc/feedback_inc(var/variable,var/value)
FV.inc(value)
proc/feedback_dec(var/variable,var/value)
/proc/feedback_dec(var/variable,var/value)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>Feedback edit blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to edit feedback data via advanced proc-call")
@@ -383,7 +383,7 @@ proc/feedback_dec(var/variable,var/value)
FV.dec(value)
proc/feedback_set_details(var/variable,var/details)
/proc/feedback_set_details(var/variable,var/details)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>Feedback edit blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to edit feedback data via advanced proc-call")
@@ -400,7 +400,7 @@ proc/feedback_set_details(var/variable,var/details)
FV.set_details(details)
proc/feedback_add_details(var/variable,var/details)
/proc/feedback_add_details(var/variable,var/details)
if(IsAdminAdvancedProcCall())
to_chat(usr, "<span class='boldannounce'>Feedback edit blocked: Advanced ProcCall detected.</span>")
message_admins("[key_name(usr)] attempted to edit feedback data via advanced proc-call")
+4 -4
View File
@@ -222,7 +222,7 @@
// EOF
)
spawn_result(mob/user as mob)
..()
feedback_inc("spacepod_created",1)
return
/datum/construction/reversible2/pod/spawn_result(mob/user as mob)
..()
feedback_inc("spacepod_created",1)
return
+2 -2
View File
@@ -30,7 +30,7 @@
// message is the custom message to be displayed
mob/living/carbon/human/proc/custom_pain(message)
/mob/living/carbon/human/proc/custom_pain(message)
if(stat >= UNCONSCIOUS)
return
@@ -49,7 +49,7 @@ mob/living/carbon/human/proc/custom_pain(message)
to_chat(src, msg)
next_pain_time = world.time + 100
mob/living/carbon/human/proc/handle_pain()
/mob/living/carbon/human/proc/handle_pain()
// not when sleeping
if(stat >= UNCONSCIOUS)