Overhauls and 2/28 sync (#244)
* map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures * lazy fix for bleeding edgy (#252) * map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures
This commit is contained in:
@@ -1,17 +1,15 @@
|
||||
#define MAX_ADMIN_BANS_PER_ADMIN 1
|
||||
|
||||
//Either pass the mob you wish to ban in the 'banned_mob' attribute, or the banckey, banip and bancid variables. If both are passed, the mob takes priority! If a mob is not passed, banckey is the minimum that needs to be passed! banip and bancid are optional.
|
||||
/datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", rounds = 0, banckey = null, banip = null, bancid = null)
|
||||
/datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", banckey = null, banip = null, bancid = null)
|
||||
|
||||
if(!check_rights(R_BAN))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
src << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
return
|
||||
|
||||
var/serverip = "[world.internet_address]:[world.port]"
|
||||
var/bantype_pass = 0
|
||||
var/bantype_str
|
||||
var/maxadminbancheck //Used to limit the number of active bans of a certein type that each admin can give. Used to protect against abuse or mutiny.
|
||||
@@ -122,7 +120,7 @@
|
||||
usr << "<span class='danger'>You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!</span>"
|
||||
return
|
||||
|
||||
var/sql = "INSERT INTO [format_table_name("ban")] (`id`,`bantime`,`serverip`,`bantype`,`reason`,`job`,`duration`,`rounds`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`,`edits`,`unbanned`,`unbanned_datetime`,`unbanned_ckey`,`unbanned_computerid`,`unbanned_ip`) VALUES (null, Now(), '[serverip]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], [(rounds)?"[rounds]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', '[ip]', '[a_ckey]', '[a_computerid]', '[a_ip]', '[who]', '[adminwho]', '', null, null, null, null, null)"
|
||||
var/sql = "INSERT INTO [format_table_name("ban")] (`bantime`,`server_ip`,`server_port`,`bantype`,`reason`,`job`,`duration`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`) VALUES (Now(), INET_ATON('[world.internet_address]'), '[world.port]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', INET_ATON('[ip]'), '[a_ckey]', '[a_computerid]', INET_ATON('[a_ip]'), '[who]', '[adminwho]')"
|
||||
var/DBQuery/query_insert = dbcon.NewQuery(sql)
|
||||
query_insert.Execute()
|
||||
usr << "<span class='adminnotice'>Ban saved to database.</span>"
|
||||
@@ -183,8 +181,7 @@
|
||||
if(job)
|
||||
sql += " AND job = '[job]'"
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
return
|
||||
|
||||
var/ban_id
|
||||
@@ -280,8 +277,7 @@
|
||||
|
||||
var/sql = "SELECT ckey FROM [format_table_name("ban")] WHERE id = [id]"
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
return
|
||||
|
||||
var/ban_number = 0 //failsafe
|
||||
@@ -308,7 +304,7 @@
|
||||
var/unban_computerid = src.owner:computer_id
|
||||
var/unban_ip = src.owner:address
|
||||
|
||||
var/sql_update = "UPDATE [format_table_name("ban")] SET unbanned = 1, unbanned_datetime = Now(), unbanned_ckey = '[unban_ckey]', unbanned_computerid = '[unban_computerid]', unbanned_ip = '[unban_ip]' WHERE id = [id]"
|
||||
var/sql_update = "UPDATE [format_table_name("ban")] SET unbanned = 1, unbanned_datetime = Now(), unbanned_ckey = '[unban_ckey]', unbanned_computerid = '[unban_computerid]', unbanned_ip = INET_ATON('[unban_ip]') WHERE id = [id]"
|
||||
message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.",1)
|
||||
|
||||
var/DBQuery/query_update = dbcon.NewQuery(sql_update)
|
||||
@@ -333,8 +329,7 @@
|
||||
if(!check_rights(R_BAN))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
var/ckeytext = ckey(key)
|
||||
|
||||
if(!establish_db_connection())
|
||||
if(!dbcon.Connect())
|
||||
log_world("Ban database connection failure. Key [ckeytext] not checked")
|
||||
diary << "Ban database connection failure. Key [ckeytext] not checked"
|
||||
return
|
||||
@@ -69,25 +69,23 @@
|
||||
var/ipquery = ""
|
||||
var/cidquery = ""
|
||||
if(address)
|
||||
ipquery = " OR ip = '[address]' "
|
||||
ipquery = " OR ip = INET_ATON('[address]') "
|
||||
|
||||
if(computer_id)
|
||||
cidquery = " OR computerid = '[computer_id]' "
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, ip, computerid, a_ckey, reason, expiration_time, duration, bantime, bantype FROM [format_table_name("ban")] WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)")
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, a_ckey, reason, expiration_time, duration, bantime, bantype FROM [format_table_name("ban")] WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)")
|
||||
|
||||
query.Execute()
|
||||
|
||||
while(query.NextRow())
|
||||
var/pckey = query.item[1]
|
||||
//var/pip = query.item[2]
|
||||
//var/pcid = query.item[3]
|
||||
var/ackey = query.item[4]
|
||||
var/reason = query.item[5]
|
||||
var/expiration = query.item[6]
|
||||
var/duration = query.item[7]
|
||||
var/bantime = query.item[8]
|
||||
var/bantype = query.item[9]
|
||||
var/ackey = query.item[2]
|
||||
var/reason = query.item[3]
|
||||
var/expiration = query.item[4]
|
||||
var/duration = query.item[5]
|
||||
var/bantime = query.item[6]
|
||||
var/bantype = query.item[7]
|
||||
if (bantype == "ADMIN_PERMABAN" || bantype == "ADMIN_TEMPBAN")
|
||||
//admin bans MUST match on ckey to prevent cid-spoofing attacks
|
||||
// as well as dynamic ip abuse
|
||||
|
||||
@@ -134,11 +134,11 @@ var/savefile/Banlist
|
||||
if (!Banlist.dir.Remove(foldername)) return 0
|
||||
|
||||
if(!usr)
|
||||
log_admin("Ban Expired: [key]")
|
||||
log_admin_private("Ban Expired: [key]")
|
||||
message_admins("Ban Expired: [key]")
|
||||
else
|
||||
ban_unban_log_save("[key_name(usr)] unbanned [key]")
|
||||
log_admin("[key_name(usr)] unbanned [key]")
|
||||
log_admin_private("[key_name(usr)] unbanned [key]")
|
||||
message_admins("[key_name_admin(usr)] unbanned: [key]")
|
||||
feedback_inc("ban_unban",1)
|
||||
usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN)
|
||||
|
||||
@@ -572,11 +572,11 @@ var/global/BSACooldown = 0
|
||||
set desc="Delay the game start"
|
||||
set name="Delay pre-game"
|
||||
|
||||
var/newtime = input("Set a new time in seconds. Set -1 for indefinite delay.","Set Delay",round(ticker.timeLeft/10)) as num|null
|
||||
var/newtime = input("Set a new time in seconds. Set -1 for indefinite delay.","Set Delay",round(ticker.GetTimeLeft()/10)) as num|null
|
||||
if(ticker.current_state > GAME_STATE_PREGAME)
|
||||
return alert("Too late... The game has already started!")
|
||||
if(newtime)
|
||||
ticker.timeLeft = newtime * 10
|
||||
ticker.SetTimeLeft(newtime * 10)
|
||||
if(newtime < 0)
|
||||
world << "<b>The game start has been delayed.</b>"
|
||||
log_admin("[key_name(usr)] delayed the round start.")
|
||||
|
||||
@@ -127,8 +127,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums
|
||||
|
||||
previous_rights = R.rights
|
||||
else
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
log_world("Failed to connect to database in load_admin_ranks(). Reverting to legacy system.")
|
||||
diary << "Failed to connect to database in load_admin_ranks(). Reverting to legacy system."
|
||||
config.admin_legacy_system = 1
|
||||
@@ -202,8 +201,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums
|
||||
world.SetConfig("APP/admin", ckey, "role=admin")
|
||||
D.associate(directory[ckey]) //find the client for a ckey if they are connected and associate them with the new admin datum
|
||||
else
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
log_world("Failed to connect to database in load_admins(). Reverting to legacy system.")
|
||||
diary << "Failed to connect to database in load_admins(). Reverting to legacy system."
|
||||
config.admin_legacy_system = 1
|
||||
@@ -375,8 +373,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums
|
||||
edit_admin_permissions()
|
||||
|
||||
/datum/admins/proc/updateranktodb(ckey,newrank)
|
||||
establish_db_connection()
|
||||
if (!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
return
|
||||
var/sql_ckey = sanitizeSQL(ckey)
|
||||
var/sql_admin_rank = sanitizeSQL(newrank)
|
||||
|
||||
@@ -94,7 +94,6 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/one_click_antag,
|
||||
/client/proc/send_space_ninja,
|
||||
/client/proc/cmd_admin_add_freeform_ai_law,
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/client/proc/object_say,
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/set_ooc,
|
||||
@@ -216,12 +215,10 @@ var/list/admin_verbs_hideable = list(
|
||||
/client/proc/cinematic,
|
||||
/client/proc/send_space_ninja,
|
||||
/client/proc/cmd_admin_add_freeform_ai_law,
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/client/proc/cmd_admin_create_centcom_report,
|
||||
/client/proc/cmd_change_command_name,
|
||||
/client/proc/object_say,
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/datum/admins/proc/startnow,
|
||||
/datum/admins/proc/restart,
|
||||
/datum/admins/proc/delay,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
return 0
|
||||
|
||||
if(!M.client) //no cache. fallback to a DBQuery
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(M.ckey)]' AND job = '[sanitizeSQL(rank)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)")
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(M.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[sanitizeSQL(rank)]'")
|
||||
if(!query.Execute())
|
||||
log_game("SQL ERROR obtaining jobbans. Error : \[[query.ErrorMsg()]\]\n")
|
||||
return
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
if(!question)
|
||||
return
|
||||
question = sanitizeSQL(question)
|
||||
var/DBQuery/query_polladd_question = dbcon.NewQuery("INSERT INTO [format_table_name("poll_question")] (polltype, starttime, endtime, question, adminonly, multiplechoiceoptions, createdby_ckey, createdby_ip, dontshow) VALUES ('[polltype]', '[starttime]', '[endtime]', '[question]', '[adminonly]', '[choice_amount]', '[sql_ckey]', '[address]', '[dontshow]')")
|
||||
var/DBQuery/query_polladd_question = dbcon.NewQuery("INSERT INTO [format_table_name("poll_question")] (polltype, starttime, endtime, question, adminonly, multiplechoiceoptions, createdby_ckey, createdby_ip, dontshow) VALUES ('[polltype]', '[starttime]', '[endtime]', '[question]', '[adminonly]', '[choice_amount]', '[sql_ckey]', INET_ATON('[address]'), '[dontshow]')")
|
||||
if(!query_polladd_question.Execute())
|
||||
var/err = query_polladd_question.ErrorMsg()
|
||||
log_game("SQL ERROR adding new poll question to table. Error : \[[err]\]\n")
|
||||
@@ -108,7 +108,7 @@
|
||||
message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]<br>Question: [question]")
|
||||
return
|
||||
var/pollid = 0
|
||||
var/DBQuery/query_get_id = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE question = '[question]' AND starttime = '[starttime]' AND endtime = '[endtime]' AND createdby_ckey = '[sql_ckey]' AND createdby_ip = '[address]'")
|
||||
var/DBQuery/query_get_id = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE question = '[question]' AND starttime = '[starttime]' AND endtime = '[endtime]' AND createdby_ckey = '[sql_ckey]' AND createdby_ip = INET_ATON('[address]')")
|
||||
if(!query_get_id.Execute())
|
||||
var/err = query_get_id.ErrorMsg()
|
||||
log_game("SQL ERROR obtaining id from poll_question table. Error : \[[err]\]\n")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
cachedintel.cache = TRUE
|
||||
return cachedintel
|
||||
|
||||
if (establish_db_connection())
|
||||
if(dbcon.Connect())
|
||||
var/DBQuery/query = dbcon.NewQuery({"
|
||||
SELECT date, intel, TIMESTAMPDIFF(MINUTE,date,NOW())
|
||||
FROM [format_table_name("ipintel")]
|
||||
@@ -61,7 +61,7 @@
|
||||
res.intel = ip_intel_query(ip)
|
||||
if (updatecache && res.intel >= 0)
|
||||
SSipintel.cache[ip] = res
|
||||
if (establish_db_connection())
|
||||
if(dbcon.Connect())
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("ipintel")] (ip, intel) VALUES (INET_ATON('[ip]'), [res.intel]) ON DUPLICATE KEY UPDATE intel = VALUES(intel), date = NOW()")
|
||||
query.Execute()
|
||||
return
|
||||
|
||||
@@ -60,9 +60,7 @@
|
||||
if (!check_rights(R_PERMISSIONS))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
return
|
||||
|
||||
@@ -109,8 +107,7 @@
|
||||
if(check_rights(R_PERMISSIONS))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -348,12 +348,16 @@
|
||||
var/living_players_antagonist = 0
|
||||
var/brains = 0
|
||||
var/other_players = 0
|
||||
var/living_skipped = 0
|
||||
for(var/mob/M in mob_list)
|
||||
if(M.ckey)
|
||||
if(isnewplayer(M))
|
||||
lobby_players++
|
||||
continue
|
||||
else if(M.stat != DEAD && M.mind && !isbrain(M))
|
||||
if(M.z == ZLEVEL_CENTCOM)
|
||||
living_skipped++
|
||||
continue
|
||||
living_players++
|
||||
if(M.mind.special_role)
|
||||
living_players_antagonist++
|
||||
@@ -369,6 +373,7 @@
|
||||
other_players++
|
||||
dat += "<BR><b><font color='blue' size='3'>Players:|[connected_players - lobby_players] ingame|[connected_players] connected|[lobby_players] lobby|</font></b>"
|
||||
dat += "<BR><b><font color='green'>Living Players:|[living_players_connected] active|[living_players - living_players_connected] disconnected|[living_players_antagonist] antagonists|</font></b>"
|
||||
dat += "<BR><b><font color='#bf42f4'>SKIPPED \[On centcom Z-level\]: [living_skipped] living players|</font></b>"
|
||||
dat += "<BR><b><font color='red'>Dead/Observing players:|[observers_connected] active|[observers - observers_connected] disconnected|[brains] brains|</font></b>"
|
||||
if(other_players)
|
||||
dat += "<BR><span class='userdanger'>[other_players] players in invalid state or the statistics code is bugged!</span>"
|
||||
|
||||
@@ -10,8 +10,6 @@
|
||||
<A href='?src=\ref[src];secrets=admin_log'>Admin Log</A><BR>
|
||||
<A href='?src=\ref[src];secrets=show_admins'>Show Admin List</A><BR>
|
||||
<A href='?src=\ref[src];secrets=mentor_log'>Mentor Log</A><BR>
|
||||
|
||||
<A href='?src=\ref[src];secrets=show_current_watchlist'>Show online players in the watchlist</A><BR>
|
||||
<BR>
|
||||
"}
|
||||
|
||||
@@ -59,6 +57,7 @@
|
||||
<A href='?src=\ref[src];secrets=magic'>Summon Magic</A><BR>
|
||||
<A href='?src=\ref[src];secrets=events'>Summon Events (Toggle)</A><BR>
|
||||
<A href='?src=\ref[src];secrets=onlyone'>There can only be one!</A><BR>
|
||||
<A href='?src=\ref[src];secrets=delayed_onlyone'>There can only be one! (40-second delay)</A><BR>
|
||||
<A href='?src=\ref[src];secrets=onlyme'>There can only be me!</A><BR>
|
||||
<A href='?src=\ref[src];secrets=retardify'>Make all players retarded</A><BR>
|
||||
<A href='?src=\ref[src];secrets=eagles'>Egalitarian Station Mode</A><BR>
|
||||
@@ -102,14 +101,6 @@
|
||||
dat += "No-one has done anything this round!"
|
||||
usr << browse(dat, "window=admin_log")
|
||||
|
||||
if("mentor_log")
|
||||
var/dat = "<B>Mentor Log<HR></B>"
|
||||
for(var/l in mentor_log)
|
||||
dat += "<li>[l]</li>"
|
||||
if(!mentor_log.len)
|
||||
dat += "No mentors have done anything this round!"
|
||||
usr << browse(dat, "window=mentor_log")
|
||||
|
||||
if("list_job_debug")
|
||||
var/dat = "<B>Job Debug info.</B><HR>"
|
||||
if(SSjob)
|
||||
@@ -540,8 +531,17 @@
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","OO")
|
||||
usr.client.only_one()
|
||||
send_to_playing_players('sound/misc/highlander.ogg')
|
||||
// message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)")
|
||||
|
||||
if("delayed_onlyone")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","OO")
|
||||
usr.client.only_one_delayed()
|
||||
send_to_playing_players('sound/misc/highlander_delayed.ogg')
|
||||
|
||||
if("onlyme")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
@@ -598,6 +598,14 @@
|
||||
purrbation.")
|
||||
log_admin("[key_name(usr)] has removed everyone from purrbation.")
|
||||
|
||||
if("mentor_log")
|
||||
var/dat = "<B>Mentor Log<HR></B>"
|
||||
for(var/l in mentor_log)
|
||||
dat += "<li>[l]</li>"
|
||||
if(!mentor_log.len)
|
||||
dat += "No mentors have done anything this round!"
|
||||
usr << browse(dat, "window=mentor_log")
|
||||
|
||||
if(E)
|
||||
E.processing = 0
|
||||
if(E.announceWhen>0)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
log_game("SQL ERROR creating new [type] in messages table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(logged)
|
||||
log_admin("[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""]: [text]")
|
||||
log_admin_private("[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""]: [text]")
|
||||
message_admins("[key_name_admin(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""]:<br>[text]")
|
||||
if(browse)
|
||||
browse_messages("[type]")
|
||||
@@ -84,7 +84,7 @@
|
||||
log_game("SQL ERROR deleting [type] from messages table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(logged)
|
||||
log_admin("[key_name(usr)] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_ckey]: [text]")
|
||||
log_admin_private("[key_name(usr)] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_ckey]: [text]")
|
||||
message_admins("[key_name_admin(usr)] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_ckey]:<br>[text]")
|
||||
if(browse)
|
||||
browse_messages("[type]")
|
||||
@@ -119,7 +119,7 @@
|
||||
var/err = query_edit_message.ErrorMsg()
|
||||
log_game("SQL ERROR editing messages table. Error : \[[err]\]\n")
|
||||
return
|
||||
log_admin("[key_name(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from [old_text] to [new_text]")
|
||||
log_admin_private("[key_name(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from [old_text] to [new_text]")
|
||||
message_admins("[key_name_admin(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from<br>[old_text]<br>to<br>[new_text]")
|
||||
if(browse)
|
||||
browse_messages("[type]")
|
||||
@@ -150,7 +150,7 @@
|
||||
var/err = query_message_secret.ErrorMsg()
|
||||
log_game("SQL ERROR toggling message secrecy. Error : \[[err]\]\n")
|
||||
return
|
||||
log_admin("[key_name(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]")
|
||||
log_admin_private("[key_name(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]")
|
||||
message_admins("[key_name_admin(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]")
|
||||
browse_messages(target_ckey = target_ckey)
|
||||
|
||||
@@ -255,9 +255,9 @@
|
||||
notedata += data
|
||||
output += "<h2><center>[target_ckey]</center></h2><center>"
|
||||
if(!linkless)
|
||||
output += "<a href='?_src_=holder;addmessage=[target_ckey]'>\[Add message\]</a>"
|
||||
output += "<a href='?_src_=holder;addnote=[target_ckey]'>\[Add note\]</a>"
|
||||
output += " <a href='?_src_=holder;addmessage=[target_ckey]'>\[Add message\]</a>"
|
||||
output += " <a href='?_src_=holder;addwatch=[target_ckey]'>\[Add to watchlist\]</a>"
|
||||
output += " <a href='?_src_=holder;addnote=[target_ckey]'>\[Add note\]</a>"
|
||||
output += " <a href='?_src_=holder;showmessageckey=[target_ckey]'>\[Refresh page\]</a></center>"
|
||||
else
|
||||
output += " <a href='?_src_=holder;showmessageckeylinkless=[target_ckey]'>\[Refresh page\]</a></center>"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
world.SetConfig("ban",ckey,list2stickyban(ban))
|
||||
|
||||
log_admin("[key_name(usr)] has stickybanned [ckey].\nReason: [ban["message"]]")
|
||||
log_admin_private("[key_name(usr)] has stickybanned [ckey].\nReason: [ban["message"]]")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has stickybanned [ckey].\nReason: [ban["message"]]</span>")
|
||||
|
||||
if ("remove")
|
||||
@@ -52,7 +52,7 @@
|
||||
return
|
||||
world.SetConfig("ban",ckey, null)
|
||||
|
||||
log_admin("[key_name(usr)] removed [ckey]'s stickyban")
|
||||
log_admin_private("[key_name(usr)] removed [ckey]'s stickyban")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] removed [ckey]'s stickyban</span>")
|
||||
|
||||
if ("remove_alt")
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
world.SetConfig("ban",ckey,list2stickyban(ban))
|
||||
|
||||
log_admin("[key_name(usr)] has disassociated [alt] from [ckey]'s sticky ban")
|
||||
log_admin_private("[key_name(usr)] has disassociated [alt] from [ckey]'s sticky ban")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has disassociated [alt] from [ckey]'s sticky ban</span>")
|
||||
|
||||
if ("edit")
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
world.SetConfig("ban",ckey,list2stickyban(ban))
|
||||
|
||||
log_admin("[key_name(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]")
|
||||
log_admin_private("[key_name(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]</span>")
|
||||
|
||||
if ("revert")
|
||||
@@ -142,7 +142,7 @@
|
||||
usr << "<span class='adminnotice'>Error: No cached sticky ban for [ckey] found!"
|
||||
world.SetConfig("ban",ckey,null)
|
||||
|
||||
log_admin("[key_name(usr)] has reverted [ckey]'s sticky ban to it's state at round start.")
|
||||
log_admin_private("[key_name(usr)] has reverted [ckey]'s sticky ban to it's state at round start.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has reverted [ckey]'s sticky ban to it's state at round start.</span>")
|
||||
//revert is mostly used when shit goes rouge, so we have to set it to null
|
||||
// and wait a byond tick before assigning it to ensure byond clears its shit.
|
||||
|
||||
+55
-55
@@ -21,7 +21,7 @@
|
||||
C << "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting."
|
||||
|
||||
message_admins("[key_name_admin(usr)] Rejected [C.key]'s admin help. [C.key]'s Adminhelp verb has been returned to them.")
|
||||
log_admin("[key_name(usr)] Rejected [C.key]'s admin help.")
|
||||
log_admin_private("[key_name(usr)] Rejected [C.key]'s admin help.")
|
||||
|
||||
else if(href_list["icissue"])
|
||||
var/client/C = locate(href_list["icissue"]) in clients
|
||||
@@ -35,7 +35,7 @@
|
||||
C << msg
|
||||
|
||||
message_admins("[key_name_admin(usr)] marked [C.key]'s admin help as an IC issue.")
|
||||
log_admin("[key_name(usr)] marked [C.key]'s admin help as an IC issue.")
|
||||
log_admin_private("[key_name(usr)] marked [C.key]'s admin help as an IC issue.")
|
||||
|
||||
else if(href_list["stickyban"])
|
||||
stickyban(href_list["stickyban"],href_list)
|
||||
@@ -249,55 +249,11 @@
|
||||
else
|
||||
message_admins("Ban process: A mob matching [playermob.ckey] was found at location [playermob.x], [playermob.y], [playermob.z]. Custom ip and computer id fields replaced with the ip and computer id from the located mob.")
|
||||
|
||||
if(!DB_ban_record(bantype, playermob, banduration, banreason, banjob, null, banckey, banip, bancid ))
|
||||
if(!DB_ban_record(bantype, playermob, banduration, banreason, banjob, banckey, banip, bancid ))
|
||||
usr << "<span class='danger'>Failed to apply ban.</span>"
|
||||
return
|
||||
create_message("note", banckey, null, banreason, null, null, 0, 0)
|
||||
|
||||
else if(href_list["mentor"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
var/mob/M = locate(href_list["mentor"])
|
||||
if(!ismob(M))
|
||||
usr << "this can be only used on instances of type /mob"
|
||||
return
|
||||
|
||||
if(!M.client)
|
||||
usr << "no client"
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] has granted [key_name(M)] mentor access")
|
||||
message_admins("\blue [key_name_admin(usr)] has granted [key_name_admin(M)] mentor access", 1)
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("mentor")] (ckey) VALUES ('[M.client.ckey]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during adding new mentor. Error : \[[err]\]\n")
|
||||
load_mentors()
|
||||
M.verbs += /client/proc/cmd_mentor_say
|
||||
M.verbs += /client/proc/show_mentor_memo
|
||||
M << "\blue You've been granted mentor access! Help people who send mentor-pms"
|
||||
|
||||
else if(href_list["removementor"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
var/mob/living/carbon/human/M = locate(href_list["removementor"])
|
||||
if(!ismob(M))
|
||||
usr << "this can be only used on instances of type /mob"
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] has removed mentor access from [key_name(M)]")
|
||||
message_admins("\blue [key_name_admin(usr)] has removed mentor access from [key_name_admin(M)]", 1)
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[M.client.ckey]'")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during removing mentor. Error : \[[err]\]\n")
|
||||
load_mentors()
|
||||
M << "\blue Your mentor access has been removed"
|
||||
M.verbs -= /client/proc/cmd_mentor_say
|
||||
M.verbs -= /client/proc/show_mentor_memo
|
||||
|
||||
else if(href_list["editrights"])
|
||||
edit_rights_topic(href_list)
|
||||
|
||||
@@ -550,7 +506,7 @@
|
||||
if(!reason)
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
|
||||
log_admin_private("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
|
||||
ban_unban_log_save("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]</span>")
|
||||
Banlist.cd = "/base/[banfolder]"
|
||||
@@ -580,7 +536,7 @@
|
||||
switch(alert("Remove appearance ban?","Please Confirm","Yes","No"))
|
||||
if("Yes")
|
||||
ban_unban_log_save("[key_name(usr)] removed [key_name(M)]'s appearance ban.")
|
||||
log_admin("[key_name(usr)] removed [key_name(M)]'s appearance ban.")
|
||||
log_admin_private("[key_name(usr)] removed [key_name(M)]'s appearance ban.")
|
||||
feedback_inc("ban_appearance_unban", 1)
|
||||
DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, "appearance")
|
||||
if(M.client)
|
||||
@@ -599,7 +555,7 @@
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]")
|
||||
log_admin("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]")
|
||||
log_admin_private("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]")
|
||||
feedback_inc("ban_appearance",1)
|
||||
create_message("note", M.ckey, null, "Appearance banned - [reason]", null, null, 0, 0)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] appearance banned [key_name_admin(M)].</span>")
|
||||
@@ -984,7 +940,7 @@
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
ban_unban_log_save("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes. reason: [reason]")
|
||||
log_admin("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes.")
|
||||
log_admin_private("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes.")
|
||||
feedback_inc("ban_job_tmp",1)
|
||||
feedback_add_details("ban_job_tmp","- [job]")
|
||||
if(!msg)
|
||||
@@ -1009,7 +965,7 @@
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
ban_unban_log_save("[key_name(usr)] perma-jobbanned [key_name(M)] from [job]. reason: [reason]")
|
||||
log_admin("[key_name(usr)] perma-banned [key_name(M)] from [job]")
|
||||
log_admin_private("[key_name(usr)] perma-banned [key_name(M)] from [job]")
|
||||
feedback_inc("ban_job",1)
|
||||
feedback_add_details("ban_job","- [job]")
|
||||
if(!msg)
|
||||
@@ -1037,7 +993,7 @@
|
||||
switch(alert("Job: '[job]' Reason: '[reason]' Un-jobban?","Please Confirm","Yes","No"))
|
||||
if("Yes")
|
||||
ban_unban_log_save("[key_name(usr)] unjobbanned [key_name(M)] from [job]")
|
||||
log_admin("[key_name(usr)] unbanned [key_name(M)] from [job]")
|
||||
log_admin_private("[key_name(usr)] unbanned [key_name(M)] from [job]")
|
||||
DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, job)
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
@@ -1185,7 +1141,7 @@
|
||||
M << "<span class='danger'>To try to resolve this matter head to [config.banappeals]</span>"
|
||||
else
|
||||
M << "<span class='danger'>No ban appeals URL has been set.</span>"
|
||||
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.")
|
||||
log_admin_private("[key_name(usr)] has banned [M.ckey].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes.</span>")
|
||||
|
||||
qdel(M.client)
|
||||
@@ -1210,7 +1166,7 @@
|
||||
usr << "<span class='danger'>Failed to apply ban.</span>"
|
||||
return
|
||||
ban_unban_log_save("[key_name(usr)] has permabanned [key_name(M)]. - Reason: [reason] - This is a permanent ban.")
|
||||
log_admin("[key_name(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.")
|
||||
log_admin_private("[key_name(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.</span>")
|
||||
feedback_inc("ban_perma",1)
|
||||
qdel(M.client)
|
||||
@@ -2302,6 +2258,50 @@
|
||||
else
|
||||
error_viewer.show_to(owner, null, href_list["viewruntime_linear"])
|
||||
|
||||
else if(href_list["mentor"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
var/mob/M = locate(href_list["mentor"])
|
||||
if(!ismob(M))
|
||||
usr << "this can be only used on instances of type /mob"
|
||||
return
|
||||
|
||||
if(!M.client)
|
||||
usr << "no client"
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] has granted [key_name(M)] mentor access")
|
||||
message_admins("\blue [key_name_admin(usr)] has granted [key_name_admin(M)] mentor access", 1)
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO [format_table_name("mentor")] (ckey) VALUES ('[M.client.ckey]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during adding new mentor. Error : \[[err]\]\n")
|
||||
load_mentors()
|
||||
M.verbs += /client/proc/cmd_mentor_say
|
||||
M.verbs += /client/proc/show_mentor_memo
|
||||
M << "\blue You've been granted mentor access! Help people who send mentor-pms"
|
||||
|
||||
else if(href_list["removementor"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
var/mob/living/carbon/human/M = locate(href_list["removementor"])
|
||||
if(!ismob(M))
|
||||
usr << "this can be only used on instances of type /mob"
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] has removed mentor access from [key_name(M)]")
|
||||
message_admins("\blue [key_name_admin(usr)] has removed mentor access from [key_name_admin(M)]", 1)
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[M.client.ckey]'")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during removing mentor. Error : \[[err]\]\n")
|
||||
load_mentors()
|
||||
M << "\blue Your mentor access has been removed"
|
||||
M.verbs -= /client/proc/cmd_mentor_say
|
||||
M.verbs -= /client/proc/show_mentor_memo
|
||||
|
||||
else if(href_list["mentormemoeditlist"])
|
||||
var/sql_key = sanitizeSQL("[href_list["memoeditlist"]]")
|
||||
var/DBQuery/query_memoedits = dbcon.NewQuery("SELECT edits FROM [format_table_name("mentor_memo")] WHERE (ckey = '[sql_key]')")
|
||||
|
||||
@@ -76,7 +76,6 @@
|
||||
src.verbs |= /client/verb/adminhelp
|
||||
adminhelptimerid = 0
|
||||
|
||||
|
||||
/client/verb/adminhelp(msg as text)
|
||||
set category = "Admin"
|
||||
set name = "Adminhelp"
|
||||
@@ -92,22 +91,25 @@
|
||||
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
||||
return
|
||||
|
||||
|
||||
var/datum/adminticket/ticket
|
||||
var/ref_client = "\ref[src]"
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == src.ckey && T.resolved == "No")
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == src.ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
if(alert(usr,"You already have an adminhelp open, would you like to bump it?", "Bump Adminhelp", "Yes", "No") == "Yes")
|
||||
T.logs += "[src.ckey] has bumped this adminhelp!"
|
||||
if(T.admin == "N/A")
|
||||
T.ticket_logs += "[src.ckey] has bumped this adminhelp!"
|
||||
if(T.admin == TICKET_UNASSIGNED)
|
||||
usr << "<b>Due to the fact your Adminhelp had no assigned admin, admins have been pinged.</b>"
|
||||
message_admins("[src.ckey] has bumped their adminhelp #[T.ID], still no assigned admin!")
|
||||
msg = "<span class='adminnotice'><b><font color=red>HELP: </font><A HREF='?priv_msg=[ckey];ahelp_reply=1'>[key_name(src)]</A> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)] (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) (<A HREF='?_src_=holder;icissue=[ref_client]'>IC</A>) (<A HREF='?_src_=ticket;resolve=[T.ID]'>R</a>):</b> [msg]</span>"
|
||||
message_admins("[src.ckey] has bumped their adminhelp #[T.id], still no assigned admin!")
|
||||
msg = "<span class='adminnotice'><b><font color='red'>HELP: </font><A HREF='?priv_msg=[ckey];ahelp_reply=1'>[key_name(src)]</A> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)] (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) (<A HREF='?_src_=holder;icissue=[ref_client]'>IC</A>) (<A HREF='?_src_=ticket;resolve=[T.id]'>R</a>):</b> [msg]</span>"
|
||||
for(var/client/X in admins)
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else
|
||||
usr << "<b>Admins have been notified.</b>"
|
||||
message_admins("[src.ckey] has bumped their adminhelp #[T.ID].")
|
||||
message_admins("[src.ckey] has bumped their adminhelp #[T.id].")
|
||||
src.verbs -= /client/verb/adminhelp
|
||||
adminhelptimerid = addtimer(CALLBACK(src, .proc/giveadminhelpverb), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps
|
||||
return
|
||||
@@ -125,16 +127,11 @@
|
||||
|
||||
msg = keywords_lookup(msg)
|
||||
|
||||
if(!mob) return //this doesn't happen
|
||||
if(!mob)
|
||||
return //this doesn't happen
|
||||
|
||||
createticket(src, msg, src.ckey, mob)
|
||||
|
||||
var/datum/adminticket/ticket
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == src.ckey)
|
||||
ticket = T
|
||||
|
||||
msg = "<span class='adminnotice'><b><font color=red>HELP: </font><A HREF='?priv_msg=[ckey];ahelp_reply=1'>[key_name(src)]</A> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)] (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) (<A HREF='?_src_=holder;icissue=[ref_client]'>IC</A>) (<A HREF='?_src_=holder;resolve=[ticket]'>R</a>):</b> [msg]</span>"
|
||||
|
||||
//send this msg to all admins
|
||||
@@ -142,22 +139,22 @@
|
||||
for(var/client/X in admins)
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
window_flash(X)
|
||||
window_flash(X, ignorepref = TRUE)
|
||||
X << msg
|
||||
|
||||
|
||||
//show it to the person adminhelping too
|
||||
src << "<span class='adminnotice'>PM to-<b>Admins</b>: [original_msg]</span>"
|
||||
|
||||
//send it to irc if nobody is on and tell us how many were on
|
||||
var/admin_number_present = send2irc_adminless_only(ckey,original_msg)
|
||||
send2irc(ckey,original_msg)
|
||||
|
||||
log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.")
|
||||
if(admin_number_present <= 0)
|
||||
src << "<span class='notice'>No active admins are online, your adminhelp was sent to the admin irc.</span>"
|
||||
feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
|
||||
/proc/get_admin_counts(requiredflags = R_BAN)
|
||||
. = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list())
|
||||
for(var/client/X in admins)
|
||||
@@ -186,8 +183,7 @@
|
||||
else
|
||||
final = "[msg] - All admins stealthed\[[english_list(stealthmins)]\], AFK\[[english_list(afkmins)]\], or lacks +BAN\[[english_list(powerlessmins)]\]! Total: [allmins.len] "
|
||||
send2irc(source,final)
|
||||
// send2admindiscord(source,final)
|
||||
|
||||
send2otherserver(source,final)
|
||||
|
||||
/proc/send2irc(msg,msg2)
|
||||
if(config.useircbot)
|
||||
@@ -205,7 +201,6 @@
|
||||
|
||||
world.Export("[global.cross_address]?[list2params(message)]")
|
||||
|
||||
|
||||
/proc/ircadminwho()
|
||||
var/list/message = list("Admins: ")
|
||||
var/list/admin_keys = list()
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
if(!holder)
|
||||
src << "<font color='red'>Error: Admin-PM-Context: Only administrators may use this command.</font>"
|
||||
return
|
||||
if( !ismob(M) || !M.client ) return
|
||||
if( !ismob(M) || !M.client )
|
||||
return
|
||||
cmd_admin_pm(M.client,null)
|
||||
feedback_add_details("admin_verb","APMM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -20,16 +21,15 @@
|
||||
var/list/client/targets[0]
|
||||
for(var/client/T)
|
||||
if(T.mob)
|
||||
if(istype(T.mob, /mob/new_player))
|
||||
if(isnewplayer(T.mob))
|
||||
targets["(New Player) - [T]"] = T
|
||||
else if(istype(T.mob, /mob/dead/observer))
|
||||
else if(isobserver(T.mob))
|
||||
targets["[T.mob.name](Ghost) - [T]"] = T
|
||||
else
|
||||
targets["[T.mob.real_name](as [T.mob.name]) - [T]"] = T
|
||||
else
|
||||
targets["(No Mob) - [T]"] = T
|
||||
var/list/sorted = sortList(targets)
|
||||
var/target = input(src,"To whom shall we send a message?","Admin PM",null) in sorted|null
|
||||
var/target = input(src,"To whom shall we send a message?","Admin PM",null) as null|anything in sortList(targets)
|
||||
cmd_admin_pm(targets[target],null)
|
||||
feedback_add_details("admin_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -45,31 +45,30 @@
|
||||
else if(istype(whom,/client))
|
||||
C = whom
|
||||
if(!C)
|
||||
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
|
||||
if(holder)
|
||||
src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
|
||||
return
|
||||
|
||||
var/datum/adminticket/ticket
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == C.ckey)
|
||||
ticket = T
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
|
||||
if(ticket)
|
||||
if(ticket.active == "No" && ticket.replying == 0)
|
||||
message_admins("[key_name_admin(src)] has been assigned to [key_name(C, 0, 0)]'s admin help. This is the first reply. ([ticket.uID])")
|
||||
ticket.replying = 1
|
||||
ticket.user << "<b>[src.ckey] has been assigned to your admin help, please await a reply.</b>"
|
||||
else if(ticket.replying == 1)
|
||||
if(T.active == TICKET_INACTIVE && T.replying == TICKET_UNREPLIED)
|
||||
message_admins("[key_name_admin(src)] has been assigned to [key_name(C, 0, 0)]'s admin help. This is the first reply. ([T.uID])")
|
||||
T.replying = TICKET_REPLIED
|
||||
T.user << "<b>[src.ckey] has been assigned to your admin help, please await a reply.</b>"
|
||||
else if(T.replying == TICKET_REPLIED)
|
||||
src << "<b>Error, this ticket is already being replied to!</b>"
|
||||
return
|
||||
else if(ticket.admin != "N/A" && ticket.replying == 0)
|
||||
if(ticket.admin != src.ckey)
|
||||
if(alert(src, "This adminhelp already has an admin assigned: [ticket.admin]! Are you sure you want to take it over?", "Conflict", "Yes", "No") == "Yes")
|
||||
message_admins("[key_name_admin(src)] has been assigned to [key_name(C, 0, 0)]'s admin help. Override: [ticket.admin]. ([ticket.uID])")
|
||||
ticket.user << "<b>[src.ckey] has been assigned to your admin help, please await a reply.</b>"
|
||||
ticket.replying = 1
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help. They did not have an active ahelp.")
|
||||
else if(T.admin != TICKET_UNASSIGNED && T.replying == TICKET_UNREPLIED)
|
||||
if(T.admin != src.ckey)
|
||||
if(alert(src, "This adminhelp already has an admin assigned: [T.admin]! Are you sure you want to take it over?", "Conflict", "Yes", "No") == "Yes")
|
||||
message_admins("[key_name_admin(src)] has been assigned to [key_name(C, 0, 0)]'s admin help. Override: [T.admin]. ([T.uID])")
|
||||
T.user << "<b>[src.ckey] has been assigned to your admin help, please await a reply.</b>"
|
||||
T.replying = TICKET_REPLIED
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help. They did not have an active ahelp.")
|
||||
|
||||
var/msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null
|
||||
|
||||
@@ -78,15 +77,15 @@
|
||||
if(ticket.admin != src.ckey)
|
||||
message_admins("[key_name_admin(src)] has been unassigned from [key_name(C, 0, 0)]'s admin help. Cancelled reply. ([ticket.uID])")
|
||||
ticket.user << "<b>[src.ckey] has been unassigned from your admin help. (reply cancelled)</b>"
|
||||
ticket.replying = 0
|
||||
ticket.replying = TICKET_UNREPLIED
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help. No active ahelp.")
|
||||
return
|
||||
|
||||
if(ticket)
|
||||
ticket.replying = 0
|
||||
ticket.replying = TICKET_UNREPLIED
|
||||
ticket.admin = src.ckey
|
||||
ticket.active = "Yes"
|
||||
ticket.active = TICKET_ACTIVE
|
||||
|
||||
cmd_admin_pm(whom, msg)
|
||||
|
||||
@@ -113,7 +112,8 @@
|
||||
if(!msg)
|
||||
msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null
|
||||
|
||||
if(!msg) return
|
||||
if(!msg)
|
||||
return
|
||||
if(!C)
|
||||
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
|
||||
else adminhelp(msg) //admin we are replying to has vanished, adminhelp instead
|
||||
@@ -125,7 +125,8 @@
|
||||
//clean the message if it's not sent by a high-rank admin
|
||||
if(!check_rights(R_SERVER|R_DEBUG,0))
|
||||
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
|
||||
if(!msg) return
|
||||
if(!msg)
|
||||
return
|
||||
|
||||
msg = emoji_parse(msg)
|
||||
var/keywordparsedmsg = keywords_lookup(msg)
|
||||
@@ -133,26 +134,32 @@
|
||||
|
||||
if(C.holder)
|
||||
if(holder) //both are admins
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == src.ckey && T.resolved == "No")
|
||||
T.logs += "<span class='notice'>[src] TO [C]: [msg] </span>"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == src.ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
T.ticket_logs += "<span class='notice'>[src] TO [C]: [msg] </span>"
|
||||
ticket = T
|
||||
break
|
||||
else if(T.permckey == src.ckey)
|
||||
ticket = T
|
||||
if(ticket && ticket.resolved == "No")
|
||||
break
|
||||
if(ticket && ticket.resolved == TICKET_UNRESOLVED)
|
||||
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg] (<a href='?src=\ref[ticket];resolve=\ref[ticket]'>R</a>)</font>"
|
||||
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [keywordparsedmsg] (<a href='?src=\ref[ticket];resolve=\ref[ticket]'>R</a>)</font>"
|
||||
else
|
||||
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg]</font>"
|
||||
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [keywordparsedmsg]</font>"
|
||||
else //recipient is an admin but sender is not
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == src.ckey && T.resolved == "No")
|
||||
T.logs += "<span class='notice'>[src] TO [C]: [msg] </span>"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == src.ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
T.ticket_logs += "<span class='notice'>[src] TO [C]: [msg] </span>"
|
||||
ticket = T
|
||||
break
|
||||
else if(T.permckey == src.ckey)
|
||||
ticket = T
|
||||
if(ticket && ticket.resolved == "No")
|
||||
break
|
||||
if(ticket && ticket.resolved == TICKET_UNRESOLVED)
|
||||
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg] (<a href='?src=\ref[ticket];resolve=\ref[ticket]'>R</a>)</font>"
|
||||
else
|
||||
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg]</font>"
|
||||
@@ -164,17 +171,19 @@
|
||||
|
||||
else
|
||||
if(holder) //sender is an admin but recipient is not. Do BIG RED TEXT
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == C.ckey && T.resolved == "No")
|
||||
T.logs += "<span class='notice'>[src] TO [C]: [msg] </span>"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == C.ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
T.ticket_logs += "<span class='danger'>[src] TO [C]: [msg] </span>"
|
||||
ticket = T
|
||||
break
|
||||
else if(T.permckey == C.ckey)
|
||||
ticket = T
|
||||
|
||||
break
|
||||
C << "<font color='red' size='4'><b>-- Administrator private message --</b></font>"
|
||||
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
|
||||
C << "<font color='red'><i>Click on the administrator's name to reply.</i></font>"
|
||||
if(ticket && ticket.resolved == "No")
|
||||
if(ticket && ticket.resolved == TICKET_UNRESOLVED)
|
||||
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg] (<a href='?src=\ref[ticket];resolve=\ref[ticket]'>R</a>)</font>"
|
||||
else
|
||||
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
|
||||
@@ -190,9 +199,10 @@
|
||||
if(C && reply)
|
||||
if(sender)
|
||||
C.cmd_admin_pm(sender,reply)
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == C.ckey && T.resolved == "No")
|
||||
T.logs += "<span class='danger'>[sendername] TO [C]: [msg] </span>" //sender is still about, let's reply to them
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == C.ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
T.ticket_logs += "<span class='danger'>[sendername] TO [C]: [msg] </span>" //sender is still about, let's reply to them
|
||||
else
|
||||
adminhelp(reply) //sender has left, adminhelp instead
|
||||
return
|
||||
@@ -232,7 +242,7 @@
|
||||
C << "<font color='red' size='4'><b>-- Administrator private message --</b></font>"
|
||||
C << "<font color='red'>Admin PM from-<b><a href='?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]</font>"
|
||||
C << "<font color='red'><i>Click on the administrator's name to reply.</i></font>"
|
||||
window_flash(C)
|
||||
window_flash(C, ignorepref = TRUE)
|
||||
//always play non-admin recipients the adminhelp sound
|
||||
C << 'sound/effects/adminhelp.ogg'
|
||||
|
||||
|
||||
@@ -683,7 +683,6 @@ var/list/TYPES_SHORTCUTS = list(
|
||||
set desc = "Displays a list of things that have failed to GC this round"
|
||||
|
||||
var/dat = "<B>List of things that failed to GC this round</B><BR><BR>"
|
||||
|
||||
for(var/path in SSgarbage.didntgc)
|
||||
dat += "[path] - [SSgarbage.didntgc[path]] times<BR>"
|
||||
|
||||
@@ -691,6 +690,10 @@ var/list/TYPES_SHORTCUTS = list(
|
||||
for(var/path in SSgarbage.noqdelhint)
|
||||
dat += "[path]<BR>"
|
||||
|
||||
dat += "<B>List of paths that slept in Destroy()</B><BR><BR>"
|
||||
for(var/path in SSgarbage.sleptDestroy)
|
||||
dat += "[path]<BR>"
|
||||
|
||||
usr << browse(dat, "window=dellog")
|
||||
|
||||
/client/proc/debug_huds(i as num)
|
||||
|
||||
@@ -1,65 +1,60 @@
|
||||
/datum/adminticket
|
||||
var/ID = "" //ID of the ticket, very important as its used to find adminhelps.
|
||||
var/user = "" //The user of the ahelp.
|
||||
var/uckey //The saved ckey of the adminheloing user.
|
||||
var/admin = "N/A" //The handling admin? Like come on.
|
||||
var/msg = "" //The adminhelp message.
|
||||
var/resolved = "No" //Is it resolved? Its much easier to have a "Yes" or a "No", as you can directly concat it into strings making life that much easier.
|
||||
var/permckey = "" //The perm ckey, never removed essentially.
|
||||
var/permuser = "" //Same as above!
|
||||
var/uID = "" //The UNIQUE id, made by putting part of the ckey and the ID together. Used internally in code.
|
||||
var/active = "No" //Is the adminhelp active, eg admin responded? This is the same as above, it makes life easier.
|
||||
var/logs = list() //The logs of the adminhelp.
|
||||
var/replying = 0 //Is someone responding to the adminhelp?
|
||||
var/mob //The mob adminhelping mob.
|
||||
var/active = TICKET_INACTIVE //Is the adminhelp active, eg admin responded?
|
||||
var/admin = TICKET_UNASSIGNED //The handling admin? Like come on.
|
||||
var/id = "" //ID of the ticket, very important as its used to find adminhelps.
|
||||
var/ticket_logs = list() //The logs of the adminhelp.
|
||||
var/mob //The mob adminhelping mob.
|
||||
var/msg = "" //The adminhelp message.
|
||||
var/permckey = "" //The perm ckey, never removed essentially.
|
||||
var/permuser = "" //Same as above!
|
||||
var/replying = TICKET_UNREPLIED //Is someone responding to the adminhelp?
|
||||
var/resolved = TICKET_UNRESOLVED //Is it resolved? Its much easier to have a "Yes" or a "No", as you can directly concat it into strings making life that much easier.
|
||||
var/uckey //The saved ckey of the adminhelping user.
|
||||
var/uID = "" //The UNIQUE id, made by putting part of the ckey and the ID together. Used internally in code.
|
||||
var/user = "" //The user of the ahelp.
|
||||
|
||||
|
||||
/client/proc/list_ahelps(user, resolved)
|
||||
if(!check_rights(R_ADMIN))
|
||||
src << "<font color='red'>Error: Only administrators may use this command.</font>"
|
||||
return
|
||||
|
||||
if(resolved)
|
||||
user << "Current Ahelps:"
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
var/ref_mob = "\ref[T.mob]"
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.ID] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>)"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
|
||||
if(resolved)
|
||||
user << "Resolved Ahelps:"
|
||||
usr << "<span class='adminnotice'><b><font color='red'>#[T.id] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique id:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)]"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
if(T.resolved == "No")
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Resolve)</a>"
|
||||
else
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Unresolve)</a>"
|
||||
|
||||
else
|
||||
user << "Current Unresolved Ahelps:"
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.resolved == "No")
|
||||
var/ref_mob = "\ref[T.mob]"
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.ID] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>)"
|
||||
else
|
||||
user << "Current Unresolved Ahelps:"
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.id] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)]"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
if(T.resolved == "No")
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Resolve)</a>"
|
||||
else
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Unresolve)</a>"
|
||||
|
||||
/client/proc/ahelp_count(modifier)
|
||||
var/amount
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
switch(modifier)
|
||||
if(0)
|
||||
if(T.resolved == "No")
|
||||
amount++
|
||||
if(1)
|
||||
if(T.resolved == "Yes")
|
||||
amount++
|
||||
if(2)
|
||||
amount++
|
||||
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
amount++
|
||||
if(T.resolved == TICKET_RESOLVED)
|
||||
amount++
|
||||
return amount
|
||||
|
||||
|
||||
@@ -82,15 +77,14 @@
|
||||
if(count < 1)
|
||||
usr << " None"
|
||||
return
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
var/ref_mob = "\ref[T.mob]"
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.ID] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</b></A><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>)"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.id] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</b></A><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)]"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
if(T.resolved == "No")
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Resolve)</a>"
|
||||
else
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Unresolve)</a>"
|
||||
@@ -106,8 +100,9 @@
|
||||
|
||||
var/count = 0
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.resolved =="No")
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
count++
|
||||
|
||||
usr << "<b>Current Unresolved Ahelps:</b>"
|
||||
@@ -116,15 +111,15 @@
|
||||
usr << " None"
|
||||
return
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.resolved == "No")
|
||||
var/ref_mob = "\ref[T.mob]"
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.ID] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</b></A><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>)"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.id] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</b></A><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)]"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
if(T.resolved == "No")
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Resolve)</a>"
|
||||
else
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Unresolve)</a>"
|
||||
@@ -140,25 +135,23 @@
|
||||
|
||||
var/count = 0
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.resolved == "No" && T.admin == ckey)
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.resolved == TICKET_UNRESOLVED && T.admin == ckey)
|
||||
count++
|
||||
|
||||
if(count < 1)
|
||||
usr << "<b>You don't have any ACTIVE ahelps!</b>"
|
||||
return
|
||||
|
||||
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.resolved == "No" && T.admin == ckey)
|
||||
var/ref_mob = "\ref[T.mob]"
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.ID] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>)"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.resolved == TICKET_UNRESOLVED && T.admin == ckey)
|
||||
usr << "<span class='adminnotice'><b><font color=red>#[T.id] By:</font> <A HREF='?priv_msg=[T.permckey];ahelp_reply=1'>[key_name(T.permuser)]</A></b><b> Ckey:</b> [T.permckey] <b>Name:</b> [T.permuser] <b>Unique ID:</b> [T.uID]</span>"
|
||||
usr << " <b>Controls:</b> [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)]"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
if(T.resolved == "No")
|
||||
if(T.resolved == TICKET_UNRESOLVED)
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Resolve)</a>"
|
||||
else
|
||||
usr << " <b>Resolved:</b> [T.resolved] <a href='?src=\ref[T];resolve=\ref[T]'>(Unresolve)</a>"
|
||||
@@ -170,7 +163,8 @@
|
||||
|
||||
var/count = 0
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == ckey)
|
||||
count++
|
||||
|
||||
@@ -180,34 +174,37 @@
|
||||
|
||||
usr << "<b>Resolved Ahelps</b>"
|
||||
|
||||
var/rpass = 0
|
||||
var/rpass = FALSE
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == ckey && T.resolved == "Yes")
|
||||
rpass = 1
|
||||
usr << "<span class='adminnotice'><b><font color=red>Adminhelp ID: #[T.ID] </font></b></span>"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
|
||||
if(T.permckey == ckey && T.resolved == TICKET_RESOLVED)
|
||||
rpass = TRUE
|
||||
usr << "<span class='adminnotice'><b><font color=red>Adminhelp ID: #[T.id] </font></b></span>"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
usr << " <b>Resolved:</b> [T.resolved]"
|
||||
|
||||
if(rpass == 0)
|
||||
if(rpass == FALSE)
|
||||
usr << " None"
|
||||
|
||||
usr << "<b>Unresolved Ahelps</b>"
|
||||
|
||||
var/upass = 0
|
||||
var/upass = FALSE
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == ckey && T.resolved == "No")
|
||||
upass = 1
|
||||
usr << "<span class='adminnotice'><b><font color=red>Adminhelp ID: #[T.ID] </font></b></span>"
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == ckey && T.resolved == TICKET_UNRESOLVED)
|
||||
upass = TRUE
|
||||
usr << "<span class='adminnotice'><b><font color=red>Adminhelp ID: #[T.id] </font></b></span>"
|
||||
usr << " <b>Message:</b> [T.msg]"
|
||||
usr << " <b>Handling Admin:</b> [T.admin]"
|
||||
usr << " <b>Replied To:</b> [T.active]/<b><a href='?src=\ref[T];view_logs=\ref[T]'>(LOGS)</a></b>"
|
||||
usr << " <b>Resolved:</b> [T.resolved]"
|
||||
|
||||
if(upass == 0)
|
||||
if(upass == FALSE)
|
||||
usr << " None"
|
||||
|
||||
/client/proc/createticket(player, message, uckey, mob)
|
||||
@@ -218,14 +215,15 @@
|
||||
A.permckey = uckey
|
||||
A.permuser = A.user
|
||||
admintickets += A
|
||||
A.logs += "<b>ADMINHELP:</b> [A.permckey]([A.permuser]): [A.msg]"
|
||||
A.ticket_logs += "<b>ADMINHELP:</b> [A.permckey]([A.permuser]): [A.msg]"
|
||||
A.mob = mob
|
||||
|
||||
var/index = 0
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
index++
|
||||
T.ID = index
|
||||
T.uID = "[T.permckey][T.ID]"
|
||||
T.id = index
|
||||
T.uID = "[T.permckey][T.id]"
|
||||
|
||||
/client/verb/resolveticketself()
|
||||
set category = "Admin"
|
||||
@@ -234,17 +232,16 @@
|
||||
|
||||
var/pass = 0
|
||||
var/datum/adminticket/ticket
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.permckey == ckey && T.resolved != "Yes")
|
||||
T.resolved = "Yes"
|
||||
ticket = T
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.permckey == ckey && T.resolved != TICKET_RESOLVED)
|
||||
T.resolved = TICKET_RESOLVED
|
||||
pass = 1
|
||||
|
||||
switch(pass)
|
||||
if(1)
|
||||
src << "<b>You have resolved your current adminhelp.</b>"
|
||||
message_admins("[src] has resolved his adminhelp (#[ticket.ID])")
|
||||
message_admins("[src] has resolved his adminhelp (#[ticket.id])")
|
||||
if(0)
|
||||
src << "<b>Error, you do not have any active adminhelps.</b>"
|
||||
|
||||
@@ -260,21 +257,20 @@
|
||||
var/count = 0
|
||||
|
||||
var/datum/adminticket/ticket
|
||||
|
||||
for(var/datum/adminticket/T in admintickets)
|
||||
if(T.admin == ckey && T.resolved != "Yes")
|
||||
for(var/I in admintickets)
|
||||
var/datum/adminticket/T = I
|
||||
if(T.admin == ckey && T.resolved != TICKET_RESOLVED)
|
||||
count++
|
||||
ticket = T
|
||||
|
||||
if(count >= 1)
|
||||
usr << "<b>Adminhelp #[ticket.ID]([ticket.uID]) resolved.</b>"
|
||||
message_admins("Adminhelp ID: #[ticket.ID]([ticket.uID]) was resolved by [usr.ckey]")
|
||||
ticket.user << "<b>Your adminhelp (#[ticket.ID]) has been resolved by [usr.ckey]</b>"
|
||||
ticket.user << 'sound/machines/twobeep.ogg'
|
||||
ticket.resolved = "Yes"
|
||||
if(count >= 1)
|
||||
usr << "<b>Adminhelp #[T.id]([T.uID]) resolved.</b>"
|
||||
message_admins("Adminhelp ID: #[T.id]([T.uID]) was resolved by [usr.ckey]")
|
||||
ticket.user << "<b>Your adminhelp (#[T.id]) has been resolved by [usr.ckey]</b>"
|
||||
ticket.user << 'sound/machines/twobeep.ogg'
|
||||
ticket.resolved = TICKET_RESOLVED
|
||||
|
||||
if(count < 1)
|
||||
usr << "<b>You are not currently handling any adminhelps!</b>"
|
||||
if(count < 1)
|
||||
usr << "<b>You are not currently handling any adminhelps!</b>"
|
||||
|
||||
/datum/adminticket/proc/viewlogs(NuID, mob/user)
|
||||
var/dat = "<h3>View Logs for ahelp [NuID]</h3>"
|
||||
@@ -292,7 +288,7 @@
|
||||
return
|
||||
|
||||
dat += "<table>"
|
||||
for(var/text in ticket.logs)
|
||||
for(var/text in ticket.ticket_logs)
|
||||
dat += "<tr><td>[text]</td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
@@ -301,12 +297,19 @@
|
||||
popup.open()
|
||||
|
||||
/datum/adminticket/Topic(href, href_list)
|
||||
if (!istype(src,/datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src,/datum/admins))
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
|
||||
if(href_list["view_logs"])
|
||||
var/datum/adminticket/T = locate(href_list["view_logs"])
|
||||
viewlogs(T.uID, usr)
|
||||
if(href_list["resolve"])
|
||||
var/datum/adminticket/T = locate(href_list["resolve"])
|
||||
message_admins("Adminhelp ID: #[T.ID]([T.uID]) was [T.resolved == "Yes" ? "unresolved" : "resolved"] by [usr.ckey]")
|
||||
T.user << "<b>Your adminhelp (#[T.ID]) has been [T.resolved == "Yes" ? "unresolved" : "resolved"] by [usr.ckey]</b>"
|
||||
T.user << 'sound/machines/twobeep.ogg'
|
||||
T.resolved = "[T.resolved == "Yes" ? "No" : "Yes"]"
|
||||
var/datum/adminticket/T = locate(href_list["resolve"]) in admintickets
|
||||
if(T && istype(T))
|
||||
message_admins("Adminhelp ID: #[T.id]([T.uID]) was [T.resolved == "Yes" ? "unresolved" : "resolved"] by [usr.ckey]")
|
||||
T.user << "<b>Your adminhelp (#[T.id]) has been [T.resolved == "Yes" ? "unresolved" : "resolved"] by [usr.ckey]</b>"
|
||||
T.user << 'sound/machines/twobeep.ogg'
|
||||
T.resolved = "[T.resolved == "Yes" ? "No" : "Yes"]"
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
var/datum/map_template/template
|
||||
|
||||
var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in map_templates
|
||||
var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in SSmapping.map_templates
|
||||
if(!map)
|
||||
return
|
||||
template = map_templates[map]
|
||||
template = SSmapping.map_templates[map]
|
||||
|
||||
var/turf/T = get_turf(mob)
|
||||
if(!T)
|
||||
@@ -38,7 +38,7 @@
|
||||
var/datum/map_template/M = new(map=map, rename="[map]")
|
||||
if(M.preload_size(map))
|
||||
usr << "Map template '[map]' ready to place ([M.width]x[M.height])"
|
||||
map_templates[M.name] = M
|
||||
SSmapping.map_templates[M.name] = M
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has uploaded a map template ([map])</span>")
|
||||
else
|
||||
usr << "Map template '[map]' failed to load properly"
|
||||
|
||||
@@ -5,8 +5,7 @@ var/highlander = FALSE
|
||||
return
|
||||
highlander = TRUE
|
||||
|
||||
world << "<span class='userdanger'><i>THERE CAN BE ONLY ONE!!!</i></span>"
|
||||
world << sound('sound/misc/highlander.ogg')
|
||||
send_to_playing_players("<span class='boldannounce'><font size=6>THERE CAN BE ONLY ONE</font></span>")
|
||||
|
||||
for(var/obj/item/weapon/disk/nuclear/N in poi_list)
|
||||
N.relocate() //Gets it out of bags and such
|
||||
@@ -20,6 +19,12 @@ var/highlander = FALSE
|
||||
log_admin("[key_name(usr)] used THERE CAN BE ONLY ONE.")
|
||||
addtimer(CALLBACK(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 1), 50)
|
||||
|
||||
/client/proc/only_one_delayed()
|
||||
send_to_playing_players("<span class='userdanger'>Bagpipes begin to blare. You feel Scottish pride coming over you.</span>")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used (delayed) THERE CAN BE ONLY ONE!</span>")
|
||||
log_admin("[key_name(usr)] used delayed THERE CAN BE ONLY ONE.")
|
||||
addtimer(CALLBACK(src, .proc/only_one), 420)
|
||||
|
||||
/mob/living/carbon/human/proc/make_scottish()
|
||||
ticker.mode.traitors += mind
|
||||
mind.special_role = "highlander"
|
||||
@@ -70,7 +75,7 @@ var/highlander = FALSE
|
||||
antiwelder.icon_state = "bloodhand_right"
|
||||
put_in_hands(antiwelder)
|
||||
|
||||
src << "<span class='boldannounce'>Your [H1.name] cries out for blood. Join in the slaughter, lest you be claimed yourself...\n\
|
||||
src << "<span class='boldannounce'>Your [H1.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.</span>"
|
||||
|
||||
/proc/only_me()
|
||||
|
||||
@@ -190,25 +190,6 @@
|
||||
feedback_add_details("admin_verb","MUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
/client/proc/cmd_admin_add_random_ai_law()
|
||||
set category = "Fun"
|
||||
set name = "Add Random AI Law"
|
||||
if(!holder)
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
log_admin("[key_name(src)] has added a random AI law.")
|
||||
message_admins("[key_name_admin(src)] has added a random AI law.")
|
||||
|
||||
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
|
||||
var/announce_ion_laws = (show_log == "Yes" ? 1 : -1)
|
||||
|
||||
new /datum/round_event/ion_storm(0, announce_ion_laws)
|
||||
feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
//I use this proc for respawn character too. /N
|
||||
/proc/create_xeno(ckey)
|
||||
if(!ckey)
|
||||
@@ -439,8 +420,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
|
||||
var/announce_ion_laws = (show_log == "Yes" ? 1 : -1)
|
||||
|
||||
var/datum/round_event/ion_storm/ion = new(0, announce_ion_laws, input)
|
||||
ion.start()
|
||||
var/datum/round_event/ion_storm/add_law_only/ion = new()
|
||||
ion.announceEvent = announce_ion_laws
|
||||
ion.ionMessage = input
|
||||
|
||||
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
return
|
||||
|
||||
dbcon.Disconnect()
|
||||
failed_db_connections = 0
|
||||
log_admin("[key_name(usr)] has forced the database to disconnect")
|
||||
message_admins("[key_name_admin(usr)] has <b>forced</b> the database to disconnect!")
|
||||
feedback_add_details("admin_verb","FRDB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -24,8 +23,8 @@
|
||||
message_admins("[key_name_admin(usr)] is attempting to re-established the DB Connection")
|
||||
feedback_add_details("admin_verb","RDB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
failed_db_connections = 0
|
||||
if (!establish_db_connection())
|
||||
dbcon.failed_connections = 0
|
||||
if(!dbcon.Connect())
|
||||
message_admins("Database connection failed: " + dbcon.ErrorMsg())
|
||||
else
|
||||
message_admins("Database connection re-established")
|
||||
@@ -21,7 +21,7 @@
|
||||
icon_state = bombtank.icon_state
|
||||
if(bombassembly)
|
||||
add_overlay(bombassembly.icon_state)
|
||||
add_overlay(bombassembly.overlays)
|
||||
copy_overlays(bombassembly)
|
||||
add_overlay("bomb_assembly")
|
||||
|
||||
/obj/item/device/onetankbomb/attackby(obj/item/weapon/W, mob/user, params)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
if(M.flash_act(1, 1))
|
||||
M.confused += power
|
||||
terrible_conversion_proc(M, user)
|
||||
M.Stun(1)
|
||||
M.Weaken(rand(4,6))
|
||||
visible_message("<span class='disarm'>[user] blinds [M] with the flash!</span>")
|
||||
user << "<span class='danger'>You blind [M] with the flash!</span>"
|
||||
M << "<span class='userdanger'>[user] blinds you with the flash!</span>"
|
||||
@@ -114,7 +114,7 @@
|
||||
var/mob/living/silicon/robot/R = M
|
||||
add_logs(user, R, "flashed", src)
|
||||
update_icon(1)
|
||||
M.Weaken(6)
|
||||
M.Weaken(rand(4,6))
|
||||
R.confused += 5
|
||||
R.flash_act(affect_silicon = 1)
|
||||
user.visible_message("<span class='disarm'>[user] overloads [R]'s sensors with the flash!</span>", "<span class='danger'>You overload [R]'s sensors with the flash!</span>")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/device/assembly/igniter
|
||||
name = "igniter"
|
||||
desc = "A small electronic device able to ignite combustable substances."
|
||||
desc = "A small electronic device able to ignite combustible substances."
|
||||
icon_state = "igniter"
|
||||
materials = list(MAT_METAL=500, MAT_GLASS=50)
|
||||
origin_tech = "magnets=1"
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
if (atmos_overlay_types)
|
||||
for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added
|
||||
overlays -= overlay
|
||||
cut_overlay(overlay)
|
||||
|
||||
if (new_overlay_types.len)
|
||||
if (atmos_overlay_types)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(name == initial(name))
|
||||
name = "[A.name] Air Alarm"
|
||||
|
||||
@@ -311,7 +311,7 @@
|
||||
send_signal(device_id, list("checks" = text2num(params["val"])^2))
|
||||
. = TRUE
|
||||
if("set_external_pressure")
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
var/target = input("New target pressure:", name, A.air_vent_info[device_id]["external"]) as num|null
|
||||
if(!isnull(target) && !..())
|
||||
send_signal(device_id, list("set_external_pressure" = target))
|
||||
@@ -337,12 +337,12 @@
|
||||
apply_mode()
|
||||
. = TRUE
|
||||
if("alarm")
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(A.atmosalert(2, src))
|
||||
post_alert(2)
|
||||
. = TRUE
|
||||
if("reset")
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(A.atmosalert(0, src))
|
||||
post_alert(0)
|
||||
. = TRUE
|
||||
@@ -374,7 +374,7 @@
|
||||
return 0
|
||||
|
||||
/obj/machinery/airalarm/proc/refresh_all()
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
for(var/id_tag in A.air_vent_names)
|
||||
var/list/I = A.air_vent_info[id_tag]
|
||||
if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time)
|
||||
@@ -409,7 +409,7 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/airalarm/proc/apply_mode()
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
switch(mode)
|
||||
if(AALARM_MODE_SCRUBBING)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
@@ -541,7 +541,7 @@
|
||||
icon_state = "alarmp"
|
||||
return
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
switch(max(danger_level, A.atmosalm))
|
||||
if(0)
|
||||
icon_state = "alarm0"
|
||||
@@ -596,7 +596,7 @@
|
||||
if(!frequency)
|
||||
return
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
|
||||
var/datum/signal/alert_signal = new
|
||||
alert_signal.source = src
|
||||
@@ -614,7 +614,7 @@
|
||||
frequency.post_signal(src, alert_signal,null,-1)
|
||||
|
||||
/obj/machinery/airalarm/proc/apply_danger_level()
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
|
||||
var/new_area_danger_level = 0
|
||||
for(var/area/R in A.related)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
id_tag = num2text(uid)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/Destroy()
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
A.air_vent_names -= id_tag
|
||||
A.air_vent_info -= id_tag
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
"sigtype" = "status"
|
||||
)
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(!A.air_vent_names[id_tag])
|
||||
name = "\improper [A.name] vent pump #[A.air_vent_names.len + 1]"
|
||||
A.air_vent_names[id_tag] = name
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
id_tag = num2text(uid)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
A.air_scrub_names -= id_tag
|
||||
A.air_scrub_info -= id_tag
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
"sigtype" = "status"
|
||||
)
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(!A.air_scrub_names[id_tag])
|
||||
name = "\improper [A.name] air scrubber #[A.air_scrub_names.len + 1]"
|
||||
A.air_scrub_names[id_tag] = name
|
||||
|
||||
@@ -108,3 +108,13 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/hidden
|
||||
level = 1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/hidden
|
||||
level = 1
|
||||
@@ -99,3 +99,13 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden
|
||||
level = 1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden
|
||||
level = 1
|
||||
|
||||
@@ -110,3 +110,13 @@ The regular pipe you see everywhere, including bent ones.
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/hidden
|
||||
level = 1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden
|
||||
level = 1
|
||||
@@ -360,6 +360,14 @@
|
||||
desc = "This looks like it could really hurt in melee."
|
||||
force = 50
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/laser/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/floor_vanish), 1)
|
||||
|
||||
/obj/item/weapon/gun/ballistic/automatic/laser/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf
|
||||
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
create(ckey = user.ckey)
|
||||
|
||||
/obj/effect/mob_spawn/Initialize(mapload)
|
||||
..()
|
||||
if(instant || (roundstart && (mapload || (ticker && ticker.current_state > GAME_STATE_SETTING_UP))))
|
||||
create()
|
||||
else
|
||||
@@ -348,7 +349,7 @@
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
has_id = 1
|
||||
id_job = "Bartender"
|
||||
id_access = "Bartender"
|
||||
id_access_list = list(access_bar)
|
||||
|
||||
/obj/effect/mob_spawn/human/bartender/alive
|
||||
death = FALSE
|
||||
@@ -385,7 +386,7 @@
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
has_id = 1
|
||||
id_job = "Bridge Officer"
|
||||
id_access = "Captain"
|
||||
id_access_list = list(access_cent_captain)
|
||||
|
||||
/obj/effect/mob_spawn/human/commander
|
||||
name = "Commander"
|
||||
@@ -400,7 +401,7 @@
|
||||
pocket1 = /obj/item/weapon/lighter
|
||||
has_id = 1
|
||||
id_job = "Commander"
|
||||
id_access = "Captain"
|
||||
id_access_list = list(access_cent_captain)
|
||||
|
||||
/obj/effect/mob_spawn/human/nanotrasensoldier
|
||||
name = "Nanotrasen Private Security Officer"
|
||||
@@ -413,7 +414,7 @@
|
||||
back = /obj/item/weapon/storage/backpack/security
|
||||
has_id = 1
|
||||
id_job = "Private Security Force"
|
||||
id_access = "Security Officer"
|
||||
id_access_list = list(access_cent_specops)
|
||||
|
||||
/obj/effect/mob_spawn/human/commander/alive
|
||||
death = FALSE
|
||||
@@ -477,4 +478,4 @@
|
||||
if(despawn == "No" || !loc || !Adjacent(user))
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user.name] climbs back into cryosleep...</span>")
|
||||
qdel(user)
|
||||
qdel(user)
|
||||
|
||||
@@ -8,18 +8,9 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away
|
||||
if(potentialRandomZlevels && potentialRandomZlevels.len)
|
||||
world << "<span class='boldannounce'>Loading away mission...</span>"
|
||||
var/map = pick(potentialRandomZlevels)
|
||||
var/file = file(map)
|
||||
load_new_z_level(file)
|
||||
load_new_z_level(map)
|
||||
world << "<span class='boldannounce'>Away mission loaded.</span>"
|
||||
|
||||
/proc/load_new_z_level(var/file)
|
||||
if(!isfile(file))
|
||||
return FALSE
|
||||
maploader.load_map(file)
|
||||
smooth_zlevel(world.maxz)
|
||||
SortAreas()
|
||||
log_world("loaded [file] as z-level [world.maxz]")
|
||||
|
||||
/proc/reset_gateway_spawns(reset = FALSE)
|
||||
for(var/obj/machinery/gateway/G in world)
|
||||
if(reset)
|
||||
@@ -69,97 +60,4 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away
|
||||
|
||||
potentialMaps.Add(t)
|
||||
|
||||
return potentialMaps
|
||||
|
||||
|
||||
/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins = space_ruins_templates)
|
||||
if(!z_levels || !z_levels.len)
|
||||
WARNING("No Z levels provided - Not generating ruins")
|
||||
return
|
||||
|
||||
for(var/zl in z_levels)
|
||||
var/turf/T = locate(1, 1, zl)
|
||||
if(!T)
|
||||
WARNING("Z level [zl] does not exist - Not generating ruins")
|
||||
return
|
||||
|
||||
var/overall_sanity = 100
|
||||
var/list/ruins = potentialRuins.Copy()
|
||||
|
||||
while(budget > 0 && overall_sanity > 0)
|
||||
// Pick a ruin
|
||||
var/datum/map_template/ruin/ruin = null
|
||||
if(ruins && ruins.len)
|
||||
ruin = ruins[pick(ruins)]
|
||||
else
|
||||
log_world("Ruin loader had no ruins to pick from with [budget] left to spend.")
|
||||
break
|
||||
// Can we afford it
|
||||
if(ruin.cost > budget)
|
||||
overall_sanity--
|
||||
continue
|
||||
// If so, try to place it
|
||||
var/sanity = 100
|
||||
// And if we can't fit it anywhere, give up, try again
|
||||
|
||||
while(sanity > 0)
|
||||
sanity--
|
||||
var/width_border = TRANSITIONEDGE + round(ruin.width / 2)
|
||||
var/height_border = TRANSITIONEDGE + round(ruin.height / 2)
|
||||
var/z_level = pick(z_levels)
|
||||
var/turf/T = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z_level)
|
||||
var/valid = TRUE
|
||||
|
||||
for(var/turf/check in ruin.get_affected_turfs(T,1))
|
||||
var/area/new_area = get_area(check)
|
||||
if(!(istype(new_area, whitelist)))
|
||||
valid = FALSE
|
||||
break
|
||||
|
||||
if(!valid)
|
||||
continue
|
||||
|
||||
log_world("Ruin \"[ruin.name]\" placed at ([T.x], [T.y], [T.z])")
|
||||
|
||||
var/obj/effect/ruin_loader/R = new /obj/effect/ruin_loader(T)
|
||||
R.Load(ruins,ruin)
|
||||
budget -= ruin.cost
|
||||
if(!ruin.allow_duplicates)
|
||||
ruins -= ruin.name
|
||||
break
|
||||
|
||||
if(!overall_sanity)
|
||||
log_world("Ruin loader gave up with [budget] left to spend.")
|
||||
|
||||
|
||||
/obj/effect/ruin_loader
|
||||
name = "random ruin"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "syndballoon"
|
||||
invisibility = 0
|
||||
|
||||
/obj/effect/ruin_loader/proc/Load(list/potentialRuins = space_ruins_templates, datum/map_template/template = null)
|
||||
var/list/possible_ruins = list()
|
||||
for(var/A in potentialRuins)
|
||||
var/datum/map_template/T = potentialRuins[A]
|
||||
if(!T.loaded)
|
||||
possible_ruins += T
|
||||
if(!template && possible_ruins.len)
|
||||
template = safepick(possible_ruins)
|
||||
if(!template)
|
||||
return FALSE
|
||||
var/turf/central_turf = get_turf(src)
|
||||
for(var/i in template.get_affected_turfs(central_turf, 1))
|
||||
var/turf/T = i
|
||||
for(var/mob/living/simple_animal/monster in T)
|
||||
qdel(monster)
|
||||
for(var/obj/structure/flora/ash/plant in T)
|
||||
qdel(plant)
|
||||
template.load(central_turf,centered = TRUE)
|
||||
template.loaded++
|
||||
var/datum/map_template/ruin = template
|
||||
if(istype(ruin))
|
||||
new /obj/effect/landmark/ruin(central_turf, ruin)
|
||||
|
||||
qdel(src)
|
||||
return TRUE
|
||||
return potentialMaps
|
||||
@@ -56,7 +56,7 @@
|
||||
/datum/export/organ/alien/abductor
|
||||
cost = 2500
|
||||
unit_name = "abductor gland"
|
||||
export_types = list(/obj/item/organ/gland)
|
||||
export_types = list(/obj/item/organ/heart/gland)
|
||||
|
||||
/datum/export/organ/alien/changeling_egg
|
||||
cost = 50000 // Holy. Fuck.
|
||||
|
||||
+15
-28
@@ -562,16 +562,6 @@
|
||||
crate_name = "space suit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/engineering/hardsuit
|
||||
name = "Spare Hardsuit Crate"
|
||||
cost = 3500
|
||||
access = access_ce
|
||||
contains = list(/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine)
|
||||
crate_name = "spare hardsuit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
|
||||
/datum/supply_pack/engineering/shieldgen
|
||||
name = "Anti-breach Shield Projector Crate"
|
||||
cost = 2500
|
||||
@@ -843,6 +833,7 @@
|
||||
|
||||
/datum/supply_pack/science
|
||||
group = "Science"
|
||||
crate_type = /obj/structure/closet/crate/science
|
||||
|
||||
/datum/supply_pack/science/robotics
|
||||
name = "Robotics Assembly Crate"
|
||||
@@ -856,7 +847,7 @@
|
||||
/obj/item/weapon/stock_parts/cell/high,
|
||||
/obj/item/weapon/stock_parts/cell/high)
|
||||
crate_name = "robotics assembly crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/robotics/mecha_ripley
|
||||
name = "Circuit Crate (Ripley APLU)"
|
||||
@@ -866,7 +857,7 @@
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/main,
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/peripherals)
|
||||
crate_name = "\improper APLU Ripley circuit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/robotics/mecha_odysseus
|
||||
name = "Circuit Crate (Odysseus)"
|
||||
@@ -875,7 +866,7 @@
|
||||
contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals,
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus/main)
|
||||
crate_name = "\improper Odysseus circuit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/plasma
|
||||
name = "Plasma Assembly Crate"
|
||||
@@ -905,7 +896,7 @@
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen)
|
||||
crate_name = "shield generators crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/transfer_valves
|
||||
name = "Tank Transfer Valves Crate"
|
||||
@@ -914,7 +905,7 @@
|
||||
contains = list(/obj/item/device/transfer_valve,
|
||||
/obj/item/device/transfer_valve)
|
||||
crate_name = "tank transfer valves crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/science/bz_canister
|
||||
@@ -923,7 +914,7 @@
|
||||
access_any = list(access_rd, access_atmospherics)
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/bz)
|
||||
crate_name = "bz canister crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/science/freon_canister
|
||||
@@ -932,7 +923,7 @@
|
||||
access_any = list(access_rd, access_atmospherics)
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/freon)
|
||||
crate_name = "freon canister crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/science/research
|
||||
@@ -941,7 +932,7 @@
|
||||
access = access_research
|
||||
contains = list(/obj/item/device/machineprototype)
|
||||
crate_name = "machine prototype crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/tablets
|
||||
name = "Tablet Crate"
|
||||
@@ -1263,6 +1254,12 @@
|
||||
contains = list(/obj/item/stack/sheet/cardboard/fifty)
|
||||
crate_name = "cardboard sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/plastic50
|
||||
name = "50 Plastic Sheets"
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/sheet/plastic/fifty)
|
||||
crate_name = "plastic sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/sandstone30
|
||||
name = "30 Sandstone Blocks"
|
||||
cost = 1000
|
||||
@@ -1391,16 +1388,6 @@
|
||||
/obj/item/weapon/book/manual/random/,
|
||||
/obj/item/weapon/book/random/triple)
|
||||
|
||||
/datum/supply_pack/misc/posters
|
||||
name = "Corporate Posters Crate"
|
||||
cost = 800
|
||||
contains = list(/obj/item/weapon/poster/legit,
|
||||
/obj/item/weapon/poster/legit,
|
||||
/obj/item/weapon/poster/legit,
|
||||
/obj/item/weapon/poster/legit,
|
||||
/obj/item/weapon/poster/legit)
|
||||
crate_name = "corporate posters crate"
|
||||
|
||||
/datum/supply_pack/misc/paper
|
||||
name = "Bureaucracy Crate"
|
||||
cost = 1500
|
||||
|
||||
@@ -220,7 +220,7 @@ var/next_external_rsc = 0
|
||||
connection_time = world.time
|
||||
connection_realtime = world.realtime
|
||||
connection_timeofday = world.timeofday
|
||||
|
||||
winset(src, null, "command=\".configure graphics-hwmode on\"")
|
||||
if (byond_version < config.client_error_version) //Out of date client.
|
||||
src << "<span class='danger'><b>Your version of byond is too old:</b></span>"
|
||||
src << config.client_error_message
|
||||
@@ -350,8 +350,7 @@ var/next_external_rsc = 0
|
||||
if (IsGuestKey(src.key))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
if(!dbcon.Connect())
|
||||
return
|
||||
|
||||
var/sql_ckey = sanitizeSQL(src.ckey)
|
||||
@@ -372,13 +371,12 @@ var/next_external_rsc = 0
|
||||
if (IsGuestKey(src.key))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if (!dbcon.IsConnected())
|
||||
if (!dbcon.Connect())
|
||||
return
|
||||
|
||||
var/sql_ckey = sanitizeSQL(ckey)
|
||||
|
||||
var/DBQuery/query_ip = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ip = '[address]' AND ckey != '[sql_ckey]'")
|
||||
var/DBQuery/query_ip = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ip = INET_ATON('[address]') AND ckey != '[sql_ckey]'")
|
||||
query_ip.Execute()
|
||||
related_accounts_ip = ""
|
||||
while(query_ip.NextRow())
|
||||
@@ -402,12 +400,11 @@ var/next_external_rsc = 0
|
||||
var/sql_admin_rank = sanitizeSQL(admin_rank)
|
||||
|
||||
|
||||
var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO [format_table_name("player")] (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), '[sql_ip]', '[sql_computerid]', '[sql_admin_rank]') ON DUPLICATE KEY UPDATE lastseen = VALUES(lastseen), ip = VALUES(ip), computerid = VALUES(computerid), lastadminrank = VALUES(lastadminrank)")
|
||||
var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO [format_table_name("player")] (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]') ON DUPLICATE KEY UPDATE lastseen = VALUES(lastseen), ip = VALUES(ip), computerid = VALUES(computerid), lastadminrank = VALUES(lastadminrank)")
|
||||
query_insert.Execute()
|
||||
|
||||
//Logging player access
|
||||
var/serverip = "[world.internet_address]:[world.port]"
|
||||
var/DBQuery/query_accesslog = dbcon.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`serverip`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),'[serverip]','[sql_ckey]','[sql_ip]','[sql_computerid]');")
|
||||
var/DBQuery/query_accesslog = dbcon.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON('[world.internet_address]'),'[world.port]''[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]');")
|
||||
query_accesslog.Execute()
|
||||
|
||||
/client/proc/check_randomizer(topic)
|
||||
@@ -577,6 +574,7 @@ var/next_external_rsc = 0
|
||||
if ("key")
|
||||
return FALSE
|
||||
|
||||
|
||||
/client/proc/change_view(new_size)
|
||||
if (isnull(new_size))
|
||||
CRASH("change_view called without argument.")
|
||||
|
||||
@@ -191,7 +191,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
|
||||
toggles = sanitize_integer(toggles, 0, 65535, initial(toggles))
|
||||
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
|
||||
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, PARALLAX_HIGH)
|
||||
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
|
||||
ghost_form = sanitize_inlist(ghost_form, ghost_forms, initial(ghost_form))
|
||||
ghost_orbit = sanitize_inlist(ghost_orbit, ghost_orbits, initial(ghost_orbit))
|
||||
ghost_accs = sanitize_inlist(ghost_accs, ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
/mob/living/carbon/human/verb/suicide()
|
||||
set hidden = 1
|
||||
return
|
||||
if(!canSuicide())
|
||||
return
|
||||
var/oldkey = ckey
|
||||
|
||||
@@ -2,44 +2,32 @@
|
||||
set name = "Who"
|
||||
set category = "OOC"
|
||||
|
||||
var/msg = ""
|
||||
|
||||
var/list/Lines = list()
|
||||
var/msg = "--------\n"
|
||||
|
||||
if(length(admins) > 0)
|
||||
Lines += "<b>Admins:</b>"
|
||||
for(var/client/C in sortList(admins))
|
||||
if(C.holder)
|
||||
if(!C.holder.fakekey)
|
||||
Lines += "<font color='#FF0000'>[C.key]</font>[show_info(C)]"
|
||||
if(!C.holder.fakekey)
|
||||
Lines += "\t <font color='#FF0000'>[C.key]</font>[show_info(C)]"
|
||||
|
||||
if(length(mentors) > 0)
|
||||
Lines += "<b>Mentors:</b>"
|
||||
for(var/client/C in sortList(clients))
|
||||
var/mentor = mentor_datums[C.ckey]
|
||||
if(mentor)
|
||||
Lines += "<font color='#0033CC'>[C.key]</font>[show_info(C)]"
|
||||
Lines += "\t <font color='#0033CC'>[C.key]</font>[show_info(C)]"
|
||||
|
||||
|
||||
var/player_text = ""
|
||||
var/display_count = 0 //Used to detect as to whether or not we should display the players list
|
||||
Lines += "<b>Players:</b>"
|
||||
for(var/client/C in sortList(clients))
|
||||
if(C.holder)
|
||||
if(C.holder.fakekey)
|
||||
display_count++
|
||||
player_text += "[C.holder.fakekey][show_info(C)]\n"
|
||||
else if(!check_mentor_other(C))
|
||||
display_count++
|
||||
player_text += "[C.key][show_info(C)]\n"
|
||||
|
||||
if(display_count > 0)
|
||||
Lines += "<b>Players:</b>"
|
||||
Lines += player_text
|
||||
if(!check_mentor_other(C) || (C.holder && C.holder.fakekey))
|
||||
Lines += "\t [C.key][show_info(C)]"
|
||||
|
||||
for(var/line in Lines)
|
||||
msg += "[line]\n"
|
||||
|
||||
msg += "<b>Total Players: [length(clients)]</b>\n"
|
||||
msg += "--------"
|
||||
msg += "<b>Total Players: [length(Lines)]</b>"
|
||||
src << msg
|
||||
|
||||
/client/proc/show_info(var/client/C)
|
||||
@@ -49,7 +37,7 @@
|
||||
if(!src.holder)
|
||||
return ""
|
||||
|
||||
var/entry = "\t[C.key]"
|
||||
var/entry = ""
|
||||
if(C.holder && C.holder.fakekey)
|
||||
entry += " <i>(as [C.holder.fakekey])</i>"
|
||||
if (isnewplayer(C.mob))
|
||||
@@ -74,7 +62,6 @@
|
||||
entry += " ([round(C.avgping, 1)]ms)"
|
||||
return entry
|
||||
|
||||
|
||||
/client/verb/adminwho()
|
||||
set category = "Admin"
|
||||
set name = "Adminwho"
|
||||
@@ -89,7 +76,7 @@
|
||||
|
||||
if(isobserver(C.mob))
|
||||
msg += " - Observing"
|
||||
else if(istype(C.mob,/mob/new_player))
|
||||
else if(isnewplayer(C.mob))
|
||||
msg += " - Lobby"
|
||||
else
|
||||
msg += " - Playing"
|
||||
@@ -99,15 +86,16 @@
|
||||
msg += "\n"
|
||||
else
|
||||
for(var/client/C in admins)
|
||||
if(C.is_afk())
|
||||
continue //Don't show afk admins to adminwho
|
||||
if(!C.holder.fakekey)
|
||||
msg += "\t[C] is a [C.holder.rank]\n"
|
||||
|
||||
msg += "<span class='info'>Adminhelps are also sent to IRC. If no admins are available in game adminhelp anyways and an admin on IRC will see it and respond.</span>"
|
||||
src << msg
|
||||
|
||||
/client/verb/mentorwho()
|
||||
set category = "Mentor"
|
||||
set name = "Mentorwho"
|
||||
|
||||
var/msg = "<b>Current Mentors:</b>\n"
|
||||
for(var/client/C in mentors)
|
||||
var/suffix = ""
|
||||
@@ -121,7 +109,5 @@
|
||||
|
||||
if(C.is_afk())
|
||||
suffix += " (AFK)"
|
||||
|
||||
msg += "\t[C][suffix]\n"
|
||||
|
||||
src << msg
|
||||
@@ -155,8 +155,7 @@ var/list/damaged_clothes_icons = list()
|
||||
add_overlay(damaged_clothes_icon, 1)
|
||||
else
|
||||
damaged_clothes = 0
|
||||
overlays -= damaged_clothes_icons[index]
|
||||
priority_overlays -= damaged_clothes_icons[index]
|
||||
cut_overlay(damaged_clothes_icons[index], TRUE)
|
||||
|
||||
|
||||
//Ears: currently only used for headsets and earmuffs
|
||||
|
||||
@@ -136,6 +136,12 @@
|
||||
item_state = "glasses"
|
||||
vision_correction = 1 //corrects nearsightedness
|
||||
|
||||
/obj/item/clothing/glasses/regular/jamjar
|
||||
name = "Jamjar Glasses"
|
||||
desc = "Also known as Virginity Protectors."
|
||||
icon_state = "jamjar_glasses"
|
||||
item_state = "jamjar_glasses"
|
||||
|
||||
/obj/item/clothing/glasses/regular/hipster
|
||||
name = "Prescription Glasses"
|
||||
desc = "Made by Uncool. Co."
|
||||
@@ -363,39 +369,3 @@
|
||||
add_client_colour(G.glass_colour_type)
|
||||
else
|
||||
remove_client_colour(G.glass_colour_type)
|
||||
|
||||
//VG rip
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/purple
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes, and the colored lenses let you see the world in purple."
|
||||
name = "purple sunglasses"
|
||||
icon_state = "sun_purple"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/star
|
||||
name = "star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses, both lenses are in the shape of a star."
|
||||
icon_state = "sun_star"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/rockstar
|
||||
name = "red star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones."
|
||||
icon_state = "sun_star_silver"
|
||||
|
||||
/obj/item/clothing/glasses/gglasses
|
||||
name = "Green Glasses"
|
||||
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
|
||||
icon_state = "gglasses"
|
||||
item_state = "gglasses"
|
||||
|
||||
/obj/item/clothing/glasses/welding/superior
|
||||
name = "superior welding goggles"
|
||||
desc = "Welding goggles made from more expensive materials, strangely smells like potatoes. Allows for better vision than normal goggles.."
|
||||
icon_state = "rwelding-g"
|
||||
item_state = "rwelding-g"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
flash_protect = 2
|
||||
tint = 1
|
||||
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
|
||||
flags_cover = GLASSESCOVERSEYES
|
||||
visor_flags_inv = HIDEEYES
|
||||
glass_colour_type = /datum/client_colour/glass_colour/green
|
||||
|
||||
@@ -46,6 +46,16 @@
|
||||
invis_view = SEE_INVISIBLE_MINIMUM
|
||||
glass_colour_type = /datum/client_colour/glass_colour/green
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/sunglasses
|
||||
name = "Medical HUDSunglasses"
|
||||
desc = "Sunglasses with a medical HUD."
|
||||
icon_state = "sunhudmed"
|
||||
origin_tech = "magnets=3;biotech=3;engineering=3"
|
||||
darkness_view = 1
|
||||
flash_protect = 1
|
||||
tint = 1
|
||||
glass_colour_type = /datum/client_colour/glass_colour/blue
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits."
|
||||
@@ -100,9 +110,9 @@
|
||||
icon_state = "hudpatch"
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses
|
||||
name = "HUDSunglasses"
|
||||
desc = "Sunglasses with a HUD."
|
||||
icon_state = "sunhud"
|
||||
name = "Security HUDSunglasses"
|
||||
desc = "Sunglasses with a security HUD."
|
||||
icon_state = "sunhudsec"
|
||||
origin_tech = "magnets=3;combat=3;engineering=3"
|
||||
darkness_view = 1
|
||||
flash_protect = 1
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
//VG rip
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/purple
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes, and the colored lenses let you see the world in purple."
|
||||
name = "purple sunglasses"
|
||||
icon_state = "sun_purple"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/star
|
||||
name = "star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses, both lenses are in the shape of a star."
|
||||
icon_state = "sun_star"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/rockstar
|
||||
name = "red star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones."
|
||||
icon_state = "sun_star_silver"
|
||||
|
||||
/obj/item/clothing/glasses/gglasses
|
||||
name = "Green Glasses"
|
||||
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
|
||||
icon_state = "gglasses"
|
||||
item_state = "gglasses"
|
||||
|
||||
/obj/item/clothing/glasses/welding/superior
|
||||
name = "superior welding goggles"
|
||||
desc = "Welding goggles made from more expensive materials, strangely smells like potatoes. Allows for better vision than normal goggles.."
|
||||
icon_state = "rwelding-g"
|
||||
item_state = "rwelding-g"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
flash_protect = 2
|
||||
tint = 1
|
||||
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
|
||||
flags_cover = GLASSESCOVERSEYES
|
||||
visor_flags_inv = HIDEEYES
|
||||
glass_colour_type = /datum/client_colour/glass_colour/green
|
||||
@@ -55,71 +55,3 @@
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35, fire = 0, acid = 0)
|
||||
|
||||
/obj/item/clothing/gloves/batmangloves
|
||||
desc = "Used for handling all things bat related."
|
||||
name = "batgloves"
|
||||
icon_state = "bmgloves"
|
||||
item_state = "bmgloves"
|
||||
item_color = "bmgloves"
|
||||
|
||||
|
||||
obj/item/clothing/gloves/bikergloves
|
||||
name = "Biker's Gloves"
|
||||
icon_state = "biker-gloves"
|
||||
item_state = "biker-gloves"
|
||||
item_color = "bikergloves"
|
||||
|
||||
/obj/item/clothing/gloves/megagloves
|
||||
desc = "Uncomfortably bulky armored gloves."
|
||||
name = "DRN-001 Gloves"
|
||||
icon_state = "megagloves"
|
||||
item_state = "megagloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/protogloves
|
||||
desc = "Funcionally identical to the DRN-001 model's, but in red!"
|
||||
name = "Prototype Gloves"
|
||||
icon_state = "protogloves"
|
||||
item_state = "protogloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/megaxgloves
|
||||
desc = "An upgrade to the DRN-001's gauntlets, retains the uncomfortable armor, but comes with white gloves!"
|
||||
name = "Maverick Hunter gloves"
|
||||
icon_state = "megaxgloves"
|
||||
item_state = "megaxgloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/joegloves
|
||||
desc = "Large grey gloves, very similar to the Prototype's."
|
||||
name = "Sniper Gloves"
|
||||
icon_state = "joegloves"
|
||||
item_state = "joegloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/doomguy
|
||||
desc = ""
|
||||
name = "Doomguy's gloves"
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/anchor_arms
|
||||
name = "Anchor Arms"
|
||||
desc = "When you're a jerk, everybody loves you."
|
||||
icon_state = "anchorarms"
|
||||
item_state = "anchorarms"
|
||||
|
||||
/obj/item/clothing/gloves/neorussian
|
||||
name = "neo-Russian gloves"
|
||||
desc = "Utilizes a non-slip technology that allows you to never drop your precious bottles of vodka."
|
||||
icon_state = "nr_gloves"
|
||||
item_state = "nr_gloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/neorussian/fingerless
|
||||
name = "neo-Russian fingerless gloves"
|
||||
desc = "For these tense combat situations when you just have to pick your nose."
|
||||
icon_state = "nr_fgloves"
|
||||
item_state = "nr_fgloves"
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
/obj/item/clothing/gloves/batmangloves
|
||||
desc = "Used for handling all things bat related."
|
||||
name = "batgloves"
|
||||
icon_state = "bmgloves"
|
||||
item_state = "bmgloves"
|
||||
item_color = "bmgloves"
|
||||
|
||||
|
||||
obj/item/clothing/gloves/bikergloves
|
||||
name = "Biker's Gloves"
|
||||
icon_state = "biker-gloves"
|
||||
item_state = "biker-gloves"
|
||||
item_color = "bikergloves"
|
||||
|
||||
/obj/item/clothing/gloves/megagloves
|
||||
desc = "Uncomfortably bulky armored gloves."
|
||||
name = "DRN-001 Gloves"
|
||||
icon_state = "megagloves"
|
||||
item_state = "megagloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/protogloves
|
||||
desc = "Funcionally identical to the DRN-001 model's, but in red!"
|
||||
name = "Prototype Gloves"
|
||||
icon_state = "protogloves"
|
||||
item_state = "protogloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/megaxgloves
|
||||
desc = "An upgrade to the DRN-001's gauntlets, retains the uncomfortable armor, but comes with white gloves!"
|
||||
name = "Maverick Hunter gloves"
|
||||
icon_state = "megaxgloves"
|
||||
item_state = "megaxgloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/joegloves
|
||||
desc = "Large grey gloves, very similar to the Prototype's."
|
||||
name = "Sniper Gloves"
|
||||
icon_state = "joegloves"
|
||||
item_state = "joegloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/doomguy
|
||||
desc = ""
|
||||
name = "Doomguy's gloves"
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/anchor_arms
|
||||
name = "Anchor Arms"
|
||||
desc = "When you're a jerk, everybody loves you."
|
||||
icon_state = "anchorarms"
|
||||
item_state = "anchorarms"
|
||||
|
||||
/obj/item/clothing/gloves/neorussian
|
||||
name = "neo-Russian gloves"
|
||||
desc = "Utilizes a non-slip technology that allows you to never drop your precious bottles of vodka."
|
||||
icon_state = "nr_gloves"
|
||||
item_state = "nr_gloves"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/neorussian/fingerless
|
||||
name = "neo-Russian fingerless gloves"
|
||||
desc = "For these tense combat situations when you just have to pick your nose."
|
||||
icon_state = "nr_fgloves"
|
||||
item_state = "nr_fgloves"
|
||||
@@ -332,83 +332,3 @@
|
||||
if(F.on)
|
||||
user.AddLuminosity(-F.brightness_on)
|
||||
SetLuminosity(F.brightness_on)
|
||||
|
||||
/obj/item/clothing/head/helmet/dredd
|
||||
name = "Judge Helmet"
|
||||
desc = "Judge, Jury, and Executioner."
|
||||
icon_state = "dredd-helmet"
|
||||
item_state = "dredd-helmet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50)
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
strip_delay = 80
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/helmet/aviatorhelmet
|
||||
name = "Aviator Helmet"
|
||||
desc = "Help the Bombardier!"
|
||||
armor = list(melee = 25, bullet = 0, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
item_state = "aviator_helmet"
|
||||
icon_state = "aviator_helmet"
|
||||
|
||||
/obj/item/clothing/head/helmet/biker
|
||||
name = "Biker's Helmet"
|
||||
desc = "This helmet should protect you from russians and masked vigilantes."
|
||||
armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
icon_state = "biker_helmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/richard
|
||||
name = "Richard"
|
||||
desc = "Do you like hurting people?"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
icon_state = "richard"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/megahelmet
|
||||
name = "DRN-001 Helmet"
|
||||
desc = "The helmet of the DRN-001 model. A simple, sturdy blue helmet."
|
||||
icon_state = "megahelmet"
|
||||
item_state = "megahelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/protohelmet
|
||||
name = "Prototype Helmet"
|
||||
desc = "Shiny red helmet with white accents and a built in shaded visor that does absolutely nothing, nothing but look rad as hell."
|
||||
icon_state = "protohelmet"
|
||||
item_state = "protohelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/megaxhelmet
|
||||
name = "Maverick Hunter Helmet"
|
||||
desc = "Heavily armored upgrade to the DRN-001 model's helmet, now comes with a pointless red crystal thing!"
|
||||
icon_state = "megaxhelmet"
|
||||
item_state = "megaxhelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/joehelmet
|
||||
name = "Sniper Helmet"
|
||||
desc = "Helmet belonging to one of the many mass produced 'Joe' type robots."
|
||||
icon_state = "joehelmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "joehelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/doomguy
|
||||
name = "Doomguy's helmet"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "doom"
|
||||
armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0)
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/neorussian
|
||||
name = "neo-Russian helmet"
|
||||
desc = "This piece of equipment can double as a pillow, a bowl, an emergency toilet, and sometimes as a helmet."
|
||||
icon_state = "nr_helmet"
|
||||
item_state = "nr_helmet"
|
||||
|
||||
|
||||
@@ -279,80 +279,3 @@
|
||||
name = "magnificent crown"
|
||||
desc = "A crown worn by only the highest emperors of the land."
|
||||
icon_state = "fancycrown"
|
||||
|
||||
/obj/item/clothing/head/stalhelm
|
||||
name = "Stalhelm"
|
||||
desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern."
|
||||
icon_state = "stalhelm"
|
||||
item_state = "stalhelm"
|
||||
|
||||
/obj/item/clothing/head/panzer
|
||||
name = "Panzer Cap"
|
||||
desc = "Ein Hut passen nur für die größten Tanks."
|
||||
icon_state = "panzercap"
|
||||
item_state = "panzercap"
|
||||
|
||||
/obj/item/clothing/head/naziofficer
|
||||
name = "Officer Cap"
|
||||
desc = "Ein Hut von Offizieren in der Nazi-Partei getragen."
|
||||
icon_state = "officercap"
|
||||
item_state = "officercap"
|
||||
|
||||
|
||||
/obj/item/clothing/head/russobluecamohat
|
||||
name = "russian blue camo beret"
|
||||
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
|
||||
icon_state = "russobluecamohat"
|
||||
item_state = "russobluecamohat"
|
||||
|
||||
/obj/item/clothing/head/russofurhat
|
||||
name = "russian fur hat"
|
||||
desc = "Russian winter got you down? Maybe your enemy, but not you!"
|
||||
icon_state = "russofurhat"
|
||||
item_state = "russofurhat"
|
||||
|
||||
/obj/item/clothing/head/squatter_hat
|
||||
name = "slav squatter hat"
|
||||
icon_state = "squatter_hat"
|
||||
item_state = "squatter_hat"
|
||||
desc = "Cyka blyat."
|
||||
|
||||
/obj/item/clothing/head/snake
|
||||
name = "snake head"
|
||||
desc = "Reenact acts of violence against reptiles, or sneak into a swamp unnoticed."
|
||||
icon_state = "snakehead"
|
||||
item_state = "snakehead"
|
||||
|
||||
/obj/item/clothing/head/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/clownpiece
|
||||
name = "Clownpiece's jester hat"
|
||||
desc = "A purple polka-dotted jester's hat with yellow pompons."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
|
||||
/obj/item/clothing/head/mitre
|
||||
name = "mitre"
|
||||
desc = "A funny hat worn by extremely boring people."
|
||||
icon_state = "mitre"
|
||||
item_state = "mitre"
|
||||
|
||||
/obj/item/clothing/head/tinfoil
|
||||
name = "tinfoil hat"
|
||||
desc = "There's no evidence that the security staff is NOT out to get you."
|
||||
icon_state = "foilhat"
|
||||
item_state = "paper"
|
||||
siemens_coefficient = 2
|
||||
|
||||
/obj/item/clothing/head/celtic
|
||||
name = "\improper Celtic crown"
|
||||
desc = "According to legend, Celtic kings would use crowns like this one to shield their subjects from harsh winters back on Earth."
|
||||
icon_state = "celtic_crown"
|
||||
item_state = "celtic_crown"
|
||||
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/dredd
|
||||
name = "Judge Helmet"
|
||||
desc = "Judge, Jury, and Executioner."
|
||||
icon_state = "dredd-helmet"
|
||||
item_state = "dredd-helmet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50)
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
strip_delay = 80
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/helmet/aviatorhelmet
|
||||
name = "Aviator Helmet"
|
||||
desc = "Help the Bombardier!"
|
||||
armor = list(melee = 25, bullet = 0, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
item_state = "aviator_helmet"
|
||||
icon_state = "aviator_helmet"
|
||||
|
||||
/obj/item/clothing/head/helmet/biker
|
||||
name = "Biker's Helmet"
|
||||
desc = "This helmet should protect you from russians and masked vigilantes."
|
||||
armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
icon_state = "biker_helmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/richard
|
||||
name = "Richard"
|
||||
desc = "Do you like hurting people?"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
icon_state = "richard"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/megahelmet
|
||||
name = "DRN-001 Helmet"
|
||||
desc = "The helmet of the DRN-001 model. A simple, sturdy blue helmet."
|
||||
icon_state = "megahelmet"
|
||||
item_state = "megahelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/protohelmet
|
||||
name = "Prototype Helmet"
|
||||
desc = "Shiny red helmet with white accents and a built in shaded visor that does absolutely nothing, nothing but look rad as hell."
|
||||
icon_state = "protohelmet"
|
||||
item_state = "protohelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/megaxhelmet
|
||||
name = "Maverick Hunter Helmet"
|
||||
desc = "Heavily armored upgrade to the DRN-001 model's helmet, now comes with a pointless red crystal thing!"
|
||||
icon_state = "megaxhelmet"
|
||||
item_state = "megaxhelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/joehelmet
|
||||
name = "Sniper Helmet"
|
||||
desc = "Helmet belonging to one of the many mass produced 'Joe' type robots."
|
||||
icon_state = "joehelmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "joehelmet"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/doomguy
|
||||
name = "Doomguy's helmet"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "doom"
|
||||
armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0)
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/neorussian
|
||||
name = "neo-Russian helmet"
|
||||
desc = "This piece of equipment can double as a pillow, a bowl, an emergency toilet, and sometimes as a helmet."
|
||||
icon_state = "nr_helmet"
|
||||
item_state = "nr_helmet"
|
||||
|
||||
|
||||
/obj/item/clothing/head/stalhelm
|
||||
name = "Stalhelm"
|
||||
desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern."
|
||||
icon_state = "stalhelm"
|
||||
item_state = "stalhelm"
|
||||
|
||||
/obj/item/clothing/head/panzer
|
||||
name = "Panzer Cap"
|
||||
desc = "Ein Hut passen nur für die größten Tanks."
|
||||
icon_state = "panzercap"
|
||||
item_state = "panzercap"
|
||||
|
||||
/obj/item/clothing/head/naziofficer
|
||||
name = "Officer Cap"
|
||||
desc = "Ein Hut von Offizieren in der Nazi-Partei getragen."
|
||||
icon_state = "officercap"
|
||||
item_state = "officercap"
|
||||
|
||||
|
||||
/obj/item/clothing/head/russobluecamohat
|
||||
name = "russian blue camo beret"
|
||||
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
|
||||
icon_state = "russobluecamohat"
|
||||
item_state = "russobluecamohat"
|
||||
|
||||
/obj/item/clothing/head/russofurhat
|
||||
name = "russian fur hat"
|
||||
desc = "Russian winter got you down? Maybe your enemy, but not you!"
|
||||
icon_state = "russofurhat"
|
||||
item_state = "russofurhat"
|
||||
|
||||
/obj/item/clothing/head/squatter_hat
|
||||
name = "slav squatter hat"
|
||||
icon_state = "squatter_hat"
|
||||
item_state = "squatter_hat"
|
||||
desc = "Cyka blyat."
|
||||
|
||||
/obj/item/clothing/head/snake
|
||||
name = "snake head"
|
||||
desc = "Reenact acts of violence against reptiles, or sneak into a swamp unnoticed."
|
||||
icon_state = "snakehead"
|
||||
item_state = "snakehead"
|
||||
|
||||
/obj/item/clothing/head/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/clownpiece
|
||||
name = "Clownpiece's jester hat"
|
||||
desc = "A purple polka-dotted jester's hat with yellow pompons."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
|
||||
/obj/item/clothing/head/mitre
|
||||
name = "mitre"
|
||||
desc = "A funny hat worn by extremely boring people."
|
||||
icon_state = "mitre"
|
||||
item_state = "mitre"
|
||||
|
||||
/obj/item/clothing/head/tinfoil
|
||||
name = "tinfoil hat"
|
||||
desc = "There's no evidence that the security staff is NOT out to get you."
|
||||
icon_state = "foilhat"
|
||||
item_state = "paper"
|
||||
siemens_coefficient = 2
|
||||
|
||||
/obj/item/clothing/head/celtic
|
||||
name = "\improper Celtic crown"
|
||||
desc = "According to legend, Celtic kings would use crowns like this one to shield their subjects from harsh winters back on Earth."
|
||||
icon_state = "celtic_crown"
|
||||
item_state = "celtic_crown"
|
||||
@@ -200,19 +200,4 @@
|
||||
/obj/item/clothing/mask/bandana/skull
|
||||
name = "skull bandana"
|
||||
desc = "A fine black bandana with nanotech lining and a skull emblem."
|
||||
icon_state = "bandskull"
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat/wiz
|
||||
name = "purple clown wig and mask"
|
||||
desc = "Some pranksters are truly magical."
|
||||
icon_state = "wizzclown"
|
||||
|
||||
/obj/item/clothing/mask/chapmask
|
||||
name = "venetian mask"
|
||||
desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut."
|
||||
icon_state = "chapmask"
|
||||
|
||||
/obj/item/clothing/mask/neorussian
|
||||
name = "neo-Russian mask"
|
||||
desc = "Somehow, it makes you act and look way more polite than usual."
|
||||
icon_state = "nr_mask"
|
||||
icon_state = "bandskull"
|
||||
@@ -0,0 +1,14 @@
|
||||
/obj/item/clothing/mask/gas/clown_hat/wiz
|
||||
name = "purple clown wig and mask"
|
||||
desc = "Some pranksters are truly magical."
|
||||
icon_state = "wizzclown"
|
||||
|
||||
/obj/item/clothing/mask/chapmask
|
||||
name = "venetian mask"
|
||||
desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut."
|
||||
icon_state = "chapmask"
|
||||
|
||||
/obj/item/clothing/mask/neorussian
|
||||
name = "neo-Russian mask"
|
||||
desc = "Somehow, it makes you act and look way more polite than usual."
|
||||
icon_state = "nr_mask"
|
||||
@@ -111,9 +111,3 @@
|
||||
user << "<span class='warning'>You need help taking these off!</span>"
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/shoes/leather
|
||||
name = "leather shoes"
|
||||
desc = "A sturdy pair of leather shoes."
|
||||
icon_state = "leather"
|
||||
item_color = "leather"
|
||||
|
||||
@@ -59,18 +59,3 @@
|
||||
icon_state = "syndiemag0"
|
||||
magboot_state = "syndiemag"
|
||||
origin_tech = "magnets=4;syndicate=2"
|
||||
|
||||
/obj/item/clothing/shoes/magboots/deathsquad
|
||||
desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
name = "deathsquad magboots"
|
||||
icon_state = "DS-magboots0"
|
||||
magboot_state = "DS-magboots"
|
||||
origin_tech = null
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/magboots/atmos
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician."
|
||||
name = "atmospherics magboots"
|
||||
icon_state = "atmosmagboots0"
|
||||
magboot_state = "atmosmagboots"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -214,97 +214,4 @@
|
||||
name = "blue performer's boots"
|
||||
desc = "These boots were made for dancing."
|
||||
icon_state = "bsing"
|
||||
put_on_delay = 50
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/simonshoes
|
||||
name = "Simon's Shoes"
|
||||
desc = "Simon's Shoes."
|
||||
icon_state = "simonshoes"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/kneesocks
|
||||
name = "kneesocks"
|
||||
desc = "A pair of girly knee-high socks."
|
||||
icon_state = "kneesock"
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/jestershoes
|
||||
name = "Jester Shoes"
|
||||
desc = "As worn by the clowns of old."
|
||||
icon_state = "jestershoes"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/aviatorboots
|
||||
name = "Aviator Boots"
|
||||
desc = "Boots suitable for just about any occasion."
|
||||
icon_state = "aviator_boots"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/libertyshoes
|
||||
name = "Liberty Shoes"
|
||||
desc = "Freedom isn't free, neither were these shoes."
|
||||
icon_state = "libertyshoes"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/megaboots
|
||||
name = "DRN-001 Boots"
|
||||
desc = "Large armored boots, very weak to large spikes."
|
||||
icon_state = "megaboots"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/protoboots
|
||||
name = "Prototype Boots"
|
||||
desc = "Functionally identical to the DRN-001 model's boots, but in red."
|
||||
icon_state = "protoboots"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/megaxboots
|
||||
name = "Maverick Hunter boots"
|
||||
desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike."
|
||||
icon_state = "megaxboots"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/joeboots
|
||||
name = "Sniper Boots"
|
||||
desc = "Nearly identical to the Prototype's boots, except in black."
|
||||
icon_state = "joeboots"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/doomguy
|
||||
name = "Doomguy's boots"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/rottenshoes
|
||||
name = "rotten shoes"
|
||||
desc = "These shoes seem perfect for sneaking around."
|
||||
icon_state = "rottenshoes"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/sandal/slippers
|
||||
name = "magic slippers"
|
||||
icon_state = "slippers"
|
||||
desc = "For the wizard that puts comfort first. Who's going to laugh?"
|
||||
|
||||
/obj/item/clothing/shoes/slippers_worn
|
||||
name = "worn bunny slippers"
|
||||
desc = "Fluffy..."
|
||||
icon_state = "slippers_worn"
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/neorussian
|
||||
name = "neo-Russian boots"
|
||||
desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit."
|
||||
icon_state = "nr_boots"
|
||||
put_on_delay = 50
|
||||
@@ -0,0 +1,91 @@
|
||||
|
||||
/obj/item/clothing/shoes/leather
|
||||
name = "leather shoes"
|
||||
desc = "A sturdy pair of leather shoes."
|
||||
icon_state = "leather"
|
||||
item_color = "leather"
|
||||
|
||||
/obj/item/clothing/shoes/magboots/deathsquad
|
||||
desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
name = "deathsquad magboots"
|
||||
icon_state = "DS-magboots0"
|
||||
magboot_state = "DS-magboots"
|
||||
origin_tech = null
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/magboots/atmos
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician."
|
||||
name = "atmospherics magboots"
|
||||
icon_state = "atmosmagboots0"
|
||||
magboot_state = "atmosmagboots"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/simonshoes
|
||||
name = "Simon's Shoes"
|
||||
desc = "Simon's Shoes."
|
||||
icon_state = "simonshoes"
|
||||
|
||||
/obj/item/clothing/shoes/kneesocks
|
||||
name = "kneesocks"
|
||||
desc = "A pair of girly knee-high socks."
|
||||
icon_state = "kneesock"
|
||||
|
||||
/obj/item/clothing/shoes/jestershoes
|
||||
name = "Jester Shoes"
|
||||
desc = "As worn by the clowns of old."
|
||||
icon_state = "jestershoes"
|
||||
|
||||
/obj/item/clothing/shoes/aviatorboots
|
||||
name = "Aviator Boots"
|
||||
desc = "Boots suitable for just about any occasion."
|
||||
icon_state = "aviator_boots"
|
||||
|
||||
/obj/item/clothing/shoes/libertyshoes
|
||||
name = "Liberty Shoes"
|
||||
desc = "Freedom isn't free, neither were these shoes."
|
||||
icon_state = "libertyshoes"
|
||||
|
||||
/obj/item/clothing/shoes/megaboots
|
||||
name = "DRN-001 Boots"
|
||||
desc = "Large armored boots, very weak to large spikes."
|
||||
icon_state = "megaboots"
|
||||
|
||||
/obj/item/clothing/shoes/protoboots
|
||||
name = "Prototype Boots"
|
||||
desc = "Functionally identical to the DRN-001 model's boots, but in red."
|
||||
icon_state = "protoboots"
|
||||
|
||||
/obj/item/clothing/shoes/megaxboots
|
||||
name = "Maverick Hunter boots"
|
||||
desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike."
|
||||
icon_state = "megaxboots"
|
||||
|
||||
/obj/item/clothing/shoes/joeboots
|
||||
name = "Sniper Boots"
|
||||
desc = "Nearly identical to the Prototype's boots, except in black."
|
||||
icon_state = "joeboots"
|
||||
|
||||
/obj/item/clothing/shoes/doomguy
|
||||
name = "Doomguy's boots"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
|
||||
/obj/item/clothing/shoes/rottenshoes
|
||||
name = "rotten shoes"
|
||||
desc = "These shoes seem perfect for sneaking around."
|
||||
icon_state = "rottenshoes"
|
||||
|
||||
/obj/item/clothing/shoes/sandal/slippers
|
||||
name = "magic slippers"
|
||||
icon_state = "slippers"
|
||||
desc = "For the wizard that puts comfort first. Who's going to laugh?"
|
||||
|
||||
/obj/item/clothing/shoes/slippers_worn
|
||||
name = "worn bunny slippers"
|
||||
desc = "Fluffy..."
|
||||
icon_state = "slippers_worn"
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/neorussian
|
||||
name = "neo-Russian boots"
|
||||
desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit."
|
||||
icon_state = "nr_boots"
|
||||
@@ -100,6 +100,7 @@
|
||||
var/obj/item/weapon/stock_parts/matter_bin/part_bin = null
|
||||
|
||||
var/crashing = FALSE //Are we currently getting wrecked?
|
||||
var/atom/movable/dragging_through = FALSE
|
||||
|
||||
|
||||
//Start/Stop processing the item to use momentum and flight mechanics.
|
||||
@@ -246,6 +247,10 @@
|
||||
/obj/item/device/flightpack/proc/momentum_drift()
|
||||
if(!flight)
|
||||
return FALSE
|
||||
if(wearer.pulling)
|
||||
dragging_through = wearer.pulling
|
||||
else if(dragging_through)
|
||||
dragging_through = null
|
||||
var/drift_dir_x = 0
|
||||
var/drift_dir_y = 0
|
||||
if(momentum_x > 0)
|
||||
@@ -264,10 +269,14 @@
|
||||
losecontrol()
|
||||
momentum_decay()
|
||||
for(var/i in 1 to momentum_speed)
|
||||
var/turf/oldturf = get_turf(wearer)
|
||||
if(momentum_speed_x >= i)
|
||||
step(wearer, drift_dir_x)
|
||||
if(momentum_speed_y >= i)
|
||||
step(wearer, drift_dir_y)
|
||||
if(dragging_through && oldturf)
|
||||
dragging_through.forceMove(oldturf)
|
||||
wearer.pulling = dragging_through
|
||||
sleep(1)
|
||||
|
||||
//Make the wearer lose some momentum.
|
||||
@@ -469,6 +478,7 @@
|
||||
return FALSE
|
||||
if(L.buckled)
|
||||
wearer.visible_message("<span class='warning'>[wearer] reflexively flies over [L]!</span>")
|
||||
wearer.forceMove(get_turf(L))
|
||||
crashing = FALSE
|
||||
return FALSE
|
||||
suit.user.forceMove(get_turf(unmovablevictim))
|
||||
@@ -526,9 +536,11 @@
|
||||
spawn()
|
||||
door.Open()
|
||||
wearer.forceMove(get_turf(door))
|
||||
if(dragging_through)
|
||||
dragging_through.forceMove(get_turf(door))
|
||||
wearer.pulling = dragging_through
|
||||
wearer.visible_message("<span class='boldnotice'>[wearer] rolls to their sides and slips past [door]!</span>")
|
||||
|
||||
|
||||
/obj/item/device/flightpack/proc/crash_grille(obj/structure/grille/target)
|
||||
target.hitby(wearer)
|
||||
target.take_damage(60, BRUTE, "melee", 1)
|
||||
@@ -552,6 +564,9 @@
|
||||
A.open()
|
||||
wearer.visible_message("<span class='warning'>[wearer] rolls sideways and slips past [A]</span>")
|
||||
wearer.forceMove(get_turf(A))
|
||||
if(dragging_through)
|
||||
dragging_through.forceMove(get_turf(A))
|
||||
wearer.pulling = dragging_through
|
||||
return pass
|
||||
|
||||
|
||||
|
||||
@@ -482,6 +482,7 @@
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
|
||||
|
||||
//Head of Security hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
name = "head of security's hardsuit helmet"
|
||||
desc = "a special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
|
||||
@@ -496,6 +497,7 @@
|
||||
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50, fire = 95, acid = 95)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
jetpack = /obj/item/weapon/tank/jetpack/suit
|
||||
|
||||
//Captain
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/captain
|
||||
@@ -721,109 +723,3 @@
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
actions_types = list()
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
name = "nazi hardhelmet"
|
||||
desc = "This is the face of das vaterland's top elite. Gas or energy are your only escapes."
|
||||
item_state = "hardsuit0-nazi"
|
||||
icon_state = "hardsuit0-nazi"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "nazi"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/nazi
|
||||
name = "nazi hardsuit"
|
||||
desc = "The attire of a true krieger. All shall fall, and only das vaterland will remain."
|
||||
item_state = "hardsuit-nazi"
|
||||
icon_state = "hardsuit-nazi"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
name = "soviet hardhelmet"
|
||||
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
|
||||
item_state = "hardsuit0-soviet"
|
||||
icon_state = "hardsuit0-soviet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "soviet"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet
|
||||
name = "soviet hardsuit"
|
||||
desc = "Crafted with the pride of the proletariat. The last thing the enemy sees is the bottom of this armor's boot."
|
||||
item_state = "hardsuit-soviet"
|
||||
icon_state = "hardsuit-soviet"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
name = "Space-Knight helm"
|
||||
desc = "A well polished helmet belonging to a Space-Knight. Favored by space-jousters for its ability to stay on tight after being launched from a mass driver."
|
||||
icon_state = "hardsuit0-knight"
|
||||
item_state = "hardsuit0-knight"
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
item_color="knight"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight
|
||||
name = "Space-Knight armour"
|
||||
desc = "A well polished set of armour belonging to a Space-Knight. Maidens Rescued in Space: 100, Maidens who have slept with me in Space: 0."
|
||||
icon_state = "hardsuit-knight"
|
||||
item_state = "hardsuit-knight"
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/melee/baton,/obj/item/weapon/tank,/obj/item/weapon/shield/energy,/obj/item/weapon/claymore)
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
siemens_coefficient = 0.5
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
name = "Black Knight's helm"
|
||||
desc = "An ominous black helmet with a gold trim. The small viewports create an intimidating look, while also making it nearly impossible to see anything."
|
||||
icon_state = "hardsuit0-blackknight"
|
||||
item_state = "hardsuit0-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
item_color="blackknight"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/black
|
||||
name = "Black Knight's armour"
|
||||
desc = "An ominous black suit of armour with a gold trim. Surprisingly good at preventing accidental loss of limbs."
|
||||
icon_state = "hardsuit-blackknight"
|
||||
item_state = "hardsuit-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
name = "Solar helm"
|
||||
desc = "A simple helmet. 'Made in Astora' is inscribed on the back."
|
||||
icon_state = "hardsuit0-solaire"
|
||||
item_state = "hardsuit0-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
item_color="solaire"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/solaire
|
||||
name = "Solar armour"
|
||||
desc = "A solar powered hardsuit with a fancy insignia on the chest. Perfect for stargazers and adventurers alike."
|
||||
icon_state = "hardsuit-solaire"
|
||||
item_state = "hardsuit-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit0-t51b"
|
||||
item_state = "hardsuit0-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
item_color="t51b"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit-t51b"
|
||||
item_state = "hardsuit-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
|
||||
@@ -308,21 +308,3 @@ Contains:
|
||||
desc = "Peering into the eyes of the helmet is enough to seal damnation."
|
||||
icon_state = "hardsuit0-beserker"
|
||||
item_state = "hardsuit0-beserker"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/bomberman
|
||||
name = "Bomberman head"
|
||||
desc = "Terrorism has never looked so adorable."
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
|
||||
obj/item/clothing/suit/space/bomberman
|
||||
name = "Bomberman's suit"
|
||||
desc = "Doesn't actually make you immune to bombs!"
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
slowdown = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
|
||||
//VG Ports
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
name = "nazi hardhelmet"
|
||||
desc = "This is the face of das vaterland's top elite. Gas or energy are your only escapes."
|
||||
item_state = "hardsuit0-nazi"
|
||||
icon_state = "hardsuit0-nazi"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "nazi"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/nazi
|
||||
name = "nazi hardsuit"
|
||||
desc = "The attire of a true krieger. All shall fall, and only das vaterland will remain."
|
||||
item_state = "hardsuit-nazi"
|
||||
icon_state = "hardsuit-nazi"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
name = "soviet hardhelmet"
|
||||
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
|
||||
item_state = "hardsuit0-soviet"
|
||||
icon_state = "hardsuit0-soviet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "soviet"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet
|
||||
name = "soviet hardsuit"
|
||||
desc = "Crafted with the pride of the proletariat. The last thing the enemy sees is the bottom of this armor's boot."
|
||||
item_state = "hardsuit-soviet"
|
||||
icon_state = "hardsuit-soviet"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
name = "Space-Knight helm"
|
||||
desc = "A well polished helmet belonging to a Space-Knight. Favored by space-jousters for its ability to stay on tight after being launched from a mass driver."
|
||||
icon_state = "hardsuit0-knight"
|
||||
item_state = "hardsuit0-knight"
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
item_color="knight"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight
|
||||
name = "Space-Knight armour"
|
||||
desc = "A well polished set of armour belonging to a Space-Knight. Maidens Rescued in Space: 100, Maidens who have slept with me in Space: 0."
|
||||
icon_state = "hardsuit-knight"
|
||||
item_state = "hardsuit-knight"
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/melee/baton,/obj/item/weapon/tank,/obj/item/weapon/shield/energy,/obj/item/weapon/claymore)
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
siemens_coefficient = 0.5
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
name = "Black Knight's helm"
|
||||
desc = "An ominous black helmet with a gold trim. The small viewports create an intimidating look, while also making it nearly impossible to see anything."
|
||||
icon_state = "hardsuit0-blackknight"
|
||||
item_state = "hardsuit0-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
item_color="blackknight"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/black
|
||||
name = "Black Knight's armour"
|
||||
desc = "An ominous black suit of armour with a gold trim. Surprisingly good at preventing accidental loss of limbs."
|
||||
icon_state = "hardsuit-blackknight"
|
||||
item_state = "hardsuit-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
name = "Solar helm"
|
||||
desc = "A simple helmet. 'Made in Astora' is inscribed on the back."
|
||||
icon_state = "hardsuit0-solaire"
|
||||
item_state = "hardsuit0-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
item_color="solaire"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/solaire
|
||||
name = "Solar armour"
|
||||
desc = "A solar powered hardsuit with a fancy insignia on the chest. Perfect for stargazers and adventurers alike."
|
||||
icon_state = "hardsuit-solaire"
|
||||
item_state = "hardsuit-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit0-t51b"
|
||||
item_state = "hardsuit0-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
item_color="t51b"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit-t51b"
|
||||
item_state = "hardsuit-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/space/bomberman
|
||||
name = "Bomberman head"
|
||||
desc = "Terrorism has never looked so adorable."
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
|
||||
obj/item/clothing/suit/space/bomberman
|
||||
name = "Bomberman's suit"
|
||||
desc = "Doesn't actually make you immune to bombs!"
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
slowdown = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
@@ -403,44 +403,3 @@
|
||||
desc = "God wills it!"
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie
|
||||
name = "Squaddie Armor"
|
||||
desc = "A suit of armor with heavy padding to protect against projectile and laser attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor2"
|
||||
item_state = "xcomarmor2"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 10, bullet = 50, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.5
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie/dredd
|
||||
name = "Judge Armor"
|
||||
desc = "A large suit of heavy armor, fit for a Judge."
|
||||
icon_state = "dredd-suit"
|
||||
item_state = "dredd-suit"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomarmor
|
||||
name = "Mysterious Armor"
|
||||
desc = "A suit of armor with heavy plating to protect against melee attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor1"
|
||||
item_state = "xcomarmor1"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 50, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
slowdown = 1
|
||||
siemens_coefficient = 0.5
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/neorussian
|
||||
name = "neo-Russian vest"
|
||||
desc = "The narkotiki camo pattern will come useful for botany raids."
|
||||
icon_state = "nr_vest"
|
||||
item_state = "nr_vest"
|
||||
|
||||
/obj/item/clothing/suit/armor/doomguy
|
||||
name = "Doomguy's armor"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
slowdown = 0
|
||||
armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
if(istype(borghead, /obj/item/clothing/head/cardborg)) //why is this done this way? because equipped() is called BEFORE THE ITEM IS IN THE SLOT WHYYYY
|
||||
var/image/I = image(icon = 'icons/mob/robots.dmi' , icon_state = "robot", loc = H)
|
||||
I.override = 1
|
||||
I.overlays += image(icon = 'icons/mob/robots.dmi' , icon_state = "robot_e") //gotta look realistic
|
||||
I.add_overlay(image(icon = 'icons/mob/robots.dmi' , icon_state = "robot_e")) //gotta look realistic
|
||||
H.add_alt_appearance("standard_borg_disguise", I, silicon_mobs+H) //you look like a robot to robots! (including yourself because you're totally a robot)
|
||||
|
||||
|
||||
@@ -535,57 +535,3 @@
|
||||
icon_state = "bedsheet"
|
||||
user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = 1, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150)
|
||||
alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire
|
||||
|
||||
/obj/item/clothing/suit/kaminacape
|
||||
name = "Kamina's Cape"
|
||||
desc = "Don't believe in yourself, dumbass. Believe in me. Believe in the Kamina who believes in you."
|
||||
icon_state = "kaminacape"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/suit/officercoat
|
||||
name = "Officer's Coat"
|
||||
desc = "Ein Mantel gemacht, um die Juden zu bestrafen."
|
||||
icon_state = "officersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/soldiercoat
|
||||
name = "Soldier's Coat"
|
||||
desc = "Und das heißt: Erika."
|
||||
icon_state = "soldiersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/russofurcoat
|
||||
name = "russian fur coat"
|
||||
desc = "Let the land do the fighting for you."
|
||||
icon_state = "russofurcoat"
|
||||
allowed = list(/obj/item/weapon/gun)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/doshjacket
|
||||
name = "Plasterer's Jacket"
|
||||
desc = "Perfect for doing up the house."
|
||||
icon_state = "doshjacket"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
|
||||
/obj/item/clothing/suit/maidapron
|
||||
name = "Apron"
|
||||
desc = "Simple white apron."
|
||||
icon_state = "maidapron"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
|
||||
/obj/item/clothing/suit/clownpiece
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings."
|
||||
icon_state = "clownpiece"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/suit/clownpiece/flying
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings. Looks like these are the real deal!"
|
||||
icon_state = "clownpiece-fly"
|
||||
|
||||
/obj/item/clothing/suit/raincoat
|
||||
name = "Raincoat"
|
||||
desc = "Do you like Huey Lewis and the News?"
|
||||
icon_state = "raincoat"
|
||||
body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
@@ -0,0 +1,415 @@
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie
|
||||
name = "Squaddie Armor"
|
||||
desc = "A suit of armor with heavy padding to protect against projectile and laser attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor2"
|
||||
item_state = "xcomarmor2"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 10, bullet = 50, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.5
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie/dredd
|
||||
name = "Judge Armor"
|
||||
desc = "A large suit of heavy armor, fit for a Judge."
|
||||
icon_state = "dredd-suit"
|
||||
item_state = "dredd-suit"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomarmor
|
||||
name = "Mysterious Armor"
|
||||
desc = "A suit of armor with heavy plating to protect against melee attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor1"
|
||||
item_state = "xcomarmor1"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 50, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
slowdown = 1
|
||||
siemens_coefficient = 0.5
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/neorussian
|
||||
name = "neo-Russian vest"
|
||||
desc = "The narkotiki camo pattern will come useful for botany raids."
|
||||
icon_state = "nr_vest"
|
||||
item_state = "nr_vest"
|
||||
|
||||
/obj/item/clothing/suit/armor/doomguy
|
||||
name = "Doomguy's armor"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
slowdown = 0
|
||||
armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/kaminacape
|
||||
name = "Kamina's Cape"
|
||||
desc = "Don't believe in yourself, dumbass. Believe in me. Believe in the Kamina who believes in you."
|
||||
icon_state = "kaminacape"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/suit/officercoat
|
||||
name = "Officer's Coat"
|
||||
desc = "Ein Mantel gemacht, um die Juden zu bestrafen."
|
||||
icon_state = "officersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/soldiercoat
|
||||
name = "Soldier's Coat"
|
||||
desc = "Und das heißt: Erika."
|
||||
icon_state = "soldiersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/russofurcoat
|
||||
name = "russian fur coat"
|
||||
desc = "Let the land do the fighting for you."
|
||||
icon_state = "russofurcoat"
|
||||
allowed = list(/obj/item/weapon/gun)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/suit/doshjacket
|
||||
name = "Plasterer's Jacket"
|
||||
desc = "Perfect for doing up the house."
|
||||
icon_state = "doshjacket"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
|
||||
/obj/item/clothing/suit/maidapron
|
||||
name = "Apron"
|
||||
desc = "Simple white apron."
|
||||
icon_state = "maidapron"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
|
||||
/obj/item/clothing/suit/clownpiece
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings."
|
||||
icon_state = "clownpiece"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/suit/clownpiece/flying
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings. Looks like these are the real deal!"
|
||||
icon_state = "clownpiece-fly"
|
||||
|
||||
/obj/item/clothing/suit/raincoat
|
||||
name = "Raincoat"
|
||||
desc = "Do you like Huey Lewis and the News?"
|
||||
icon_state = "raincoat"
|
||||
body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
|
||||
|
||||
/obj/item/clothing/under/stripper_pink
|
||||
name = "pink stripper outfit"
|
||||
icon_state = "stripper_p"
|
||||
item_state = "stripper_p"
|
||||
item_color = "stripper_p"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/stripper_green
|
||||
name = "green stripper outfit"
|
||||
icon_state = "stripper_g"
|
||||
item_state = "stripper_g"
|
||||
item_color = "stripper_g"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_orange
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
item_state = "bride_orange"
|
||||
item_color = "bride_orange"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_purple
|
||||
name = "purple wedding dress"
|
||||
desc = "A big and puffy purple dress."
|
||||
icon_state = "bride_purple"
|
||||
item_state = "bride_purple"
|
||||
item_color = "bride_purple"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_blue
|
||||
name = "blue wedding dress"
|
||||
desc = "A big and puffy blue dress."
|
||||
icon_state = "bride_blue"
|
||||
item_state = "bride_blue"
|
||||
item_color = "bride_blue"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_red
|
||||
name = "red wedding dress"
|
||||
desc = "A big and puffy red dress."
|
||||
icon_state = "bride_red"
|
||||
item_state = "bride_red"
|
||||
item_color = "bride_red"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_white
|
||||
name = "white wedding dress"
|
||||
desc = "A white wedding gown made from the finest silk."
|
||||
icon_state = "bride_white"
|
||||
item_state = "bride_white"
|
||||
item_color = "bride_white"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/mankini
|
||||
name = "pink mankini"
|
||||
icon_state = "mankini"
|
||||
item_state = "mankini"
|
||||
item_color = "mankini"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/psysuit
|
||||
name = "dark undersuit"
|
||||
desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm."
|
||||
icon_state = "psysuit"
|
||||
item_state = "psysuit"
|
||||
item_color = "psysuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/officeruniform
|
||||
name = "officer's uniform"
|
||||
desc = "Bestraft die Juden fur ihre Verbrechen."
|
||||
icon_state = "officeruniform"
|
||||
item_state = "officeruniform"
|
||||
item_color = "officeruniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/soldieruniform
|
||||
name = "soldier's uniform"
|
||||
desc = "Bestraft die Verbundeten fur ihren Widerstand."
|
||||
icon_state = "soldieruniform"
|
||||
item_state = "soldieruniform"
|
||||
item_color = "soldieruniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/squatter_outfit
|
||||
name = "slav squatter tracksuit"
|
||||
desc = "Cyka blyat."
|
||||
icon_state = "squatteroutfit"
|
||||
item_state = "squatteroutfit"
|
||||
item_color = "squatteroutfit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/russobluecamooutfit
|
||||
name = "russian blue camo"
|
||||
desc = "Drop and give me dvadtsat!"
|
||||
icon_state = "russobluecamo"
|
||||
item_state = "russobluecamo"
|
||||
item_color = "russobluecamo"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/stilsuit
|
||||
name = "stillsuit"
|
||||
desc = "Designed to preserve bodymoisture."
|
||||
icon_state = "stilsuit"
|
||||
item_state = "stilsuit"
|
||||
item_color = "stilsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/aviatoruniform
|
||||
name = "aviator uniform"
|
||||
desc = "Now you can look absolutely dashing!"
|
||||
icon_state = "aviator_uniform"
|
||||
item_state = "aviator_uniform"
|
||||
item_color = "aviator_uniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/bikersuit
|
||||
name = "biker's outfit"
|
||||
icon_state = "biker"
|
||||
item_state = "biker"
|
||||
item_color = "biker"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/jacketsuit
|
||||
name = "richard's outfit"
|
||||
desc = "Do you know what time it is?"
|
||||
icon_state = "jacket"
|
||||
item_state = "jacket"
|
||||
item_color = "jacket"
|
||||
can_adjust = 0
|
||||
|
||||
obj/item/clothing/under/mega
|
||||
name = "\improper DRN-001 suit"
|
||||
desc = "The original. Simple, yet very adaptable."
|
||||
icon_state = "mega"
|
||||
item_state = "mega"
|
||||
item_color = "mega"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/proto
|
||||
name = "The Prototype Suit"
|
||||
desc = "Even robots know scarves are the perfect accessory for a brooding rival."
|
||||
icon_state = "proto"
|
||||
item_state = "proto"
|
||||
item_color = "proto"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/megax
|
||||
name = "\improper Maverick Hunter regalia"
|
||||
desc = "The best outfit for taking out rogue borgs."
|
||||
icon_state = "megax"
|
||||
item_state = "megax"
|
||||
item_color = "megax"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/joe
|
||||
name = "The Sniper Suit"
|
||||
desc = "Mass produced combat robots with a rather unfitting name."
|
||||
icon_state = "joe"
|
||||
item_state = "joe"
|
||||
item_color = "joe"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/roll
|
||||
name = "\improper DRN-002 Dress"
|
||||
desc = "A simple red dress, the good doctor's second robot wasn't quite as exciting as the first."
|
||||
icon_state = "roll"
|
||||
item_state = "roll"
|
||||
item_color = "roll"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/gokugidown
|
||||
name = "turtle hermit undershirt"
|
||||
desc = "Something seems oddly familiar about this outfit..."
|
||||
icon_state = "gokugidown"
|
||||
item_state = "gokugidown"
|
||||
item_color = "gokugidown"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/gokugi
|
||||
name = "turtle hermit outfit"
|
||||
desc = "An outfit from one trained by the great Turtle Hermit."
|
||||
icon_state = "gokugi"
|
||||
item_state = "gokugi"
|
||||
item_color = "gokugi"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/doomguy
|
||||
name = "\improper Doomguy's pants"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
item_color = "doom"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/vault13
|
||||
name = "vault 13 Jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it. Has a large thirteen emblazened on the back."
|
||||
icon_state = "v13-jumpsuit"
|
||||
item_state = "v13-jumpsuit"
|
||||
item_color = "v13-jumpsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/vault
|
||||
name = "vault jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it."
|
||||
icon_state = "v-jumpsuit"
|
||||
item_state = "v-jumpsuit"
|
||||
item_color = "v-jumpsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/clownpiece
|
||||
name = "Clownpiece's Pierrot suit"
|
||||
desc = "A female-sized set of leggings and shirt with a pattern similar to the American flag, featuring a frilled collar."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
item_color = "clownpiece"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/cia
|
||||
name = "casual IAA outfit"
|
||||
desc = "Just looking at this makes you feel in charge."
|
||||
icon_state = "cia"
|
||||
item_state = "cia"
|
||||
item_color = "cia"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/greaser
|
||||
name = "greaser outfit"
|
||||
desc = "The one that you want!"
|
||||
icon_state = "greaser_default"
|
||||
item_state = "greaser_default"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/greaser/New()
|
||||
var/greaser_colour = "default"
|
||||
switch(rand(1,4))
|
||||
if(1)
|
||||
greaser_colour = "default"
|
||||
if(2)
|
||||
greaser_colour = "cult"
|
||||
if(3)
|
||||
greaser_colour = "spider"
|
||||
if(4)
|
||||
greaser_colour = "snakes"
|
||||
desc = "Tunnel Snakes Rule!"
|
||||
icon_state = "greaser_[greaser_colour]"
|
||||
item_state = "greaser_[greaser_colour]"
|
||||
item_color = "greaser_[greaser_colour]"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wintercasualwear
|
||||
name = "winter casualwear"
|
||||
desc = "Perfect for winter!"
|
||||
icon_state = "shizunewinter"
|
||||
item_state = "shizunewinter"
|
||||
item_color = "shizunewinter"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/casualwear
|
||||
name = "spring casualwear"
|
||||
desc = "Perfect for spring!"
|
||||
icon_state = "shizunenormal"
|
||||
item_state = "shizunenormal"
|
||||
item_color = "shizunenormal"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/keyholesweater
|
||||
name = "keyhole sweater"
|
||||
desc = "What is the point of this, anyway?"
|
||||
icon_state = "keyholesweater"
|
||||
item_state = "keyholesweater"
|
||||
item_color = "keyholesweater"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/casualhoodie
|
||||
name = "casual hoodie"
|
||||
desc = "Pefect for lounging about in."
|
||||
icon_state = "hoodiejeans"
|
||||
item_state = "hoodiejeans"
|
||||
item_color = "hoodiejeans"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/casualhoodie/skirt
|
||||
icon_state = "hoodieskirt"
|
||||
item_state = "hoodieskirt"
|
||||
item_color = "hoodieskirt"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
can_adjust = 0
|
||||
has_sensor = 0
|
||||
|
||||
/obj/item/clothing/under/neorussian
|
||||
name = "neo-Russian uniform"
|
||||
desc = "Employs a special toshnit pattern, will render you invisible when you eat a potato on an empty stomach."
|
||||
icon_state = "nr_uniform"
|
||||
item_state = "nr_uniform"
|
||||
item_color = "nr_uniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/rottensuit
|
||||
name = "rotten suit"
|
||||
desc = "This suit seems perfect for wearing underneath a disguise."
|
||||
icon_state = "rottensuit"
|
||||
item_state = "rottensuit"
|
||||
item_color = "rottensuit"
|
||||
can_adjust = 0
|
||||
@@ -25,7 +25,7 @@
|
||||
icon_state = "security"
|
||||
item_state = "gy_suit"
|
||||
item_color = "security"
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/warden
|
||||
name = "security suit"
|
||||
@@ -133,10 +133,11 @@
|
||||
item_color = "blueshift"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/security/sneaksuit
|
||||
name = "sneaking suit"
|
||||
desc = "It's made of a strong material developed by the Soviet Union centuries ago which provides robust protection."
|
||||
icon_state = "sneakingsuit"
|
||||
item_state = "sneakingsuit"
|
||||
item_color = "sneakingsuit"
|
||||
can_adjust = 0
|
||||
can_adjust = 0
|
||||
@@ -654,321 +654,3 @@
|
||||
icon_state = "hostanclothes"
|
||||
item_state = "hostanclothes"
|
||||
item_color = "hostanclothes"
|
||||
|
||||
/obj/item/clothing/under/stripper_pink
|
||||
name = "pink stripper outfit"
|
||||
icon_state = "stripper_p"
|
||||
item_state = "stripper_p"
|
||||
item_color = "stripper_p"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/stripper_green
|
||||
name = "green stripper outfit"
|
||||
icon_state = "stripper_g"
|
||||
item_state = "stripper_g"
|
||||
item_color = "stripper_g"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_orange
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
item_state = "bride_orange"
|
||||
item_color = "bride_orange"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_purple
|
||||
name = "purple wedding dress"
|
||||
desc = "A big and puffy purple dress."
|
||||
icon_state = "bride_purple"
|
||||
item_state = "bride_purple"
|
||||
item_color = "bride_purple"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_blue
|
||||
name = "blue wedding dress"
|
||||
desc = "A big and puffy blue dress."
|
||||
icon_state = "bride_blue"
|
||||
item_state = "bride_blue"
|
||||
item_color = "bride_blue"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_red
|
||||
name = "red wedding dress"
|
||||
desc = "A big and puffy red dress."
|
||||
icon_state = "bride_red"
|
||||
item_state = "bride_red"
|
||||
item_color = "bride_red"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_white
|
||||
name = "white wedding dress"
|
||||
desc = "A white wedding gown made from the finest silk."
|
||||
icon_state = "bride_white"
|
||||
item_state = "bride_white"
|
||||
item_color = "bride_white"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/mankini
|
||||
name = "pink mankini"
|
||||
icon_state = "mankini"
|
||||
item_state = "mankini"
|
||||
item_color = "mankini"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/psysuit
|
||||
name = "dark undersuit"
|
||||
desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm."
|
||||
icon_state = "psysuit"
|
||||
item_state = "psysuit"
|
||||
item_color = "psysuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/officeruniform
|
||||
name = "officer's uniform"
|
||||
desc = "Bestraft die Juden fur ihre Verbrechen."
|
||||
icon_state = "officeruniform"
|
||||
item_state = "officeruniform"
|
||||
item_color = "officeruniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/soldieruniform
|
||||
name = "soldier's uniform"
|
||||
desc = "Bestraft die Verbundeten fur ihren Widerstand."
|
||||
icon_state = "soldieruniform"
|
||||
item_state = "soldieruniform"
|
||||
item_color = "soldieruniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/squatter_outfit
|
||||
name = "slav squatter tracksuit"
|
||||
desc = "Cyka blyat."
|
||||
icon_state = "squatteroutfit"
|
||||
item_state = "squatteroutfit"
|
||||
item_color = "squatteroutfit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/russobluecamooutfit
|
||||
name = "russian blue camo"
|
||||
desc = "Drop and give me dvadtsat!"
|
||||
icon_state = "russobluecamo"
|
||||
item_state = "russobluecamo"
|
||||
item_color = "russobluecamo"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/stilsuit
|
||||
name = "stillsuit"
|
||||
desc = "Designed to preserve bodymoisture."
|
||||
icon_state = "stilsuit"
|
||||
item_state = "stilsuit"
|
||||
item_color = "stilsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/aviatoruniform
|
||||
name = "aviator uniform"
|
||||
desc = "Now you can look absolutely dashing!"
|
||||
icon_state = "aviator_uniform"
|
||||
item_state = "aviator_uniform"
|
||||
item_color = "aviator_uniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/bikersuit
|
||||
name = "biker's outfit"
|
||||
icon_state = "biker"
|
||||
item_state = "biker"
|
||||
item_color = "biker"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/jacketsuit
|
||||
name = "richard's outfit"
|
||||
desc = "Do you know what time it is?"
|
||||
icon_state = "jacket"
|
||||
item_state = "jacket"
|
||||
item_color = "jacket"
|
||||
can_adjust = 0
|
||||
|
||||
obj/item/clothing/under/mega
|
||||
name = "\improper DRN-001 suit"
|
||||
desc = "The original. Simple, yet very adaptable."
|
||||
icon_state = "mega"
|
||||
item_state = "mega"
|
||||
item_color = "mega"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/proto
|
||||
name = "The Prototype Suit"
|
||||
desc = "Even robots know scarves are the perfect accessory for a brooding rival."
|
||||
icon_state = "proto"
|
||||
item_state = "proto"
|
||||
item_color = "proto"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/megax
|
||||
name = "\improper Maverick Hunter regalia"
|
||||
desc = "The best outfit for taking out rogue borgs."
|
||||
icon_state = "megax"
|
||||
item_state = "megax"
|
||||
item_color = "megax"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/joe
|
||||
name = "The Sniper Suit"
|
||||
desc = "Mass produced combat robots with a rather unfitting name."
|
||||
icon_state = "joe"
|
||||
item_state = "joe"
|
||||
item_color = "joe"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/roll
|
||||
name = "\improper DRN-002 Dress"
|
||||
desc = "A simple red dress, the good doctor's second robot wasn't quite as exciting as the first."
|
||||
icon_state = "roll"
|
||||
item_state = "roll"
|
||||
item_color = "roll"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/gokugidown
|
||||
name = "turtle hermit undershirt"
|
||||
desc = "Something seems oddly familiar about this outfit..."
|
||||
icon_state = "gokugidown"
|
||||
item_state = "gokugidown"
|
||||
item_color = "gokugidown"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/gokugi
|
||||
name = "turtle hermit outfit"
|
||||
desc = "An outfit from one trained by the great Turtle Hermit."
|
||||
icon_state = "gokugi"
|
||||
item_state = "gokugi"
|
||||
item_color = "gokugi"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/doomguy
|
||||
name = "\improper Doomguy's pants"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
item_color = "doom"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/vault13
|
||||
name = "vault 13 Jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it. Has a large thirteen emblazened on the back."
|
||||
icon_state = "v13-jumpsuit"
|
||||
item_state = "v13-jumpsuit"
|
||||
item_color = "v13-jumpsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/vault
|
||||
name = "vault jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it."
|
||||
icon_state = "v-jumpsuit"
|
||||
item_state = "v-jumpsuit"
|
||||
item_color = "v-jumpsuit"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/clownpiece
|
||||
name = "Clownpiece's Pierrot suit"
|
||||
desc = "A female-sized set of leggings and shirt with a pattern similar to the American flag, featuring a frilled collar."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
item_color = "clownpiece"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/cia
|
||||
name = "casual IAA outfit"
|
||||
desc = "Just looking at this makes you feel in charge."
|
||||
icon_state = "cia"
|
||||
item_state = "cia"
|
||||
item_color = "cia"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/greaser
|
||||
name = "greaser outfit"
|
||||
desc = "The one that you want!"
|
||||
icon_state = "greaser_default"
|
||||
item_state = "greaser_default"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/greaser/New()
|
||||
var/greaser_colour = "default"
|
||||
switch(rand(1,4))
|
||||
if(1)
|
||||
greaser_colour = "default"
|
||||
if(2)
|
||||
greaser_colour = "cult"
|
||||
if(3)
|
||||
greaser_colour = "spider"
|
||||
if(4)
|
||||
greaser_colour = "snakes"
|
||||
desc = "Tunnel Snakes Rule!"
|
||||
icon_state = "greaser_[greaser_colour]"
|
||||
item_state = "greaser_[greaser_colour]"
|
||||
item_color = "greaser_[greaser_colour]"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/wintercasualwear
|
||||
name = "winter casualwear"
|
||||
desc = "Perfect for winter!"
|
||||
icon_state = "shizunewinter"
|
||||
item_state = "shizunewinter"
|
||||
item_color = "shizunewinter"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/casualwear
|
||||
name = "spring casualwear"
|
||||
desc = "Perfect for spring!"
|
||||
icon_state = "shizunenormal"
|
||||
item_state = "shizunenormal"
|
||||
item_color = "shizunenormal"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/keyholesweater
|
||||
name = "keyhole sweater"
|
||||
desc = "What is the point of this, anyway?"
|
||||
icon_state = "keyholesweater"
|
||||
item_state = "keyholesweater"
|
||||
item_color = "keyholesweater"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/casualhoodie
|
||||
name = "casual hoodie"
|
||||
desc = "Pefect for lounging about in."
|
||||
icon_state = "hoodiejeans"
|
||||
item_state = "hoodiejeans"
|
||||
item_color = "hoodiejeans"
|
||||
can_adjust = 0
|
||||
|
||||
|
||||
/obj/item/clothing/under/casualhoodie/skirt
|
||||
icon_state = "hoodieskirt"
|
||||
item_state = "hoodieskirt"
|
||||
item_color = "hoodieskirt"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
can_adjust = 0
|
||||
has_sensor = 0
|
||||
|
||||
/obj/item/clothing/under/neorussian
|
||||
name = "neo-Russian uniform"
|
||||
desc = "Employs a special toshnit pattern, will render you invisible when you eat a potato on an empty stomach."
|
||||
icon_state = "nr_uniform"
|
||||
item_state = "nr_uniform"
|
||||
item_color = "nr_uniform"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/rottensuit
|
||||
name = "rotten suit"
|
||||
desc = "This suit seems perfect for wearing underneath a disguise."
|
||||
icon_state = "rottensuit"
|
||||
item_state = "rottensuit"
|
||||
item_color = "rottensuit"
|
||||
can_adjust = 0
|
||||
|
||||
@@ -8,18 +8,22 @@
|
||||
min_players = 2
|
||||
|
||||
/datum/round_event/ion_storm
|
||||
var/replaceLawsetChance = 25 //chance the AI's lawset is completely replaced with something else per config weights
|
||||
var/removeRandomLawChance = 10 //chance the AI has one random supplied or inherent law removed
|
||||
var/removeDontImproveChance = 10 //chance the randomly created law replaces a random law instead of simply being added
|
||||
var/shuffleLawsChance = 10 //chance the AI's laws are shuffled afterwards
|
||||
var/botEmagChance = 10
|
||||
var/announceEvent = ION_RANDOM // -1 means don't announce, 0 means have it randomly announce, 1 means
|
||||
var/ionMessage = null
|
||||
var/ionAnnounceChance = 33
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/ion_storm/New(var/botEmagChance = 10, var/announceEvent = ION_RANDOM, var/ionMessage = null, var/ionAnnounceChance = 33)
|
||||
src.botEmagChance = botEmagChance
|
||||
src.announceEvent = announceEvent
|
||||
src.ionMessage = ionMessage
|
||||
src.ionAnnounceChance = ionAnnounceChance
|
||||
..()
|
||||
/datum/round_event/ion_storm/add_law_only // special subtype that adds a law only
|
||||
replaceLawsetChance = 0
|
||||
removeRandomLawChance = 0
|
||||
removeDontImproveChance = 0
|
||||
shuffleLawsChance = 0
|
||||
botEmagChance = 0
|
||||
|
||||
/datum/round_event/ion_storm/announce()
|
||||
if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)))
|
||||
@@ -29,14 +33,26 @@
|
||||
/datum/round_event/ion_storm/start()
|
||||
//AI laws
|
||||
for(var/mob/living/silicon/ai/M in living_mob_list)
|
||||
M.laws_sanity_check()
|
||||
if(M.stat != 2 && M.see_in_dark != 0)
|
||||
if(prob(replaceLawsetChance))
|
||||
M.laws.pick_weighted_lawset()
|
||||
|
||||
if(prob(removeRandomLawChance))
|
||||
M.remove_law(rand(1, M.laws.get_law_amount(list(LAW_INHERENT, LAW_SUPPLIED))))
|
||||
|
||||
var/message = generate_ion_law(ionMessage)
|
||||
if(message)
|
||||
M.add_ion_law(message)
|
||||
log_game("ION law added to [M]: [message]")
|
||||
M << "<br>"
|
||||
M << "<span class='danger'>[message] ...LAWS UPDATED</span>"
|
||||
M << "<br>"
|
||||
if(prob(removeDontImproveChance))
|
||||
M.replace_random_law(message, list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
else
|
||||
M.add_ion_law(message)
|
||||
|
||||
if(prob(shuffleLawsChance))
|
||||
M.shuffle_laws(list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
|
||||
log_game("Ion storm changed laws of [key_name(M)] to [english_list(M.laws.get_law_list(TRUE, TRUE))]")
|
||||
M.post_lawchange()
|
||||
|
||||
if(botEmagChance)
|
||||
for(var/mob/living/simple_animal/bot/bot in living_mob_list)
|
||||
@@ -545,7 +561,7 @@
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ionspecies]."
|
||||
if(4)
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ionobjects]."
|
||||
|
||||
|
||||
return message
|
||||
|
||||
#undef ION_RANDOM
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
name = "Lemon-Lime Soda"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up
|
||||
name = "Space-Up"
|
||||
name = "Space-Up!"
|
||||
desc = "Tastes like a hull breach in your mouth."
|
||||
icon_state = "space-up"
|
||||
list_reagents = list("space_up" = 30)
|
||||
@@ -380,4 +380,14 @@
|
||||
icon_state = "dr_gibb"
|
||||
list_reagents = list("dr_gibb" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game
|
||||
name = "Pwr Game"
|
||||
desc = "The only drink with the PWR that true gamers crave."
|
||||
icon_state = "purple_can"
|
||||
list_reagents = list("pwr_game" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers
|
||||
name = "Shambler's Juice"
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "shamblers"
|
||||
list_reagents = list("shamblers" = 30)
|
||||
@@ -399,5 +399,5 @@
|
||||
user << "<span class='danger'>The flame's spread too far on it!</span>"
|
||||
return
|
||||
user << "<span class='info'>You snuff out the flame on [src].</span>"
|
||||
overlays -= fire_overlay
|
||||
cut_overlay(fire_overlay)
|
||||
active = 0
|
||||
|
||||
@@ -265,6 +265,14 @@
|
||||
icon_state = "space-up_glass"
|
||||
name = "glass of Space-up"
|
||||
desc = "Space-up. It helps you keep your cool."
|
||||
if("pwr_game")
|
||||
icon_state = "glass_red"
|
||||
name = "glass of Pwr Game"
|
||||
desc = "Goes well with a Vlad's salad."
|
||||
if("shamblers")
|
||||
icon_state = "glass_red"
|
||||
name = "glass of Shambler's Juice"
|
||||
desc = "Mmm mm, shambly."
|
||||
if("lemon_lime")
|
||||
icon_state = "glass_yellow"
|
||||
name = "glass of Lemon-Lime"
|
||||
@@ -517,22 +525,6 @@
|
||||
icon_state = "glass_yellow"
|
||||
name = "Eggnog"
|
||||
desc = "For enjoying the most wonderful time of the year."
|
||||
if("aphro")
|
||||
icon_state = "glass_aphro"
|
||||
name = "glass of aphrodisiac"
|
||||
desc = "For your love interest."
|
||||
if("aphro+")
|
||||
icon_state = "glass_aphro+"
|
||||
name = "glass of strong aphrodisiac"
|
||||
desc = "For your less interested love interest."
|
||||
if("semen")
|
||||
icon_state = "glass_semen"
|
||||
name = "glass of semen"
|
||||
desc = "Salty."
|
||||
if("femcum")
|
||||
icon_state = "glass_femcum"
|
||||
name = "glass of female ejaculate"
|
||||
desc = "A glass of female ejaculate."
|
||||
else
|
||||
icon_state ="glass_brown"
|
||||
var/image/I = image(icon, "glassoverlay")
|
||||
@@ -643,18 +635,6 @@
|
||||
icon_state = "shotglassgreen"
|
||||
name = "shot of absinthe"
|
||||
desc = "I am stuck in the cycles of my guilt..."
|
||||
if ("semen")
|
||||
icon_state = "shotglasswhite"
|
||||
name = "cum shot"
|
||||
desc = "All those college years boil down to this."
|
||||
if("aphro")
|
||||
icon_state = "shotglassaphro"
|
||||
name = "shot of love"
|
||||
desc = "Guaranteed to put you in the mood."
|
||||
if("aphro+")
|
||||
icon_state = "shotglassaphro"
|
||||
name = "strong shot of love"
|
||||
desc = "Guaranteed to put you in the mood. Not recommended to take more than one unless you're dedicated."
|
||||
else
|
||||
icon_state = "shotglassbrown"
|
||||
name = "shot of... what?"
|
||||
|
||||
@@ -117,7 +117,9 @@
|
||||
if(INGREDIENTS_STACKPLUSTOP)
|
||||
I.pixel_x = rand(-1,1)
|
||||
I.pixel_y = 2 * ingredients.len - 1
|
||||
overlays.Cut(ingredients.len)
|
||||
our_overlays.Cut(ingredients.len) //???
|
||||
//force an update here just in case
|
||||
SSoverlays.processing[src] = src
|
||||
var/image/TOP = new(icon, "[icon_state]_top")
|
||||
TOP.pixel_y = 2 * ingredients.len + 3
|
||||
add_overlay(I)
|
||||
|
||||
@@ -16,11 +16,24 @@
|
||||
var/filling_color = "#FFFFFF" //color to use when added to custom food.
|
||||
var/custom_food_type = null //for food customizing. path of the custom food to create
|
||||
var/junkiness = 0 //for junk food. used to lower human satiety.
|
||||
var/list/bonus_reagents = list() //the amount of reagents (usually nutriment and vitamin) added to crafted/cooked snacks, on top of the ingredients reagents.
|
||||
var/list/bonus_reagents //the amount of reagents (usually nutriment and vitamin) added to crafted/cooked snacks, on top of the ingredients reagents.
|
||||
var/customfoodfilling = 1 // whether it can be used as filling in custom food
|
||||
var/list/tastes // for example list("crisps" = 2, "salt" = 1)
|
||||
|
||||
//Placeholder for effect that trigger on eating that aren't tied to reagents.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/add_initial_reagents()
|
||||
if(tastes && tastes.len)
|
||||
if(list_reagents)
|
||||
for(var/rid in list_reagents)
|
||||
var/amount = list_reagents[rid]
|
||||
if(rid == "nutriment" || rid == "vitamin")
|
||||
reagents.add_reagent(rid, amount, tastes.Copy())
|
||||
else
|
||||
reagents.add_reagent(rid, amount)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume()
|
||||
if(!usr)
|
||||
return
|
||||
@@ -73,15 +86,15 @@
|
||||
M.visible_message("<span class='danger'>[user] attempts to feed [M] [src].</span>", \
|
||||
"<span class='userdanger'>[user] attempts to feed [M] [src].</span>")
|
||||
else
|
||||
M.visible_message("<span class='warning'>[user] cannot force anymore of [src] down [M]'s throat!</span>", \
|
||||
"<span class='warning'>[user] cannot force anymore of [src] down [M]'s throat!</span>")
|
||||
M.visible_message("<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>", \
|
||||
"<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>")
|
||||
return 0
|
||||
|
||||
if(!do_mob(user, M))
|
||||
return
|
||||
add_logs(user, M, "fed", reagentlist(src))
|
||||
M.visible_message("<span class='danger'>[user] forces [M] to eat [src].</span>", \
|
||||
"<span class='userdanger'>[user] feeds [M] to eat [src].</span>")
|
||||
"<span class='userdanger'>[user] forces [M] to eat [src].</span>")
|
||||
|
||||
else
|
||||
user << "<span class='warning'>[M] doesn't seem to have a mouth!</span>"
|
||||
@@ -147,7 +160,7 @@
|
||||
//Called when you finish tablecrafting a snack.
|
||||
/obj/item/weapon/reagent_containers/food/snacks/CheckParts(list/parts_list, datum/crafting_recipe/food/R)
|
||||
..()
|
||||
reagents.reagent_list.Cut()
|
||||
reagents.clear_reagents()
|
||||
for(var/obj/item/weapon/reagent_containers/RC in contents)
|
||||
RC.reagents.trans_to(reagents, RC.reagents.maximum_volume)
|
||||
if(istype(R))
|
||||
@@ -158,10 +171,14 @@
|
||||
continue contents_loop
|
||||
qdel(A)
|
||||
feedback_add_details("food_made","[type]")
|
||||
if(bonus_reagents.len)
|
||||
|
||||
if(bonus_reagents && bonus_reagents.len)
|
||||
for(var/r_id in bonus_reagents)
|
||||
var/amount = bonus_reagents[r_id]
|
||||
reagents.add_reagent(r_id, amount)
|
||||
if(r_id == "nutriment" || r_id == "vitamin")
|
||||
reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
reagents.add_reagent(r_id, amount)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/slice(accuracy, obj/item/weapon/W, mob/user)
|
||||
if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable?
|
||||
@@ -198,7 +215,6 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice)
|
||||
slice.create_reagents(slice.volume)
|
||||
reagents.trans_to(slice,reagents_per_slice)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/generate_trash(atom/location)
|
||||
if(trash)
|
||||
@@ -228,10 +244,13 @@
|
||||
S.create_reagents(S.volume)
|
||||
if(reagents)
|
||||
reagents.trans_to(S, reagents.total_volume)
|
||||
if(S.bonus_reagents.len)
|
||||
if(S.bonus_reagents && S.bonus_reagents.len)
|
||||
for(var/r_id in S.bonus_reagents)
|
||||
var/amount = S.bonus_reagents[r_id] * cooking_efficiency
|
||||
S.reagents.add_reagent(r_id, amount)
|
||||
if(r_id == "nutriment" || r_id == "vitamin")
|
||||
S.reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
S.reagents.add_reagent(r_id, amount)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/microwave_act(obj/machinery/microwave/M)
|
||||
if(cooked_type)
|
||||
@@ -256,9 +275,11 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/attack_animal(mob/M)
|
||||
if(isanimal(M))
|
||||
if(iscorgi(M))
|
||||
var/mob/living/L = M
|
||||
if(bitecount == 0 || prob(50))
|
||||
M.emote("me", 1, "nibbles away at \the [src]")
|
||||
bitecount++
|
||||
L.taste(reagents) // why should carbons get all the fun?
|
||||
if(bitecount >= 5)
|
||||
var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")
|
||||
if(sattisfaction_text)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain
|
||||
list_reagents = list("nutriment" = 6)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("dough" = 1)
|
||||
|
||||
|
||||
// Dough + rolling pin = flat dough
|
||||
@@ -36,6 +37,7 @@
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/pizzabread
|
||||
list_reagents = list("nutriment" = 6)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("dough" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzabread
|
||||
name = "pizza bread"
|
||||
@@ -45,6 +47,7 @@
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pizza
|
||||
list_reagents = list("nutriment" = 7)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("bread" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/doughslice
|
||||
@@ -54,6 +57,7 @@
|
||||
icon_state = "doughslice"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/bun
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("dough" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun
|
||||
@@ -64,6 +68,7 @@
|
||||
list_reagents = list("nutriment" = 1)
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/burger
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("bun" = 1) // the bun tastes of bun.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakebatter
|
||||
name = "cake batter"
|
||||
@@ -73,6 +78,7 @@
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain
|
||||
list_reagents = list("nutriment" = 9)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("batter" = 1)
|
||||
|
||||
// Cake batter + rolling pin = pie dough
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakebatter/attackby(obj/item/I, mob/user, params)
|
||||
@@ -96,6 +102,7 @@
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/pie/plain
|
||||
list_reagents = list("nutriment" = 9)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("dough" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawpastrybase
|
||||
name = "raw pastry base"
|
||||
@@ -105,6 +112,7 @@
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/pastrybase
|
||||
filling_color = "#CD853F"
|
||||
list_reagents = list("nutriment" = 1)
|
||||
tastes = list("raw pastry" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastrybase
|
||||
name = "pastry base"
|
||||
@@ -113,4 +121,5 @@
|
||||
icon_state = "pastrybase"
|
||||
list_reagents = list("nutriment" = 1)
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("pastry" = 1)
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/plain
|
||||
slices_num = 3
|
||||
filling_color = "#FF0000"
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/slice, reagents_per_slice)
|
||||
..()
|
||||
@@ -34,6 +35,7 @@
|
||||
name = " meat"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/plain/human/slice, reagents_per_slice)
|
||||
..()
|
||||
@@ -59,12 +61,14 @@
|
||||
desc = "Because jello wasn't offensive enough to vegans."
|
||||
list_reagents = list("nutriment" = 3, "slimejelly" = 3)
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("slime" = 1, "jelly" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem
|
||||
icon_state = "golemmeat"
|
||||
desc = "Edible rocks, welcome to the future."
|
||||
list_reagents = list("nutriment" = 3, "iron" = 3)
|
||||
filling_color = "#A9A9A9"
|
||||
tastes = list("rock" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine
|
||||
icon_state = "agolemmeat"
|
||||
@@ -75,27 +79,32 @@
|
||||
icon_state = "lizardmeat"
|
||||
desc = "Delicious dino damage"
|
||||
filling_color = "#6B8E23"
|
||||
tastes = list("meat" = 4, "scales" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/plant
|
||||
icon_state = "plantmeat"
|
||||
desc = "All the joys of healthy eating with all the fun of cannibalism."
|
||||
filling_color = "#E9967A"
|
||||
tastes = list("salad" = 1, "wood" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/shadow
|
||||
icon_state = "shadowmeat"
|
||||
desc = "Ow, the edge"
|
||||
filling_color = "#202020"
|
||||
tastes = list("darkness" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/fly
|
||||
icon_state = "flymeat"
|
||||
desc = "Nothing says tasty like maggot filled radioactive mutant flesh."
|
||||
list_reagents = list("nutriment" = 3, "uranium" = 3)
|
||||
tastes = list("maggots" = 1, "the inside of a reactor" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
|
||||
name = "-bone"
|
||||
icon_state = "skeletonmeat"
|
||||
desc = "There's a point where this needs to stop, and clearly we have passed it."
|
||||
filling_color = "#F0F0F0"
|
||||
tastes = list("bone" = 1)
|
||||
slice_path = null //can't slice a bone into cutlets
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
|
||||
@@ -103,9 +112,7 @@
|
||||
icon_state = "lizardmeat" //Close enough.
|
||||
desc = "Halfway to becoming fertilizer for your garden."
|
||||
filling_color = "#6B8E23"
|
||||
|
||||
|
||||
|
||||
tastes = list("brains" = 1, "meat" = 1)
|
||||
|
||||
|
||||
|
||||
@@ -126,6 +133,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi
|
||||
name = "corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
tastes = list("meat" = 4, "a fondness for wearing hats" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/pug
|
||||
name = "pug meat"
|
||||
@@ -139,6 +147,7 @@
|
||||
filling_color = "#FF0000"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/killertomato
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/killertomato
|
||||
tastes = list("tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/bear
|
||||
name = "bear meat"
|
||||
@@ -148,6 +157,7 @@
|
||||
filling_color = "#FFB6C1"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/bear
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno
|
||||
@@ -159,6 +169,7 @@
|
||||
filling_color = "#32CD32"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/xeno
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/xeno
|
||||
tastes = list("meat" = 1, "acid" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/spider
|
||||
name = "spider meat"
|
||||
@@ -168,6 +179,7 @@
|
||||
filling_color = "#7CFC00"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/spider
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/spider
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath
|
||||
@@ -175,6 +187,7 @@
|
||||
desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava."
|
||||
list_reagents = list("nutriment" = 3, "toxin" = 5)
|
||||
icon_state = "goliathmeat"
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath/burn()
|
||||
visible_message("[src] finishes cooking!")
|
||||
@@ -188,6 +201,7 @@
|
||||
filling_color = rgb(150, 0, 0)
|
||||
icon_state = "meatwheat_clump"
|
||||
bitesize = 4
|
||||
tastes = list("meat" = 1, "wheat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawbacon
|
||||
name = "raw piece of bacon"
|
||||
@@ -197,6 +211,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 1)
|
||||
filling_color = "#B22222"
|
||||
tastes = list("bacon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/bacon
|
||||
name = "piece of bacon"
|
||||
@@ -205,6 +220,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
filling_color = "#854817"
|
||||
tastes = list("bacon" = 1)
|
||||
|
||||
////////////////////////////////////// MEAT STEAKS ///////////////////////////////////////////////////////////
|
||||
|
||||
@@ -217,22 +233,28 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#B22222"
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/killertomato
|
||||
name = "killer tomato steak"
|
||||
tastes = list("tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear
|
||||
name = "bear steak"
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/xeno
|
||||
name = "xeno steak"
|
||||
tastes = list("meat" = 1, "acid" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/spider
|
||||
name = "spider steak"
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/steak/goliath
|
||||
name = "goliath steak"
|
||||
@@ -240,6 +262,7 @@
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF
|
||||
icon_state = "goliathsteak"
|
||||
trash = null
|
||||
tastes = list("meat" = 1, "rock" = 1)
|
||||
|
||||
//////////////////////////////// MEAT CUTLETS ///////////////////////////////////////////////////////
|
||||
|
||||
@@ -253,6 +276,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 1)
|
||||
filling_color = "#B22222"
|
||||
tastes = list("meat" = 1)
|
||||
var/meat_type = "meat"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S, cooking_efficiency)
|
||||
@@ -264,6 +288,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/plain/human
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/plain/human/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S, cooking_efficiency)
|
||||
..()
|
||||
@@ -275,18 +300,22 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/killertomato
|
||||
name = "raw killer tomato cutlet"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/killertomato
|
||||
tastes = list("tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/bear
|
||||
name = "raw bear cutlet"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/bear
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/xeno
|
||||
name = "raw xeno cutlet"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/xeno
|
||||
tastes = list("meat" = 1, "acid" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/spider
|
||||
name = "raw spider cutlet"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/spider
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
//Cooked cutlets
|
||||
|
||||
@@ -298,19 +327,25 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
filling_color = "#B22222"
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/plain
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/plain/human
|
||||
tastes = list("tender meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/killertomato
|
||||
name = "killer tomato cutlet"
|
||||
tastes = list("tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/bear
|
||||
name = "bear cutlet"
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/xeno
|
||||
name = "xeno cutlet"
|
||||
tastes = list("meat" = 1, "acid" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/spider
|
||||
name = "spider cutlet"
|
||||
name = "spider cutlet"
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
volume = 80
|
||||
slices_num = 5
|
||||
tastes = list("bread" = 10)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice
|
||||
@@ -22,6 +23,7 @@
|
||||
list_reagents = list("nutriment" = 10)
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/bread
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain
|
||||
tastes = list("bread" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain
|
||||
name = "bread slice"
|
||||
@@ -36,6 +38,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/meat
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 30, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "meat" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/meat
|
||||
name = "meatbread slice"
|
||||
@@ -49,6 +52,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/xenomeat
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 30, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "acid" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/xenomeat
|
||||
name = "xenomeatbread slice"
|
||||
@@ -64,6 +68,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/spidermeat
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 30, "toxin" = 15, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "cobwebs" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/spidermeat
|
||||
name = "spider meat bread slice"
|
||||
@@ -79,6 +84,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/banana
|
||||
bonus_reagents = list("nutriment" = 5, "banana" = 20)
|
||||
list_reagents = list("nutriment" = 20, "banana" = 20)
|
||||
tastes = list("bread" = 10) // bananjuice will also flavour
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/banana
|
||||
@@ -95,6 +101,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/tofu
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 20, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "tofu" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/tofu
|
||||
name = "tofubread slice"
|
||||
@@ -110,6 +117,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/creamcheese
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 20, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "cheese" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/creamcheese
|
||||
name = "cream cheese bread slice"
|
||||
@@ -125,6 +133,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/mimana
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 20, "mutetoxin" = 5, "nothing" = 5, "vitamin" = 5)
|
||||
tastes = list("bread" = 10, "silence" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice/mimana
|
||||
name = "mimana bread slice"
|
||||
@@ -147,6 +156,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
bitesize = 3
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("bread" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/deepfryholder
|
||||
name = "Deep Fried Foods Holder Obj"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger
|
||||
filling_color = "#CD853F"
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
icon_state = "hburger"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bun" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/plain
|
||||
name = "burger"
|
||||
@@ -41,18 +41,21 @@
|
||||
desc = "Tastes like appendicitis."
|
||||
bonus_reagents = list("nutriment" = 6, "vitamin" = 6)
|
||||
icon_state = "appendixburger"
|
||||
tastes = list("bun" = 4, "grass" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/fish
|
||||
name = "fillet -o- carp sandwich"
|
||||
desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp."
|
||||
icon_state = "fishburger"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 3)
|
||||
tastes = list("bun" = 4, "fish" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/tofu
|
||||
name = "tofu burger"
|
||||
desc = "What.. is that meat?"
|
||||
icon_state = "tofuburger"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
tastes = list("bun" = 4, "tofu" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/roburger
|
||||
name = "roburger"
|
||||
@@ -60,6 +63,7 @@
|
||||
icon_state = "roburger"
|
||||
bonus_reagents = list("nutriment" = 2, "nanomachines" = 2, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 6, "nanomachines" = 5, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/roburgerbig
|
||||
name = "roburger"
|
||||
@@ -68,12 +72,14 @@
|
||||
volume = 120
|
||||
bonus_reagents = list("nutriment" = 5, "nanomachines" = 70, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 6, "nanomachines" = 70, "vitamin" = 5)
|
||||
tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/xeno
|
||||
name = "xenoburger"
|
||||
desc = "Smells caustic. Tastes like heresy."
|
||||
icon_state = "xburger"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 6)
|
||||
tastes = list("bun" = 4, "acid" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/bearger
|
||||
name = "bearger"
|
||||
@@ -99,12 +105,14 @@
|
||||
icon_state = "brainburger"
|
||||
bonus_reagents = list("nutriment" = 6, "mannitol" = 6, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 6, "mannitol" = 5, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "brains" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/ghost
|
||||
name = "ghost burger"
|
||||
desc = "Too Spooky!"
|
||||
alpha = 125
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 12)
|
||||
tastes = list("bun" = 4, "ectoplasm" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/red
|
||||
name = "red burger"
|
||||
@@ -153,6 +161,7 @@
|
||||
desc = "This is absolutely Ei Nath."
|
||||
icon_state = "spellburger"
|
||||
bonus_reagents = list("nutriment" = 6, "vitamin" = 10)
|
||||
tastes = list("bun" = 4, "magic" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/bigbite
|
||||
name = "big bite burger"
|
||||
@@ -166,6 +175,7 @@
|
||||
name = "jelly burger"
|
||||
desc = "Culinary delight..?"
|
||||
icon_state = "jellyburger"
|
||||
tastes = list("bun" = 4, "jelly" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime
|
||||
bonus_reagents = list("slimejelly" = 5, "vitamin" = 5)
|
||||
@@ -184,6 +194,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
bitesize = 7
|
||||
volume = 100
|
||||
tastes = list("bun" = 4, "type two diabetes" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/fivealarm
|
||||
name = "five alarm burger"
|
||||
@@ -209,3 +220,4 @@
|
||||
desc = "The perfect combination of all things American."
|
||||
icon_state = "baconburger"
|
||||
bonus_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "bacon" = 2)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/plain
|
||||
@@ -6,12 +5,14 @@
|
||||
bitesize = 3
|
||||
volume = 80
|
||||
list_reagents = list("nutriment" = 20, "vitamin" = 5)
|
||||
tastes = list("cake" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
customfoodfilling = 0 //to avoid infinite cake-ception
|
||||
tastes = list("cake" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain
|
||||
name = "vanilla cake"
|
||||
@@ -19,6 +20,7 @@
|
||||
icon_state = "plaincake"
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/cake
|
||||
bonus_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("vanilla" = 1, "sweetness" = 2,"cake" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/plain
|
||||
name = "vanilla cake slice"
|
||||
@@ -26,6 +28,7 @@
|
||||
icon_state = "plaincake_slice"
|
||||
filling_color = "#FFD700"
|
||||
customfoodfilling = 1
|
||||
tastes = list("vanilla" = 1, "sweetness" = 2,"cake" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot
|
||||
name = "carrot cake"
|
||||
@@ -35,6 +38,7 @@
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "oculine" = 5, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/carrot
|
||||
name = "carrot cake slice"
|
||||
@@ -42,6 +46,7 @@
|
||||
icon_state = "carrotcake_slice"
|
||||
filling_color = "#FFA500"
|
||||
list_reagents = list("nutriment" = 4, "oculine" = 2, "vitamin" = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/brain
|
||||
@@ -52,6 +57,7 @@
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 5, "mannitol" = 10, "vitamin" = 10)
|
||||
list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/brain
|
||||
@@ -60,6 +66,7 @@
|
||||
icon_state = "braincakeslice"
|
||||
filling_color = "#FF69B4"
|
||||
list_reagents = list("nutriment" = 4, "mannitol" = 2, "vitamin" = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese
|
||||
name = "cheese cake"
|
||||
@@ -68,6 +75,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/cheese
|
||||
slices_num = 5
|
||||
bonus_reagents = list("vitamin" = 10)
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/cheese
|
||||
@@ -75,6 +83,7 @@
|
||||
desc = "Slice of pure cheestisfaction."
|
||||
icon_state = "cheesecake_slice"
|
||||
filling_color = "#FFFACD"
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/orange
|
||||
@@ -84,12 +93,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/orange
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/orange
|
||||
name = "orange cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "orangecake_slice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/lime
|
||||
name = "lime cake"
|
||||
@@ -98,12 +109,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/lime
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/lime
|
||||
name = "lime cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "limecake_slice"
|
||||
filling_color = "#00FF00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon
|
||||
@@ -113,6 +126,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/lemon
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/lemon
|
||||
@@ -120,6 +134,7 @@
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "lemoncake_slice"
|
||||
filling_color = "#FFEE00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate
|
||||
@@ -129,6 +144,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate
|
||||
@@ -136,6 +152,7 @@
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "chocolatecake_slice"
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday
|
||||
@@ -146,6 +163,7 @@
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 7, "sprinkles" = 10, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/birthday
|
||||
name = "birthday cake slice"
|
||||
@@ -153,6 +171,7 @@
|
||||
icon_state = "birthdaycakeslice"
|
||||
filling_color = "#DC143C"
|
||||
list_reagents = list("nutriment" = 4, "sprinkles" = 2, "vitamin" = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/apple
|
||||
@@ -162,12 +181,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/apple
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/apple
|
||||
name = "apple cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon_state = "applecakeslice"
|
||||
filling_color = "#FF4500"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/custom
|
||||
name = "cake slice"
|
||||
@@ -180,12 +201,14 @@
|
||||
icon_state = "slimecake"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/slimecake
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/slimecake
|
||||
name = "slime cake slice"
|
||||
desc = "A slice of slime cake."
|
||||
icon_state = "slimecake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/store/cake/pumpkinspice
|
||||
name = "pumpkin spice cake"
|
||||
@@ -193,9 +216,11 @@
|
||||
icon_state = "pumpkinspicecake"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/pumpkinspice
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/pumpkinspice
|
||||
name = "pumpkin spice cake slice"
|
||||
desc = "A spicy slice of pumpkin goodness."
|
||||
icon_state = "pumpkinspicecakeslice"
|
||||
filling_color = "#FFD700"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 4, "sweetness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
name = "egg"
|
||||
@@ -16,6 +17,7 @@
|
||||
list_reagents = list("nutriment" = 1)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledegg
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("egg" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom)
|
||||
if(!..()) //was it caught by a mob?
|
||||
@@ -42,34 +44,42 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/blue
|
||||
icon_state = "egg-blue"
|
||||
item_color = "blue"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/green
|
||||
icon_state = "egg-green"
|
||||
item_color = "green"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/mime
|
||||
icon_state = "egg-mime"
|
||||
item_color = "mime"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/orange
|
||||
icon_state = "egg-orange"
|
||||
item_color = "orange"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/purple
|
||||
icon_state = "egg-purple"
|
||||
item_color = "purple"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow
|
||||
icon_state = "egg-rainbow"
|
||||
item_color = "rainbow"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/red
|
||||
icon_state = "egg-red"
|
||||
item_color = "red"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/yellow
|
||||
icon_state = "egg-yellow"
|
||||
item_color = "yellow"
|
||||
tastes = list("egg" = 4, "the back of class" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg
|
||||
name = "fried egg"
|
||||
@@ -79,6 +89,7 @@
|
||||
bitesize = 1
|
||||
filling_color = "#FFFFF0"
|
||||
list_reagents = list("nutriment" = 3)
|
||||
tastes = list("egg" = 4, "salt" = 1, "pepper" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
|
||||
name = "boiled egg"
|
||||
@@ -87,6 +98,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
filling_color = "#FFFFF0"
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
tastes = list("egg" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/omelette //FUCK THIS
|
||||
name = "omelette du fromage"
|
||||
@@ -97,6 +109,7 @@
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
bitesize = 1
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("egg" = 1, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/omelette/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W,/obj/item/weapon/kitchen/fork))
|
||||
@@ -123,4 +136,5 @@
|
||||
bonus_reagents = list("vitamin" = 4)
|
||||
trash = /obj/item/trash/plate
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 4)
|
||||
tastes = list("egg" = 1, "bacon" = 1, "bun" = 1)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
bitesize = 3
|
||||
filling_color = "#CD853F"
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 1)
|
||||
tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
|
||||
name = "carp fillet"
|
||||
@@ -20,6 +21,7 @@
|
||||
list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2)
|
||||
bitesize = 6
|
||||
filling_color = "#FA8072"
|
||||
tastes = list("fish" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New()
|
||||
..()
|
||||
@@ -37,6 +39,7 @@
|
||||
list_reagents = list("nutriment" = 4)
|
||||
bitesize = 1
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("fish" = 1, "breadcrumbs" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishandchips
|
||||
name = "fish and chips"
|
||||
@@ -45,6 +48,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6)
|
||||
filling_color = "#FA8072"
|
||||
tastes = list("fish" = 1, "chips" = 1)
|
||||
|
||||
////////////////////////////////////////////MEATS AND ALIKE////////////////////////////////////////////
|
||||
|
||||
@@ -54,6 +58,7 @@
|
||||
icon_state = "tofu"
|
||||
list_reagents = list("nutriment" = 2)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("tofu" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spiderleg
|
||||
name = "spider leg"
|
||||
@@ -62,6 +67,7 @@
|
||||
list_reagents = list("nutriment" = 2, "toxin" = 2)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg
|
||||
filling_color = "#000000"
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cornedbeef
|
||||
name = "corned beef and cabbage"
|
||||
@@ -70,6 +76,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("meat" = 1, "cabbage" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bearsteak
|
||||
name = "Filet migrawr"
|
||||
@@ -78,6 +85,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5)
|
||||
tastes = list("meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/faggot
|
||||
name = "faggot"
|
||||
@@ -85,6 +93,7 @@
|
||||
icon_state = "faggot"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
filling_color = "#800000"
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sausage
|
||||
name = "sausage"
|
||||
@@ -93,6 +102,7 @@
|
||||
filling_color = "#CD5C5C"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sausage/New()
|
||||
..()
|
||||
@@ -103,26 +113,31 @@
|
||||
icon_state = "kebab"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
list_reagents = list("nutriment" = 8)
|
||||
tastes = list("meat" = 3, "metal" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/kebab/human
|
||||
name = "human-kebab"
|
||||
desc = "A human meat, on a stick."
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 6)
|
||||
tastes = list("tender meat" = 3, "metal" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/kebab/monkey
|
||||
name = "meat-kebab"
|
||||
desc = "Delicious meat, on a stick."
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
tastes = list("meat" = 3, "metal" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/kebab/tofu
|
||||
name = "tofu-kebab"
|
||||
desc = "Vegan meat, on a stick."
|
||||
bonus_reagents = list("nutriment" = 1)
|
||||
tastes = list("tofu" = 3, "metal" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/kebab/tail
|
||||
name = "lizard-tail kebab"
|
||||
desc = "Severed lizard tail on a stick."
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
tastes = list("meat" = 8, "metal" = 4, "scales" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawkhinkali
|
||||
name = "raw khinkali"
|
||||
@@ -130,6 +145,7 @@
|
||||
icon_state = "khinkali"
|
||||
list_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/khinkali
|
||||
tastes = list("meat" = 1, "onions" = 1, "garlic" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/khinkali
|
||||
name = "khinkali"
|
||||
@@ -138,6 +154,7 @@
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 2)
|
||||
bitesize = 3
|
||||
filling_color = "#F0F0F0"
|
||||
tastes = list("meat" = 1, "onions" = 1, "garlic" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
name = "monkey cube"
|
||||
@@ -146,6 +163,7 @@
|
||||
bitesize = 12
|
||||
list_reagents = list("nutriment" = 2)
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("the jungle" = 1, "bananas" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand()
|
||||
visible_message("<span class='notice'>[src] expands!</span>")
|
||||
@@ -160,6 +178,7 @@
|
||||
bitesize = 4
|
||||
filling_color = "#FFA07A"
|
||||
list_reagents = list("nutriment" = 8, "capsaicin" = 6)
|
||||
tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
|
||||
name = "stewed soy meat"
|
||||
@@ -169,6 +188,7 @@
|
||||
bonus_reagents = list("nutriment" = 1)
|
||||
list_reagents = list("nutriment" = 8)
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("soy" = 1, "vegetables" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New()
|
||||
..()
|
||||
@@ -182,6 +202,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 3, "capsaicin" = 2)
|
||||
filling_color = "#000000"
|
||||
tastes = list("hot peppers" = 1, "cobwebs" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spidereggsham
|
||||
name = "green eggs and ham"
|
||||
@@ -192,6 +213,7 @@
|
||||
list_reagents = list("nutriment" = 6)
|
||||
bitesize = 4
|
||||
filling_color = "#7FFF00"
|
||||
tastes = list("meat" = 1, "the colour green" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sashimi
|
||||
name = "carp sashimi"
|
||||
@@ -200,25 +222,17 @@
|
||||
bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 5)
|
||||
filling_color = "#FA8072"
|
||||
|
||||
#define LUMP "lump"
|
||||
#define STAR "star"
|
||||
#define LIZARD "lizard"
|
||||
#define CORGI "corgi"
|
||||
tastes = list("fish" = 1, "hot peppers" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/nugget
|
||||
name = "chicken nugget"
|
||||
filling_color = "#B22222"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 2)
|
||||
name = "chicken nugget"
|
||||
filling_color = "#B22222"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("\"chicken\"" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/nugget/New()
|
||||
..()
|
||||
var/shape = pick(LUMP, STAR, LIZARD, CORGI)
|
||||
desc = "A 'chicken' nugget vaguely shaped like a [shape]."
|
||||
icon_state = "nugget_[shape]"
|
||||
|
||||
#undef LUMP
|
||||
#undef STAR
|
||||
#undef LIZARD
|
||||
#undef CORGI
|
||||
..()
|
||||
var/shape = pick("lump", "star", "lizard", "corgi")
|
||||
desc = "A 'chicken' nugget vaguely shaped like a [shape]."
|
||||
icon_state = "nugget_[shape]"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
slices_num = 5
|
||||
list_reagents = list("nutriment" = 15, "vitamin" = 5)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
|
||||
name = "cheese wedge"
|
||||
@@ -16,12 +17,14 @@
|
||||
icon_state = "cheesewedge"
|
||||
filling_color = "#FFD700"
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 1)
|
||||
tastes = list("cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice
|
||||
name = "watermelon slice"
|
||||
desc = "A slice of watery goodness."
|
||||
icon_state = "watermelonslice"
|
||||
filling_color = "#FF1493"
|
||||
tastes = list("watermelon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
|
||||
name = "candy corn"
|
||||
@@ -29,6 +32,7 @@
|
||||
icon_state = "candy_corn"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2)
|
||||
filling_color = "#FF8C00"
|
||||
tastes = list("candy corn" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
|
||||
name = "chocolate bar"
|
||||
@@ -36,12 +40,14 @@
|
||||
icon_state = "chocolatebar"
|
||||
list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
|
||||
name = "huge mushroom slice"
|
||||
desc = "A slice from a huge mushroom."
|
||||
icon_state = "hugemushroomslice"
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 1)
|
||||
tastes = list("mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/popcorn
|
||||
name = "popcorn"
|
||||
@@ -51,6 +57,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
|
||||
filling_color = "#FFEFD5"
|
||||
tastes = list("popcorn" = 3, "butter" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/popcorn/New()
|
||||
..()
|
||||
@@ -63,6 +70,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6)
|
||||
filling_color = "#D2B48C"
|
||||
tastes = list("potato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fries
|
||||
name = "space fries"
|
||||
@@ -71,6 +79,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 4)
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("fries" = 3, "salt" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tatortot
|
||||
name = "tator tot"
|
||||
@@ -78,6 +87,7 @@
|
||||
icon_state = "tatortot"
|
||||
list_reagents = list("nutriment" = 4)
|
||||
filling_color = "FFD700"
|
||||
tastes = list("potato" = 3, "valids" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soydope
|
||||
name = "soy dope"
|
||||
@@ -86,6 +96,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 2)
|
||||
filling_color = "#DEB887"
|
||||
tastes = list("soy" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesyfries
|
||||
name = "cheesy fries"
|
||||
@@ -95,6 +106,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6)
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("fries" = 3, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/badrecipe
|
||||
name = "burned mess"
|
||||
@@ -110,6 +122,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 3, "oculine" = 3, "vitamin" = 2)
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("carrots" = 3, "salt" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple
|
||||
name = "candied apple"
|
||||
@@ -119,6 +132,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "sugar" = 3)
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 2)
|
||||
filling_color = "#FF4500"
|
||||
tastes = list("apple" = 2, "sweetness" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint
|
||||
name = "mint"
|
||||
@@ -136,6 +150,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 5)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("egg" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/beans
|
||||
name = "tin of beans"
|
||||
@@ -144,6 +159,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 10)
|
||||
filling_color = "#B22222"
|
||||
tastes = list("beans" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spidereggs
|
||||
name = "spider eggs"
|
||||
@@ -151,6 +167,7 @@
|
||||
icon_state = "spidereggs"
|
||||
list_reagents = list("nutriment" = 2, "toxin" = 2)
|
||||
filling_color = "#008000"
|
||||
tastes = list("cobwebs" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chococoin
|
||||
name = "chocolate coin"
|
||||
@@ -159,6 +176,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "sugar" = 1)
|
||||
list_reagents = list("nutriment" = 3, "cocoa" = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fudgedice
|
||||
name = "fudge dice"
|
||||
@@ -168,6 +186,7 @@
|
||||
list_reagents = list("nutriment" = 3, "cocoa" = 1)
|
||||
filling_color = "#A0522D"
|
||||
trash = /obj/item/weapon/dice/fudge
|
||||
tastes = list("fudge" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocoorange
|
||||
name = "chocolate orange"
|
||||
@@ -176,6 +195,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "sugar" = 1)
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 3, "oranges" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
|
||||
name = "eggplant parmigiana"
|
||||
@@ -185,6 +205,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
filling_color = "#BA55D3"
|
||||
tastes = list("eggplant" = 3, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tortilla
|
||||
name = "tortilla"
|
||||
@@ -193,6 +214,7 @@
|
||||
icon_state = "tortilla"
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 1)
|
||||
filling_color = "#FFEFD5"
|
||||
tastes = list("tortilla" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burrito
|
||||
name = "burrito"
|
||||
@@ -201,6 +223,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
filling_color = "#FFEFD5"
|
||||
tastes = list("torilla" = 2, "meat" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesyburrito
|
||||
name = "cheesy burrito"
|
||||
@@ -209,6 +232,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 2)
|
||||
filling_color = "#FFD800"
|
||||
tastes = list("torilla" = 2, "meat" = 3, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carneburrito
|
||||
name = "carne asada burrito"
|
||||
@@ -217,6 +241,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("torilla" = 2, "meat" = 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito
|
||||
name = "fuego plasma burrito"
|
||||
@@ -225,6 +250,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 4, "capsaicin" = 5, "vitamin" = 3)
|
||||
filling_color = "#FF2000"
|
||||
tastes = list("torilla" = 2, "meat" = 3, "hot peppers" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/yakiimo
|
||||
name = "yaki imo"
|
||||
@@ -233,6 +259,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 4)
|
||||
filling_color = "#8B1105"
|
||||
tastes = list("sweet potato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/roastparsnip
|
||||
name = "roast parsnip"
|
||||
@@ -241,6 +268,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 4)
|
||||
filling_color = "#FF5500"
|
||||
tastes = list("parsnip" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl
|
||||
name = "melon fruit bowl"
|
||||
@@ -250,6 +278,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 4)
|
||||
filling_color = "#FF5500"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("melon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spacefreezy
|
||||
name = "space freezy"
|
||||
@@ -258,6 +287,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "bluecherryjelly" = 5, "vitamin" = 4)
|
||||
filling_color = "#87CEFA"
|
||||
tastes = list("blue cherries" = 2, "ice cream" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sundae
|
||||
name = "sundae"
|
||||
@@ -266,6 +296,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2)
|
||||
filling_color = "#FFFACD"
|
||||
tastes = list("ice cream" = 1, "banana" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honkdae
|
||||
name = "honkdae"
|
||||
@@ -274,6 +305,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "banana" = 10, "vitamin" = 4)
|
||||
filling_color = "#FFFACD"
|
||||
tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/nachos
|
||||
name = "nachos"
|
||||
@@ -282,6 +314,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
filling_color = "#F4A460"
|
||||
tastes = list("nachos" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesynachos
|
||||
name = "cheesy nachos"
|
||||
@@ -290,6 +323,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 3)
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("nachos" = 2, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cubannachos
|
||||
name = "cuban nachos"
|
||||
@@ -298,6 +332,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 7, "capsaicin" = 8, "vitamin" = 4)
|
||||
filling_color = "#DC143C"
|
||||
tastes = list("nachos" = 2, "hot pepper" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/melonkeg
|
||||
name = "melon keg"
|
||||
@@ -308,6 +343,7 @@
|
||||
filling_color = "#FFD700"
|
||||
volume = 80
|
||||
bitesize = 5
|
||||
tastes = list("grain alcohol" = 1, "fruit" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeybar
|
||||
name = "honey nut bar"
|
||||
@@ -316,6 +352,7 @@
|
||||
bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 5, "honey" = 5)
|
||||
filling_color = "#F2CE91"
|
||||
tastes = list("oats" = 3, "nuts" = 2, "honey" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/stuffedlegion
|
||||
name = "stuffed legion"
|
||||
@@ -323,6 +360,7 @@
|
||||
icon_state = "stuffed_legion"
|
||||
bonus_reagents = list("vitamin" = 3, "capsaicin" = 1, "tricordrazine" = 5)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 5, "capsaicin" = 2, "tricordrazine" = 10)
|
||||
tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/powercrepe
|
||||
@@ -337,6 +375,7 @@
|
||||
armour_penetration = 75
|
||||
attack_verb = list("slapped", "slathered")
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
tastes = list("cherry" = 1, "crepe" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lollipop
|
||||
name = "lollipop"
|
||||
@@ -346,6 +385,7 @@
|
||||
list_reagents = list("nutriment" = 1, "vitamin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //Honk
|
||||
var/image/head
|
||||
var/headcolor = rgb(0, 0, 0)
|
||||
tastes = list("candy" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lollipop/New()
|
||||
..()
|
||||
@@ -354,8 +394,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lollipop/proc/change_head_color(C)
|
||||
headcolor = C
|
||||
if(head in overlays)
|
||||
overlays -= head
|
||||
cut_overlay(head)
|
||||
head.color = C
|
||||
add_overlay(head)
|
||||
|
||||
@@ -385,6 +424,7 @@
|
||||
icon = 'icons/obj/lollipop.dmi'
|
||||
icon_state = "gumball"
|
||||
list_reagents = list("sugar" = 5, "bicaridine" = 2, "kelotane" = 2) //Kek
|
||||
tastes = list("candy")
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/gumball/New()
|
||||
..()
|
||||
@@ -412,9 +452,19 @@
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 2)
|
||||
filling_color = "F0D830"
|
||||
tastes = list("taco" = 4, "meat" = 2, "cheese" = 2, "lettuce" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/taco/plain
|
||||
desc = "A traditional taco with meat and cheese, minus the rabbit food."
|
||||
icon_state = "taco_plain"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 1)
|
||||
tastes = list("taco" = 4, "meat" = 2, "cheese" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/branrequests
|
||||
name = "Bran Requests Cereal"
|
||||
desc = "A dry cereal that satiates your requests for bran. Tastes uniquely like raisins and salt."
|
||||
icon_state = "bran_requests"
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 2, "sodiumchloride" = 5)
|
||||
bonus_reagents = list("sodiumchloride" = 10)
|
||||
tastes = list("bran" = 4, "raisins" = 3, "salt" = 1)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 2)
|
||||
var/extra_reagent = null
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("donut" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/New()
|
||||
..()
|
||||
@@ -25,6 +26,7 @@
|
||||
name = "chaos donut"
|
||||
desc = "Like life, it never quite tastes the same."
|
||||
bitesize = 10
|
||||
tastes = list("donut" = 3, "chaos" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New()
|
||||
..()
|
||||
@@ -44,6 +46,7 @@
|
||||
icon_state = "jdonut1"
|
||||
bonus_reagents = list("sugar" = 1, "vitamin" = 1)
|
||||
extra_reagent = "berryjuice"
|
||||
tastes = list("jelly" = 1, "donut" = 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New()
|
||||
..()
|
||||
@@ -77,17 +80,20 @@
|
||||
bonus_reagents = list("vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 6)
|
||||
filling_color = "#F4A460"
|
||||
tastes = list("muffin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/muffin/berry
|
||||
name = "berry muffin"
|
||||
icon_state = "berrymuffin"
|
||||
desc = "A delicious and spongy little cake, with berries."
|
||||
tastes = list("muffin" = 3, "berry" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/muffin/booberry
|
||||
name = "booberry muffin"
|
||||
icon_state = "berrymuffin"
|
||||
alpha = 125
|
||||
desc = "My stomach is a graveyard! No living being can quench my bloodthirst!"
|
||||
tastes = list("muffin" = 3, "spookiness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chawanmushi
|
||||
name = "chawanmushi"
|
||||
@@ -96,6 +102,7 @@
|
||||
bonus_reagents = list("vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5)
|
||||
filling_color = "#FFE4E1"
|
||||
tastes = list("custard" = 1)
|
||||
|
||||
////////////////////////////////////////////WAFFLES////////////////////////////////////////////
|
||||
|
||||
@@ -107,6 +114,7 @@
|
||||
bonus_reagents = list("vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("waffles" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
|
||||
name = "\improper Soylent Green"
|
||||
@@ -116,6 +124,7 @@
|
||||
bonus_reagents = list("vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 1)
|
||||
filling_color = "#9ACD32"
|
||||
tastes = list("waffles" = 7, "people" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
|
||||
name = "\improper Soylent Virdians"
|
||||
@@ -125,6 +134,7 @@
|
||||
bonus_reagents = list("vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 1)
|
||||
filling_color = "#9ACD32"
|
||||
tastes = list("waffles" = 7, "the colour green" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
|
||||
name = "roffle waffles"
|
||||
@@ -135,6 +145,7 @@
|
||||
bonus_reagents = list("vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 2, "vitamin" = 2)
|
||||
filling_color = "#00BFFF"
|
||||
tastes = list("waffle" = 1, "mushrooms" = 1)
|
||||
|
||||
////////////////////////////////////////////OTHER////////////////////////////////////////////
|
||||
|
||||
@@ -146,6 +157,7 @@
|
||||
bonus_reagents = list("nutriment" = 1)
|
||||
list_reagents = list("nutriment" = 1)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("cookie" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
||||
name = "\improper Donk-pocket"
|
||||
@@ -154,12 +166,14 @@
|
||||
list_reagents = list("nutriment" = 4)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/donkpocket/warm
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/warm
|
||||
name = "warm Donk-pocket"
|
||||
desc = "The heated food of choice for the seasoned traitor."
|
||||
bonus_reagents = list("omnizine" = 3)
|
||||
list_reagents = list("nutriment" = 4, "omnizine" = 3)
|
||||
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dankpocket
|
||||
name = "\improper Dank-pocket"
|
||||
@@ -167,6 +181,7 @@
|
||||
icon_state = "dankpocket"
|
||||
list_reagents = list("lipolicide" = 3, "space_drugs" = 3, "nutriment" = 4)
|
||||
filling_color = "#00FF00"
|
||||
tastes = list("meat" = 2, "dough" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
name = "fortune cookie"
|
||||
@@ -175,6 +190,7 @@
|
||||
bonus_reagents = list("nutriment" = 2)
|
||||
list_reagents = list("nutriment" = 3)
|
||||
filling_color = "#F4A460"
|
||||
tastes = list("cookie" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
|
||||
name = "poppy pretzel"
|
||||
@@ -183,6 +199,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 5)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("pretzel" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
|
||||
name = "plump helmet biscuit"
|
||||
@@ -191,14 +208,17 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("mushroom" = 1, "biscuit" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New()
|
||||
..()
|
||||
if(prob(10))
|
||||
var/fey = prob(10)
|
||||
if(fey)
|
||||
name = "exceptional plump helmet biscuit"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1)
|
||||
..()
|
||||
if(fey)
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cracker
|
||||
name = "cracker"
|
||||
@@ -208,6 +228,7 @@
|
||||
bonus_reagents = list("nutriment" = 1)
|
||||
list_reagents = list("nutriment" = 1)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("cracker" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotdog
|
||||
name = "hotdog"
|
||||
@@ -217,6 +238,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3)
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("bun" = 3, "meat" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatbun
|
||||
name = "meat bun"
|
||||
@@ -225,6 +247,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("bun" = 3, "meat" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/khachapuri
|
||||
name = "khachapuri"
|
||||
@@ -232,6 +255,7 @@
|
||||
icon_state = "khachapuri"
|
||||
list_reagents = list("nutriment" = 12, "vitamin" = 2)
|
||||
filling_color = "#FFFF4D"
|
||||
tastes = list("bread" = 1, "egg" = 1, "cheese" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie
|
||||
@@ -241,6 +265,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
filling_color = "#CD853F"
|
||||
tastes = list("sweetness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chococornet
|
||||
name = "chocolate cornet"
|
||||
@@ -249,6 +274,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#FFE4C4"
|
||||
tastes = list("biscuit" = 3, "chocolate" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/oatmealcookie
|
||||
name = "oatmeal cookie"
|
||||
@@ -257,6 +283,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("cookie" = 2, "oat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/raisincookie
|
||||
name = "raisin cookie"
|
||||
@@ -265,6 +292,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("cookie" = 1, "raisins" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cherrycupcake
|
||||
name = "cherry cupcake"
|
||||
@@ -273,6 +301,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("cake" = 3, "cherry" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bluecherrycupcake
|
||||
name = "blue cherry cupcake"
|
||||
@@ -281,6 +310,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("cake" = 3, "blue cherry" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeybun
|
||||
name = "honey bun"
|
||||
@@ -288,4 +318,5 @@
|
||||
icon_state = "honeybun"
|
||||
bonus_reagents = list("nutriment" = 1, "honey" = 1)
|
||||
list_reagents = list("nutriment" = 5, "honey" = 5)
|
||||
filling_color = "#F2CE91"
|
||||
filling_color = "#F2CE91"
|
||||
tastes = list("pastry" = 1, "sweetness" = 1)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
volume = 80
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/plain
|
||||
name = "plain pie"
|
||||
@@ -13,6 +14,7 @@
|
||||
icon_state = "pie"
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pie
|
||||
bonus_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
tastes = list("pie" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/cream
|
||||
name = "banana cream pie"
|
||||
@@ -21,6 +23,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2)
|
||||
tastes = list("pie" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/cream/throw_impact(atom/hit_atom)
|
||||
if(!..()) //was it caught by a mob?
|
||||
@@ -49,6 +52,7 @@
|
||||
icon_state = "berryclafoutis"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "blackberries" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/bearypie
|
||||
name = "beary pie"
|
||||
@@ -56,12 +60,14 @@
|
||||
icon_state = "bearypie"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 3)
|
||||
tastes = list("pie" = 1, "meat" = 1, "salmon" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/meatpie
|
||||
name = "meat-pie"
|
||||
icon_state = "meatpie"
|
||||
desc = "An old barber recipe, very delicious!"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
tastes = list("pie" = 1, "meat" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/tofupie
|
||||
@@ -69,6 +75,7 @@
|
||||
icon_state = "meatpie"
|
||||
desc = "A delicious tofu pie."
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "tofu" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie
|
||||
@@ -78,6 +85,7 @@
|
||||
bitesize = 4
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 6, "amatoxin" = 3, "mushroomhallucinogen" = 1, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "mushroom" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie
|
||||
@@ -85,14 +93,18 @@
|
||||
desc = "I bet you love stuff made out of plump helmets!"
|
||||
icon_state = "plump_pie"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "mushroom" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie/New()
|
||||
..()
|
||||
if(prob(10))
|
||||
var/fey = prob(10)
|
||||
if(fey)
|
||||
name = "exceptional plump pie"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4)
|
||||
..()
|
||||
if(fey)
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie
|
||||
@@ -101,6 +113,7 @@
|
||||
desc = "A delicious meatpie. Probably heretical."
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
tastes = list("pie" = 1, "meat" = 1, "acid" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/applepie
|
||||
@@ -108,6 +121,7 @@
|
||||
desc = "A pie containing sweet sweet love...or apple."
|
||||
icon_state = "applepie"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
tastes = list("pie" = 1, "apple" = 1)
|
||||
|
||||
|
||||
|
||||
@@ -116,6 +130,7 @@
|
||||
desc = "Taste so good, make a grown man cry."
|
||||
icon_state = "cherrypie"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
tastes = list("pie" = 7, "Nicole Paige Brooks" = 2)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/pumpkinpie
|
||||
@@ -125,6 +140,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
tastes = list("pie" = 1, "pumpkin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
|
||||
name = "pumpkin pie slice"
|
||||
@@ -134,6 +150,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FFA500"
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("pie" = 1, "pumpkin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/appletart
|
||||
name = "golden apple streusel tart"
|
||||
@@ -141,6 +158,7 @@
|
||||
icon_state = "gappletart"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/grapetart
|
||||
name = "grape tart"
|
||||
@@ -148,6 +166,7 @@
|
||||
icon_state = "grapetart"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "grape" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/blumpkinpie
|
||||
name = "blumpkin pie"
|
||||
@@ -156,6 +175,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/blumpkinpieslice
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 6)
|
||||
tastes = list("pie" = 1, "a mouthful of pool water" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/blumpkinpieslice
|
||||
name = "blumpkin pie slice"
|
||||
@@ -165,6 +185,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#1E90FF"
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("pie" = 1, "a mouthful of pool water" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/dulcedebatata
|
||||
name = "dulce de batata"
|
||||
@@ -173,6 +194,7 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/dulcedebatataslice
|
||||
slices_num = 5
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 8)
|
||||
tastes = list("jelly" = 1, "sweet potato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dulcedebatataslice
|
||||
name = "dulce de batata slice"
|
||||
@@ -182,9 +204,11 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#8B4513"
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("jelly" = 1, "sweet potato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/frostypie
|
||||
name = "frosty pie"
|
||||
desc = "Tastes like blue and cold."
|
||||
icon_state = "frostypie"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 6)
|
||||
tastes = list("mint" = 1, "pie" = 1)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
slices_num = 6
|
||||
volume = 80
|
||||
list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice
|
||||
icon = 'icons/obj/food/pizzaspaghetti.dmi'
|
||||
@@ -18,12 +19,14 @@
|
||||
icon_state = "pizzamargherita"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/margherita
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/margherita
|
||||
name = "margherita slice"
|
||||
desc = "A slice of the most cheezy pizza in galaxy."
|
||||
icon_state = "pizzamargheritaslice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/meat
|
||||
name = "meatpizza"
|
||||
@@ -32,12 +35,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/meat
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 8)
|
||||
list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 8)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/meat
|
||||
name = "meatpizza slice"
|
||||
desc = "A nutritious slice of meatpizza."
|
||||
icon_state = "meatpizzaslice"
|
||||
filling_color = "#A52A2A"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/mushroom
|
||||
name = "mushroom pizza"
|
||||
@@ -46,12 +51,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 30, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom
|
||||
name = "mushroom pizza slice"
|
||||
desc = "Maybe it is the last slice of pizza in your life."
|
||||
icon_state = "mushroompizzaslice"
|
||||
filling_color = "#FFE4C4"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/vegetable
|
||||
name = "vegetable pizza"
|
||||
@@ -60,12 +67,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/vegetable
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/vegetable
|
||||
name = "vegetable pizza slice"
|
||||
desc = "A slice of the most green pizza of all pizzas not containing green ingredients."
|
||||
icon_state = "vegetablepizzaslice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/donkpocket
|
||||
name = "donkpocket pizza"
|
||||
@@ -74,12 +83,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/donkpocket
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "omnizine" = 10, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/donkpocket
|
||||
name = "donkpocket pizza slice"
|
||||
desc = "Smells like donkpocket."
|
||||
icon_state = "donkpocketpizzaslice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/dank
|
||||
name = "dank pizza"
|
||||
@@ -88,12 +99,14 @@
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 25, "doctorsdelight" = 5, "tomatojuice" = 6, "vitamin" = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank
|
||||
name = "dank pizza slice"
|
||||
desc = "So good, man..."
|
||||
icon_state = "dankpizzaslice"
|
||||
filling_color = "#2E8B57"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizza/sassysage
|
||||
name = "sassysage pizza"
|
||||
@@ -101,12 +114,14 @@
|
||||
icon_state = "sassysagepizza"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/sassysage
|
||||
bonus_reagents = list("nutriment" = 6, "vitamin" = 6)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/sassysage
|
||||
name = "sassysage pizza slice"
|
||||
desc = "Deliciously sassy."
|
||||
icon_state = "sassysagepizzaslice"
|
||||
filling_color = "#FF4500"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/custom
|
||||
name = "pizza slice"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
bitesize = 3
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 2)
|
||||
tastes = list("leaves" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/New()
|
||||
..()
|
||||
@@ -17,6 +18,7 @@
|
||||
icon_state = "aesirsalad"
|
||||
bonus_reagents = list("omnizine" = 2, "vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6)
|
||||
tastes = list("leaves" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad
|
||||
name = "herb salad"
|
||||
@@ -24,6 +26,7 @@
|
||||
icon_state = "herbsalad"
|
||||
bonus_reagents = list("vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 2)
|
||||
tastes = list("leaves" = 1, "apple" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad
|
||||
name = "valid salad"
|
||||
@@ -31,6 +34,7 @@
|
||||
icon_state = "validsalad"
|
||||
bonus_reagents = list("doctorsdelight" = 5, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 2)
|
||||
tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/oatmeal
|
||||
name = "oatmeal"
|
||||
@@ -38,12 +42,14 @@
|
||||
icon_state = "oatmeal"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 7, "milk" = 10, "vitamin" = 2)
|
||||
tastes = list("oats" = 1, "milk" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/fruit
|
||||
name = "fruit salad"
|
||||
desc = "Your standard fruit salad."
|
||||
icon_state = "fruitsalad"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 4)
|
||||
tastes = list("fruit" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/jungle
|
||||
name = "jungle salad"
|
||||
@@ -51,6 +57,7 @@
|
||||
icon_state = "junglesalad"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 7, "banana" = 5, "vitamin" = 4)
|
||||
tastes = list("fruit" = 1, "the jungle" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/citrusdelight
|
||||
name = "citrus delight"
|
||||
@@ -58,6 +65,7 @@
|
||||
icon_state = "citrusdelight"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 5)
|
||||
tastes = list("sourness" = 1, "leaves" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/ricebowl
|
||||
name = "ricebowl"
|
||||
@@ -65,6 +73,7 @@
|
||||
icon_state = "ricebowl"
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice
|
||||
list_reagents = list("nutriment" = 4)
|
||||
tastes = list("rice" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice
|
||||
name = "boiled rice"
|
||||
@@ -72,21 +81,25 @@
|
||||
icon_state = "boiledrice"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
tastes = list("rice" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/ricepudding
|
||||
name = "rice pudding"
|
||||
desc = "Everybody loves rice pudding!"
|
||||
icon_state = "ricepudding"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 2)
|
||||
tastes = list("rice" = 1, "sweetness" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/ricepork
|
||||
name = "rice and pork"
|
||||
desc = "Well, it looks like pork..."
|
||||
icon_state = "riceporkbowl"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
tastes = list("rice" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/eggbowl
|
||||
name = "egg bowl"
|
||||
desc = "A bowl of rice with a fried egg."
|
||||
icon_state = "eggbowl"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 4)
|
||||
tastes = list("rice" = 1, "egg" = 1)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sandwich
|
||||
name = "sandwich"
|
||||
desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud."
|
||||
@@ -8,6 +7,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
name = "toasted sandwich"
|
||||
@@ -17,6 +17,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 1, "carbon" = 2)
|
||||
list_reagents = list("nutriment" = 6, "carbon" = 2)
|
||||
tastes = list("toast" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese
|
||||
name = "grilled cheese sandwich"
|
||||
@@ -26,6 +27,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1)
|
||||
tastes = list("toast" = 1, "cheese" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
|
||||
name = "jelly sandwich"
|
||||
@@ -34,6 +36,7 @@
|
||||
icon_state = "jellysandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
bitesize = 3
|
||||
tastes = list("bread" = 1, "jelly" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
|
||||
bonus_reagents = list("slimejelly" = 5, "vitamin" = 2)
|
||||
@@ -50,6 +53,7 @@
|
||||
icon_state = "icecreamsandwich"
|
||||
bonus_reagents = list("nutriment" = 1, "ice" = 2)
|
||||
list_reagents = list("nutriment" = 2, "ice" = 2)
|
||||
tastes = list("ice cream" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
@@ -59,14 +63,16 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 6)
|
||||
tastes = list("nothing suspicious" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
|
||||
name = "jellied toast"
|
||||
desc = "A slice of bread covered with delicious jam."
|
||||
desc = "A slice of toast covered with delicious jam."
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
icon_state = "jellytoast"
|
||||
trash = /obj/item/trash/plate
|
||||
bitesize = 3
|
||||
tastes = list("toast" = 1, "jelly" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry
|
||||
bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2)
|
||||
@@ -83,3 +89,4 @@
|
||||
icon_state = "twobread"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
tastes = list("bread" = 2)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
bitesize = 5
|
||||
volume = 80
|
||||
list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("tasteless soup" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/New()
|
||||
..()
|
||||
@@ -15,20 +16,24 @@
|
||||
desc = "I wish this was soup."
|
||||
icon_state = "wishsoup"
|
||||
list_reagents = list("water" = 10)
|
||||
tastes = list("wishes" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/wish/New()
|
||||
..()
|
||||
if(prob(25))
|
||||
var/wish_true = prob(25)
|
||||
if(wish_true)
|
||||
desc = "A wish come true!"
|
||||
bonus_reagents = list("nutriment" = 9, "vitamin" = 1)
|
||||
..()
|
||||
if(wish_true)
|
||||
reagents.add_reagent("nutriment", 9)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bonus_reagents = list("nutriment" = 9, "vitamin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/meatball
|
||||
name = "meatball soup"
|
||||
desc = "You've got balls kid, BALLS!"
|
||||
icon_state = "meatballsoup"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
tastes = list("meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/slime
|
||||
name = "slime soup"
|
||||
@@ -36,6 +41,7 @@
|
||||
icon_state = "slimesoup"
|
||||
bonus_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("slime" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/blood
|
||||
name = "tomato soup"
|
||||
@@ -43,6 +49,7 @@
|
||||
icon_state = "tomatosoup"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("iron" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/wingfangchu
|
||||
name = "wing fang chu"
|
||||
@@ -51,6 +58,7 @@
|
||||
trash = /obj/item/weapon/reagent_containers/glass/bowl
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "soysauce" = 5, "vitamin" = 2)
|
||||
tastes = list("soy" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/clownstears
|
||||
name = "clown's tears"
|
||||
@@ -58,18 +66,21 @@
|
||||
icon_state = "clownstears"
|
||||
bonus_reagents = list("nutriment" = 1, "banana" = 5, "vitamin" = 8)
|
||||
list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8)
|
||||
tastes = list("a bad joke" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/vegetable
|
||||
name = "vegetable soup"
|
||||
desc = "A true vegan meal."
|
||||
icon_state = "vegetablesoup"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
tastes = list("vegetables" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/nettle
|
||||
name = "nettle soup"
|
||||
desc = "To think, the botanist would've beat you to death with one of these."
|
||||
icon_state = "nettlesoup"
|
||||
bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 5)
|
||||
tastes = list("nettles" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/mystery
|
||||
name = "mystery soup"
|
||||
@@ -77,12 +88,13 @@
|
||||
icon_state = "mysterysoup"
|
||||
var/extra_reagent = null
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("chaos" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/mystery/New()
|
||||
..()
|
||||
extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine")
|
||||
reagents.add_reagent("[extra_reagent]", 5)
|
||||
bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6)
|
||||
..()
|
||||
reagents.add_reagent("[extra_reagent]", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/hotchili
|
||||
name = "hot chili"
|
||||
@@ -90,6 +102,7 @@
|
||||
icon_state = "hotchili"
|
||||
bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
tastes = list("hot peppers" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/coldchili
|
||||
name = "cold chili"
|
||||
@@ -97,6 +110,7 @@
|
||||
icon_state = "coldchili"
|
||||
bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
tastes = list("tomato" = 1, "mint" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight
|
||||
name = "monkey's delight"
|
||||
@@ -104,6 +118,7 @@
|
||||
icon_state = "monkeysdelight"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5)
|
||||
tastes = list("the jungle" = 1, "banana" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/tomato
|
||||
name = "tomato soup"
|
||||
@@ -111,12 +126,14 @@
|
||||
icon_state = "tomatosoup"
|
||||
bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 3)
|
||||
list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3)
|
||||
tastes = list("tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/milo
|
||||
name = "milosoup"
|
||||
desc = "The universes best soup! Yum!!!"
|
||||
icon_state = "milosoup"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
tastes = list("milo" = 1) // wtf is milo
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/mushroom
|
||||
name = "chantrelle soup"
|
||||
@@ -124,6 +141,7 @@
|
||||
icon_state = "mushroomsoup"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 4)
|
||||
tastes = list("mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/beet
|
||||
name = "beet soup"
|
||||
@@ -134,6 +152,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/beet/New()
|
||||
..()
|
||||
name = pick("borsch","bortsch","borstch","borsh","borshch","borscht")
|
||||
tastes = list(name = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff
|
||||
@@ -143,6 +162,7 @@
|
||||
bitesize = 3
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6)
|
||||
tastes = list("jelly" = 1, "mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly
|
||||
name = "amanita jelly"
|
||||
@@ -151,6 +171,7 @@
|
||||
bitesize = 3
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 5)
|
||||
list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 3, "amatoxin" = 6)
|
||||
tastes = list("jelly" = 1, "mushroom" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/stew
|
||||
name = "stew"
|
||||
@@ -160,17 +181,20 @@
|
||||
list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5)
|
||||
bitesize = 7
|
||||
volume = 100
|
||||
tastes = list("tomato" = 1, "carrot" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/sweetpotato
|
||||
name = "sweet potato soup"
|
||||
desc = "Delicious sweet potato in soup form."
|
||||
icon_state = "sweetpotatosoup"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 5)
|
||||
tastes = list("sweet potato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soup/beet/red
|
||||
name = "red beet soup"
|
||||
desc = "Quite a delicacy."
|
||||
icon_state = "redbeetsoup"
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 6)
|
||||
tastes = list("beet" = 1)
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
list_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("pasta" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti
|
||||
name = "boiled spaghetti"
|
||||
@@ -18,6 +19,7 @@
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pasta
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("pasta" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastatomato
|
||||
name = "spaghetti"
|
||||
@@ -29,6 +31,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4)
|
||||
filling_color = "#DC143C"
|
||||
tastes = list("pasta" = 1, "tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/copypasta
|
||||
name = "copypasta"
|
||||
@@ -40,6 +43,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 12, "tomatojuice" = 20, "vitamin" = 8)
|
||||
filling_color = "#DC143C"
|
||||
tastes = list("pasta" = 1, "tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti
|
||||
name = "spaghetti and meatballs"
|
||||
@@ -50,6 +54,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 4)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spesslaw
|
||||
name = "spesslaw"
|
||||
@@ -60,6 +65,7 @@
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 6)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 6)
|
||||
filling_color = "#F0E68C"
|
||||
tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chowmein
|
||||
name = "chow mein"
|
||||
@@ -69,6 +75,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 3, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 6)
|
||||
tastes = list("noodle" = 1, "tomato" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/beefnoodle
|
||||
name = "beef noodle"
|
||||
@@ -76,4 +83,5 @@
|
||||
icon = 'icons/obj/food/pizzaspaghetti.dmi'
|
||||
icon_state = "beefnoodle"
|
||||
trash = /obj/item/weapon/reagent_containers/glass/bowl
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 6)
|
||||
bonus_reagents = list("nutriment" = 5, "vitamin" = 6)
|
||||
tastes = list("noodle" = 1, "meat" = 1)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
junkiness = 25
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("candy" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sosjerky
|
||||
name = "\improper Scaredy's Private Reserve Beef Jerky"
|
||||
@@ -19,6 +20,7 @@
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
junkiness = 25
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried meat" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sosjerky/healthy
|
||||
name = "homemade beef jerky"
|
||||
@@ -35,6 +37,7 @@
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
junkiness = 20
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("salt" = 1, "crisps" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
|
||||
name = "4no raisins"
|
||||
@@ -44,6 +47,7 @@
|
||||
list_reagents = list("nutriment" = 2, "sugar" = 4)
|
||||
junkiness = 25
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried raisins" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin/healthy
|
||||
name = "homemade raisins"
|
||||
@@ -67,6 +71,7 @@
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
junkiness = 25
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cheese" = 5, "crisps" = 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndicake
|
||||
name = "syndi-cakes"
|
||||
@@ -75,3 +80,4 @@
|
||||
trash = /obj/item/trash/syndi_cakes
|
||||
list_reagents = list("nutriment" = 4, "doctorsdelight" = 5)
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
|
||||
@@ -208,6 +208,19 @@
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/weapon/storage/bag/tray))
|
||||
var/obj/item/weapon/storage/T = O
|
||||
var/loaded = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents)
|
||||
var/datum/food_processor_process/P = select_recipe(S)
|
||||
if(P)
|
||||
T.remove_from_storage(S, src)
|
||||
loaded++
|
||||
|
||||
if(loaded)
|
||||
user << "<span class='notice'>You insert [loaded] items into [src].</span>"
|
||||
return
|
||||
|
||||
var/datum/food_processor_process/P = select_recipe(O)
|
||||
if(P)
|
||||
user.visible_message("[user] put [O] into [src].", \
|
||||
|
||||
@@ -315,4 +315,13 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/taco/plain
|
||||
category = CAT_MISCFOOD
|
||||
category = CAT_MISCFOOD
|
||||
|
||||
/datum/crafting_recipe/food/branrequests
|
||||
name = "Bran Requests Cereal"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/branrequests
|
||||
category = CAT_MISCFOOD
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
name = "a playing card"
|
||||
desc = "A playing card."
|
||||
|
||||
overlays.len = 0
|
||||
cut_overlays()
|
||||
|
||||
if (cards.len == 1)
|
||||
var/datum/playingcard/P = cards[1]
|
||||
@@ -239,7 +239,7 @@
|
||||
I.pixel_x = I.pixel_x + (-5 + rand(10))
|
||||
I.pixel_y = I.pixel_y + (-5 + rand(10))
|
||||
|
||||
overlays.Add(I)
|
||||
add_overlay(I)
|
||||
else
|
||||
var/origin = -12
|
||||
var/offset = round(32 / cards.len)
|
||||
@@ -251,7 +251,7 @@
|
||||
I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") )
|
||||
I.pixel_x = origin + (offset * i)
|
||||
|
||||
overlays.Add(I)
|
||||
add_overlay(I)
|
||||
|
||||
i = i + 1
|
||||
|
||||
|
||||
@@ -141,6 +141,14 @@
|
||||
end_day = 2
|
||||
begin_month = APRIL
|
||||
|
||||
/datum/holiday/april_fools/celebrate()
|
||||
if(ticker)
|
||||
ticker.login_music = 'sound/ambience/clown.ogg'
|
||||
for(var/mob/new_player/P in mob_list)
|
||||
if(P.client)
|
||||
P.stopLobbySound()
|
||||
P.client.playtitlemusic()
|
||||
|
||||
/datum/holiday/fourtwenty
|
||||
name = "Four-Twenty"
|
||||
begin_day = 20
|
||||
|
||||
@@ -150,8 +150,6 @@
|
||||
/obj/machinery/computer/holodeck/Topic(href, list/href_list)
|
||||
if(..())
|
||||
return
|
||||
if(!Adjacent(usr) && !issilicon(usr))
|
||||
return
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["loadarea"])
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/obj/structure/beebox
|
||||
name = "apiary"
|
||||
desc = "Dr Miles Manners is just your average Wasp themed super hero by day, but by night he becomes DR BEES!"
|
||||
desc = "Dr Miles Manners is just your average wasp-themed super hero by day, but by night he becomes DR BEES!"
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
icon_state = "beebox"
|
||||
anchored = 1
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
var/half_bee = get_max_bees()*0.5
|
||||
if(half_bee && (bees.len >= half_bee))
|
||||
user << "<span class='notice'>This place is a BUZZ with activity... there are lots of bees!</span>"
|
||||
user << "<span class='notice'>This place is aBUZZ with activity... there are lots of bees!</span>"
|
||||
|
||||
user << "<span class='notice'>[bee_resources]/100 resource supply.</span>"
|
||||
user << "<span class='notice'>[bee_resources]% towards a new honeycomb.</span>"
|
||||
@@ -150,7 +150,7 @@
|
||||
return
|
||||
honey_frames += HF
|
||||
else
|
||||
user << "<span class='warning'>There's no room for anymore frames in the apiary!</span>"
|
||||
user << "<span class='warning'>There's no room for any more frames in the apiary!</span>"
|
||||
|
||||
if(istype(I, /obj/item/weapon/wrench))
|
||||
if(default_unfasten_wrench(user, I, time = 20))
|
||||
@@ -184,7 +184,7 @@
|
||||
user << "<span class='warning'>This queen has a different reagent to some of the bees who live here, those bees will not return to this apiary!</span>"
|
||||
|
||||
else
|
||||
user << "<span class='warning'>The queen bee disappeared! bees disappearing has been in the news lately...</span>"
|
||||
user << "<span class='warning'>The queen bee disappeared! Disappearing bees have been in the news lately...</span>"
|
||||
|
||||
qdel(qb)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
if(bees)
|
||||
visible_message("<span class='danger'>[user] disturbs the bees!</span>")
|
||||
else
|
||||
var/option = alert(user, "What Action do you wish to perform?","Apiary","Remove a Honey Frame","Remove the Queen Bee")
|
||||
var/option = alert(user, "What action do you wish to perform?","Apiary","Remove a Honey Frame","Remove the Queen Bee")
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
switch(option)
|
||||
|
||||
@@ -420,16 +420,3 @@
|
||||
/obj/item/weapon/disk/plantgene/examine(mob/user)
|
||||
..()
|
||||
user << "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
|
||||
|
||||
|
||||
/*
|
||||
* Plant DNA Disks Box
|
||||
*/
|
||||
/obj/item/weapon/storage/box/disks_plantgene
|
||||
name = "plant data disks box"
|
||||
icon_state = "disk_kit"
|
||||
|
||||
/obj/item/weapon/storage/box/disks_plantgene/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/disk/plantgene(src)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, var/obj/item/seeds/new_seed = null)
|
||||
tastes = list(name = 1) // apples taste of apple, silly.
|
||||
..()
|
||||
if(new_seed)
|
||||
seed = new_seed.Copy()
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("singulo" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
|
||||
reagents_add = list("bluespace" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
yield = 2
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("lube" = 0.2, "singulo" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("lube" = 0.2, "bluespace" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
rarity = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
if(istype(src, /obj/machinery/hydroponics/soil))
|
||||
add_atom_colour(rgb(255, 175, 0), FIXED_COLOUR_PRIORITY)
|
||||
else
|
||||
overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "gaia_blessing")
|
||||
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "gaia_blessing"))
|
||||
SetLuminosity(3)
|
||||
|
||||
update_icon_hoses()
|
||||
|
||||
@@ -36,7 +36,7 @@ var/list/chem_t4_reagents = list(
|
||||
add_overlay(I)
|
||||
|
||||
/obj/item/seeds/sample/get_analyzer_text()
|
||||
return " The DNA of this sample is damaged beyond recovery, it can't support life on it's own.\n*---------*"
|
||||
return " The DNA of this sample is damaged beyond recovery, it can't support life on its own.\n*---------*"
|
||||
|
||||
/obj/item/seeds/sample/alienweed
|
||||
name = "alien weed sample"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user