mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 18:44:48 +01:00
@@ -0,0 +1,6 @@
|
||||
[langserver]
|
||||
dreamchecker = true
|
||||
|
||||
[code_standards]
|
||||
disallow_relative_type_definitions = true
|
||||
disallow_relative_proc_definitions = true
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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 <
|
||||
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
|
||||
|
||||
@@ -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
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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? \
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 �Rr�R</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 �Rr�R</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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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*/
|
||||
|
||||
@@ -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,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"
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user