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:
Poojawa
2017-02-28 09:30:49 -06:00
committed by GitHub
parent 93782cf716
commit 0bca862419
544 changed files with 309981 additions and 81206 deletions
+7 -12
View File
@@ -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
+9 -11
View File
@@ -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
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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.")
+3 -6
View File
@@ -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)
-3
View File
@@ -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,
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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")
+2 -2
View File
@@ -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
+5
View File
@@ -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>"
+18 -10
View File
@@ -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)
+6 -6
View File
@@ -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>"
+5 -5
View File
@@ -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
View File
@@ -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]')")
+16 -21
View File
@@ -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()
+55 -45
View File
@@ -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'
+4 -1
View File
@@ -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)
+108 -105
View File
@@ -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"
+8 -3
View File
@@ -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()
+3 -21
View File
@@ -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")
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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 -1
View File
@@ -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
+6 -5
View File
@@ -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)
+2 -104
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
+7 -9
View File
@@ -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.")
+1 -1
View File
@@ -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)
-1
View File
@@ -2,7 +2,6 @@
/mob/living/carbon/human/verb/suicide()
set hidden = 1
return
if(!canSuicide())
return
var/oldkey = ckey
+14 -28
View File
@@ -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
+1 -2
View File
@@ -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
+6 -36
View File
@@ -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
+13 -3
View File
@@ -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"
+68
View File
@@ -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"
-80
View File
@@ -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"
-77
View File
@@ -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"
+156
View File
@@ -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"
+1 -16
View File
@@ -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"
+14
View File
@@ -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"
-6
View File
@@ -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"
-15
View File
@@ -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
+1 -94
View File
@@ -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
+91
View File
@@ -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"
+16 -1
View File
@@ -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
+2 -106
View File
@@ -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
-41
View File
@@ -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)
+1 -55
View File
@@ -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
+415
View File
@@ -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
+3 -2
View File
@@ -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
+28 -12
View File
@@ -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
+11 -1
View File
@@ -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)
+31 -10
View File
@@ -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
+3 -3
View File
@@ -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
+8
View File
@@ -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
-2
View File
@@ -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)
-13
View File
@@ -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)
+1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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